@eurosat/buttons 12.0.0 → 15.0.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 (33) hide show
  1. package/esm2020/eurosat-buttons.mjs +5 -0
  2. package/esm2020/lib/components/dialog-confirm/dialog-confirm.component.mjs +56 -0
  3. package/esm2020/lib/components/dialog-form/dialog-form.component.mjs +36 -0
  4. package/esm2020/lib/es-buttons.component.mjs +200 -0
  5. package/esm2020/lib/es-buttons.module.mjs +59 -0
  6. package/fesm2015/eurosat-buttons.mjs +342 -0
  7. package/fesm2015/eurosat-buttons.mjs.map +1 -0
  8. package/fesm2020/eurosat-buttons.mjs +342 -0
  9. package/fesm2020/eurosat-buttons.mjs.map +1 -0
  10. package/index.d.ts +5 -0
  11. package/lib/components/dialog-confirm/dialog-confirm.component.d.ts +3 -0
  12. package/lib/components/dialog-form/dialog-form.component.d.ts +3 -0
  13. package/lib/es-buttons.component.d.ts +3 -0
  14. package/lib/es-buttons.module.d.ts +16 -0
  15. package/package.json +25 -13
  16. package/bundles/eurosat-buttons.umd.js +0 -351
  17. package/bundles/eurosat-buttons.umd.js.map +0 -1
  18. package/bundles/eurosat-buttons.umd.min.js +0 -2
  19. package/bundles/eurosat-buttons.umd.min.js.map +0 -1
  20. package/esm2015/eurosat-buttons.js +0 -7
  21. package/esm2015/lib/components/dialog-confirm/dialog-confirm.component.js +0 -56
  22. package/esm2015/lib/components/dialog-form/dialog-form.component.js +0 -38
  23. package/esm2015/lib/es-buttons.component.js +0 -198
  24. package/esm2015/lib/es-buttons.module.js +0 -41
  25. package/eurosat-buttons.d.ts +0 -6
  26. package/eurosat-buttons.metadata.json +0 -1
  27. package/fesm2015/eurosat-buttons.js +0 -338
  28. package/fesm2015/eurosat-buttons.js.map +0 -1
  29. /package/{esm2015/lib/components/dialog-result.js → esm2020/lib/components/dialog-result.mjs} +0 -0
  30. /package/{esm2015/lib/model/es-button-action.js → esm2020/lib/model/es-button-action.mjs} +0 -0
  31. /package/{esm2015/lib/model/es-button-server-response.js → esm2020/lib/model/es-button-server-response.mjs} +0 -0
  32. /package/{esm2015/lib/model/es-button.interface.js → esm2020/lib/model/es-button.interface.mjs} +0 -0
  33. /package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
