@pepperi-addons/ngx-composite-lib 0.4.2-beta.202 → 0.4.2-beta.203

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 (75) hide show
  1. package/esm2020/asset-picker-button/asset-picker-button.component.mjs +1 -1
  2. package/esm2020/color-settings/color-settings.component.mjs +1 -1
  3. package/esm2020/file-status-panel/file-status-panel.component.mjs +94 -29
  4. package/esm2020/generic-fields-builder/flow-field/flow-field.component.mjs +110 -0
  5. package/esm2020/generic-fields-builder/generic-fields-builder.component.mjs +270 -18
  6. package/esm2020/generic-fields-builder/generic-fields-builder.model.mjs +2 -0
  7. package/esm2020/generic-fields-builder/generic-fields-builder.module.mjs +35 -7
  8. package/esm2020/generic-fields-builder/public-api.mjs +2 -1
  9. package/esm2020/generic-list/generic-list.component.mjs +26 -7
  10. package/esm2020/generic-list/generic-list.service.mjs +3 -2
  11. package/esm2020/icon-picker/icon-picker.component.mjs +1 -1
  12. package/esm2020/layout-builder/main-editor/main-editor.component.mjs +1 -1
  13. package/esm2020/layout-builder/section-editor/section-editor.component.mjs +1 -1
  14. package/esm2020/layout-builder2/layout-builder.component.mjs +3 -3
  15. package/esm2020/layout-builder2/main-editor/main-editor.component.mjs +1 -1
  16. package/esm2020/layout-builder2/section-block/section-block.component.mjs +3 -3
  17. package/esm2020/layout-builder2/section-editor/section-editor.component.mjs +1 -1
  18. package/esm2020/manage-parameters/manage-parameters.component.mjs +1 -1
  19. package/esm2020/mapping-parameters/mapping-parameters.component.mjs +1 -1
  20. package/esm2020/mapping-parameters/param-map/param-map.component.mjs +1 -1
  21. package/esm2020/padding-settings/padding-settings.component.mjs +1 -1
  22. package/esm2020/shadow-settings/shadow-settings.component.mjs +1 -1
  23. package/fesm2015/pepperi-addons-ngx-composite-lib-asset-picker-button.mjs.map +1 -1
  24. package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
  25. package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
  26. package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +91 -28
  27. package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
  28. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +413 -23
  29. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs.map +1 -1
  30. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs +28 -7
  31. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
  32. package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
  33. package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
  34. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
  35. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
  36. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +6 -6
  37. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -1
  38. package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +1 -1
  39. package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -1
  40. package/fesm2015/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs.map +1 -1
  41. package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
  42. package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
  43. package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
  44. package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
  45. package/fesm2020/pepperi-addons-ngx-composite-lib-asset-picker-button.mjs.map +1 -1
  46. package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
  47. package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
  48. package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +93 -28
  49. package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
  50. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +406 -23
  51. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs.map +1 -1
  52. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +27 -7
  53. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
  54. package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
  55. package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
  56. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
  57. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
  58. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +6 -6
  59. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -1
  60. package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +1 -1
  61. package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -1
  62. package/fesm2020/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs.map +1 -1
  63. package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
  64. package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
  65. package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
  66. package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
  67. package/file-status-panel/file-status-panel.component.d.ts +17 -5
  68. package/generic-fields-builder/flow-field/flow-field.component.d.ts +51 -0
  69. package/generic-fields-builder/generic-fields-builder.component.d.ts +34 -14
  70. package/generic-fields-builder/generic-fields-builder.model.d.ts +20 -0
  71. package/generic-fields-builder/generic-fields-builder.module.d.ts +19 -13
  72. package/generic-fields-builder/public-api.d.ts +1 -0
  73. package/generic-list/generic-list.component.d.ts +5 -2
  74. package/package.json +2 -2
  75. package/src/assets/i18n/en.ngx-composite-lib.json +5 -0
