@cleavelandprice/ngx-lib 3.0.8 → 3.0.9
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.
- package/esm2020/upload/services/upload.service.mjs +11 -8
- package/fesm2015/cleavelandprice-ngx-lib-upload.mjs +10 -7
- package/fesm2015/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
- package/fesm2020/cleavelandprice-ngx-lib-upload.mjs +10 -7
- package/fesm2020/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -26,18 +26,18 @@ export class UploadService {
|
|
|
26
26
|
// tell it to report the upload progress
|
|
27
27
|
// A 'Destination' header is used to optionally configure the file upload destination (filesystem)
|
|
28
28
|
// A 'DbAppId' header is used to configure the unique identifier of database uploads
|
|
29
|
-
|
|
29
|
+
let headers = new HttpHeaders();
|
|
30
30
|
if (this.config.uploadPath) {
|
|
31
|
-
headers.
|
|
31
|
+
headers = headers.set('Destination', this.config.uploadPath);
|
|
32
32
|
}
|
|
33
33
|
if (this.config.dbAppId) {
|
|
34
|
-
headers.
|
|
34
|
+
headers = headers.set('DbAppId', this.config.dbAppId);
|
|
35
35
|
}
|
|
36
36
|
if (this.config.externalReferenceId) {
|
|
37
|
-
headers.
|
|
37
|
+
headers = headers.set('ExternalReferenceId', this.config.externalReferenceId);
|
|
38
38
|
}
|
|
39
39
|
if (this.config.comment) {
|
|
40
|
-
headers.
|
|
40
|
+
headers = headers.set('Comment', this.config.comment);
|
|
41
41
|
}
|
|
42
42
|
const req = new HttpRequest('POST', this.config.apiUrl, formData, {
|
|
43
43
|
reportProgress: true,
|
|
@@ -82,10 +82,13 @@ export class UploadService {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
UploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }, { token: i2.ServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
-
UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService });
|
|
85
|
+
UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, providedIn: 'root' });
|
|
86
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, decorators: [{
|
|
87
|
-
type: Injectable
|
|
87
|
+
type: Injectable,
|
|
88
|
+
args: [{
|
|
89
|
+
providedIn: 'root'
|
|
90
|
+
}]
|
|
88
91
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ServiceConfig, decorators: [{
|
|
89
92
|
type: Optional
|
|
90
93
|
}] }]; } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUs3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsd0VBQXdFO0FBS3hFLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQW9CLElBQWdCLEVBQ2YsTUFBcUI7UUFEdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsYUFBYTtZQUNoQixHQUFHLElBQUksQ0FBQyxNQUFNO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFSSxNQUFNLENBQUMsS0FBZ0I7UUFDNUIscUNBQXFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFvRCxFQUFFLENBQUM7UUFFbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQiw2Q0FBNkM7WUFDN0MsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpDLCtDQUErQztZQUMvQyx3Q0FBd0M7WUFFeEMsa0dBQWtHO1lBQ2xHLG9GQUFvRjtZQUVwRixJQUFJLE9BQU8sR0FBRyxJ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QUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUEwQjtRQUU3QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNsQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7MEdBMUZVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlcXVlc3QsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBTdWJqZWN0ICwgIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlcnZpY2VDb25maWcgfSBmcm9tICcuLi9tb2RlbC9zZXJ2aWNlLWNvbmZpZyc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkUmVxdWVzdCB9IGZyb20gJy4uL21vZGVsL2ZpbGUtdXBsb2FkLXJlcXVlc3QnO1xuaW1wb3J0IHsgRGF0YWJhc2VGaWxlSW5mbyB9IGZyb20gJy4uL21vZGVsL2RhdGFiYXNlLWZpbGUtaW5mbyc7XG5pbXBvcnQgeyBGaWxlc3lzdGVtRmlsZUluZm8gfSBmcm9tICcuLi9tb2RlbC9maWxlc3lzdGVtLWZpbGUtaW5mbyc7XG5pbXBvcnQgeyBkZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWwvZGVmYXVsdC1jb25maWcnO1xuXG4vLyBodHRwczovL21hbGNvZGVkLmNvbS9wb3N0cy9hbmd1bGFyLWZpbGUtdXBsb2FkLWNvbXBvbmVudC13aXRoLWV4cHJlc3NcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgY29uZmlnOiBTZXJ2aWNlQ29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdENvbmZpZyxcbiAgICAgICAgLi4udGhpcy5jb25maWdcbiAgICAgIH07XG4gICAgfVxuXG4gIHB1YmxpYyB1cGxvYWQoZmlsZXM6IFNldDxGaWxlPik6IGFueSB7IC8vIHtba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPG51bWJlcj59IHtcbiAgICAvLyB0aGlzIHdpbGwgYmUgdGhlIG91ciByZXN1bHRpbmcgbWFwXG4gICAgY29uc3Qgc3RhdHVzOiB7W2tleTogc3RyaW5nXToge3Byb2dyZXNzOiBPYnNlcnZhYmxlPG51bWJlcj59fSA9IHt9O1xuXG4gICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgIC8vIGNyZWF0ZSBhIG5ldyBtdWx0aXBhcnQtZm9ybSBmb3IgZXZlcnkgZmlsZVxuICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xuXG4gICAgICAvLyBjcmVhdGUgYSBodHRwLXBvc3QgcmVxdWVzdCBhbmQgcGFzcyB0aGUgZm9ybVxuICAgICAgLy8gdGVsbCBpdCB0byByZXBvcnQgdGhlIHVwbG9hZCBwcm9ncmVzc1xuXG4gICAgICAvLyBBICdEZXN0aW5hdGlvbicgaGVhZGVyIGlzIHVzZWQgdG8gb3B0aW9uYWxseSBjb25maWd1cmUgdGhlIGZpbGUgdXBsb2FkIGRlc3RpbmF0aW9uIChmaWxlc3lzdGVtKVxuICAgICAgLy8gQSAnRGJBcHBJZCcgaGVhZGVyIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiBkYXRhYmFzZSB1cGxvYWRzXG4gICAgICBcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBpZiAodGhpcy5jb25maWcudXBsb2FkUGF0aCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0Rlc3RpbmF0aW9uJywgdGhpcy5jb25maWcudXBsb2FkUGF0aCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb25maWcuZGJBcHBJZCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0RiQXBwSWQnLCB0aGlzLmNvbmZpZy5kYkFwcElkKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5leHRlcm5hbFJlZmVyZW5jZUlkKSB7XG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnRXh0ZXJuYWxSZWZlcmVuY2VJZCcsIHRoaXMuY29uZmlnLmV4dGVybmFsUmVmZXJlbmNlSWQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbW1lbnQpIHtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb21tZW50JywgdGhpcy5jb25maWcuY29tbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHRoaXMuY29uZmlnLmFwaVVybCwgZm9ybURhdGEsIHtcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICBoZWFkZXJzXG4gICAgICB9KTtcblxuICAgICAgLy8gY3JlYXRlIGEgbmV3IHByb2dyZXNzLXN1YmplY3QgZm9yIGV2ZXJ5IGZpbGVcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgICAvLyBzZW5kIHRoZSBodHRwLXJlcXVlc3QgYW5kIHN1YnNjcmliZSBmb3IgcHJvZ3Jlc3MtdXBkYXRlc1xuICAgICAgdGhpcy5odHRwLnJlcXVlc3QocmVxKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuXG4gICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBwcm9ncmVzcyBwZXJjZW50YWdlXG4gICAgICAgICAgY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIChldmVudC50b3RhbCA/PyAxKSk7XG5cbiAgICAgICAgICAvLyBwYXNzIHRoZSBwZXJjZW50YWdlIGludG8gdGhlIHByb2dyZXNzLXN0cmVhbVxuICAgICAgICAgIHByb2dyZXNzLm5leHQocGVyY2VudERvbmUpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG5cbiAgICAgICAgICAvLyBDbG9zZSB0aGUgcHJvZ3Jlc3Mtc3RyZWFtIGlmIHdlIGdldCBhbiBhbnN3ZXIgZm9ybSB0aGUgQVBJXG4gICAgICAgICAgLy8gVGhlIHVwbG9hZCBpcyBjb21wbGV0ZVxuICAgICAgICAgIHByb2dyZXNzLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBTYXZlIGV2ZXJ5IHByb2dyZXNzLW9ic2VydmFibGUgaW4gYSBtYXAgb2YgYWxsIG9ic2VydmFibGVzXG4gICAgICBzdGF0dXNbZmlsZS5uYW1lXSA9IHtcbiAgICAgICAgcHJvZ3Jlc3M6IHByb2dyZXNzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gcmV0dXJuIHRoZSBtYXAgb2YgcHJvZ3Jlc3Mub2JzZXJ2YWJsZXNcbiAgICByZXR1cm4gc3RhdHVzO1xuICB9XG5cbiAgcHVibGljIGV4aXN0cyhmaWxlTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmNvbmZpZy5hcGlVcmwudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmaWxlc3lzdGVtJykgPT09IC0xID9cbiAgICAgIHsgbmFtZTogZmlsZU5hbWUsIGRiQXBwSWQ6IHRoaXMuY29uZmlnLmRiQXBwSWQgfSA6XG4gICAgICB7IG5hbWU6IGZpbGVOYW1lLCBkZXN0aW5hdGlvbjogdGhpcy5jb25maWcudXBsb2FkUGF0aCB9O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGJvb2xlYW4+KGAke3RoaXMuY29uZmlnLmFwaVVybH0vZXhpc3RzYCwgcXVlcnkpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkKHJlcXVlc3Q6IEZpbGVVcGxvYWRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuY29uZmlnLmFwaVVybH0vc3RyZWFtYCwgcmVxdWVzdCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcGxvYWRJbmZvKHJlcXVlc3Q6IEZpbGVVcGxvYWRSZXF1ZXN0KTpcbiAgICBPYnNlcnZhYmxlPERhdGFiYXNlRmlsZUluZm8gfCBEYXRhYmFzZUZpbGVJbmZvW10gfCBGaWxlc3lzdGVtRmlsZUluZm8gfCBGaWxlc3lzdGVtRmlsZUluZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxEYXRhYmFzZUZpbGVJbmZvIHwgRGF0YWJhc2VGaWxlSW5mb1tdIHwgRmlsZXN5c3RlbUZpbGVJbmZvIHwgRmlsZXN5c3RlbUZpbGVJbmZvW10+XG4gICAgICAoYCR7dGhpcy5jb25maWcuYXBpVXJsfS9pbmZvYCwgcmVxdWVzdCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -63,18 +63,18 @@ class UploadService {
|
|
|
63
63
|
// tell it to report the upload progress
|
|
64
64
|
// A 'Destination' header is used to optionally configure the file upload destination (filesystem)
|
|
65
65
|
// A 'DbAppId' header is used to configure the unique identifier of database uploads
|
|
66
|
-
|
|
66
|
+
let headers = new HttpHeaders();
|
|
67
67
|
if (this.config.uploadPath) {
|
|
68
|
-
headers.
|
|
68
|
+
headers = headers.set('Destination', this.config.uploadPath);
|
|
69
69
|
}
|
|
70
70
|
if (this.config.dbAppId) {
|
|
71
|
-
headers.
|
|
71
|
+
headers = headers.set('DbAppId', this.config.dbAppId);
|
|
72
72
|
}
|
|
73
73
|
if (this.config.externalReferenceId) {
|
|
74
|
-
headers.
|
|
74
|
+
headers = headers.set('ExternalReferenceId', this.config.externalReferenceId);
|
|
75
75
|
}
|
|
76
76
|
if (this.config.comment) {
|
|
77
|
-
headers.
|
|
77
|
+
headers = headers.set('Comment', this.config.comment);
|
|
78
78
|
}
|
|
79
79
|
const req = new HttpRequest('POST', this.config.apiUrl, formData, {
|
|
80
80
|
reportProgress: true,
|
|
@@ -120,9 +120,12 @@ class UploadService {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
UploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }, { token: ServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
123
|
-
UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService });
|
|
123
|
+
UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, providedIn: 'root' });
|
|
124
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, decorators: [{
|
|
125
|
-
type: Injectable
|
|
125
|
+
type: Injectable,
|
|
126
|
+
args: [{
|
|
127
|
+
providedIn: 'root'
|
|
128
|
+
}]
|
|
126
129
|
}], ctorParameters: function () {
|
|
127
130
|
return [{ type: i1.HttpClient }, { type: ServiceConfig, decorators: [{
|
|
128
131
|
type: Optional
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleavelandprice-ngx-lib-upload.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/upload/src/model/default-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/services/upload.service.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.html","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload/upload.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/upload.module.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/cleavelandprice-ngx-lib-upload.ts"],"sourcesContent":["import { ServiceConfig } from \"./service-config\";\r\n\r\nexport const defaultConfig: ServiceConfig = {\r\n apiUrl: 'http://utilityapi/upload/database',\r\n uploadDialogTitle: 'Upload Files',\r\n uploadPath: null,\r\n comment: null,\r\n dbAppId: null,\r\n externalReferenceId: null,\r\n \r\n uploadButtonText: 'Upload',\r\n uploadDialogCancelButtonText: 'Cancel',\r\n uploadDialogFinishButtonText: 'Finish',\r\n uploadDialogUploadButtonText: 'Upload',\r\n uploadDialogAddFilesButtonText: 'Add Files'\r\n}","export class ServiceConfig {\r\n apiUrl!: string;\r\n uploadPath: string | null = null;\r\n dbAppId: string | null = null;\r\n externalReferenceId: string | null = null;\r\n comment: string | null = null;\r\n\r\n // UI configuration\r\n uploadButtonText: string | null = null;\r\n uploadDialogTitle: string | null = null;\r\n uploadDialogAddFilesButtonText: string | null = null;\r\n uploadDialogCancelButtonText: string | null = null;\r\n uploadDialogUploadButtonText: string | null = null;\r\n uploadDialogFinishButtonText: string | null = null;\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';\nimport { Subject , Observable } from 'rxjs';\nimport { ServiceConfig } from '../model/service-config';\nimport { FileUploadRequest } from '../model/file-upload-request';\nimport { DatabaseFileInfo } from '../model/database-file-info';\nimport { FilesystemFileInfo } from '../model/filesystem-file-info';\nimport { defaultConfig } from '../model/default-config';\n\n// https://malcoded.com/posts/angular-file-upload-component-with-express\n\n@Injectable()\nexport class UploadService {\n constructor(private http: HttpClient,\n @Optional() public config: ServiceConfig) {\n this.config = {\n ...defaultConfig,\n ...this.config\n };\n }\n\n public upload(files: Set<File>): any { // {[key: string]: Observable<number>} {\n // this will be the our resulting map\n const status: {[key: string]: {progress: Observable<number>}} = {};\n\n files.forEach(file => {\n // create a new multipart-form for every file\n const formData: FormData = new FormData();\n formData.append('file', file, file.name);\n\n // create a http-post request and pass the form\n // tell it to report the upload progress\n\n // A 'Destination' header is used to optionally configure the file upload destination (filesystem)\n // A 'DbAppId' header is used to configure the unique identifier of database uploads\n \n const headers = new HttpHeaders();\n if (this.config.uploadPath) {\n headers.append('Destination', this.config.uploadPath);\n }\n if (this.config.dbAppId) {\n headers.append('DbAppId', this.config.dbAppId);\n }\n if (this.config.externalReferenceId) {\n headers.append('ExternalReferenceId', this.config.externalReferenceId);\n }\n if (this.config.comment) {\n headers.append('Comment', this.config.comment);\n }\n const req = new HttpRequest('POST', this.config.apiUrl, formData, {\n reportProgress: true,\n responseType: 'blob',\n headers\n });\n\n // create a new progress-subject for every file\n const progress = new Subject<number>();\n\n // send the http-request and subscribe for progress-updates\n this.http.request(req).subscribe(event => {\n if (event.type === HttpEventType.UploadProgress) {\n\n // calculate the progress percentage\n const percentDone = Math.round(100 * event.loaded / (event.total ?? 1));\n\n // pass the percentage into the progress-stream\n progress.next(percentDone);\n } else if (event instanceof HttpResponse) {\n\n // Close the progress-stream if we get an answer form the API\n // The upload is complete\n progress.complete();\n }\n });\n\n // Save every progress-observable in a map of all observables\n status[file.name] = {\n progress: progress.asObservable()\n };\n });\n\n // return the map of progress.observables\n return status;\n }\n\n public exists(fileName: string): Observable<boolean> {\n const query = this.config.apiUrl.toLowerCase().indexOf('filesystem') === -1 ?\n { name: fileName, dbAppId: this.config.dbAppId } :\n { name: fileName, destination: this.config.uploadPath };\n\n return this.http.post<boolean>(`${this.config.apiUrl}/exists`, query);\n }\n\n public download(request: FileUploadRequest): Observable<Blob> {\n return this.http.post(`${this.config.apiUrl}/stream`, request, { responseType: 'blob' });\n }\n\n public getUploadInfo(request: FileUploadRequest):\n Observable<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]> {\n return this.http.post<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]>\n (`${this.config.apiUrl}/info`, request);\n }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UploadService } from './../../services/upload.service';\nimport { forkJoin } from 'rxjs';\n\n@Component({\n selector: 'cp-upload-dialog',\n templateUrl: './upload-dialog.component.html',\n styleUrls: ['./upload-dialog.component.css']\n})\nexport class UploadDialogComponent implements OnInit {\n @ViewChild('file', { static: true }) file!: ElementRef;\n public files: Set<File> = new Set();\n existingFileConflict: string | null = null;\n\n // State\n progress: any;\n canBeClosed = true;\n primaryButtonText: string | null = null;\n showCancelButton = true;\n uploading = false;\n uploadSuccessful = false;\n \n constructor(public dialogRef: MatDialogRef<UploadDialogComponent>, public uploadService: UploadService) { }\n\n ngOnInit() {\n this.primaryButtonText = this.uploadService.config.uploadDialogUploadButtonText;\n }\n\n addFiles() {\n this.file.nativeElement.click();\n }\n\n onFilesAdded() {\n const files: { [key: string]: File } = this.file.nativeElement.files;\n for (const key in files) {\n if (!isNaN(parseInt(key))) {\n // See if the file already exists\n this.uploadService.exists(files[key].name)\n .subscribe(exists => {\n if (exists) {\n this.existingFileConflict = files[key].name;\n }\n\n if (!exists) {\n this.files.add(files[key]);\n }\n });\n }\n }\n }\n\n closeDialog() {\n // if everything was uploaded already, just close the dialog\n if (this.uploadSuccessful) {\n return this.dialogRef.close();\n }\n\n // set the component state to \"uploading\"\n this.uploading = true;\n\n // start the upload and save the progress map\n this.progress = this.uploadService.upload(this.files);\n\n // convert the progress map into an array\n const allProgressObservables = [];\n\n for (let key in this.progress) {\n allProgressObservables.push(this.progress[key].progress);\n }\n\n // Adjust the state variables\n\n // The OK-button should have the text \"Finish\" now\n this.primaryButtonText = this.uploadService.config.uploadDialogFinishButtonText;\n\n // The dialog should not be closed while uploading\n this.canBeClosed = false;\n this.dialogRef.disableClose = true;\n\n // Hide the cancel-button\n this.showCancelButton = false;\n\n // When all progress-observables are completed...\n forkJoin(allProgressObservables).subscribe(end => {\n // ... the dialog can be closed again...\n this.canBeClosed = true;\n this.dialogRef.disableClose = false;\n\n // ... the upload was successful...\n this.uploadSuccessful = true;\n\n // ... and the component is no longer uploading\n this.uploading = false;\n });\n }\n}\n","<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';\nimport { UploadService } from './../../services/upload.service';\n\n@Component({\n selector: 'cp-upload',\n template: '<button mat-raised-button (click)=\"openUploadDialog()\">{{ uploadButtonText }}</button>'\n})\nexport class UploadComponent implements OnInit {\n @Output() dialogClosed = new EventEmitter();\n uploadButtonText!: string;\n\n constructor(public dialog: MatDialog, public uploadService: UploadService) { }\n\n ngOnInit(): void {\n this.uploadButtonText = this.uploadService.config.uploadButtonText ?\n this.uploadService.config.uploadButtonText :\n 'Upload';\n }\n\n public openUploadDialog() {\n this.dialog.open(UploadDialogComponent, { width: '50%' })\n .afterClosed().subscribe(() => this.dialogClosed.emit());\n }\n}\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { UploadComponent } from './components/upload/upload.component';\nimport { UploadDialogComponent } from './components/upload-dialog/upload-dialog.component';\nimport { ServiceConfig } from './model/service-config';\nimport { UploadService } from './services/upload.service';\n\n@NgModule({\n declarations: [\n UploadComponent,\n UploadDialogComponent\n ],\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatListModule,\n MatProgressBarModule\n ],\n exports: [\n UploadComponent,\n UploadDialogComponent\n ]\n})\nexport class UploadModule {\n static forRoot(uploadConfig: ServiceConfig): ModuleWithProviders<UploadModule> {\n return {\n ngModule: UploadModule,\n providers: [\n UploadService,\n { provide: ServiceConfig, useValue: uploadConfig }\n ]\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: UploadModule) {\n if (parentModule) {\n throw new Error(\n 'UploadModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.ServiceConfig","i1","i2.UploadService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleavelandprice-ngx-lib-upload.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/upload/src/model/default-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/services/upload.service.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.html","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload/upload.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/upload.module.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/cleavelandprice-ngx-lib-upload.ts"],"sourcesContent":["import { ServiceConfig } from \"./service-config\";\r\n\r\nexport const defaultConfig: ServiceConfig = {\r\n apiUrl: 'http://utilityapi/upload/database',\r\n uploadDialogTitle: 'Upload Files',\r\n uploadPath: null,\r\n comment: null,\r\n dbAppId: null,\r\n externalReferenceId: null,\r\n \r\n uploadButtonText: 'Upload',\r\n uploadDialogCancelButtonText: 'Cancel',\r\n uploadDialogFinishButtonText: 'Finish',\r\n uploadDialogUploadButtonText: 'Upload',\r\n uploadDialogAddFilesButtonText: 'Add Files'\r\n}","export class ServiceConfig {\r\n apiUrl!: string;\r\n uploadPath: string | null = null;\r\n dbAppId: string | null = null;\r\n externalReferenceId: string | null = null;\r\n comment: string | null = null;\r\n\r\n // UI configuration\r\n uploadButtonText: string | null = null;\r\n uploadDialogTitle: string | null = null;\r\n uploadDialogAddFilesButtonText: string | null = null;\r\n uploadDialogCancelButtonText: string | null = null;\r\n uploadDialogUploadButtonText: string | null = null;\r\n uploadDialogFinishButtonText: string | null = null;\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';\nimport { Subject , Observable } from 'rxjs';\nimport { ServiceConfig } from '../model/service-config';\nimport { FileUploadRequest } from '../model/file-upload-request';\nimport { DatabaseFileInfo } from '../model/database-file-info';\nimport { FilesystemFileInfo } from '../model/filesystem-file-info';\nimport { defaultConfig } from '../model/default-config';\n\n// https://malcoded.com/posts/angular-file-upload-component-with-express\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadService {\n constructor(private http: HttpClient,\n @Optional() public config: ServiceConfig) {\n this.config = {\n ...defaultConfig,\n ...this.config\n };\n }\n\n public upload(files: Set<File>): any { // {[key: string]: Observable<number>} {\n // this will be the our resulting map\n const status: {[key: string]: {progress: Observable<number>}} = {};\n\n files.forEach(file => {\n // create a new multipart-form for every file\n const formData: FormData = new FormData();\n formData.append('file', file, file.name);\n\n // create a http-post request and pass the form\n // tell it to report the upload progress\n\n // A 'Destination' header is used to optionally configure the file upload destination (filesystem)\n // A 'DbAppId' header is used to configure the unique identifier of database uploads\n \n let headers = new HttpHeaders();\n if (this.config.uploadPath) {\n headers = headers.set('Destination', this.config.uploadPath);\n }\n if (this.config.dbAppId) {\n headers = headers.set('DbAppId', this.config.dbAppId);\n }\n if (this.config.externalReferenceId) {\n headers = headers.set('ExternalReferenceId', this.config.externalReferenceId);\n }\n if (this.config.comment) {\n headers = headers.set('Comment', this.config.comment);\n }\n\n const req = new HttpRequest('POST', this.config.apiUrl, formData, {\n reportProgress: true,\n responseType: 'blob',\n headers\n });\n\n // create a new progress-subject for every file\n const progress = new Subject<number>();\n\n // send the http-request and subscribe for progress-updates\n this.http.request(req).subscribe(event => {\n if (event.type === HttpEventType.UploadProgress) {\n\n // calculate the progress percentage\n const percentDone = Math.round(100 * event.loaded / (event.total ?? 1));\n\n // pass the percentage into the progress-stream\n progress.next(percentDone);\n } else if (event instanceof HttpResponse) {\n\n // Close the progress-stream if we get an answer form the API\n // The upload is complete\n progress.complete();\n }\n });\n\n // Save every progress-observable in a map of all observables\n status[file.name] = {\n progress: progress.asObservable()\n };\n });\n\n // return the map of progress.observables\n return status;\n }\n\n public exists(fileName: string): Observable<boolean> {\n const query = this.config.apiUrl.toLowerCase().indexOf('filesystem') === -1 ?\n { name: fileName, dbAppId: this.config.dbAppId } :\n { name: fileName, destination: this.config.uploadPath };\n\n return this.http.post<boolean>(`${this.config.apiUrl}/exists`, query);\n }\n\n public download(request: FileUploadRequest): Observable<Blob> {\n return this.http.post(`${this.config.apiUrl}/stream`, request, { responseType: 'blob' });\n }\n\n public getUploadInfo(request: FileUploadRequest):\n Observable<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]> {\n return this.http.post<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]>\n (`${this.config.apiUrl}/info`, request);\n }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UploadService } from './../../services/upload.service';\nimport { forkJoin } from 'rxjs';\n\n@Component({\n selector: 'cp-upload-dialog',\n templateUrl: './upload-dialog.component.html',\n styleUrls: ['./upload-dialog.component.css']\n})\nexport class UploadDialogComponent implements OnInit {\n @ViewChild('file', { static: true }) file!: ElementRef;\n public files: Set<File> = new Set();\n existingFileConflict: string | null = null;\n\n // State\n progress: any;\n canBeClosed = true;\n primaryButtonText: string | null = null;\n showCancelButton = true;\n uploading = false;\n uploadSuccessful = false;\n \n constructor(public dialogRef: MatDialogRef<UploadDialogComponent>, public uploadService: UploadService) { }\n\n ngOnInit() {\n this.primaryButtonText = this.uploadService.config.uploadDialogUploadButtonText;\n }\n\n addFiles() {\n this.file.nativeElement.click();\n }\n\n onFilesAdded() {\n const files: { [key: string]: File } = this.file.nativeElement.files;\n for (const key in files) {\n if (!isNaN(parseInt(key))) {\n // See if the file already exists\n this.uploadService.exists(files[key].name)\n .subscribe(exists => {\n if (exists) {\n this.existingFileConflict = files[key].name;\n }\n\n if (!exists) {\n this.files.add(files[key]);\n }\n });\n }\n }\n }\n\n closeDialog() {\n // if everything was uploaded already, just close the dialog\n if (this.uploadSuccessful) {\n return this.dialogRef.close();\n }\n\n // set the component state to \"uploading\"\n this.uploading = true;\n\n // start the upload and save the progress map\n this.progress = this.uploadService.upload(this.files);\n\n // convert the progress map into an array\n const allProgressObservables = [];\n\n for (let key in this.progress) {\n allProgressObservables.push(this.progress[key].progress);\n }\n\n // Adjust the state variables\n\n // The OK-button should have the text \"Finish\" now\n this.primaryButtonText = this.uploadService.config.uploadDialogFinishButtonText;\n\n // The dialog should not be closed while uploading\n this.canBeClosed = false;\n this.dialogRef.disableClose = true;\n\n // Hide the cancel-button\n this.showCancelButton = false;\n\n // When all progress-observables are completed...\n forkJoin(allProgressObservables).subscribe(end => {\n // ... the dialog can be closed again...\n this.canBeClosed = true;\n this.dialogRef.disableClose = false;\n\n // ... the upload was successful...\n this.uploadSuccessful = true;\n\n // ... and the component is no longer uploading\n this.uploading = false;\n });\n }\n}\n","<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';\nimport { UploadService } from './../../services/upload.service';\n\n@Component({\n selector: 'cp-upload',\n template: '<button mat-raised-button (click)=\"openUploadDialog()\">{{ uploadButtonText }}</button>'\n})\nexport class UploadComponent implements OnInit {\n @Output() dialogClosed = new EventEmitter();\n uploadButtonText!: string;\n\n constructor(public dialog: MatDialog, public uploadService: UploadService) { }\n\n ngOnInit(): void {\n this.uploadButtonText = this.uploadService.config.uploadButtonText ?\n this.uploadService.config.uploadButtonText :\n 'Upload';\n }\n\n public openUploadDialog() {\n this.dialog.open(UploadDialogComponent, { width: '50%' })\n .afterClosed().subscribe(() => this.dialogClosed.emit());\n }\n}\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { UploadComponent } from './components/upload/upload.component';\nimport { UploadDialogComponent } from './components/upload-dialog/upload-dialog.component';\nimport { ServiceConfig } from './model/service-config';\nimport { UploadService } from './services/upload.service';\n\n@NgModule({\n declarations: [\n UploadComponent,\n UploadDialogComponent\n ],\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatListModule,\n MatProgressBarModule\n ],\n exports: [\n UploadComponent,\n UploadDialogComponent\n ]\n})\nexport class UploadModule {\n static forRoot(uploadConfig: ServiceConfig): ModuleWithProviders<UploadModule> {\n return {\n ngModule: UploadModule,\n providers: [\n UploadService,\n { provide: ServiceConfig, useValue: uploadConfig }\n ]\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: UploadModule) {\n if (parentModule) {\n throw new Error(\n 'UploadModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.ServiceConfig","i1","i2.UploadService","i3"],"mappings":"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"}
|
|
@@ -66,18 +66,18 @@ class UploadService {
|
|
|
66
66
|
// tell it to report the upload progress
|
|
67
67
|
// A 'Destination' header is used to optionally configure the file upload destination (filesystem)
|
|
68
68
|
// A 'DbAppId' header is used to configure the unique identifier of database uploads
|
|
69
|
-
|
|
69
|
+
let headers = new HttpHeaders();
|
|
70
70
|
if (this.config.uploadPath) {
|
|
71
|
-
headers.
|
|
71
|
+
headers = headers.set('Destination', this.config.uploadPath);
|
|
72
72
|
}
|
|
73
73
|
if (this.config.dbAppId) {
|
|
74
|
-
headers.
|
|
74
|
+
headers = headers.set('DbAppId', this.config.dbAppId);
|
|
75
75
|
}
|
|
76
76
|
if (this.config.externalReferenceId) {
|
|
77
|
-
headers.
|
|
77
|
+
headers = headers.set('ExternalReferenceId', this.config.externalReferenceId);
|
|
78
78
|
}
|
|
79
79
|
if (this.config.comment) {
|
|
80
|
-
headers.
|
|
80
|
+
headers = headers.set('Comment', this.config.comment);
|
|
81
81
|
}
|
|
82
82
|
const req = new HttpRequest('POST', this.config.apiUrl, formData, {
|
|
83
83
|
reportProgress: true,
|
|
@@ -122,9 +122,12 @@ class UploadService {
|
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
UploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }, { token: ServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
125
|
-
UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService });
|
|
125
|
+
UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, providedIn: 'root' });
|
|
126
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UploadService, decorators: [{
|
|
127
|
-
type: Injectable
|
|
127
|
+
type: Injectable,
|
|
128
|
+
args: [{
|
|
129
|
+
providedIn: 'root'
|
|
130
|
+
}]
|
|
128
131
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: ServiceConfig, decorators: [{
|
|
129
132
|
type: Optional
|
|
130
133
|
}] }]; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleavelandprice-ngx-lib-upload.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/upload/src/model/default-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/services/upload.service.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.html","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload/upload.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/upload.module.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/cleavelandprice-ngx-lib-upload.ts"],"sourcesContent":["import { ServiceConfig } from \"./service-config\";\r\n\r\nexport const defaultConfig: ServiceConfig = {\r\n apiUrl: 'http://utilityapi/upload/database',\r\n uploadDialogTitle: 'Upload Files',\r\n uploadPath: null,\r\n comment: null,\r\n dbAppId: null,\r\n externalReferenceId: null,\r\n \r\n uploadButtonText: 'Upload',\r\n uploadDialogCancelButtonText: 'Cancel',\r\n uploadDialogFinishButtonText: 'Finish',\r\n uploadDialogUploadButtonText: 'Upload',\r\n uploadDialogAddFilesButtonText: 'Add Files'\r\n}","export class ServiceConfig {\r\n apiUrl!: string;\r\n uploadPath: string | null = null;\r\n dbAppId: string | null = null;\r\n externalReferenceId: string | null = null;\r\n comment: string | null = null;\r\n\r\n // UI configuration\r\n uploadButtonText: string | null = null;\r\n uploadDialogTitle: string | null = null;\r\n uploadDialogAddFilesButtonText: string | null = null;\r\n uploadDialogCancelButtonText: string | null = null;\r\n uploadDialogUploadButtonText: string | null = null;\r\n uploadDialogFinishButtonText: string | null = null;\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';\nimport { Subject , Observable } from 'rxjs';\nimport { ServiceConfig } from '../model/service-config';\nimport { FileUploadRequest } from '../model/file-upload-request';\nimport { DatabaseFileInfo } from '../model/database-file-info';\nimport { FilesystemFileInfo } from '../model/filesystem-file-info';\nimport { defaultConfig } from '../model/default-config';\n\n// https://malcoded.com/posts/angular-file-upload-component-with-express\n\n@Injectable()\nexport class UploadService {\n constructor(private http: HttpClient,\n @Optional() public config: ServiceConfig) {\n this.config = {\n ...defaultConfig,\n ...this.config\n };\n }\n\n public upload(files: Set<File>): any { // {[key: string]: Observable<number>} {\n // this will be the our resulting map\n const status: {[key: string]: {progress: Observable<number>}} = {};\n\n files.forEach(file => {\n // create a new multipart-form for every file\n const formData: FormData = new FormData();\n formData.append('file', file, file.name);\n\n // create a http-post request and pass the form\n // tell it to report the upload progress\n\n // A 'Destination' header is used to optionally configure the file upload destination (filesystem)\n // A 'DbAppId' header is used to configure the unique identifier of database uploads\n \n const headers = new HttpHeaders();\n if (this.config.uploadPath) {\n headers.append('Destination', this.config.uploadPath);\n }\n if (this.config.dbAppId) {\n headers.append('DbAppId', this.config.dbAppId);\n }\n if (this.config.externalReferenceId) {\n headers.append('ExternalReferenceId', this.config.externalReferenceId);\n }\n if (this.config.comment) {\n headers.append('Comment', this.config.comment);\n }\n const req = new HttpRequest('POST', this.config.apiUrl, formData, {\n reportProgress: true,\n responseType: 'blob',\n headers\n });\n\n // create a new progress-subject for every file\n const progress = new Subject<number>();\n\n // send the http-request and subscribe for progress-updates\n this.http.request(req).subscribe(event => {\n if (event.type === HttpEventType.UploadProgress) {\n\n // calculate the progress percentage\n const percentDone = Math.round(100 * event.loaded / (event.total ?? 1));\n\n // pass the percentage into the progress-stream\n progress.next(percentDone);\n } else if (event instanceof HttpResponse) {\n\n // Close the progress-stream if we get an answer form the API\n // The upload is complete\n progress.complete();\n }\n });\n\n // Save every progress-observable in a map of all observables\n status[file.name] = {\n progress: progress.asObservable()\n };\n });\n\n // return the map of progress.observables\n return status;\n }\n\n public exists(fileName: string): Observable<boolean> {\n const query = this.config.apiUrl.toLowerCase().indexOf('filesystem') === -1 ?\n { name: fileName, dbAppId: this.config.dbAppId } :\n { name: fileName, destination: this.config.uploadPath };\n\n return this.http.post<boolean>(`${this.config.apiUrl}/exists`, query);\n }\n\n public download(request: FileUploadRequest): Observable<Blob> {\n return this.http.post(`${this.config.apiUrl}/stream`, request, { responseType: 'blob' });\n }\n\n public getUploadInfo(request: FileUploadRequest):\n Observable<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]> {\n return this.http.post<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]>\n (`${this.config.apiUrl}/info`, request);\n }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UploadService } from './../../services/upload.service';\nimport { forkJoin } from 'rxjs';\n\n@Component({\n selector: 'cp-upload-dialog',\n templateUrl: './upload-dialog.component.html',\n styleUrls: ['./upload-dialog.component.css']\n})\nexport class UploadDialogComponent implements OnInit {\n @ViewChild('file', { static: true }) file!: ElementRef;\n public files: Set<File> = new Set();\n existingFileConflict: string | null = null;\n\n // State\n progress: any;\n canBeClosed = true;\n primaryButtonText: string | null = null;\n showCancelButton = true;\n uploading = false;\n uploadSuccessful = false;\n \n constructor(public dialogRef: MatDialogRef<UploadDialogComponent>, public uploadService: UploadService) { }\n\n ngOnInit() {\n this.primaryButtonText = this.uploadService.config.uploadDialogUploadButtonText;\n }\n\n addFiles() {\n this.file.nativeElement.click();\n }\n\n onFilesAdded() {\n const files: { [key: string]: File } = this.file.nativeElement.files;\n for (const key in files) {\n if (!isNaN(parseInt(key))) {\n // See if the file already exists\n this.uploadService.exists(files[key].name)\n .subscribe(exists => {\n if (exists) {\n this.existingFileConflict = files[key].name;\n }\n\n if (!exists) {\n this.files.add(files[key]);\n }\n });\n }\n }\n }\n\n closeDialog() {\n // if everything was uploaded already, just close the dialog\n if (this.uploadSuccessful) {\n return this.dialogRef.close();\n }\n\n // set the component state to \"uploading\"\n this.uploading = true;\n\n // start the upload and save the progress map\n this.progress = this.uploadService.upload(this.files);\n\n // convert the progress map into an array\n const allProgressObservables = [];\n\n for (let key in this.progress) {\n allProgressObservables.push(this.progress[key].progress);\n }\n\n // Adjust the state variables\n\n // The OK-button should have the text \"Finish\" now\n this.primaryButtonText = this.uploadService.config.uploadDialogFinishButtonText;\n\n // The dialog should not be closed while uploading\n this.canBeClosed = false;\n this.dialogRef.disableClose = true;\n\n // Hide the cancel-button\n this.showCancelButton = false;\n\n // When all progress-observables are completed...\n forkJoin(allProgressObservables).subscribe(end => {\n // ... the dialog can be closed again...\n this.canBeClosed = true;\n this.dialogRef.disableClose = false;\n\n // ... the upload was successful...\n this.uploadSuccessful = true;\n\n // ... and the component is no longer uploading\n this.uploading = false;\n });\n }\n}\n","<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';\nimport { UploadService } from './../../services/upload.service';\n\n@Component({\n selector: 'cp-upload',\n template: '<button mat-raised-button (click)=\"openUploadDialog()\">{{ uploadButtonText }}</button>'\n})\nexport class UploadComponent implements OnInit {\n @Output() dialogClosed = new EventEmitter();\n uploadButtonText!: string;\n\n constructor(public dialog: MatDialog, public uploadService: UploadService) { }\n\n ngOnInit(): void {\n this.uploadButtonText = this.uploadService.config.uploadButtonText ?\n this.uploadService.config.uploadButtonText :\n 'Upload';\n }\n\n public openUploadDialog() {\n this.dialog.open(UploadDialogComponent, { width: '50%' })\n .afterClosed().subscribe(() => this.dialogClosed.emit());\n }\n}\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { UploadComponent } from './components/upload/upload.component';\nimport { UploadDialogComponent } from './components/upload-dialog/upload-dialog.component';\nimport { ServiceConfig } from './model/service-config';\nimport { UploadService } from './services/upload.service';\n\n@NgModule({\n declarations: [\n UploadComponent,\n UploadDialogComponent\n ],\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatListModule,\n MatProgressBarModule\n ],\n exports: [\n UploadComponent,\n UploadDialogComponent\n ]\n})\nexport class UploadModule {\n static forRoot(uploadConfig: ServiceConfig): ModuleWithProviders<UploadModule> {\n return {\n ngModule: UploadModule,\n providers: [\n UploadService,\n { provide: ServiceConfig, useValue: uploadConfig }\n ]\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: UploadModule) {\n if (parentModule) {\n throw new Error(\n 'UploadModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.ServiceConfig","i1","i2.UploadService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleavelandprice-ngx-lib-upload.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/upload/src/model/default-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/model/service-config.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/services/upload.service.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload-dialog/upload-dialog.component.html","../../../../projects/cleavelandprice/ngx-lib/upload/src/components/upload/upload.component.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/upload.module.ts","../../../../projects/cleavelandprice/ngx-lib/upload/src/cleavelandprice-ngx-lib-upload.ts"],"sourcesContent":["import { ServiceConfig } from \"./service-config\";\r\n\r\nexport const defaultConfig: ServiceConfig = {\r\n apiUrl: 'http://utilityapi/upload/database',\r\n uploadDialogTitle: 'Upload Files',\r\n uploadPath: null,\r\n comment: null,\r\n dbAppId: null,\r\n externalReferenceId: null,\r\n \r\n uploadButtonText: 'Upload',\r\n uploadDialogCancelButtonText: 'Cancel',\r\n uploadDialogFinishButtonText: 'Finish',\r\n uploadDialogUploadButtonText: 'Upload',\r\n uploadDialogAddFilesButtonText: 'Add Files'\r\n}","export class ServiceConfig {\r\n apiUrl!: string;\r\n uploadPath: string | null = null;\r\n dbAppId: string | null = null;\r\n externalReferenceId: string | null = null;\r\n comment: string | null = null;\r\n\r\n // UI configuration\r\n uploadButtonText: string | null = null;\r\n uploadDialogTitle: string | null = null;\r\n uploadDialogAddFilesButtonText: string | null = null;\r\n uploadDialogCancelButtonText: string | null = null;\r\n uploadDialogUploadButtonText: string | null = null;\r\n uploadDialogFinishButtonText: string | null = null;\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';\nimport { Subject , Observable } from 'rxjs';\nimport { ServiceConfig } from '../model/service-config';\nimport { FileUploadRequest } from '../model/file-upload-request';\nimport { DatabaseFileInfo } from '../model/database-file-info';\nimport { FilesystemFileInfo } from '../model/filesystem-file-info';\nimport { defaultConfig } from '../model/default-config';\n\n// https://malcoded.com/posts/angular-file-upload-component-with-express\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadService {\n constructor(private http: HttpClient,\n @Optional() public config: ServiceConfig) {\n this.config = {\n ...defaultConfig,\n ...this.config\n };\n }\n\n public upload(files: Set<File>): any { // {[key: string]: Observable<number>} {\n // this will be the our resulting map\n const status: {[key: string]: {progress: Observable<number>}} = {};\n\n files.forEach(file => {\n // create a new multipart-form for every file\n const formData: FormData = new FormData();\n formData.append('file', file, file.name);\n\n // create a http-post request and pass the form\n // tell it to report the upload progress\n\n // A 'Destination' header is used to optionally configure the file upload destination (filesystem)\n // A 'DbAppId' header is used to configure the unique identifier of database uploads\n \n let headers = new HttpHeaders();\n if (this.config.uploadPath) {\n headers = headers.set('Destination', this.config.uploadPath);\n }\n if (this.config.dbAppId) {\n headers = headers.set('DbAppId', this.config.dbAppId);\n }\n if (this.config.externalReferenceId) {\n headers = headers.set('ExternalReferenceId', this.config.externalReferenceId);\n }\n if (this.config.comment) {\n headers = headers.set('Comment', this.config.comment);\n }\n\n const req = new HttpRequest('POST', this.config.apiUrl, formData, {\n reportProgress: true,\n responseType: 'blob',\n headers\n });\n\n // create a new progress-subject for every file\n const progress = new Subject<number>();\n\n // send the http-request and subscribe for progress-updates\n this.http.request(req).subscribe(event => {\n if (event.type === HttpEventType.UploadProgress) {\n\n // calculate the progress percentage\n const percentDone = Math.round(100 * event.loaded / (event.total ?? 1));\n\n // pass the percentage into the progress-stream\n progress.next(percentDone);\n } else if (event instanceof HttpResponse) {\n\n // Close the progress-stream if we get an answer form the API\n // The upload is complete\n progress.complete();\n }\n });\n\n // Save every progress-observable in a map of all observables\n status[file.name] = {\n progress: progress.asObservable()\n };\n });\n\n // return the map of progress.observables\n return status;\n }\n\n public exists(fileName: string): Observable<boolean> {\n const query = this.config.apiUrl.toLowerCase().indexOf('filesystem') === -1 ?\n { name: fileName, dbAppId: this.config.dbAppId } :\n { name: fileName, destination: this.config.uploadPath };\n\n return this.http.post<boolean>(`${this.config.apiUrl}/exists`, query);\n }\n\n public download(request: FileUploadRequest): Observable<Blob> {\n return this.http.post(`${this.config.apiUrl}/stream`, request, { responseType: 'blob' });\n }\n\n public getUploadInfo(request: FileUploadRequest):\n Observable<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]> {\n return this.http.post<DatabaseFileInfo | DatabaseFileInfo[] | FilesystemFileInfo | FilesystemFileInfo[]>\n (`${this.config.apiUrl}/info`, request);\n }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UploadService } from './../../services/upload.service';\nimport { forkJoin } from 'rxjs';\n\n@Component({\n selector: 'cp-upload-dialog',\n templateUrl: './upload-dialog.component.html',\n styleUrls: ['./upload-dialog.component.css']\n})\nexport class UploadDialogComponent implements OnInit {\n @ViewChild('file', { static: true }) file!: ElementRef;\n public files: Set<File> = new Set();\n existingFileConflict: string | null = null;\n\n // State\n progress: any;\n canBeClosed = true;\n primaryButtonText: string | null = null;\n showCancelButton = true;\n uploading = false;\n uploadSuccessful = false;\n \n constructor(public dialogRef: MatDialogRef<UploadDialogComponent>, public uploadService: UploadService) { }\n\n ngOnInit() {\n this.primaryButtonText = this.uploadService.config.uploadDialogUploadButtonText;\n }\n\n addFiles() {\n this.file.nativeElement.click();\n }\n\n onFilesAdded() {\n const files: { [key: string]: File } = this.file.nativeElement.files;\n for (const key in files) {\n if (!isNaN(parseInt(key))) {\n // See if the file already exists\n this.uploadService.exists(files[key].name)\n .subscribe(exists => {\n if (exists) {\n this.existingFileConflict = files[key].name;\n }\n\n if (!exists) {\n this.files.add(files[key]);\n }\n });\n }\n }\n }\n\n closeDialog() {\n // if everything was uploaded already, just close the dialog\n if (this.uploadSuccessful) {\n return this.dialogRef.close();\n }\n\n // set the component state to \"uploading\"\n this.uploading = true;\n\n // start the upload and save the progress map\n this.progress = this.uploadService.upload(this.files);\n\n // convert the progress map into an array\n const allProgressObservables = [];\n\n for (let key in this.progress) {\n allProgressObservables.push(this.progress[key].progress);\n }\n\n // Adjust the state variables\n\n // The OK-button should have the text \"Finish\" now\n this.primaryButtonText = this.uploadService.config.uploadDialogFinishButtonText;\n\n // The dialog should not be closed while uploading\n this.canBeClosed = false;\n this.dialogRef.disableClose = true;\n\n // Hide the cancel-button\n this.showCancelButton = false;\n\n // When all progress-observables are completed...\n forkJoin(allProgressObservables).subscribe(end => {\n // ... the dialog can be closed again...\n this.canBeClosed = true;\n this.dialogRef.disableClose = false;\n\n // ... the upload was successful...\n this.uploadSuccessful = true;\n\n // ... and the component is no longer uploading\n this.uploading = false;\n });\n }\n}\n","<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';\nimport { UploadService } from './../../services/upload.service';\n\n@Component({\n selector: 'cp-upload',\n template: '<button mat-raised-button (click)=\"openUploadDialog()\">{{ uploadButtonText }}</button>'\n})\nexport class UploadComponent implements OnInit {\n @Output() dialogClosed = new EventEmitter();\n uploadButtonText!: string;\n\n constructor(public dialog: MatDialog, public uploadService: UploadService) { }\n\n ngOnInit(): void {\n this.uploadButtonText = this.uploadService.config.uploadButtonText ?\n this.uploadService.config.uploadButtonText :\n 'Upload';\n }\n\n public openUploadDialog() {\n this.dialog.open(UploadDialogComponent, { width: '50%' })\n .afterClosed().subscribe(() => this.dialogClosed.emit());\n }\n}\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { UploadComponent } from './components/upload/upload.component';\nimport { UploadDialogComponent } from './components/upload-dialog/upload-dialog.component';\nimport { ServiceConfig } from './model/service-config';\nimport { UploadService } from './services/upload.service';\n\n@NgModule({\n declarations: [\n UploadComponent,\n UploadDialogComponent\n ],\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatListModule,\n MatProgressBarModule\n ],\n exports: [\n UploadComponent,\n UploadDialogComponent\n ]\n})\nexport class UploadModule {\n static forRoot(uploadConfig: ServiceConfig): ModuleWithProviders<UploadModule> {\n return {\n ngModule: UploadModule,\n providers: [\n UploadService,\n { provide: ServiceConfig, useValue: uploadConfig }\n ]\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: UploadModule) {\n if (parentModule) {\n throw new Error(\n 'UploadModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.ServiceConfig","i1","i2.UploadService","i3"],"mappings":"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"}
|
package/package.json
CHANGED