@@ -0,0 +1,342 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, Output, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';
3
+ import * as i2 from '@angular/material/snack-bar';
4
+ import { MatSnackBarConfig, MatSnackBarModule } from '@angular/material/snack-bar';
5
+ import { EsSnackBarPanelClass } from '@eurosat/snackbar';
6
+ import * as i9 from '@eurosat/icon';
7
+ import { EsIcon, EsIconModule } from '@eurosat/icon';
8
+ import * as i3 from '@eurosat/form';
9
+ import { EsFormResponseMessageType, EsFormModule } from '@eurosat/form';
10
+ import * as i1 from '@angular/material/dialog';
11
+ import * as i2$1 from '@eurosat/dialog';
12
+ import { EsDialogModule } from '@eurosat/dialog';
13
+ import * as i4 from '@angular/common';
14
+ import { CommonModule } from '@angular/common';
15
+ import * as i5 from '@angular/material/button';
16
+ import { MatButtonModule } from '@angular/material/button';
17
+ import * as i6 from '@angular/material/progress-spinner';
18
+ import * as i7 from '@ngx-translate/core';
19
+ import { TranslateModule } from '@ngx-translate/core';
20
+ import { take } from 'rxjs/operators';
21
+ import * as i1$1 from '@angular/router';
22
+ import * as i4$1 from '@eurosat/http';
23
+ import * as i7$1 from '@angular/material/tooltip';
24
+ import { MatTooltipModule } from '@angular/material/tooltip';
25
+ import * as i8 from '@angular/material/menu';
26
+ import { MatMenuModule } from '@angular/material/menu';
27
+
28
+ class EsButtonAction {
29
+ }
30
+ EsButtonAction.ACTION_DIALOG_CONFIRM = 'dialog-confirm';
31
+ EsButtonAction.ACTION_DIALOG_DELETE = 'dialog-delete';
32
+ EsButtonAction.ACTION_DIALOG_FORM = 'dialog-form';
33
+ EsButtonAction.ACTION_CARD_CONTENT_FORM = 'card-content-form';
34
+ EsButtonAction.ACTION_CARD_CONTENT_WIZARD = 'card-content-wizard'; // todo asi zrusit
35
+ EsButtonAction.ACTION_CHANGE_CARD_CONTENT = 'change-card-content'; // mozna zrusit ? je kuli neemitu clicku na button
36
+ EsButtonAction.ACTION_DOWNLOAD = 'download';
37
+ EsButtonAction.ACTION_REQUEST = 'request';
38
+ EsButtonAction.ACTION_ROUTER_NAVIGATE = 'router-navigate';
39
+ EsButtonAction.ACTION_WINDOW_LOCATION = 'open-link';
40
+
41
+ class DialogConfirmComponent {
42
+ constructor(dialogRef, snackBar, ds) {
43
+ this.dialogRef = dialogRef;
44
+ this.snackBar = snackBar;
45
+ this.ds = ds;
46
+ this.submit = new EventEmitter();
47
+ this.activeRequest = false;
48
+ const data = this.ds.getData();
49
+ this.message = data.message;
50
+ this.url = data.url;
51
+ }
52
+ confirm() {
53
+ this.activeRequest = true;
54
+ this.ds.httpPost(this.url, null).subscribe((response) => {
55
+ this.activeRequest = false;
56
+ const config = new MatSnackBarConfig();
57
+ config.duration = 2000;
58
+ if (response.type === EsFormResponseMessageType.TYPE_OK) {
59
+ config.panelClass = EsSnackBarPanelClass.SUCCESS;
60
+ this.submit.emit();
61
+ }
62
+ else {
63
+ config.panelClass = EsSnackBarPanelClass.DANGER;
64
+ }
65
+ this.snackBar.open(response.message, null, config);
66
+ const result = {
67
+ clickedYes: true,
68
+ serverResponse: response
69
+ };
70
+ this.dialogRef.close(result);
71
+ });
72
+ }
73
+ }
74
+ /** @nocollapse */ DialogConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DialogConfirmComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.MatSnackBar }, { token: i2$1.EsDialogService }], target: i0.ɵɵFactoryTarget.Component });
75
+ /** @nocollapse */ DialogConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DialogConfirmComponent, selector: "es-dialog-confirm", outputs: { submit: "submit" }, ngImport: i0, template: "<p>{{message}}</p>\n<div class=\"button-container\">\n <mat-spinner *ngIf=\"activeRequest\" [diameter]=\"36\"></mat-spinner>\n <ng-container *ngIf=\"!activeRequest\">\n <button type=\"button\"\n color=\"accent\"\n mat-raised-button\n (click)=\"confirm()\"> {{'an.common.ano' | translate}}\n </button>\n <button type=\"button\"\n color=\"accent\"\n mat-raised-button\n (click)=\"dialogRef.close({clickedYes: false})\">{{'an.common.ne' | translate}}\n </button>\n </ng-container>\n</div>\n", styles: ["button:not(:last-child){margin-right:20px}.button-container{min-height:36px;min-width:196px;position:relative;text-align:center}.button-container mat-spinner{position:absolute!important;left:calc(50% - 18px);top:calc(50% - 18px)}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DialogConfirmComponent, decorators: [{
77
+ type: Component,
78
+ args: [{ selector: 'es-dialog-confirm', template: "<p>{{message}}</p>\n<div class=\"button-container\">\n <mat-spinner *ngIf=\"activeRequest\" [diameter]=\"36\"></mat-spinner>\n <ng-container *ngIf=\"!activeRequest\">\n <button type=\"button\"\n color=\"accent\"\n mat-raised-button\n (click)=\"confirm()\"> {{'an.common.ano' | translate}}\n </button>\n <button type=\"button\"\n color=\"accent\"\n mat-raised-button\n (click)=\"dialogRef.close({clickedYes: false})\">{{'an.common.ne' | translate}}\n </button>\n </ng-container>\n</div>\n", styles: ["button:not(:last-child){margin-right:20px}.button-container{min-height:36px;min-width:196px;position:relative;text-align:center}.button-container mat-spinner{position:absolute!important;left:calc(50% - 18px);top:calc(50% - 18px)}\n"] }]
79
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.MatSnackBar }, { type: i2$1.EsDialogService }]; }, propDecorators: { submit: [{
80
+ type: Output
81
+ }] } });
82
+
83
+ class DialogFormComponent {
84
+ constructor(dialogRef, ds) {
85
+ this.dialogRef = dialogRef;
86
+ this.cols = 1;
87
+ this.maxFormHeight = window.innerHeight - 60;
88
+ const data = ds.getData();
89
+ this.formUrl = data.url;
90
+ }
91
+ submit(value) {
92
+ // sem se to dostane jen pri success ulozeni formu
93
+ const result = {
94
+ clickedYes: true
95
+ };
96
+ this.dialogRef.close(result);
97
+ // pokud bysme chteli form.value
98
+ // this.dialogRef.close(value);
99
+ // console.log('form value v parent', value);
100
+ }
101
+ getWindowHeight() {
102
+ this.maxFormHeight = window.innerHeight - 60;
103
+ }
104
+ }
105
+ /** @nocollapse */ DialogFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DialogFormComponent, deps: [{ token: i1.MatDialogRef }, { token: i2$1.EsDialogService }], target: i0.ɵɵFactoryTarget.Component });
106
+ /** @nocollapse */ DialogFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DialogFormComponent, selector: "es-dialog-form", ngImport: i0, template: "<div class=\"es-form-container\" [style.max-height]=\"(maxFormHeight - 106) + 'px'\">\n <es-form [formUrl]=\"formUrl\"\n [dynamicForm]=\"esForm\"\n [cols]=\"cols\"\n (submit)=\"submit($event)\">\n </es-form>\n</div>\n", styles: [".es-form-container{overflow:auto;margin-top:24px;position:relative}\n"], dependencies: [{ kind: "component", type: i3.EsFormComponent, selector: "es-form", inputs: ["name", "cols", "formUrl", "dynamicForm", "maxWidth", "autofocus", "params", "postParams", "snackBarMessage", "formErrors", "postingData", "onSuccessReload", "simpleForm", "fontSize"], outputs: ["submit", "formSubmitEmit", "formCreated", "formSuccess", "formError", "reloadForm", "formUrlChange"], exportAs: ["esFormService"] }] });
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DialogFormComponent, decorators: [{
108
+ type: Component,
109
+ args: [{ selector: 'es-dialog-form', template: "<div class=\"es-form-container\" [style.max-height]=\"(maxFormHeight - 106) + 'px'\">\n <es-form [formUrl]=\"formUrl\"\n [dynamicForm]=\"esForm\"\n [cols]=\"cols\"\n (submit)=\"submit($event)\">\n </es-form>\n</div>\n", styles: [".es-form-container{overflow:auto;margin-top:24px;position:relative}\n"] }]
110
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2$1.EsDialogService }]; } });
111
+
112
+ // todo translates
113
+ class EsButtonsComponent {
114
+ constructor(router, dialog, snackBar, http) {
115
+ this.router = router;
116
+ this.dialog = dialog;
117
+ this.snackBar = snackBar;
118
+ this.http = http;
119
+ this.parentWidth = 40; // default 40 = 1 button
120
+ this.buttons = []; // normal input
121
+ this.forceMenu = false; // pokud chci zobrazit ... menu i pro jeden buttonek, na realtimu pouzito
122
+ this.buttonClick = new EventEmitter();
123
+ this.reload = new EventEmitter();
124
+ this.dialogCreated = new EventEmitter();
125
+ this.serverResponse = new EventEmitter();
126
+ this.menuVisible = false;
127
+ this.buttonWidth = 40; // todo ViewChild, sirka buttonu ?
128
+ this.visibleButtons = [];
129
+ this.hiddenButtons = [];
130
+ this.esIcon = EsIcon;
131
+ this._width = 0;
132
+ }
133
+ showMenu() {
134
+ return this.getHiddenButtons() && this.getHiddenButtons().length > 0 && this.getHiddenButtons().length !== 1;
135
+ }
136
+ countVisible() {
137
+ return Math.floor((this._width) / this.buttonWidth) - 1;
138
+ }
139
+ getVisibleButtons() {
140
+ if (this.buttons && this.buttons.length > 0) {
141
+ return this.buttons.filter(button => {
142
+ if (this.buttons.indexOf(button) < this.countVisible()
143
+ || (this.getHiddenButtons().length === 1 && !this.forceMenu)) {
144
+ return true;
145
+ }
146
+ });
147
+ }
148
+ }
149
+ getHiddenButtons() {
150
+ if (this.buttons && this.buttons.length > 0) {
151
+ return this.buttons.filter(button => {
152
+ if (this.buttons.indexOf(button) >= this.countVisible()) {
153
+ return true;
154
+ }
155
+ });
156
+ }
157
+ }
158
+ ngOnChanges(simpleChange) {
159
+ if (simpleChange['parentWidth']) {
160
+ if (this.parentWidth > 0) {
161
+ this._width = this.parentWidth;
162
+ this.recalculateButtons();
163
+ }
164
+ }
165
+ if (simpleChange['buttons']) {
166
+ if (typeof this.buttons === 'string') {
167
+ this.buttons = JSON.parse(this.buttons);
168
+ }
169
+ this.recalculateButtons();
170
+ }
171
+ }
172
+ recalculateButtons() {
173
+ this.menuVisible = this.showMenu();
174
+ this.visibleButtons = this.getVisibleButtons();
175
+ this.hiddenButtons = this.getHiddenButtons();
176
+ }
177
+ handleAction(button) {
178
+ if (button.action === EsButtonAction.ACTION_DIALOG_CONFIRM) {
179
+ this.openConfirm(button);
180
+ }
181
+ if (button.action === EsButtonAction.ACTION_DIALOG_DELETE) {
182
+ this.openDelete(button);
183
+ }
184
+ if (button.action === EsButtonAction.ACTION_DIALOG_FORM) {
185
+ this.openForm(button);
186
+ }
187
+ if (button.action === EsButtonAction.ACTION_DOWNLOAD) {
188
+ this.http.get(button.url, { responseType: 'blob', observe: 'response' }).subscribe(response => {
189
+ const filename = response.headers.get('Content-Disposition').split('filename=')[1];
190
+ const link = document.createElement('a');
191
+ link.setAttribute('href', window.URL.createObjectURL(response.body));
192
+ link.setAttribute('download', filename);
193
+ link.style.visibility = 'hidden';
194
+ document.body.appendChild(link);
195
+ link.click();
196
+ document.body.removeChild(link);
197
+ });
198
+ }
199
+ if (button.action === EsButtonAction.ACTION_REQUEST) {
200
+ this.http.get(button.url).subscribe((response) => {
201
+ const config = new MatSnackBarConfig();
202
+ config.duration = 2000;
203
+ if (response.type === EsFormResponseMessageType.TYPE_OK) {
204
+ config.panelClass = EsSnackBarPanelClass.SUCCESS;
205
+ }
206
+ else {
207
+ config.panelClass = EsSnackBarPanelClass.DANGER;
208
+ }
209
+ this.snackBar.open(response.message, null, config);
210
+ this.reload.emit(true);
211
+ this.serverResponse.emit({ button: button, response: response });
212
+ });
213
+ }
214
+ if (button.action === EsButtonAction.ACTION_ROUTER_NAVIGATE) {
215
+ this.router.navigateByUrl(button.url);
216
+ }
217
+ if (button.action === EsButtonAction.ACTION_WINDOW_LOCATION) {
218
+ window.location.href = button.url;
219
+ }
220
+ this.buttonClick.emit(button);
221
+ }
222
+ // handleSubMenuAction(button: EsButton) {
223
+ // // todo asi predelat na md2 menu
224
+ // // todo nevim jestli se zpropaguje click kdyz je to zanoreny pres es-card-header
225
+ // this.buttonClick.emit(button);
226
+ // }
227
+ openForm(button) {
228
+ const config = {
229
+ title: button.title,
230
+ data: {
231
+ url: button.url
232
+ }
233
+ };
234
+ const dialogRef = this.dialog.open(DialogFormComponent, config);
235
+ this.dialogCreated.emit(dialogRef);
236
+ dialogRef.afterClosed().pipe(take(1)).subscribe((res) => {
237
+ if (res && res.clickedYes) {
238
+ this.reload.emit(true);
239
+ if (res.serverResponse) {
240
+ this.serverResponse.emit({ button: button, response: res.serverResponse });
241
+ }
242
+ }
243
+ });
244
+ }
245
+ openDelete(button) {
246
+ this.openConfirm(button);
247
+ }
248
+ openConfirm(button) {
249
+ const config = {
250
+ title: button.title,
251
+ data: {
252
+ message: button.message,
253
+ url: button.url
254
+ }
255
+ };
256
+ const dialogRef = this.dialog.open(DialogConfirmComponent, config);
257
+ this.dialogCreated.emit(dialogRef);
258
+ dialogRef.afterClosed().pipe(take(1)).subscribe((res) => {
259
+ if (res && res.clickedYes) {
260
+ this.reload.emit(true);
261
+ if (res.serverResponse) {
262
+ this.serverResponse.emit({ button: button, response: res.serverResponse });
263
+ }
264
+ }
265
+ });
266
+ }
267
+ }
268
+ /** @nocollapse */ EsButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EsButtonsComponent, deps: [{ token: i1$1.Router }, { token: i2$1.EsDialogService }, { token: i2.MatSnackBar }, { token: i4$1.HttpService }], target: i0.ɵɵFactoryTarget.Component });
269
+ /** @nocollapse */ EsButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EsButtonsComponent, selector: "es-buttons", inputs: { parentWidth: "parentWidth", buttons: "buttons", forceMenu: "forceMenu" }, outputs: { buttonClick: "buttonClick", reload: "reload", dialogCreated: "dialogCreated", serverResponse: "serverResponse" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"visibleButtons && visibleButtons.length > 0\">\n <button *ngIf=\"visibleButtons.length > 0\"\n mat-icon-button\n [disabled]=\"visibleButtons[0].disabled === true\"\n [matTooltip]=\"visibleButtons[0].tooltip? visibleButtons[0].tooltip : visibleButtons[0].title\"\n (click)=\"handleAction(visibleButtons[0])\">\n <es-icon [color]=\"visibleButtons[0].color\"\n [themeColor]=\"visibleButtons[0].themeColor\"\n [icon]=\"visibleButtons[0].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 1\"\n mat-icon-button\n [disabled]=\"visibleButtons[1].disabled === true\"\n [matTooltip]=\"visibleButtons[1].tooltip? visibleButtons[1].tooltip : visibleButtons[1].title\"\n (click)=\"handleAction(visibleButtons[1])\">\n <es-icon [color]=\"visibleButtons[1].color\"\n [themeColor]=\"visibleButtons[1].themeColor\"\n [icon]=\"visibleButtons[1].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 2\"\n mat-icon-button\n [disabled]=\"visibleButtons[2].disabled === true\"\n [matTooltip]=\"visibleButtons[2].tooltip? visibleButtons[2].tooltip : visibleButtons[2].title\"\n (click)=\"handleAction(visibleButtons[2])\">\n <es-icon [color]=\"visibleButtons[2].color\"\n [themeColor]=\"visibleButtons[2].themeColor\"\n [icon]=\"visibleButtons[2].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 3\"\n mat-icon-button\n [disabled]=\"visibleButtons[3].disabled === true\"\n [matTooltip]=\"visibleButtons[3].tooltip? visibleButtons[3].tooltip : visibleButtons[3].title\"\n (click)=\"handleAction(visibleButtons[3])\">\n <es-icon [color]=\"visibleButtons[3].color\"\n [themeColor]=\"visibleButtons[3].themeColor\"\n [icon]=\"visibleButtons[3].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 4\"\n mat-icon-button\n [disabled]=\"visibleButtons[4].disabled === true\"\n [matTooltip]=\"visibleButtons[4].tooltip? visibleButtons[4].tooltip : visibleButtons[4].title\"\n (click)=\"handleAction(visibleButtons[4])\">\n <es-icon [color]=\"visibleButtons[4].color\"\n [themeColor]=\"visibleButtons[4].themeColor\"\n [icon]=\"visibleButtons[4].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 5\"\n mat-icon-button\n [disabled]=\"visibleButtons[5].disabled === true\"\n [matTooltip]=\"visibleButtons[5].tooltip? visibleButtons[5].tooltip : visibleButtons[5].title\"\n (click)=\"handleAction(visibleButtons[5])\">\n <es-icon [color]=\"visibleButtons[5].color\"\n [themeColor]=\"visibleButtons[5].themeColor\"\n [icon]=\"visibleButtons[5].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 6\"\n mat-icon-button\n [disabled]=\"visibleButtons[6].disabled === true\"\n [matTooltip]=\"visibleButtons[6].tooltip? visibleButtons[6].tooltip : visibleButtons[6].title\"\n (click)=\"handleAction(visibleButtons[6])\">\n <es-icon [color]=\"visibleButtons[6].color\"\n [themeColor]=\"visibleButtons[6].themeColor\"\n [icon]=\"visibleButtons[6].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 7\"\n mat-icon-button\n [disabled]=\"visibleButtons[7].disabled === true\"\n [matTooltip]=\"visibleButtons[7].tooltip? visibleButtons[7].tooltip : visibleButtons[7].title\"\n (click)=\"handleAction(visibleButtons[7])\">\n <es-icon [color]=\"visibleButtons[7].color\"\n [themeColor]=\"visibleButtons[7].themeColor\"\n [icon]=\"visibleButtons[7].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 8\"\n mat-icon-button\n [disabled]=\"visibleButtons[8].disabled === true\"\n [matTooltip]=\"visibleButtons[8].tooltip? visibleButtons[8].tooltip : visibleButtons[8].title\"\n (click)=\"handleAction(visibleButtons[8])\">\n <es-icon [color]=\"visibleButtons[8].color\"\n [themeColor]=\"visibleButtons[8].themeColor\"\n [icon]=\"visibleButtons[8].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 9\"\n mat-icon-button\n [disabled]=\"visibleButtons[9].disabled === true\"\n [matTooltip]=\"visibleButtons[9].tooltip? visibleButtons[9].tooltip : visibleButtons[9].title\"\n (click)=\"handleAction(visibleButtons[9])\">\n <es-icon [color]=\"visibleButtons[9].color\"\n [themeColor]=\"visibleButtons[9].themeColor\"\n [icon]=\"visibleButtons[9].icon\"></es-icon>\n </button>\n</ng-container>\n\n\n<button *ngIf=\"menuVisible || forceMenu\"\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [matTooltip]=\"'an.more' | translate\">\n <es-icon [icon]=\"esIcon.MORE_VERT\"></es-icon>\n</button>\n\n\n<mat-menu #menu=\"matMenu\"\n [overlapTrigger]=\"false\"\n yPosition=\"below\"\n xPosition=\"before\">\n <ng-container *ngIf=\"hiddenButtons && hiddenButtons.length > 0\">\n <button *ngIf=\"hiddenButtons.length > 0\"\n mat-menu-item\n [disabled]=\"hiddenButtons[0].disabled === true\"\n (click)=\"handleAction(hiddenButtons[0])\">\n <es-icon [color]=\"hiddenButtons[0].color\"\n [themeColor]=\"hiddenButtons[0].themeColor\"\n [icon]=\"hiddenButtons[0].icon\"></es-icon>\n <span>{{hiddenButtons[0].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 1\"\n mat-menu-item\n [disabled]=\"hiddenButtons[1].disabled === true\"\n (click)=\"handleAction(hiddenButtons[1])\">\n <es-icon [color]=\"hiddenButtons[1].color\"\n [themeColor]=\"hiddenButtons[1].themeColor\"\n [icon]=\"hiddenButtons[1].icon\"></es-icon>\n <span>{{hiddenButtons[1].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 2\"\n mat-menu-item\n [disabled]=\"hiddenButtons[2].disabled === true\"\n (click)=\"handleAction(hiddenButtons[2])\">\n <es-icon [color]=\"hiddenButtons[2].color\"\n [themeColor]=\"hiddenButtons[2].themeColor\"\n [icon]=\"hiddenButtons[2].icon\"></es-icon>\n <span>{{hiddenButtons[2].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 3\"\n mat-menu-item\n [disabled]=\"hiddenButtons[3].disabled === true\"\n (click)=\"handleAction(hiddenButtons[3])\">\n <es-icon [color]=\"hiddenButtons[3].color\"\n [themeColor]=\"hiddenButtons[3].themeColor\"\n [icon]=\"hiddenButtons[3].icon\"></es-icon>\n <span>{{hiddenButtons[3].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 4\"\n mat-menu-item\n [disabled]=\"hiddenButtons[4].disabled === true\"\n (click)=\"handleAction(hiddenButtons[4])\">\n <es-icon [color]=\"hiddenButtons[4].color\"\n [themeColor]=\"hiddenButtons[4].themeColor\"\n [icon]=\"hiddenButtons[4].icon\"></es-icon>\n <span>{{hiddenButtons[4].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 5\"\n mat-menu-item\n [disabled]=\"hiddenButtons[5].disabled === true\"\n (click)=\"handleAction(hiddenButtons[5])\">\n <es-icon [color]=\"hiddenButtons[5].color\"\n [themeColor]=\"hiddenButtons[5].themeColor\"\n [icon]=\"hiddenButtons[5].icon\"></es-icon>\n <span>{{hiddenButtons[5].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 6\"\n mat-menu-item\n [disabled]=\"hiddenButtons[6].disabled === true\"\n (click)=\"handleAction(hiddenButtons[6])\">\n <es-icon [color]=\"hiddenButtons[6].color\"\n [themeColor]=\"hiddenButtons[6].themeColor\"\n [icon]=\"hiddenButtons[6].icon\"></es-icon>\n <span>{{hiddenButtons[6].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 7\"\n mat-menu-item\n [disabled]=\"hiddenButtons[7].disabled === true\"\n (click)=\"handleAction(hiddenButtons[7])\">\n <es-icon [color]=\"hiddenButtons[7].color\"\n [themeColor]=\"hiddenButtons[7].themeColor\"\n [icon]=\"hiddenButtons[7].icon\"></es-icon>\n <span>{{hiddenButtons[7].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 8\"\n mat-menu-item\n [disabled]=\"hiddenButtons[8].disabled === true\"\n (click)=\"handleAction(hiddenButtons[8])\">\n <es-icon [color]=\"hiddenButtons[8].color\"\n [themeColor]=\"hiddenButtons[8].themeColor\"\n [icon]=\"hiddenButtons[8].icon\"></es-icon>\n <span>{{hiddenButtons[8].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 9\"\n mat-menu-item\n [disabled]=\"hiddenButtons[9].disabled === true\"\n (click)=\"handleAction(hiddenButtons[9])\">\n <es-icon [color]=\"hiddenButtons[9].color\"\n [themeColor]=\"hiddenButtons[9].themeColor\"\n [icon]=\"hiddenButtons[9].icon\"></es-icon>\n <span>{{hiddenButtons[9].title}}</span>\n </button>\n </ng-container>\n</mat-menu>\n", styles: [":host{float:right}::ng-deep es-buttons button{height:40px!important;width:40px!important}::ng-deep es-buttons button span{height:40px!important;width:40px!important}::ng-deep es-buttons .mat-mdc-icon-button{padding:0!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i7$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i9.EsIconComponent, selector: "es-icon", inputs: ["icon", "color", "themeColor", "title", "content", "showInPopover", "scale"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EsButtonsComponent, decorators: [{
271
+ type: Component,
272
+ args: [{ selector: 'es-buttons', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"visibleButtons && visibleButtons.length > 0\">\n <button *ngIf=\"visibleButtons.length > 0\"\n mat-icon-button\n [disabled]=\"visibleButtons[0].disabled === true\"\n [matTooltip]=\"visibleButtons[0].tooltip? visibleButtons[0].tooltip : visibleButtons[0].title\"\n (click)=\"handleAction(visibleButtons[0])\">\n <es-icon [color]=\"visibleButtons[0].color\"\n [themeColor]=\"visibleButtons[0].themeColor\"\n [icon]=\"visibleButtons[0].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 1\"\n mat-icon-button\n [disabled]=\"visibleButtons[1].disabled === true\"\n [matTooltip]=\"visibleButtons[1].tooltip? visibleButtons[1].tooltip : visibleButtons[1].title\"\n (click)=\"handleAction(visibleButtons[1])\">\n <es-icon [color]=\"visibleButtons[1].color\"\n [themeColor]=\"visibleButtons[1].themeColor\"\n [icon]=\"visibleButtons[1].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 2\"\n mat-icon-button\n [disabled]=\"visibleButtons[2].disabled === true\"\n [matTooltip]=\"visibleButtons[2].tooltip? visibleButtons[2].tooltip : visibleButtons[2].title\"\n (click)=\"handleAction(visibleButtons[2])\">\n <es-icon [color]=\"visibleButtons[2].color\"\n [themeColor]=\"visibleButtons[2].themeColor\"\n [icon]=\"visibleButtons[2].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 3\"\n mat-icon-button\n [disabled]=\"visibleButtons[3].disabled === true\"\n [matTooltip]=\"visibleButtons[3].tooltip? visibleButtons[3].tooltip : visibleButtons[3].title\"\n (click)=\"handleAction(visibleButtons[3])\">\n <es-icon [color]=\"visibleButtons[3].color\"\n [themeColor]=\"visibleButtons[3].themeColor\"\n [icon]=\"visibleButtons[3].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 4\"\n mat-icon-button\n [disabled]=\"visibleButtons[4].disabled === true\"\n [matTooltip]=\"visibleButtons[4].tooltip? visibleButtons[4].tooltip : visibleButtons[4].title\"\n (click)=\"handleAction(visibleButtons[4])\">\n <es-icon [color]=\"visibleButtons[4].color\"\n [themeColor]=\"visibleButtons[4].themeColor\"\n [icon]=\"visibleButtons[4].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 5\"\n mat-icon-button\n [disabled]=\"visibleButtons[5].disabled === true\"\n [matTooltip]=\"visibleButtons[5].tooltip? visibleButtons[5].tooltip : visibleButtons[5].title\"\n (click)=\"handleAction(visibleButtons[5])\">\n <es-icon [color]=\"visibleButtons[5].color\"\n [themeColor]=\"visibleButtons[5].themeColor\"\n [icon]=\"visibleButtons[5].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 6\"\n mat-icon-button\n [disabled]=\"visibleButtons[6].disabled === true\"\n [matTooltip]=\"visibleButtons[6].tooltip? visibleButtons[6].tooltip : visibleButtons[6].title\"\n (click)=\"handleAction(visibleButtons[6])\">\n <es-icon [color]=\"visibleButtons[6].color\"\n [themeColor]=\"visibleButtons[6].themeColor\"\n [icon]=\"visibleButtons[6].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 7\"\n mat-icon-button\n [disabled]=\"visibleButtons[7].disabled === true\"\n [matTooltip]=\"visibleButtons[7].tooltip? visibleButtons[7].tooltip : visibleButtons[7].title\"\n (click)=\"handleAction(visibleButtons[7])\">\n <es-icon [color]=\"visibleButtons[7].color\"\n [themeColor]=\"visibleButtons[7].themeColor\"\n [icon]=\"visibleButtons[7].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 8\"\n mat-icon-button\n [disabled]=\"visibleButtons[8].disabled === true\"\n [matTooltip]=\"visibleButtons[8].tooltip? visibleButtons[8].tooltip : visibleButtons[8].title\"\n (click)=\"handleAction(visibleButtons[8])\">\n <es-icon [color]=\"visibleButtons[8].color\"\n [themeColor]=\"visibleButtons[8].themeColor\"\n [icon]=\"visibleButtons[8].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 9\"\n mat-icon-button\n [disabled]=\"visibleButtons[9].disabled === true\"\n [matTooltip]=\"visibleButtons[9].tooltip? visibleButtons[9].tooltip : visibleButtons[9].title\"\n (click)=\"handleAction(visibleButtons[9])\">\n <es-icon [color]=\"visibleButtons[9].color\"\n [themeColor]=\"visibleButtons[9].themeColor\"\n [icon]=\"visibleButtons[9].icon\"></es-icon>\n </button>\n</ng-container>\n\n\n<button *ngIf=\"menuVisible || forceMenu\"\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [matTooltip]=\"'an.more' | translate\">\n <es-icon [icon]=\"esIcon.MORE_VERT\"></es-icon>\n</button>\n\n\n<mat-menu #menu=\"matMenu\"\n [overlapTrigger]=\"false\"\n yPosition=\"below\"\n xPosition=\"before\">\n <ng-container *ngIf=\"hiddenButtons && hiddenButtons.length > 0\">\n <button *ngIf=\"hiddenButtons.length > 0\"\n mat-menu-item\n [disabled]=\"hiddenButtons[0].disabled === true\"\n (click)=\"handleAction(hiddenButtons[0])\">\n <es-icon [color]=\"hiddenButtons[0].color\"\n [themeColor]=\"hiddenButtons[0].themeColor\"\n [icon]=\"hiddenButtons[0].icon\"></es-icon>\n <span>{{hiddenButtons[0].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 1\"\n mat-menu-item\n [disabled]=\"hiddenButtons[1].disabled === true\"\n (click)=\"handleAction(hiddenButtons[1])\">\n <es-icon [color]=\"hiddenButtons[1].color\"\n [themeColor]=\"hiddenButtons[1].themeColor\"\n [icon]=\"hiddenButtons[1].icon\"></es-icon>\n <span>{{hiddenButtons[1].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 2\"\n mat-menu-item\n [disabled]=\"hiddenButtons[2].disabled === true\"\n (click)=\"handleAction(hiddenButtons[2])\">\n <es-icon [color]=\"hiddenButtons[2].color\"\n [themeColor]=\"hiddenButtons[2].themeColor\"\n [icon]=\"hiddenButtons[2].icon\"></es-icon>\n <span>{{hiddenButtons[2].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 3\"\n mat-menu-item\n [disabled]=\"hiddenButtons[3].disabled === true\"\n (click)=\"handleAction(hiddenButtons[3])\">\n <es-icon [color]=\"hiddenButtons[3].color\"\n [themeColor]=\"hiddenButtons[3].themeColor\"\n [icon]=\"hiddenButtons[3].icon\"></es-icon>\n <span>{{hiddenButtons[3].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 4\"\n mat-menu-item\n [disabled]=\"hiddenButtons[4].disabled === true\"\n (click)=\"handleAction(hiddenButtons[4])\">\n <es-icon [color]=\"hiddenButtons[4].color\"\n [themeColor]=\"hiddenButtons[4].themeColor\"\n [icon]=\"hiddenButtons[4].icon\"></es-icon>\n <span>{{hiddenButtons[4].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 5\"\n mat-menu-item\n [disabled]=\"hiddenButtons[5].disabled === true\"\n (click)=\"handleAction(hiddenButtons[5])\">\n <es-icon [color]=\"hiddenButtons[5].color\"\n [themeColor]=\"hiddenButtons[5].themeColor\"\n [icon]=\"hiddenButtons[5].icon\"></es-icon>\n <span>{{hiddenButtons[5].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 6\"\n mat-menu-item\n [disabled]=\"hiddenButtons[6].disabled === true\"\n (click)=\"handleAction(hiddenButtons[6])\">\n <es-icon [color]=\"hiddenButtons[6].color\"\n [themeColor]=\"hiddenButtons[6].themeColor\"\n [icon]=\"hiddenButtons[6].icon\"></es-icon>\n <span>{{hiddenButtons[6].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 7\"\n mat-menu-item\n [disabled]=\"hiddenButtons[7].disabled === true\"\n (click)=\"handleAction(hiddenButtons[7])\">\n <es-icon [color]=\"hiddenButtons[7].color\"\n [themeColor]=\"hiddenButtons[7].themeColor\"\n [icon]=\"hiddenButtons[7].icon\"></es-icon>\n <span>{{hiddenButtons[7].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 8\"\n mat-menu-item\n [disabled]=\"hiddenButtons[8].disabled === true\"\n (click)=\"handleAction(hiddenButtons[8])\">\n <es-icon [color]=\"hiddenButtons[8].color\"\n [themeColor]=\"hiddenButtons[8].themeColor\"\n [icon]=\"hiddenButtons[8].icon\"></es-icon>\n <span>{{hiddenButtons[8].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 9\"\n mat-menu-item\n [disabled]=\"hiddenButtons[9].disabled === true\"\n (click)=\"handleAction(hiddenButtons[9])\">\n <es-icon [color]=\"hiddenButtons[9].color\"\n [themeColor]=\"hiddenButtons[9].themeColor\"\n [icon]=\"hiddenButtons[9].icon\"></es-icon>\n <span>{{hiddenButtons[9].title}}</span>\n </button>\n </ng-container>\n</mat-menu>\n", styles: [":host{float:right}::ng-deep es-buttons button{height:40px!important;width:40px!important}::ng-deep es-buttons button span{height:40px!important;width:40px!important}::ng-deep es-buttons .mat-mdc-icon-button{padding:0!important}\n"] }]
273
+ }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i2$1.EsDialogService }, { type: i2.MatSnackBar }, { type: i4$1.HttpService }]; }, propDecorators: { parentWidth: [{
274
+ type: Input
275
+ }], buttons: [{
276
+ type: Input
277
+ }], forceMenu: [{
278
+ type: Input
279
+ }], buttonClick: [{
280
+ type: Output
281
+ }], reload: [{
282
+ type: Output
283
+ }], dialogCreated: [{
284
+ type: Output
285
+ }], serverResponse: [{
286
+ type: Output
287
+ }] } });
288
+
289
+ class EsButtonsModule {
290
+ }
291
+ /** @nocollapse */ EsButtonsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EsButtonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
292
+ /** @nocollapse */ EsButtonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: EsButtonsModule, declarations: [EsButtonsComponent,
293
+ DialogConfirmComponent,
294
+ DialogFormComponent], imports: [CommonModule,
295
+ MatButtonModule,
296
+ MatTooltipModule,
297
+ MatMenuModule,
298
+ MatSnackBarModule, i7.TranslateModule, EsIconModule,
299
+ EsDialogModule,
300
+ EsFormModule], exports: [EsButtonsComponent] });
301
+ /** @nocollapse */ EsButtonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EsButtonsModule, imports: [CommonModule,
302
+ MatButtonModule,
303
+ MatTooltipModule,
304
+ MatMenuModule,
305
+ MatSnackBarModule,
306
+ TranslateModule.forChild(),
307
+ EsIconModule,
308
+ EsDialogModule,
309
+ EsFormModule] });
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EsButtonsModule, decorators: [{
311
+ type: NgModule,
312
+ args: [{
313
+ imports: [
314
+ CommonModule,
315
+ MatButtonModule,
316
+ MatTooltipModule,
317
+ MatMenuModule,
318
+ MatSnackBarModule,
319
+ TranslateModule.forChild(),
320
+ EsIconModule,
321
+ EsDialogModule,
322
+ EsFormModule,
323
+ ],
324
+ declarations: [
325
+ EsButtonsComponent,
326
+ DialogConfirmComponent,
327
+ DialogFormComponent,
328
+ ],
329
+ exports: [EsButtonsComponent],
330
+ }]
331
+ }] });
332
+
333
+ /*
334
+ * Public API Surface of es-buttons
335
+ */
336
+
337
+ /**
338
+ * Generated bundle index. Do not edit.
339
+ */
340
+
341
+ export { EsButtonAction, EsButtonsComponent, EsButtonsModule };
342
+ //# sourceMappingURL=eurosat-buttons.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eurosat-buttons.mjs","sources":["../../../projects/buttons/src/lib/model/es-button-action.ts","../../../projects/buttons/src/lib/components/dialog-confirm/dialog-confirm.component.ts","../../../projects/buttons/src/lib/components/dialog-confirm/dialog-confirm.component.html","../../../projects/buttons/src/lib/components/dialog-form/dialog-form.component.ts","../../../projects/buttons/src/lib/components/dialog-form/dialog-form.component.html","../../../projects/buttons/src/lib/es-buttons.component.ts","../../../projects/buttons/src/lib/es-buttons.component.html","../../../projects/buttons/src/lib/es-buttons.module.ts","../../../projects/buttons/src/public_api.ts","../../../projects/buttons/src/eurosat-buttons.ts"],"sourcesContent":["export class EsButtonAction {\n\n public static ACTION_DIALOG_CONFIRM = 'dialog-confirm';\n public static ACTION_DIALOG_DELETE = 'dialog-delete';\n public static ACTION_DIALOG_FORM = 'dialog-form';\n public static ACTION_CARD_CONTENT_FORM = 'card-content-form';\n public static ACTION_CARD_CONTENT_WIZARD = 'card-content-wizard'; // todo asi zrusit\n public static ACTION_CHANGE_CARD_CONTENT = 'change-card-content'; // mozna zrusit ? je kuli neemitu clicku na button\n public static ACTION_DOWNLOAD = 'download';\n public static ACTION_REQUEST = 'request';\n public static ACTION_ROUTER_NAVIGATE = 'router-navigate';\n public static ACTION_WINDOW_LOCATION = 'open-link';\n}\n","import {Component, EventEmitter, Output} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {MatSnackBar, MatSnackBarConfig} from '@angular/material/snack-bar';\nimport {EsSnackBarPanelClass} from '@eurosat/snackbar';\nimport {EsDialogService} from '@eurosat/dialog';\nimport { DialogResult } from '../dialog-result';\nimport { EsFormResponseMessage, EsFormResponseMessageType } from '@eurosat/form';\n\n\n@Component({\n selector: 'es-dialog-confirm',\n templateUrl: './dialog-confirm.component.html',\n styleUrls: ['./dialog-confirm.component.scss']\n})\nexport class DialogConfirmComponent {\n\n @Output() submit: EventEmitter<any> = new EventEmitter<any>();\n public message: string;\n public url: string;\n activeRequest = false;\n\n constructor(\n public dialogRef: MatDialogRef<DialogConfirmComponent>,\n private snackBar: MatSnackBar,\n private ds: EsDialogService\n ) {\n const data = this.ds.getData();\n this.message = data.message;\n this.url = data.url;\n }\n\n confirm() {\n this.activeRequest = true;\n this.ds.httpPost(this.url, null).subscribe((response: EsFormResponseMessage) => {\n this.activeRequest = false;\n const config = new MatSnackBarConfig();\n config.duration = 2000;\n if (response.type === EsFormResponseMessageType.TYPE_OK) {\n config.panelClass = EsSnackBarPanelClass.SUCCESS;\n this.submit.emit();\n } else {\n config.panelClass = EsSnackBarPanelClass.DANGER;\n }\n this.snackBar.open(response.message, null, config);\n\n const result: DialogResult = {\n clickedYes: true,\n serverResponse: response\n };\n this.dialogRef.close(result);\n });\n }\n\n}\n","<p>{{message}}</p>\n<div class=\"button-container\">\n <mat-spinner *ngIf=\"activeRequest\" [diameter]=\"36\"></mat-spinner>\n <ng-container *ngIf=\"!activeRequest\">\n <button type=\"button\"\n color=\"accent\"\n mat-raised-button\n (click)=\"confirm()\"> {{'an.common.ano' | translate}}\n </button>\n <button type=\"button\"\n color=\"accent\"\n mat-raised-button\n (click)=\"dialogRef.close({clickedYes: false})\">{{'an.common.ne' | translate}}\n </button>\n </ng-container>\n</div>\n","import {Component} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {EsForm} from '@eurosat/form';\nimport {EsDialogService} from '@eurosat/dialog';\nimport { DialogResult } from '../dialog-result';\n\n@Component({\n selector: 'es-dialog-form',\n templateUrl: './dialog-form.component.html',\n styleUrls: ['./dialog-form.component.scss']\n})\nexport class DialogFormComponent {\n\n public formUrl: string;\n public cols = 1;\n public esForm: EsForm;\n public maxFormHeight: number = window.innerHeight - 60;\n\n constructor(\n public dialogRef: MatDialogRef<DialogFormComponent>,\n ds: EsDialogService,\n ) {\n const data = ds.getData();\n this.formUrl = data.url;\n }\n\n submit(value: {[name: string]: any}) {\n\n // sem se to dostane jen pri success ulozeni formu\n const result: DialogResult = {\n clickedYes: true\n };\n this.dialogRef.close(result);\n\n\n\n // pokud bysme chteli form.value\n // this.dialogRef.close(value);\n // console.log('form value v parent', value);\n\n\n }\n\n getWindowHeight() {\n this.maxFormHeight = window.innerHeight - 60;\n }\n\n\n}\n","<div class=\"es-form-container\" [style.max-height]=\"(maxFormHeight - 106) + 'px'\">\n <es-form [formUrl]=\"formUrl\"\n [dynamicForm]=\"esForm\"\n [cols]=\"cols\"\n (submit)=\"submit($event)\">\n </es-form>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport {Router} from '@angular/router';\nimport {EsButton} from './model/es-button.interface';\nimport {EsButtonAction} from './model/es-button-action';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {MatSnackBar, MatSnackBarConfig} from '@angular/material/snack-bar';\nimport {EsSnackBarPanelClass} from '@eurosat/snackbar';\nimport {HttpService} from '@eurosat/http';\nimport {EsIcon} from '@eurosat/icon';\nimport {DialogConfirmComponent} from './components/dialog-confirm/dialog-confirm.component';\nimport {take} from 'rxjs/operators';\nimport {DialogFormComponent} from './components/dialog-form/dialog-form.component';\nimport {EsDialogService} from '@eurosat/dialog';\nimport {EsDialogConfig} from '@eurosat/dialog';\nimport { DialogResult } from './components/dialog-result';\nimport { EsButtonServerResponse } from './model/es-button-server-response';\nimport { EsFormResponseMessage, EsFormResponseMessageType } from '@eurosat/form';\n\n// todo translates\n\n@Component({\n selector: 'es-buttons',\n templateUrl: './es-buttons.component.html',\n styleUrls: ['./es-buttons.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EsButtonsComponent implements OnChanges {\n\n @Input() parentWidth = 40; // default 40 = 1 button\n @Input() buttons: EsButton[] = []; // normal input\n @Input() forceMenu = false; // pokud chci zobrazit ... menu i pro jeden buttonek, na realtimu pouzito\n\n @Output() buttonClick = new EventEmitter<EsButton>();\n @Output() reload = new EventEmitter<boolean>();\n @Output() dialogCreated = new EventEmitter<MatDialogRef<any>>();\n @Output() serverResponse = new EventEmitter<EsButtonServerResponse>();\n\n menuVisible = false;\n buttonWidth = 40; // todo ViewChild, sirka buttonu ?\n visibleButtons: EsButton[] = [];\n hiddenButtons: EsButton[] = [];\n esIcon = EsIcon;\n _width = 0;\n\n constructor(\n private router: Router,\n private dialog: EsDialogService,\n private snackBar: MatSnackBar,\n private http: HttpService,\n ) { }\n\n showMenu() {\n return this.getHiddenButtons() && this.getHiddenButtons().length > 0 && this.getHiddenButtons().length !== 1;\n }\n\n countVisible() {\n return Math.floor((this._width) / this.buttonWidth) - 1;\n }\n\n getVisibleButtons() {\n if (this.buttons && this.buttons.length > 0) {\n return this.buttons.filter(button => {\n if (this.buttons.indexOf(button) < this.countVisible()\n || (this.getHiddenButtons().length === 1 && !this.forceMenu)) {\n return true;\n }\n });\n }\n }\n\n getHiddenButtons() {\n if (this.buttons && this.buttons.length > 0) {\n return this.buttons.filter(button => {\n if (this.buttons.indexOf(button) >= this.countVisible()) {\n return true;\n }\n });\n }\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange['parentWidth']) {\n if (this.parentWidth > 0) {\n this._width = this.parentWidth;\n this.recalculateButtons();\n }\n }\n\n if (simpleChange['buttons']) {\n if (typeof this.buttons === 'string') {\n this.buttons = JSON.parse(this.buttons);\n }\n this.recalculateButtons();\n }\n }\n\n recalculateButtons() {\n this.menuVisible = this.showMenu();\n this.visibleButtons = this.getVisibleButtons();\n this.hiddenButtons = this.getHiddenButtons();\n }\n\n handleAction(button: EsButton) {\n if (button.action === EsButtonAction.ACTION_DIALOG_CONFIRM) {\n this.openConfirm(button);\n }\n if (button.action === EsButtonAction.ACTION_DIALOG_DELETE) {\n this.openDelete(button);\n }\n if (button.action === EsButtonAction.ACTION_DIALOG_FORM) {\n this.openForm(button);\n }\n if (button.action === EsButtonAction.ACTION_DOWNLOAD) {\n this.http.get(button.url, {responseType: 'blob', observe: 'response'}).subscribe(response => {\n const filename = response.headers.get('Content-Disposition').split('filename=')[1];\n const link = document.createElement('a');\n link.setAttribute('href', window.URL.createObjectURL(response.body));\n link.setAttribute('download', filename);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n });\n }\n if (button.action === EsButtonAction.ACTION_REQUEST) {\n this.http.get(button.url).subscribe((response: EsFormResponseMessage) => {\n const config = new MatSnackBarConfig();\n config.duration = 2000;\n if (response.type === EsFormResponseMessageType.TYPE_OK) {\n config.panelClass = EsSnackBarPanelClass.SUCCESS;\n } else {\n config.panelClass = EsSnackBarPanelClass.DANGER;\n }\n this.snackBar.open(response.message, null, config);\n this.reload.emit(true);\n this.serverResponse.emit({button: button, response: response});\n });\n }\n if (button.action === EsButtonAction.ACTION_ROUTER_NAVIGATE) {\n this.router.navigateByUrl(button.url);\n }\n if (button.action === EsButtonAction.ACTION_WINDOW_LOCATION) {\n window.location.href = button.url;\n }\n this.buttonClick.emit(button);\n }\n\n // handleSubMenuAction(button: EsButton) {\n // // todo asi predelat na md2 menu\n // // todo nevim jestli se zpropaguje click kdyz je to zanoreny pres es-card-header\n // this.buttonClick.emit(button);\n // }\n\n openForm(button: EsButton) {\n const config: EsDialogConfig = {\n title: button.title,\n data: {\n url: button.url\n }\n };\n const dialogRef: MatDialogRef<DialogFormComponent> = this.dialog.open(DialogFormComponent, config);\n this.dialogCreated.emit(dialogRef);\n dialogRef.afterClosed().pipe(take(1)).subscribe( (res: DialogResult) => {\n if (res && res.clickedYes) {\n this.reload.emit(true);\n\n if (res.serverResponse) {\n this.serverResponse.emit({button: button, response: res.serverResponse});\n }\n }\n });\n }\n\n openDelete(button: EsButton) {\n this.openConfirm(button);\n }\n\n openConfirm(button: EsButton) {\n const config: EsDialogConfig = {\n title: button.title,\n data: {\n message: button.message,\n url: button.url\n }\n };\n const dialogRef: MatDialogRef<DialogConfirmComponent> = this.dialog.open(DialogConfirmComponent, config);\n this.dialogCreated.emit(dialogRef);\n dialogRef.afterClosed().pipe(take(1)).subscribe( (res: DialogResult) => {\n if (res && res.clickedYes) {\n this.reload.emit(true);\n\n if (res.serverResponse) {\n this.serverResponse.emit({button: button, response: res.serverResponse});\n }\n }\n });\n }\n}\n","<ng-container *ngIf=\"visibleButtons && visibleButtons.length > 0\">\n <button *ngIf=\"visibleButtons.length > 0\"\n mat-icon-button\n [disabled]=\"visibleButtons[0].disabled === true\"\n [matTooltip]=\"visibleButtons[0].tooltip? visibleButtons[0].tooltip : visibleButtons[0].title\"\n (click)=\"handleAction(visibleButtons[0])\">\n <es-icon [color]=\"visibleButtons[0].color\"\n [themeColor]=\"visibleButtons[0].themeColor\"\n [icon]=\"visibleButtons[0].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 1\"\n mat-icon-button\n [disabled]=\"visibleButtons[1].disabled === true\"\n [matTooltip]=\"visibleButtons[1].tooltip? visibleButtons[1].tooltip : visibleButtons[1].title\"\n (click)=\"handleAction(visibleButtons[1])\">\n <es-icon [color]=\"visibleButtons[1].color\"\n [themeColor]=\"visibleButtons[1].themeColor\"\n [icon]=\"visibleButtons[1].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 2\"\n mat-icon-button\n [disabled]=\"visibleButtons[2].disabled === true\"\n [matTooltip]=\"visibleButtons[2].tooltip? visibleButtons[2].tooltip : visibleButtons[2].title\"\n (click)=\"handleAction(visibleButtons[2])\">\n <es-icon [color]=\"visibleButtons[2].color\"\n [themeColor]=\"visibleButtons[2].themeColor\"\n [icon]=\"visibleButtons[2].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 3\"\n mat-icon-button\n [disabled]=\"visibleButtons[3].disabled === true\"\n [matTooltip]=\"visibleButtons[3].tooltip? visibleButtons[3].tooltip : visibleButtons[3].title\"\n (click)=\"handleAction(visibleButtons[3])\">\n <es-icon [color]=\"visibleButtons[3].color\"\n [themeColor]=\"visibleButtons[3].themeColor\"\n [icon]=\"visibleButtons[3].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 4\"\n mat-icon-button\n [disabled]=\"visibleButtons[4].disabled === true\"\n [matTooltip]=\"visibleButtons[4].tooltip? visibleButtons[4].tooltip : visibleButtons[4].title\"\n (click)=\"handleAction(visibleButtons[4])\">\n <es-icon [color]=\"visibleButtons[4].color\"\n [themeColor]=\"visibleButtons[4].themeColor\"\n [icon]=\"visibleButtons[4].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 5\"\n mat-icon-button\n [disabled]=\"visibleButtons[5].disabled === true\"\n [matTooltip]=\"visibleButtons[5].tooltip? visibleButtons[5].tooltip : visibleButtons[5].title\"\n (click)=\"handleAction(visibleButtons[5])\">\n <es-icon [color]=\"visibleButtons[5].color\"\n [themeColor]=\"visibleButtons[5].themeColor\"\n [icon]=\"visibleButtons[5].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 6\"\n mat-icon-button\n [disabled]=\"visibleButtons[6].disabled === true\"\n [matTooltip]=\"visibleButtons[6].tooltip? visibleButtons[6].tooltip : visibleButtons[6].title\"\n (click)=\"handleAction(visibleButtons[6])\">\n <es-icon [color]=\"visibleButtons[6].color\"\n [themeColor]=\"visibleButtons[6].themeColor\"\n [icon]=\"visibleButtons[6].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 7\"\n mat-icon-button\n [disabled]=\"visibleButtons[7].disabled === true\"\n [matTooltip]=\"visibleButtons[7].tooltip? visibleButtons[7].tooltip : visibleButtons[7].title\"\n (click)=\"handleAction(visibleButtons[7])\">\n <es-icon [color]=\"visibleButtons[7].color\"\n [themeColor]=\"visibleButtons[7].themeColor\"\n [icon]=\"visibleButtons[7].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 8\"\n mat-icon-button\n [disabled]=\"visibleButtons[8].disabled === true\"\n [matTooltip]=\"visibleButtons[8].tooltip? visibleButtons[8].tooltip : visibleButtons[8].title\"\n (click)=\"handleAction(visibleButtons[8])\">\n <es-icon [color]=\"visibleButtons[8].color\"\n [themeColor]=\"visibleButtons[8].themeColor\"\n [icon]=\"visibleButtons[8].icon\"></es-icon>\n </button>\n <button *ngIf=\"visibleButtons.length > 9\"\n mat-icon-button\n [disabled]=\"visibleButtons[9].disabled === true\"\n [matTooltip]=\"visibleButtons[9].tooltip? visibleButtons[9].tooltip : visibleButtons[9].title\"\n (click)=\"handleAction(visibleButtons[9])\">\n <es-icon [color]=\"visibleButtons[9].color\"\n [themeColor]=\"visibleButtons[9].themeColor\"\n [icon]=\"visibleButtons[9].icon\"></es-icon>\n </button>\n</ng-container>\n\n\n<button *ngIf=\"menuVisible || forceMenu\"\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [matTooltip]=\"'an.more' | translate\">\n <es-icon [icon]=\"esIcon.MORE_VERT\"></es-icon>\n</button>\n\n\n<mat-menu #menu=\"matMenu\"\n [overlapTrigger]=\"false\"\n yPosition=\"below\"\n xPosition=\"before\">\n <ng-container *ngIf=\"hiddenButtons && hiddenButtons.length > 0\">\n <button *ngIf=\"hiddenButtons.length > 0\"\n mat-menu-item\n [disabled]=\"hiddenButtons[0].disabled === true\"\n (click)=\"handleAction(hiddenButtons[0])\">\n <es-icon [color]=\"hiddenButtons[0].color\"\n [themeColor]=\"hiddenButtons[0].themeColor\"\n [icon]=\"hiddenButtons[0].icon\"></es-icon>\n <span>{{hiddenButtons[0].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 1\"\n mat-menu-item\n [disabled]=\"hiddenButtons[1].disabled === true\"\n (click)=\"handleAction(hiddenButtons[1])\">\n <es-icon [color]=\"hiddenButtons[1].color\"\n [themeColor]=\"hiddenButtons[1].themeColor\"\n [icon]=\"hiddenButtons[1].icon\"></es-icon>\n <span>{{hiddenButtons[1].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 2\"\n mat-menu-item\n [disabled]=\"hiddenButtons[2].disabled === true\"\n (click)=\"handleAction(hiddenButtons[2])\">\n <es-icon [color]=\"hiddenButtons[2].color\"\n [themeColor]=\"hiddenButtons[2].themeColor\"\n [icon]=\"hiddenButtons[2].icon\"></es-icon>\n <span>{{hiddenButtons[2].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 3\"\n mat-menu-item\n [disabled]=\"hiddenButtons[3].disabled === true\"\n (click)=\"handleAction(hiddenButtons[3])\">\n <es-icon [color]=\"hiddenButtons[3].color\"\n [themeColor]=\"hiddenButtons[3].themeColor\"\n [icon]=\"hiddenButtons[3].icon\"></es-icon>\n <span>{{hiddenButtons[3].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 4\"\n mat-menu-item\n [disabled]=\"hiddenButtons[4].disabled === true\"\n (click)=\"handleAction(hiddenButtons[4])\">\n <es-icon [color]=\"hiddenButtons[4].color\"\n [themeColor]=\"hiddenButtons[4].themeColor\"\n [icon]=\"hiddenButtons[4].icon\"></es-icon>\n <span>{{hiddenButtons[4].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 5\"\n mat-menu-item\n [disabled]=\"hiddenButtons[5].disabled === true\"\n (click)=\"handleAction(hiddenButtons[5])\">\n <es-icon [color]=\"hiddenButtons[5].color\"\n [themeColor]=\"hiddenButtons[5].themeColor\"\n [icon]=\"hiddenButtons[5].icon\"></es-icon>\n <span>{{hiddenButtons[5].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 6\"\n mat-menu-item\n [disabled]=\"hiddenButtons[6].disabled === true\"\n (click)=\"handleAction(hiddenButtons[6])\">\n <es-icon [color]=\"hiddenButtons[6].color\"\n [themeColor]=\"hiddenButtons[6].themeColor\"\n [icon]=\"hiddenButtons[6].icon\"></es-icon>\n <span>{{hiddenButtons[6].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 7\"\n mat-menu-item\n [disabled]=\"hiddenButtons[7].disabled === true\"\n (click)=\"handleAction(hiddenButtons[7])\">\n <es-icon [color]=\"hiddenButtons[7].color\"\n [themeColor]=\"hiddenButtons[7].themeColor\"\n [icon]=\"hiddenButtons[7].icon\"></es-icon>\n <span>{{hiddenButtons[7].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 8\"\n mat-menu-item\n [disabled]=\"hiddenButtons[8].disabled === true\"\n (click)=\"handleAction(hiddenButtons[8])\">\n <es-icon [color]=\"hiddenButtons[8].color\"\n [themeColor]=\"hiddenButtons[8].themeColor\"\n [icon]=\"hiddenButtons[8].icon\"></es-icon>\n <span>{{hiddenButtons[8].title}}</span>\n </button>\n <button *ngIf=\"hiddenButtons.length > 9\"\n mat-menu-item\n [disabled]=\"hiddenButtons[9].disabled === true\"\n (click)=\"handleAction(hiddenButtons[9])\">\n <es-icon [color]=\"hiddenButtons[9].color\"\n [themeColor]=\"hiddenButtons[9].themeColor\"\n [icon]=\"hiddenButtons[9].icon\"></es-icon>\n <span>{{hiddenButtons[9].title}}</span>\n </button>\n </ng-container>\n</mat-menu>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {EsButtonsComponent} from './es-buttons.component';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {EsIconModule} from '@eurosat/icon';\nimport {EsDialogModule} from '@eurosat/dialog';\nimport {EsFormModule} from '@eurosat/form';\nimport {DialogConfirmComponent} from './components/dialog-confirm/dialog-confirm.component';\nimport {DialogFormComponent} from './components/dialog-form/dialog-form.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatTooltipModule,\n MatMenuModule,\n MatSnackBarModule,\n TranslateModule.forChild(),\n EsIconModule,\n EsDialogModule,\n EsFormModule,\n ],\n declarations: [\n EsButtonsComponent,\n DialogConfirmComponent,\n DialogFormComponent,\n ],\n exports: [EsButtonsComponent],\n})\nexport class EsButtonsModule { }\n","/*\n * Public API Surface of es-buttons\n */\n\nexport * from './lib/es-buttons.component';\nexport * from './lib/es-buttons.module';\nexport * from './lib/model/es-button.interface';\nexport * from './lib/model/es-button-action';\nexport * from './lib/model/es-button-server-response';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i2","i1","i4","i5","i6","i7","i10"],"mappings":"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"}