@@ -1,38 +1,39 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, Component, Optional, Inject, Output, Input, NgModule } from '@angular/core';
3
- import * as i2 from '@angular/common';
3
+ import * as i3 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1 from '@angular/material/snack-bar';
6
6
  import { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';
7
+ import * as i2 from '@pepperi-addons/ngx-lib/snack-bar';
8
+ import { PepSnackBarModule } from '@pepperi-addons/ngx-lib/snack-bar';
7
9
  import * as i1$1 from '@pepperi-addons/ngx-lib/icon';
8
10
  import { pepIconArrowRightAlt, PepIconModule } from '@pepperi-addons/ngx-lib/icon';
9
- import * as i4 from '@pepperi-addons/ngx-lib/snack-bar';
10
- import { PepSnackBarModule } from '@pepperi-addons/ngx-lib/snack-bar';
11
11
  import { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';
12
12
  import { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';
13
13
  import { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';
14
14
  import { PepButtonModule } from '@pepperi-addons/ngx-lib/button';
15
15
 
16
16
  class FileStatusPanelComponent {
17
- constructor(data, snackBarRef, snackBar, cdr) {
17
+ constructor(data, snackBarRef, snackBar, pepSnackBarService, cdr, elementRef, renderer) {
18
18
  this.data = data;
19
19
  this.snackBarRef = snackBarRef;
20
20
  this.snackBar = snackBar;
21
+ this.pepSnackBarService = pepSnackBarService;
21
22
  this.cdr = cdr;
23
+ this.elementRef = elementRef;
24
+ this.renderer = renderer;
22
25
  // @Input() title = '';
23
26
  // @Input() filesList: Array<FileStatus> = [];
24
27
  this.closeClick = new EventEmitter();
25
28
  this._openAsSnackBar = false;
29
+ this._hasOpenAsSnackBarInput = false;
26
30
  this._opened = false;
27
31
  this._pendingOpen = false;
28
32
  //
29
33
  }
30
34
  set panelData(val) {
31
35
  if (val) {
32
- if (!val.content || !Array.isArray(val.content)) {
33
- val.content = [];
34
- }
35
- this.data = val;
36
+ this.data = this.normalizePanelData(val);
36
37
  // Trigger change detection when used as Angular Element
37
38
  try {
38
39
  this.cdr.detectChanges();
@@ -42,7 +43,12 @@ class FileStatusPanelComponent {
42
43
  }
43
44
  }
44
45
  set openAsSnackBar(val) {
46
+ this._hasOpenAsSnackBarInput = true;
45
47
  this._openAsSnackBar = !!val;
48
+ try {
49
+ this.cdr.detectChanges();
50
+ }
51
+ catch (_a) { }
46
52
  if (this._openAsSnackBar) {
47
53
  if (this._opened) {
48
54
  // If already open, dismiss and re-open after dismissed
@@ -59,13 +65,14 @@ class FileStatusPanelComponent {
59
65
  }
60
66
  ngOnInit() {
61
67
  var _a;
62
- if (!this.data || !Array.isArray(this.data.content)) {
63
- this.data = Object.assign(Object.assign({}, this.data), { content: [] });
64
- }
68
+ this.data = this.normalizePanelData(this.data);
65
69
  // Provide a safe object for the template binding when not opened as snackbar
66
70
  this.snackBarRefInput = (_a = this.snackBarRef) !== null && _a !== void 0 ? _a : { dismiss: () => { } };
67
71
  this.openIfRequested();
68
72
  }
73
+ ngAfterViewInit() {
74
+ this.alignSnackBarWrapper();
75
+ }
69
76
  onCloseClicked(event) {
70
77
  var _a;
71
78
  try {
@@ -74,21 +81,73 @@ class FileStatusPanelComponent {
74
81
  catch (_b) { }
75
82
  this.closeClick.emit();
76
83
  }
84
+ get shouldRenderInline() {
85
+ if (this.snackBarRef) {
86
+ return true;
87
+ }
88
+ if (this.isElementHost && !this._hasOpenAsSnackBarInput) {
89
+ return false;
90
+ }
91
+ return !this._openAsSnackBar;
92
+ }
93
+ get visibleContent() {
94
+ var _a;
95
+ const content = Array.isArray((_a = this.data) === null || _a === void 0 ? void 0 : _a.content) ? this.data.content : [];
96
+ return content.filter((file) => {
97
+ if (!file || file.status === 'hidden') {
98
+ return false;
99
+ }
100
+ return !!file.name || !!file.status || !!file.statusMessage;
101
+ });
102
+ }
103
+ get isElementHost() {
104
+ return this.elementRef.nativeElement.tagName === 'PEP-FILE-STATUS-PANEL-ELEMENT';
105
+ }
106
+ alignSnackBarWrapper() {
107
+ if (!this.snackBarRef) {
108
+ return;
109
+ }
110
+ setTimeout(() => {
111
+ const wrapper = this.elementRef.nativeElement.closest('.cdk-global-overlay-wrapper');
112
+ if (!wrapper) {
113
+ return;
114
+ }
115
+ const isRtl = getComputedStyle(wrapper).direction === 'rtl';
116
+ this.renderer.setStyle(wrapper, 'justify-content', isRtl ? 'flex-start' : 'flex-end');
117
+ });
118
+ }
77
119
  openIfRequested() {
78
- if (this._openAsSnackBar && !this._opened && this.data && Array.isArray(this.data.content)) {
79
- this._opened = true;
80
- this._snackRef = this.snackBar.openFromComponent(FileStatusPanelComponent, {
81
- data: this.data,
82
- });
83
- this._snackRef.afterDismissed().subscribe(() => {
84
- this._opened = false;
85
- if (this._pendingOpen) {
86
- this._pendingOpen = false;
87
- // Re-open with current data (requested via setter while open)
88
- this.openIfRequested();
89
- }
90
- });
120
+ if (!this._openAsSnackBar || this.visibleContent.length === 0) {
121
+ return;
91
122
  }
123
+ const existingRef = FileStatusPanelComponent.activeSnackBarRef;
124
+ if (existingRef === null || existingRef === void 0 ? void 0 : existingRef.instance) {
125
+ try {
126
+ existingRef.instance.panelData = this.normalizePanelData(this.data);
127
+ }
128
+ catch (_a) { }
129
+ return;
130
+ }
131
+ if (this._opened) {
132
+ return;
133
+ }
134
+ this._opened = true;
135
+ const snackBarConfig = this.pepSnackBarService.getSnackBarConfig();
136
+ snackBarConfig.data = this.normalizePanelData(this.data);
137
+ const ref = this.snackBar.openFromComponent(FileStatusPanelComponent, snackBarConfig);
138
+ this._snackRef = ref;
139
+ FileStatusPanelComponent.activeSnackBarRef = ref;
140
+ ref.afterDismissed().subscribe(() => {
141
+ if (FileStatusPanelComponent.activeSnackBarRef === ref) {
142
+ FileStatusPanelComponent.activeSnackBarRef = undefined;
143
+ }
144
+ this._opened = false;
145
+ if (this._pendingOpen) {
146
+ this._pendingOpen = false;
147
+ // Re-open with current data (requested via setter while open)
148
+ this.openIfRequested();
149
+ }
150
+ });
92
151
  }
93
152
  dismissIfOpen() {
94
153
  var _a;
@@ -98,12 +157,16 @@ class FileStatusPanelComponent {
98
157
  catch (_b) { }
99
158
  this._opened = false;
100
159
  }
160
+ normalizePanelData(data) {
161
+ const content = Array.isArray(data === null || data === void 0 ? void 0 : data.content) ? [...data.content] : [];
162
+ return Object.assign(Object.assign({}, data), { content });
163
+ }
101
164
  }
102
- FileStatusPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FileStatusPanelComponent, deps: [{ token: MAT_SNACK_BAR_DATA, optional: true }, { token: MatSnackBarRef, optional: true }, { token: i1.MatSnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
103
- FileStatusPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FileStatusPanelComponent, selector: "pep-file-status-panel", inputs: { panelData: "panelData", openAsSnackBar: "openAsSnackBar" }, outputs: { closeClick: "closeClick" }, ngImport: i0, template: "<pep-snack-bar class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"data?.content?.length\">\n <li *ngFor=\"let file of data?.content\">\n <ng-container *ngIf=\"file?.status !== 'hidden'\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </ng-container>\n </li>\n </ul>\n </div>\n</pep-snack-bar>", styles: [".upload-panel-contnainer .panel-content{max-height:50vh;overflow:auto}.upload-panel-contnainer .panel-content ul{list-style-type:none;padding:0}.upload-panel-contnainer .panel-content ul li{height:1.25rem;margin-top:.5rem;display:flex;flex-direction:row;align-items:center}.upload-panel-contnainer .panel-content ul li pep-icon{height:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$1.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i4.PepSnackBarComponent, selector: "pep-snack-bar", inputs: ["snackBarRef", "title"], outputs: ["closeClick"] }] });
165
+ FileStatusPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FileStatusPanelComponent, deps: [{ token: MAT_SNACK_BAR_DATA, optional: true }, { token: MatSnackBarRef, optional: true }, { token: i1.MatSnackBar }, { token: i2.PepSnackBarService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
166
+ FileStatusPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FileStatusPanelComponent, selector: "pep-file-status-panel", inputs: { panelData: "panelData", openAsSnackBar: "openAsSnackBar" }, outputs: { closeClick: "closeClick" }, ngImport: i0, template: "<pep-snack-bar *ngIf=\"shouldRenderInline\" class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"visibleContent.length\">\n <li *ngFor=\"let file of visibleContent\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </li>\n </ul>\n </div>\n</pep-snack-bar>", styles: [".upload-panel-contnainer .panel-content{max-height:50vh;overflow:auto}.upload-panel-contnainer .panel-content ul{list-style-type:none;padding:0}.upload-panel-contnainer .panel-content ul li{height:1.25rem;margin-top:.5rem;display:flex;flex-direction:row;align-items:center}.upload-panel-contnainer .panel-content ul li pep-icon{height:1rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$1.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i2.PepSnackBarComponent, selector: "pep-snack-bar", inputs: ["snackBarRef", "title"], outputs: ["closeClick"] }] });
104
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FileStatusPanelComponent, decorators: [{
105
168
  type: Component,
106
- args: [{ selector: 'pep-file-status-panel', template: "<pep-snack-bar class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"data?.content?.length\">\n <li *ngFor=\"let file of data?.content\">\n <ng-container *ngIf=\"file?.status !== 'hidden'\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </ng-container>\n </li>\n </ul>\n </div>\n</pep-snack-bar>", styles: [".upload-panel-contnainer .panel-content{max-height:50vh;overflow:auto}.upload-panel-contnainer .panel-content ul{list-style-type:none;padding:0}.upload-panel-contnainer .panel-content ul li{height:1.25rem;margin-top:.5rem;display:flex;flex-direction:row;align-items:center}.upload-panel-contnainer .panel-content ul li pep-icon{height:1rem}\n"] }]
169
+ args: [{ selector: 'pep-file-status-panel', template: "<pep-snack-bar *ngIf=\"shouldRenderInline\" class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"visibleContent.length\">\n <li *ngFor=\"let file of visibleContent\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </li>\n </ul>\n </div>\n</pep-snack-bar>", styles: [".upload-panel-contnainer .panel-content{max-height:50vh;overflow:auto}.upload-panel-contnainer .panel-content ul{list-style-type:none;padding:0}.upload-panel-contnainer .panel-content ul li{height:1.25rem;margin-top:.5rem;display:flex;flex-direction:row;align-items:center}.upload-panel-contnainer .panel-content ul li pep-icon{height:1rem}\n"] }]
107
170
  }], ctorParameters: function () {
108
171
  return [{ type: undefined, decorators: [{
109
172
  type: Optional
@@ -115,7 +178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
115
178
  }, {
116
179
  type: Inject,
117
180
  args: [MatSnackBarRef]
118
- }] }, { type: i1.MatSnackBar }, { type: i0.ChangeDetectorRef }];
181
+ }] }, { type: i1.MatSnackBar }, { type: i2.PepSnackBarService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }];
119
182
  }, propDecorators: { closeClick: [{
120
183
  type: Output
121
184
  }], panelData: [{
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-composite-lib-file-status-panel.mjs","sources":["../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.component.ts","../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.component.html","../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.module.ts","../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.model.ts","../../../projects/ngx-composite-lib/file-status-panel/public-api.ts","../../../projects/ngx-composite-lib/file-status-panel/pepperi-addons-ngx-composite-lib-file-status-panel.ts"],"sourcesContent":["import { Component, OnInit, Injectable, Input, Output, EventEmitter, Optional, Inject, ChangeDetectorRef } from '@angular/core';\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA, MatSnackBar } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepSnackBarData } from '@pepperi-addons/ngx-lib/snack-bar';\nimport { FileStatus } from './file-status-panel.model';\n\n@Component({\n selector: 'pep-file-status-panel',\n templateUrl: './file-status-panel.component.html',\n styleUrls: ['./file-status-panel.component.scss']\n})\nexport class FileStatusPanelComponent implements OnInit {\n // @Input() title = '';\n // @Input() filesList: Array<FileStatus> = [];\n \n @Output()\n closeClick: EventEmitter<void> = new EventEmitter<void>();\n \n @Input()\n set panelData(val: PepSnackBarData | undefined) {\n if (val) {\n if (!(val as any).content || !Array.isArray((val as any).content)) {\n (val as any).content = [];\n }\n this.data = val;\n // Trigger change detection when used as Angular Element\n try { this.cdr.detectChanges(); } catch {}\n this.openIfRequested();\n }\n }\n\n @Input()\n set openAsSnackBar(val: boolean | undefined) {\n this._openAsSnackBar = !!val;\n if (this._openAsSnackBar) {\n if (this._opened) {\n // If already open, dismiss and re-open after dismissed\n this._pendingOpen = true;\n this.dismissIfOpen();\n } else {\n this.openIfRequested();\n }\n } else {\n this.dismissIfOpen();\n }\n }\n\n private _openAsSnackBar = false;\n private _opened = false;\n private _snackRef?: MatSnackBarRef<FileStatusPanelComponent>;\n private _pendingOpen = false;\n // Used only for template binding to satisfy strict template typing\n snackBarRefInput: any;\n \n constructor(\n @Optional() @Inject(MAT_SNACK_BAR_DATA) public data: PepSnackBarData | undefined,\n @Optional() @Inject(MatSnackBarRef) public snackBarRef: MatSnackBarRef<FileStatusPanelComponent> | undefined,\n private snackBar: MatSnackBar,\n private cdr: ChangeDetectorRef\n ) {\n //\n }\n\n ngOnInit() {\n if (!this.data || !Array.isArray((this.data as any).content)) {\n this.data = ({ ...(this.data as any), content: [] } as any);\n }\n // Provide a safe object for the template binding when not opened as snackbar\n this.snackBarRefInput = this.snackBarRef ?? { dismiss: () => {} };\n this.openIfRequested();\n }\n\n onCloseClicked(event: any): void {\n try { this.snackBarRef?.dismiss(); } catch {}\n this.closeClick.emit();\n }\n\n private openIfRequested(): void {\n if (this._openAsSnackBar && !this._opened && this.data && Array.isArray((this.data as any).content)) {\n this._opened = true;\n this._snackRef = this.snackBar.openFromComponent(FileStatusPanelComponent, {\n data: this.data,\n });\n this._snackRef.afterDismissed().subscribe(() => {\n this._opened = false;\n if (this._pendingOpen) {\n this._pendingOpen = false;\n // Re-open with current data (requested via setter while open)\n this.openIfRequested();\n }\n });\n }\n }\n\n private dismissIfOpen(): void {\n try {\n this._snackRef?.dismiss();\n } catch {}\n this._opened = false;\n }\n\n\n}","<pep-snack-bar class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"data?.content?.length\">\n <li *ngFor=\"let file of data?.content\">\n <ng-container *ngIf=\"file?.status !== 'hidden'\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </ng-container>\n </li>\n </ul>\n </div>\n</pep-snack-bar>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileStatusPanelComponent } from './file-status-panel.component';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepIconModule, PepIconRegistry, pepIconArrowRightAlt } from '@pepperi-addons/ngx-lib/icon';\nimport { PepSnackBarModule } from '@pepperi-addons/ngx-lib/snack-bar';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\n\nconst pepIcons = [\n pepIconArrowRightAlt,\n]\n\n@NgModule({\n declarations: [\n FileStatusPanelComponent\n ],\n imports: [\n CommonModule,\n PepTopBarModule,\n PepTextboxModule,\n PepButtonModule,\n PepIconModule,\n PepDialogModule,\n PepSnackBarModule\n ],\n exports: [FileStatusPanelComponent]\n})\n\nexport class PepFileStatusPanelModule { \n constructor(\n private pepIconRegistry: PepIconRegistry,\n ) {\n this.pepIconRegistry.registerIcons(pepIcons);\n }\n}","export type FileStatusType = 'uploading' | 'downloading' | 'done' | 'failed' | 'hidden' | 'deleting';\r\n\r\nexport class FileStatus {\r\n key = 0;\r\n name = '';\r\n status: FileStatusType = 'uploading';\r\n statusMessage? = '';\r\n}","/*\n * Public API Surface of ngx-composite-lib/file-status-panel\n */\nexport * from './file-status-panel.module';\nexport * from './file-status-panel.component';\nexport * from './file-status-panel.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1"],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-composite-lib-file-status-panel.mjs","sources":["../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.component.ts","../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.component.html","../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.module.ts","../../../projects/ngx-composite-lib/file-status-panel/file-status-panel.model.ts","../../../projects/ngx-composite-lib/file-status-panel/public-api.ts","../../../projects/ngx-composite-lib/file-status-panel/pepperi-addons-ngx-composite-lib-file-status-panel.ts"],"sourcesContent":["import { Component, OnInit, Input, Output, EventEmitter, Optional, Inject, ChangeDetectorRef, ElementRef, AfterViewInit, Renderer2 } from '@angular/core';\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA, MatSnackBar } from '@angular/material/snack-bar';\nimport { PepSnackBarData, PepSnackBarService } from '@pepperi-addons/ngx-lib/snack-bar';\nimport { FileStatus } from './file-status-panel.model';\n\n@Component({\n selector: 'pep-file-status-panel',\n templateUrl: './file-status-panel.component.html',\n styleUrls: ['./file-status-panel.component.scss']\n})\nexport class FileStatusPanelComponent implements OnInit, AfterViewInit {\n // @Input() title = '';\n // @Input() filesList: Array<FileStatus> = [];\n \n @Output()\n closeClick: EventEmitter<void> = new EventEmitter<void>();\n \n @Input()\n set panelData(val: PepSnackBarData | undefined) {\n if (val) {\n this.data = this.normalizePanelData(val);\n // Trigger change detection when used as Angular Element\n try { this.cdr.detectChanges(); } catch {}\n this.openIfRequested();\n }\n }\n\n @Input()\n set openAsSnackBar(val: boolean | undefined) {\n this._hasOpenAsSnackBarInput = true;\n this._openAsSnackBar = !!val;\n try { this.cdr.detectChanges(); } catch {}\n if (this._openAsSnackBar) {\n if (this._opened) {\n // If already open, dismiss and re-open after dismissed\n this._pendingOpen = true;\n this.dismissIfOpen();\n } else {\n this.openIfRequested();\n }\n } else {\n this.dismissIfOpen();\n }\n }\n\n private _openAsSnackBar = false;\n private _hasOpenAsSnackBarInput = false;\n private _opened = false;\n private _snackRef?: MatSnackBarRef<FileStatusPanelComponent>;\n private static activeSnackBarRef: MatSnackBarRef<FileStatusPanelComponent> | undefined;\n private _pendingOpen = false;\n // Used only for template binding to satisfy strict template typing\n snackBarRefInput: any;\n \n constructor(\n @Optional() @Inject(MAT_SNACK_BAR_DATA) public data: PepSnackBarData | undefined,\n @Optional() @Inject(MatSnackBarRef) public snackBarRef: MatSnackBarRef<FileStatusPanelComponent> | undefined,\n private snackBar: MatSnackBar,\n private pepSnackBarService: PepSnackBarService,\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {\n //\n }\n\n ngOnInit() {\n this.data = this.normalizePanelData(this.data);\n // Provide a safe object for the template binding when not opened as snackbar\n this.snackBarRefInput = this.snackBarRef ?? { dismiss: () => {} };\n this.openIfRequested();\n }\n\n ngAfterViewInit(): void {\n this.alignSnackBarWrapper();\n }\n\n onCloseClicked(event: any): void {\n try { this.snackBarRef?.dismiss(); } catch {}\n this.closeClick.emit();\n }\n\n get shouldRenderInline(): boolean {\n if (this.snackBarRef) {\n return true;\n }\n\n if (this.isElementHost && !this._hasOpenAsSnackBarInput) {\n return false;\n }\n\n return !this._openAsSnackBar;\n }\n\n get visibleContent(): FileStatus[] {\n const content = Array.isArray((this.data as any)?.content) ? ((this.data as any).content as FileStatus[]) : [];\n\n return content.filter((file) => {\n if (!file || file.status === 'hidden') {\n return false;\n }\n\n return !!file.name || !!file.status || !!file.statusMessage;\n });\n }\n\n private get isElementHost(): boolean {\n return this.elementRef.nativeElement.tagName === 'PEP-FILE-STATUS-PANEL-ELEMENT';\n }\n\n private alignSnackBarWrapper(): void {\n if (!this.snackBarRef) {\n return;\n }\n\n setTimeout(() => {\n const wrapper = this.elementRef.nativeElement.closest('.cdk-global-overlay-wrapper') as HTMLElement | null;\n\n if (!wrapper) {\n return;\n }\n\n const isRtl = getComputedStyle(wrapper).direction === 'rtl';\n this.renderer.setStyle(wrapper, 'justify-content', isRtl ? 'flex-start' : 'flex-end');\n });\n }\n\n private openIfRequested(): void {\n if (!this._openAsSnackBar || this.visibleContent.length === 0) {\n return;\n }\n\n const existingRef = FileStatusPanelComponent.activeSnackBarRef;\n if (existingRef?.instance) {\n try {\n existingRef.instance.panelData = this.normalizePanelData(this.data);\n } catch {}\n return;\n }\n\n if (this._opened) {\n return;\n }\n\n this._opened = true;\n const snackBarConfig = this.pepSnackBarService.getSnackBarConfig();\n snackBarConfig.data = this.normalizePanelData(this.data);\n\n const ref = this.snackBar.openFromComponent(FileStatusPanelComponent, snackBarConfig);\n this._snackRef = ref;\n FileStatusPanelComponent.activeSnackBarRef = ref;\n\n ref.afterDismissed().subscribe(() => {\n if (FileStatusPanelComponent.activeSnackBarRef === ref) {\n FileStatusPanelComponent.activeSnackBarRef = undefined;\n }\n\n this._opened = false;\n if (this._pendingOpen) {\n this._pendingOpen = false;\n // Re-open with current data (requested via setter while open)\n this.openIfRequested();\n }\n });\n }\n\n private dismissIfOpen(): void {\n try {\n this._snackRef?.dismiss();\n } catch {}\n this._opened = false;\n }\n\n private normalizePanelData(data: PepSnackBarData | undefined): PepSnackBarData {\n const content = Array.isArray((data as any)?.content) ? [ ...((data as any).content as FileStatus[]) ] : [];\n\n return {\n ...(data as any),\n content,\n } as PepSnackBarData;\n }\n}","<pep-snack-bar *ngIf=\"shouldRenderInline\" class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"visibleContent.length\">\n <li *ngFor=\"let file of visibleContent\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </li>\n </ul>\n </div>\n</pep-snack-bar>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileStatusPanelComponent } from './file-status-panel.component';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepTopBarModule } from '@pepperi-addons/ngx-lib/top-bar';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepIconModule, PepIconRegistry, pepIconArrowRightAlt } from '@pepperi-addons/ngx-lib/icon';\nimport { PepSnackBarModule } from '@pepperi-addons/ngx-lib/snack-bar';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\n\nconst pepIcons = [\n pepIconArrowRightAlt,\n]\n\n@NgModule({\n declarations: [\n FileStatusPanelComponent\n ],\n imports: [\n CommonModule,\n PepTopBarModule,\n PepTextboxModule,\n PepButtonModule,\n PepIconModule,\n PepDialogModule,\n PepSnackBarModule\n ],\n exports: [FileStatusPanelComponent]\n})\n\nexport class PepFileStatusPanelModule { \n constructor(\n private pepIconRegistry: PepIconRegistry,\n ) {\n this.pepIconRegistry.registerIcons(pepIcons);\n }\n}","export type FileStatusType = 'uploading' | 'downloading' | 'done' | 'failed' | 'hidden' | 'deleting';\r\n\r\nexport class FileStatus {\r\n key = 0;\r\n name = '';\r\n status: FileStatusType = 'uploading';\r\n statusMessage? = '';\r\n}","/*\n * Public API Surface of ngx-composite-lib/file-status-panel\n */\nexport * from './file-status-panel.module';\nexport * from './file-status-panel.component';\nexport * from './file-status-panel.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1"],"mappings":"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"}