@covalent/core 4.6.0 → 4.6.1
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/file/directives/file-drop.directive.mjs +20 -24
- package/esm2020/file/file-input/file-input.component.mjs +25 -7
- package/fesm2015/covalent-core-file.mjs +44 -32
- package/fesm2015/covalent-core-file.mjs.map +1 -1
- package/fesm2020/covalent-core-file.mjs +43 -31
- package/fesm2020/covalent-core-file.mjs.map +1 -1
- package/file/directives/file-drop.directive.d.ts +1 -6
- package/file/file-input/file-input.component.d.ts +10 -4
- package/file/src/file-input/README.md +2 -2
- package/file/src/file-upload/README.md +2 -2
- package/package.json +2 -2
@@ -53,11 +53,29 @@ export class TdFileDropDirective {
|
|
53
53
|
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
54
54
|
this._stopEvent(event);
|
55
55
|
});
|
56
|
+
// Listens to 'dragover' host event to validate transfer items.
|
57
|
+
// Checks if 'multiple' attr exists in host to allow multiple file drops.
|
58
|
+
// Stops event propagation and default action from browser for 'dragover' event.
|
59
|
+
this._dragoverListener = this._renderer.listen(this._element.nativeElement, 'dragover', (event) => {
|
60
|
+
const transfer = event.dataTransfer || new DataTransfer();
|
61
|
+
transfer.dropEffect = this._typeCheck(transfer.types);
|
62
|
+
if (this.disabled ||
|
63
|
+
(!this._multiple &&
|
64
|
+
((transfer.items && transfer.items.length > 1) ||
|
65
|
+
transfer.mozItemCount > 1))) {
|
66
|
+
transfer.dropEffect = 'none';
|
67
|
+
}
|
68
|
+
else {
|
69
|
+
transfer.dropEffect = 'copy';
|
70
|
+
}
|
71
|
+
this._stopEvent(event);
|
72
|
+
});
|
56
73
|
});
|
57
74
|
}
|
58
75
|
ngOnDestroy() {
|
59
76
|
this._dragenterListener?.();
|
60
77
|
this._dragleaveListener?.();
|
78
|
+
this._dragoverListener?.();
|
61
79
|
}
|
62
80
|
/**
|
63
81
|
* Listens to 'drop' host event to get validated transfer items.
|
@@ -80,25 +98,6 @@ export class TdFileDropDirective {
|
|
80
98
|
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
81
99
|
this._stopEvent(event);
|
82
100
|
}
|
83
|
-
/**
|
84
|
-
* Listens to 'dragover' host event to validate transfer items.
|
85
|
-
* Checks if 'multiple' attr exists in host to allow multiple file drops.
|
86
|
-
* Stops event propagation and default action from browser for 'dragover' event.
|
87
|
-
*/
|
88
|
-
onDragOver(event) {
|
89
|
-
const transfer = event.dataTransfer || new DataTransfer();
|
90
|
-
transfer.dropEffect = this._typeCheck(transfer.types);
|
91
|
-
if (this.disabled ||
|
92
|
-
(!this._multiple &&
|
93
|
-
((transfer.items && transfer.items.length > 1) ||
|
94
|
-
transfer.mozItemCount > 1))) {
|
95
|
-
transfer.dropEffect = 'none';
|
96
|
-
}
|
97
|
-
else {
|
98
|
-
transfer.dropEffect = 'copy';
|
99
|
-
}
|
100
|
-
this._stopEvent(event);
|
101
|
-
}
|
102
101
|
/**
|
103
102
|
* Validates if the transfer item types are 'Files'.
|
104
103
|
*/
|
@@ -117,7 +116,7 @@ export class TdFileDropDirective {
|
|
117
116
|
}
|
118
117
|
}
|
119
118
|
TdFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
120
|
-
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)"
|
119
|
+
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)" }, properties: { "attr.multiple": "this.multipleBinding", "attr.disabled": "this.disabledBinding" } }, ngImport: i0 });
|
121
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, decorators: [{
|
122
121
|
type: Directive,
|
123
122
|
args: [{ selector: '[tdFileDrop]' }]
|
@@ -136,8 +135,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
136
135
|
}], onDrop: [{
|
137
136
|
type: HostListener,
|
138
137
|
args: ['drop', ['$event']]
|
139
|
-
}], onDragOver: [{
|
140
|
-
type: HostListener,
|
141
|
-
args: ['dragover', ['$event']]
|
142
138
|
}] } });
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9maWxlL3NyYy9kaXJlY3RpdmVzL2ZpbGUtZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBR1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU5RCxNQUFNLE9BQU8sY0FBYztDQUFHO0FBRzlCLE1BQU0sT0FBTyxtQkFBbUI7SUEwQzlCLFlBQ1UsU0FBb0IsRUFDcEIsUUFBaUMsRUFDakMsT0FBZTtRQUZmLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQTVDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWNqQixhQUFRLEdBQUksS0FBSyxDQUFDO1FBRTNCOzs7O1dBSUc7UUFDTyxhQUFRLEdBQWtDLElBQUksWUFBWSxFQUVqRSxDQUFDO0lBc0JELENBQUM7SUF6Q0o7Ozs7T0FJRztJQUNILElBQ0ksUUFBUSxDQUFDLFFBQTBCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQWFEOztPQUVHO0lBQ0gsSUFDSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMs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XG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBIb3N0QmluZGluZyxcbiAgRWxlbWVudFJlZixcbiAgUmVuZGVyZXIyLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmV4cG9ydCBjbGFzcyBUZEZpbGVEcm9wQmFzZSB7fVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdGRGaWxlRHJvcF0nIH0pXG5leHBvcnQgY2xhc3MgVGRGaWxlRHJvcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZHJhZ2VudGVyTGlzdGVuZXI/OiBWb2lkRnVuY3Rpb247XG4gIHByaXZhdGUgX2RyYWdsZWF2ZUxpc3RlbmVyPzogVm9pZEZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBtdWx0aXBsZT86IGJvb2xlYW5cbiAgICogU2V0cyB3aGV0aGVyIG11bHRpcGxlIGZpbGVzIGNhbiBiZSBkcm9wcGVkIGF0IG9uY2UgaW4gaG9zdCBlbGVtZW50LCBvciBqdXN0IGEgc2luZ2xlIGZpbGUuXG4gICAqIENhbiBhbHNvIGJlICdtdWx0aXBsZScgbmF0aXZlIGF0dHJpYnV0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBtdWx0aXBsZShtdWx0aXBsZTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpcGxlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGRpc2FibGVkPyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBmaWxlRHJvcD86IGZ1bmN0aW9uXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGZpbGUgb3IgZmlsZXMgYXJlIGRyb3BwZWQgaW4gaG9zdCBlbGVtZW50IGFmdGVyIGJlaW5nIHZhbGlkYXRlZC5cbiAgICogRW1pdHMgYSBbRmlsZUxpc3QgfCBGaWxlXSBvYmplY3QuXG4gICAqL1xuICBAT3V0cHV0KCkgZmlsZURyb3A6IEV2ZW50RW1pdHRlcjxGaWxlTGlzdCB8IEZpbGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBGaWxlTGlzdCB8IEZpbGVcbiAgPigpO1xuXG4gIC8qKlxuICAgKiBCaW5kcyBuYXRpdmUgJ211bHRpcGxlJyBhdHRyaWJ1dGUgaWYgW211bHRpcGxlXSBwcm9wZXJ0eSBpcyAndHJ1ZScuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIubXVsdGlwbGUnKVxuICBnZXQgbXVsdGlwbGVCaW5kaW5nKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlID8gJycgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgbmF0aXZlICdkaXNhYmxlZCcgYXR0cmlidXRlIGlmIFtkaXNhYmxlZF0gcHJvcGVydHkgaXMgJ3RydWUnLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IGRpc2FibGVkQmluZGluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gJycgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgLy8gTGlzdGVucyB0byAnZHJhZ2VudGVyJyBob3N0IGV2ZW50IHRvIGFkZCBhbmltYXRpb24gY2xhc3MgJ2Ryb3Atem9uZScgd2hpY2ggY2FuIGJlIG92ZXJyaWRlbiBpbiBob3N0LlxuICAgICAgLy8gU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGRlZmF1bHQgYWN0aW9uIGZyb20gYnJvd3NlciBmb3IgJ2RyYWdlbnRlcicgZXZlbnQuXG4gICAgICB0aGlzLl9kcmFnZW50ZXJMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZHJhZ2VudGVyJyxcbiAgICAgICAgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZHJvcC16b25lJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3N0b3BFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIC8vIExpc3RlbnMgdG8gJ2RyYWdsZWF2ZScgaG9zdCBldmVudCB0byByZW1vdmUgYW5pbWF0aW9uIGNsYXNzICdkcm9wLXpvbmUnLlxuICAgICAgLy8gU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGRlZmF1bHQgYWN0aW9uIGZyb20gYnJvd3NlciBmb3IgJ2RyYWdsZWF2ZScgZXZlbnQuXG4gICAgICB0aGlzLl9kcmFnbGVhdmVMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZHJhZ2xlYXZlJyxcbiAgICAgICAgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Ryb3Atem9uZScpO1xuICAgICAgICAgIHRoaXMuX3N0b3BFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kcmFnZW50ZXJMaXN0ZW5lcj8uKCk7XG4gICAgdGhpcy5fZHJhZ2xlYXZlTGlzdGVuZXI/LigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gJ2Ryb3AnIGhvc3QgZXZlbnQgdG8gZ2V0IHZhbGlkYXRlZCB0cmFuc2ZlciBpdGVtcy5cbiAgICogRW1pdHMgdGhlICdmaWxlRHJvcCcgZXZlbnQgd2l0aCBhIFtGaWxlTGlzdF0gb3IgW0ZpbGVdIGRlcGVuZGluZyBpZiAnbXVsdGlwbGUnIGF0dHIgZXhpc3RzIGluIGhvc3QuXG4gICAqIFN0b3BzIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBkZWZhdWx0IGFjdGlvbiBmcm9tIGJyb3dzZXIgZm9yICdkcm9wJyBldmVudC5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICBvbkRyb3AoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBjb25zdCB0cmFuc2ZlcjogRGF0YVRyYW5zZmVyID1cbiAgICAgICAgKDxEcmFnRXZlbnQ+ZXZlbnQpLmRhdGFUcmFuc2ZlciA/PyBuZXcgRGF0YVRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSB0cmFuc2Zlci5maWxlcztcbiAgICAgIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdmFsdWU6IEZpbGVMaXN0IHwgRmlsZSA9IHRoaXMuX211bHRpcGxlXG4gICAgICAgICAgPyBmaWxlcy5sZW5ndGggPiAxXG4gICAgICAgICAgICA/IGZpbGVzXG4gICAgICAgICAgICA6IGZpbGVzWzBdXG4gICAgICAgICAgOiBmaWxlc1swXTtcbiAgICAgICAgdGhpcy5maWxlRHJvcC5lbWl0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZHJvcC16b25lJyk7XG4gICAgdGhpcy5fc3RvcEV2ZW50KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIHRvICdkcmFnb3ZlcicgaG9zdCBldmVudCB0byB2YWxpZGF0ZSB0cmFuc2ZlciBpdGVtcy5cbiAgICogQ2hlY2tzIGlmICdtdWx0aXBsZScgYXR0ciBleGlzdHMgaW4gaG9zdCB0byBhbGxvdyBtdWx0aXBsZSBmaWxlIGRyb3BzLlxuICAgKiBTdG9wcyBldmVudCBwcm9wYWdhdGlvbiBhbmQgZGVmYXVsdCBhY3Rpb24gZnJvbSBicm93c2VyIGZvciAnZHJhZ292ZXInIGV2ZW50LlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICBvbkRyYWdPdmVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgPVxuICAgICAgKDxEcmFnRXZlbnQ+ZXZlbnQpLmRhdGFUcmFuc2ZlciB8fCBuZXcgRGF0YVRyYW5zZmVyKCk7XG4gICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9IHRoaXMuX3R5cGVDaGVjayh0cmFuc2Zlci50eXBlcyk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgKCF0aGlzLl9tdWx0aXBsZSAmJlxuICAgICAgICAoKHRyYW5zZmVyLml0ZW1zICYmIHRyYW5zZmVyLml0ZW1zLmxlbmd0aCA+IDEpIHx8XG4gICAgICAgICAgKDxhbnk+dHJhbnNmZXIpLm1vekl0ZW1Db3VudCA+IDEpKVxuICAgICkge1xuICAgICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICB9XG4gICAgdGhpcy5fc3RvcEV2ZW50KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaWYgdGhlIHRyYW5zZmVyIGl0ZW0gdHlwZXMgYXJlICdGaWxlcycuXG4gICAqL1xuICBwcml2YXRlIF90eXBlQ2hlY2soXG4gICAgdHlwZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IERPTVN0cmluZ0xpc3RcbiAgKTogJ25vbmUnIHwgJ2NvcHknIHwgJ2xpbmsnIHwgJ21vdmUnIHtcbiAgICBsZXQgZHJvcEVmZmVjdDogJ25vbmUnIHwgJ2NvcHknIHwgJ2xpbmsnIHwgJ21vdmUnID0gJ25vbmUnO1xuICAgIGlmIChcbiAgICAgIHR5cGVzICYmXG4gICAgICAoKCg8YW55PnR5cGVzKS5jb250YWlucyAmJiAoPGFueT50eXBlcykuY29udGFpbnMoJ0ZpbGVzJykpIHx8XG4gICAgICAgICgoPGFueT50eXBlcykuaW5kZXhPZiAmJiAoPGFueT50eXBlcykuaW5kZXhPZignRmlsZXMnKSAhPT0gLTEpKVxuICAgICkge1xuICAgICAgZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICB9XG5cbiAgICByZXR1cm4gZHJvcEVmZmVjdDtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BFdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iXX0=
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9maWxlL3NyYy9kaXJlY3RpdmVzL2ZpbGUtZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBR1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU5RCxNQUFNLE9BQU8sY0FBYztDQUFHO0FBRzlCLE1BQU0sT0FBTyxtQkFBbUI7SUEyQzlCLFlBQ1UsU0FBb0IsRUFDcEIsUUFBaUMsRUFDakMsT0FBZTtRQUZmLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQTdDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWVqQixhQUFRLEdBQUksS0FBSyxDQUFDO1FBRTNCOzs7O1dBSUc7UUFDTyxhQUFRLEdBQWtDLElBQUksWUFBWSxFQUVqRSxDQUFDO0lBc0JELENBQUM7SUF6Q0o7Ozs7T0FJRztJQUNILElBQ0ksUUFBUSxDQUFDLFFBQTBCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQWFEOztPQUVHO0lBQ0gsSUFDSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMs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dUJBQUMsZUFBZTtnQkEyRTVCLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBIb3N0QmluZGluZyxcbiAgRWxlbWVudFJlZixcbiAgUmVuZGVyZXIyLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmV4cG9ydCBjbGFzcyBUZEZpbGVEcm9wQmFzZSB7fVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdGRGaWxlRHJvcF0nIH0pXG5leHBvcnQgY2xhc3MgVGRGaWxlRHJvcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZHJhZ2VudGVyTGlzdGVuZXI/OiBWb2lkRnVuY3Rpb247XG4gIHByaXZhdGUgX2RyYWdsZWF2ZUxpc3RlbmVyPzogVm9pZEZ1bmN0aW9uO1xuICBwcml2YXRlIF9kcmFnb3Zlckxpc3RlbmVyPzogVm9pZEZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBtdWx0aXBsZT86IGJvb2xlYW5cbiAgICogU2V0cyB3aGV0aGVyIG11bHRpcGxlIGZpbGVzIGNhbiBiZSBkcm9wcGVkIGF0IG9uY2UgaW4gaG9zdCBlbGVtZW50LCBvciBqdXN0IGEgc2luZ2xlIGZpbGUuXG4gICAqIENhbiBhbHNvIGJlICdtdWx0aXBsZScgbmF0aXZlIGF0dHJpYnV0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBtdWx0aXBsZShtdWx0aXBsZTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpcGxlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGRpc2FibGVkPyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBmaWxlRHJvcD86IGZ1bmN0aW9uXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGZpbGUgb3IgZmlsZXMgYXJlIGRyb3BwZWQgaW4gaG9zdCBlbGVtZW50IGFmdGVyIGJlaW5nIHZhbGlkYXRlZC5cbiAgICogRW1pdHMgYSBbRmlsZUxpc3QgfCBGaWxlXSBvYmplY3QuXG4gICAqL1xuICBAT3V0cHV0KCkgZmlsZURyb3A6IEV2ZW50RW1pdHRlcjxGaWxlTGlzdCB8IEZpbGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBGaWxlTGlzdCB8IEZpbGVcbiAgPigpO1xuXG4gIC8qKlxuICAgKiBCaW5kcyBuYXRpdmUgJ211bHRpcGxlJyBhdHRyaWJ1dGUgaWYgW211bHRpcGxlXSBwcm9wZXJ0eSBpcyAndHJ1ZScuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIubXVsdGlwbGUnKVxuICBnZXQgbXVsdGlwbGVCaW5kaW5nKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlID8gJycgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgbmF0aXZlICdkaXNhYmxlZCcgYXR0cmlidXRlIGlmIFtkaXNhYmxlZF0gcHJvcGVydHkgaXMgJ3RydWUnLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IGRpc2FibGVkQmluZGluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gJycgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgLy8gTGlzdGVucyB0byAnZHJhZ2VudGVyJyBob3N0IGV2ZW50IHRvIGFkZCBhbmltYXRpb24gY2xhc3MgJ2Ryb3Atem9uZScgd2hpY2ggY2FuIGJlIG92ZXJyaWRlbiBpbiBob3N0LlxuICAgICAgLy8gU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGRlZmF1bHQgYWN0aW9uIGZyb20gYnJvd3NlciBmb3IgJ2RyYWdlbnRlcicgZXZlbnQuXG4gICAgICB0aGlzLl9kcmFnZW50ZXJMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZHJhZ2VudGVyJyxcbiAgICAgICAgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZHJvcC16b25lJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3N0b3BFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIC8vIExpc3RlbnMgdG8gJ2RyYWdsZWF2ZScgaG9zdCBldmVudCB0byByZW1vdmUgYW5pbWF0aW9uIGNsYXNzICdkcm9wLXpvbmUnLlxuICAgICAgLy8gU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGRlZmF1bHQgYWN0aW9uIGZyb20gYnJvd3NlciBmb3IgJ2RyYWdsZWF2ZScgZXZlbnQuXG4gICAgICB0aGlzLl9kcmFnbGVhdmVMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZHJhZ2xlYXZlJyxcbiAgICAgICAgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Ryb3Atem9uZScpO1xuICAgICAgICAgIHRoaXMuX3N0b3BFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIC8vIExpc3RlbnMgdG8gJ2RyYWdvdmVyJyBob3N0IGV2ZW50IHRvIHZhbGlkYXRlIHRyYW5zZmVyIGl0ZW1zLlxuICAgICAgLy8gQ2hlY2tzIGlmICdtdWx0aXBsZScgYXR0ciBleGlzdHMgaW4gaG9zdCB0byBhbGxvdyBtdWx0aXBsZSBmaWxlIGRyb3BzLlxuICAgICAgLy8gU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGRlZmF1bHQgYWN0aW9uIGZyb20gYnJvd3NlciBmb3IgJ2RyYWdvdmVyJyBldmVudC5cbiAgICAgIHRoaXMuX2RyYWdvdmVyTGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2RyYWdvdmVyJyxcbiAgICAgICAgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCB0cmFuc2ZlcjogRGF0YVRyYW5zZmVyID1cbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2ZlciB8fCBuZXcgRGF0YVRyYW5zZmVyKCk7XG4gICAgICAgICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9IHRoaXMuX3R5cGVDaGVjayh0cmFuc2Zlci50eXBlcyk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgKCF0aGlzLl9tdWx0aXBsZSAmJlxuICAgICAgICAgICAgICAoKHRyYW5zZmVyLml0ZW1zICYmIHRyYW5zZmVyLml0ZW1zLmxlbmd0aCA+IDEpIHx8XG4gICAgICAgICAgICAgICAgKDxhbnk+dHJhbnNmZXIpLm1vekl0ZW1Db3VudCA+IDEpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fc3RvcEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RyYWdlbnRlckxpc3RlbmVyPy4oKTtcbiAgICB0aGlzLl9kcmFnbGVhdmVMaXN0ZW5lcj8uKCk7XG4gICAgdGhpcy5fZHJhZ292ZXJMaXN0ZW5lcj8uKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVucyB0byAnZHJvcCcgaG9zdCBldmVudCB0byBnZXQgdmFsaWRhdGVkIHRyYW5zZmVyIGl0ZW1zLlxuICAgKiBFbWl0cyB0aGUgJ2ZpbGVEcm9wJyBldmVudCB3aXRoIGEgW0ZpbGVMaXN0XSBvciBbRmlsZV0gZGVwZW5kaW5nIGlmICdtdWx0aXBsZScgYXR0ciBleGlzdHMgaW4gaG9zdC5cbiAgICogU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGRlZmF1bHQgYWN0aW9uIGZyb20gYnJvd3NlciBmb3IgJ2Ryb3AnIGV2ZW50LlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gIG9uRHJvcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IHRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgPVxuICAgICAgICAoPERyYWdFdmVudD5ldmVudCkuZGF0YVRyYW5zZmVyID8/IG5ldyBEYXRhVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGZpbGVzOiBGaWxlTGlzdCA9IHRyYW5zZmVyLmZpbGVzO1xuICAgICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB2YWx1ZTogRmlsZUxpc3QgfCBGaWxlID0gdGhpcy5fbXVsdGlwbGVcbiAgICAgICAgICA/IGZpbGVzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgID8gZmlsZXNcbiAgICAgICAgICAgIDogZmlsZXNbMF1cbiAgICAgICAgICA6IGZpbGVzWzBdO1xuICAgICAgICB0aGlzLmZpbGVEcm9wLmVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdkcm9wLXpvbmUnKTtcbiAgICB0aGlzLl9zdG9wRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBpZiB0aGUgdHJhbnNmZXIgaXRlbSB0eXBlcyBhcmUgJ0ZpbGVzJy5cbiAgICovXG4gIHByaXZhdGUgX3R5cGVDaGVjayhcbiAgICB0eXBlczogUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgRE9NU3RyaW5nTGlzdFxuICApOiAnbm9uZScgfCAnY29weScgfCAnbGluaycgfCAnbW92ZScge1xuICAgIGxldCBkcm9wRWZmZWN0OiAnbm9uZScgfCAnY29weScgfCAnbGluaycgfCAnbW92ZScgPSAnbm9uZSc7XG4gICAgaWYgKFxuICAgICAgdHlwZXMgJiZcbiAgICAgICgoKDxhbnk+dHlwZXMpLmNvbnRhaW5zICYmICg8YW55PnR5cGVzKS5jb250YWlucygnRmlsZXMnKSkgfHxcbiAgICAgICAgKCg8YW55PnR5cGVzKS5pbmRleE9mICYmICg8YW55PnR5cGVzKS5pbmRleE9mKCdGaWxlcycpICE9PSAtMSkpXG4gICAgKSB7XG4gICAgICBkcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgIH1cblxuICAgIHJldHVybiBkcm9wRWZmZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RvcEV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,7 +1,10 @@
|
|
1
|
-
import { Component, Directive, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef, forwardRef, } from '@angular/core';
|
1
|
+
import { Component, Directive, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef, forwardRef, NgZone, } from '@angular/core';
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
3
3
|
import { TemplatePortalDirective } from '@angular/cdk/portal';
|
4
|
+
import { ENTER } from '@angular/cdk/keycodes';
|
4
5
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
6
|
+
import { fromEvent, merge, Subject } from 'rxjs';
|
7
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
5
8
|
import { mixinControlValueAccessor, mixinDisabled, } from '@covalent/core/common';
|
6
9
|
import * as i0 from "@angular/core";
|
7
10
|
import * as i1 from "@angular/material/button";
|
@@ -27,8 +30,9 @@ export class TdFileInputBase {
|
|
27
30
|
}
|
28
31
|
export const _TdFileInputMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileInputBase));
|
29
32
|
export class TdFileInputComponent extends _TdFileInputMixinBase {
|
30
|
-
constructor(_renderer, _changeDetectorRef) {
|
33
|
+
constructor(_ngZone, _renderer, _changeDetectorRef) {
|
31
34
|
super(_changeDetectorRef);
|
35
|
+
this._ngZone = _ngZone;
|
32
36
|
this._renderer = _renderer;
|
33
37
|
this._multiple = false;
|
34
38
|
/**
|
@@ -37,6 +41,7 @@ export class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
37
41
|
* Emits a [File | FileList] object.
|
38
42
|
*/
|
39
43
|
this.selectFile = new EventEmitter();
|
44
|
+
this._destroy$ = new Subject();
|
40
45
|
}
|
41
46
|
get inputElement() {
|
42
47
|
return this._inputElement.nativeElement;
|
@@ -51,6 +56,16 @@ export class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
51
56
|
get multiple() {
|
52
57
|
return this._multiple;
|
53
58
|
}
|
59
|
+
ngOnInit() {
|
60
|
+
this._ngZone.runOutsideAngular(() => {
|
61
|
+
merge(fromEvent(this._inputButton.nativeElement, 'click'), fromEvent(this._inputButton.nativeElement, 'keyup').pipe(filter((event) => event.keyCode === ENTER)))
|
62
|
+
.pipe(takeUntil(this._destroy$))
|
63
|
+
.subscribe(() => this._inputElement.nativeElement.click());
|
64
|
+
});
|
65
|
+
}
|
66
|
+
ngOnDestroy() {
|
67
|
+
this._destroy$.next();
|
68
|
+
}
|
54
69
|
/**
|
55
70
|
* Method executed when a file is selected.
|
56
71
|
*/
|
@@ -78,14 +93,14 @@ export class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
78
93
|
this.disabled = isDisabled;
|
79
94
|
}
|
80
95
|
}
|
81
|
-
TdFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
96
|
+
TdFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
82
97
|
TdFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdFileInputComponent, selector: "td-file-input", inputs: { disabled: "disabled", value: "value", color: "color", multiple: "multiple", accept: "accept" }, outputs: { selectFile: "selectFile" }, providers: [
|
83
98
|
{
|
84
99
|
provide: NG_VALUE_ACCESSOR,
|
85
100
|
useExisting: forwardRef(() => TdFileInputComponent),
|
86
101
|
multi: true,
|
87
102
|
},
|
88
|
-
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (
|
103
|
+
], viewQueries: [{ propertyName: "_inputButton", first: true, predicate: ["fileInputButton"], descendants: true, read: ElementRef, static: true }, { propertyName: "_inputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i2.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { type: i3.TdFileSelectDirective, selector: "[tdFileSelect]", inputs: ["multiple"], outputs: ["fileSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
89
104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, decorators: [{
|
90
105
|
type: Component,
|
91
106
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
@@ -94,8 +109,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
94
109
|
useExisting: forwardRef(() => TdFileInputComponent),
|
95
110
|
multi: true,
|
96
111
|
},
|
97
|
-
], selector: 'td-file-input', inputs: ['disabled', 'value'], template: "<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (
|
98
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
112
|
+
], selector: 'td-file-input', inputs: ['disabled', 'value'], template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"] }]
|
113
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _inputButton: [{
|
114
|
+
type: ViewChild,
|
115
|
+
args: ['fileInputButton', { static: true, read: ElementRef }]
|
116
|
+
}], _inputElement: [{
|
99
117
|
type: ViewChild,
|
100
118
|
args: ['fileInput', { static: true }]
|
101
119
|
}], color: [{
|
@@ -107,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
107
125
|
}], selectFile: [{
|
108
126
|
type: Output
|
109
127
|
}] } });
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvZmlsZS9zcmMvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9maWxlL3NyYy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBR0wseUJBQXlCLEVBQ3pCLGFBQWEsR0FDZCxNQUFNLHVCQUF1QixDQUFDOzs7OztBQUsvQixNQUFNLE9BQU8seUJBQTBCLFNBQVEsdUJBQXVCO0lBQ3BFLFlBQ0UsV0FBaUMsRUFDakMsZ0JBQWtDO1FBRWxDLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN2QyxDQUFDOztzSEFOVSx5QkFBeUI7MEdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDOztBQVVELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW1CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO0lBQUcsQ0FBQztDQUM3RDtBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHlCQUF5QixDQUM1RCxhQUFhLENBQUMsZUFBZSxDQUFDLENBQy9CLENBQUM7QUFpQkYsTUFBTSxPQUFPLG9CQUNYLFNBQVEscUJBQXFCO0lBNkM3QixZQUNVLFNBQW9CLEVBQzVCLGtCQUFxQztRQUVyQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBM0N0QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBaUMxQjs7OztXQUlHO1FBQ08sZUFBVSxHQUFrQyxJQUFJLFlBQVksRUFFbkUsQ0FBQztJQU9KLENBQUM7SUEzQ0QsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsSUFDSSxRQUFRLENBQUMsUUFBMEI7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUF5QkQ7O09BRUc7SUFDSCxZQUFZLENBQUMsS0FBc0I7UUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsc0RBQXNEO0lBQzdDLGdCQUFnQixDQUFDLENBQVU7UUFDbEMsSUFBSSxDQUFDLEVBQUU7WUFDTCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtJQUNILENBQUM7SUFDRDs7T0FFRztJQUNNLGdCQUFnQixDQUFDLFVBQW1CO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7O2lIQWhGVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix5TEFicEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUNuRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMktDckRILHloQkF3QkE7MkZEb0NhLG9CQUFvQjtrQkFmaEMsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixZQUNTLGVBQWUsVUFFakIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO2dJQVdhLGFBQWE7c0JBQXRELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFTL0IsS0FBSztzQkFBYixLQUFLO2dCQU9GLFFBQVE7c0JBRFgsS0FBSztnQkFhRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJQ2FuRGlzYWJsZSxcbiAgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBtaXhpbkNvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBtaXhpbkRpc2FibGVkLFxufSBmcm9tICdAY292YWxlbnQvY29yZS9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGRGaWxlSW5wdXRMYWJlbF1uZy10ZW1wbGF0ZScsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmlsZUlucHV0TGFiZWxEaXJlY3RpdmUgZXh0ZW5kcyBUZW1wbGF0ZVBvcnRhbERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGRGaWxlSW5wdXRCYXNlIHtcbiAgY29uc3RydWN0b3IocHVibGljIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG59XG5cbmV4cG9ydCBjb25zdCBfVGRGaWxlSW5wdXRNaXhpbkJhc2UgPSBtaXhpbkNvbnRyb2xWYWx1ZUFjY2Vzc29yKFxuICBtaXhpbkRpc2FibGVkKFRkRmlsZUlucHV0QmFzZSlcbik7XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZEZpbGVJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBzZWxlY3RvcjogJ3RkLWZpbGUtaW5wdXQnLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAndmFsdWUnXSxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmlsZUlucHV0Q29tcG9uZW50XG4gIGV4dGVuZHMgX1RkRmlsZUlucHV0TWl4aW5CYXNlXG4gIGltcGxlbWVudHMgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLCBJQ2FuRGlzYWJsZVxue1xuICBwcml2YXRlIF9tdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgbmF0aXZlIGA8aW5wdXQgdHlwZT1cImZpbGVcIj4gZWxlbWVudCAqL1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBfaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogY29sb3I/OiAnYWNjZW50JyB8ICdwcmltYXJ5JyB8ICd3YXJuJ1xuICAgKiBTZXRzIGJ1dHRvbiBjb2xvci4gVXNlcyBzYW1lIGNvbG9yIHBhbGV0dGUgYWNjZXB0ZWQgYXMgW01hdEJ1dHRvbl0uXG4gICAqL1xuICBASW5wdXQoKSBjb2xvcj86ICdhY2NlbnQnIHwgJ3ByaW1hcnknIHwgJ3dhcm4nO1xuXG4gIC8qKlxuICAgKiBtdWx0aXBsZT86IGJvb2xlYW5cbiAgICogU2V0cyBpZiBtdWx0aXBsZSBmaWxlcyBjYW4gYmUgZHJvcHBlZC9zZWxlY3RlZCBhdCBvbmNlIGluIFtUZEZpbGVJbnB1dENvbXBvbmVudF0uXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbXVsdGlwbGUobXVsdGlwbGU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aXBsZSk7XG4gIH1cbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhY2NlcHQ/OiBzdHJpbmdcbiAgICogU2V0cyBmaWxlcyBhY2NlcHRlZCB3aGVuIG9wZW5pbmcgdGhlIGZpbGUgYnJvd3NlciBkaWFsb2cuXG4gICAqIFNhbWUgYXMgJ2FjY2VwdCcgYXR0cmlidXRlIGluIDxpbnB1dC8+IGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBhY2NlcHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHNlbGVjdD86IGZ1bmN0aW9uXG4gICAqIEV2ZW50IGVtaXR0ZWQgYSBmaWxlIGlzIHNlbGVjdGVkXG4gICAqIEVtaXRzIGEgW0ZpbGUgfCBGaWxlTGlzdF0gb2JqZWN0LlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdEZpbGU6IEV2ZW50RW1pdHRlcjxGaWxlIHwgRmlsZUxpc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBGaWxlIHwgRmlsZUxpc3RcbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcihfY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGEgZmlsZSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIGhhbmRsZVNlbGVjdChmaWxlczogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKGZpbGVzKTtcbiAgICB0aGlzLnNlbGVjdEZpbGUuZW1pdChmaWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZXMgZnJvbSB0aGUgW1RkRmlsZUlucHV0Q29tcG9uZW50XS5cbiAgICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh1bmRlZmluZWQpO1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXRFbGVtZW50LCAndmFsdWUnLCAnJyk7XG4gIH1cblxuICAvKiogTWV0aG9kIGV4ZWN1dGVkIHdoZW4gdGhlIGRpc2FibGVkIHZhbHVlIGNoYW5nZXMgKi9cbiAgb3ZlcnJpZGUgb25EaXNhYmxlZENoYW5nZSh2OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgZGlzYWJsZSB0byB0aGUgY29tcG9uZW50LiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgbWF0LXJhaXNlZC1idXR0b25cbiAgY2xhc3M9XCJ0ZC1maWxlLWlucHV0XCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIFtjb2xvcl09XCJjb2xvclwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIChrZXl1cC5lbnRlcik9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gIChmaWxlRHJvcCk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50KVwiXG4gIHRkRmlsZURyb3Bcbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9idXR0b24+XG48aW5wdXRcbiAgI2ZpbGVJbnB1dFxuICBjbGFzcz1cInRkLWZpbGUtaW5wdXQtaGlkZGVuXCJcbiAgdHlwZT1cImZpbGVcIlxuICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0XCJcbiAgKGZpbGVTZWxlY3QpPVwiaGFuZGxlU2VsZWN0KCRldmVudClcIlxuICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICB0ZEZpbGVTZWxlY3Rcbi8+XG4iXX0=
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvZmlsZS9zcmMvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9maWxlL3NyYy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFHVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsYUFBYSxHQUNkLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBSy9CLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx1QkFBdUI7SUFDcEUsWUFDRSxXQUFpQyxFQUNqQyxnQkFBa0M7UUFFbEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZDLENB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MUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUNuRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Ysc0hBY21ELFVBQVUsNktDekVoRSxxZUF1QkE7MkZEMkNhLG9CQUFvQjtrQkFmaEMsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixZQUNTLGVBQWUsVUFFakIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDO3FKQVk3QixZQUFZO3NCQURYLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS2hFLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVUvQixLQUFLO3NCQUFiLEtBQUs7Z0JBT0YsUUFBUTtzQkFEWCxLQUFLO2dCQWFHLE1BQU07c0JBQWQsS0FBSztnQkFPSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGZvcndhcmRSZWYsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgSUNhbkRpc2FibGUsXG4gIElDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgbWl4aW5Db250cm9sVmFsdWVBY2Nlc3NvcixcbiAgbWl4aW5EaXNhYmxlZCxcbn0gZnJvbSAnQGNvdmFsZW50L2NvcmUvY29tbW9uJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RkRmlsZUlucHV0TGFiZWxdbmctdGVtcGxhdGUnLFxufSlcbmV4cG9ydCBjbGFzcyBUZEZpbGVJbnB1dExhYmVsRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVQb3J0YWxEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4sXG4gICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRkRmlsZUlucHV0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxufVxuXG5leHBvcnQgY29uc3QgX1RkRmlsZUlucHV0TWl4aW5CYXNlID0gbWl4aW5Db250cm9sVmFsdWVBY2Nlc3NvcihcbiAgbWl4aW5EaXNhYmxlZChUZEZpbGVJbnB1dEJhc2UpXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGRGaWxlSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc2VsZWN0b3I6ICd0ZC1maWxlLWlucHV0JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3ZhbHVlJ10sXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZEZpbGVJbnB1dENvbXBvbmVudFxuICBleHRlbmRzIF9UZEZpbGVJbnB1dE1peGluQmFzZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBJQ29udHJvbFZhbHVlQWNjZXNzb3IsIElDYW5EaXNhYmxlXG57XG4gIHByaXZhdGUgX211bHRpcGxlID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBuYXRpdmUgYDxidXR0b24gY2xhc3M9XCJ0ZC1maWxlLWlucHV0XCI+PC9idXR0b24+YCBlbGVtZW50ICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dEJ1dHRvbicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIF9pbnB1dEJ1dHRvbiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKiBUaGUgbmF0aXZlIGA8aW5wdXQgdHlwZT1cImZpbGVcIj4gZWxlbWVudCAqL1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBfaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogY29sb3I/OiAnYWNjZW50JyB8ICdwcmltYXJ5JyB8ICd3YXJuJ1xuICAgKiBTZXRzIGJ1dHRvbiBjb2xvci4gVXNlcyBzYW1lIGNvbG9yIHBhbGV0dGUgYWNjZXB0ZWQgYXMgW01hdEJ1dHRvbl0uXG4gICAqL1xuICBASW5wdXQoKSBjb2xvcj86ICdhY2NlbnQnIHwgJ3ByaW1hcnknIHwgJ3dhcm4nO1xuXG4gIC8qKlxuICAgKiBtdWx0aXBsZT86IGJvb2xlYW5cbiAgICogU2V0cyBpZiBtdWx0aXBsZSBmaWxlcyBjYW4gYmUgZHJvcHBlZC9zZWxlY3RlZCBhdCBvbmNlIGluIFtUZEZpbGVJbnB1dENvbXBvbmVudF0uXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbXVsdGlwbGUobXVsdGlwbGU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aXBsZSk7XG4gIH1cbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhY2NlcHQ/OiBzdHJpbmdcbiAgICogU2V0cyBmaWxlcyBhY2NlcHRlZCB3aGVuIG9wZW5pbmcgdGhlIGZpbGUgYnJvd3NlciBkaWFsb2cuXG4gICAqIFNhbWUgYXMgJ2FjY2VwdCcgYXR0cmlidXRlIGluIDxpbnB1dC8+IGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBhY2NlcHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHNlbGVjdD86IGZ1bmN0aW9uXG4gICAqIEV2ZW50IGVtaXR0ZWQgYSBmaWxlIGlzIHNlbGVjdGVkXG4gICAqIEVtaXRzIGEgW0ZpbGUgfCBGaWxlTGlzdF0gb2JqZWN0LlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdEZpbGU6IEV2ZW50RW1pdHRlcjxGaWxlIHwgRmlsZUxpc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBGaWxlIHwgRmlsZUxpc3RcbiAgPigpO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIoX2NoYW5nZURldGVjdG9yUmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBtZXJnZShcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2lucHV0QnV0dG9uLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpLFxuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5faW5wdXRCdXR0b24ubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5rZXlDb2RlID09PSBFTlRFUilcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWNrKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGEgZmlsZSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIGhhbmRsZVNlbGVjdChmaWxlczogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKGZpbGVzKTtcbiAgICB0aGlzLnNlbGVjdEZpbGUuZW1pdChmaWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZXMgZnJvbSB0aGUgW1RkRmlsZUlucHV0Q29tcG9uZW50XS5cbiAgICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh1bmRlZmluZWQpO1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXRFbGVtZW50LCAndmFsdWUnLCAnJyk7XG4gIH1cblxuICAvKiogTWV0aG9kIGV4ZWN1dGVkIHdoZW4gdGhlIGRpc2FibGVkIHZhbHVlIGNoYW5nZXMgKi9cbiAgb3ZlcnJpZGUgb25EaXNhYmxlZENoYW5nZSh2OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgZGlzYWJsZSB0byB0aGUgY29tcG9uZW50LiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgI2ZpbGVJbnB1dEJ1dHRvblxuICBtYXQtcmFpc2VkLWJ1dHRvblxuICBjbGFzcz1cInRkLWZpbGUtaW5wdXRcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgW2NvbG9yXT1cImNvbG9yXCJcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgKGZpbGVEcm9wKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQpXCJcbiAgdGRGaWxlRHJvcFxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2J1dHRvbj5cbjxpbnB1dFxuICAjZmlsZUlucHV0XG4gIGNsYXNzPVwidGQtZmlsZS1pbnB1dC1oaWRkZW5cIlxuICB0eXBlPVwiZmlsZVwiXG4gIFthdHRyLmFjY2VwdF09XCJhY2NlcHRcIlxuICAoZmlsZVNlbGVjdCk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50KVwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIHRkRmlsZVNlbGVjdFxuLz5cbiJdfQ==
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { EventEmitter, Directive, Optional, Host, Input, Output, HostBinding, HostListener, forwardRef, Component, ChangeDetectionStrategy, ViewChild, ContentChild, Injectable, NgModule } from '@angular/core';
|
2
|
+
import { EventEmitter, Directive, Optional, Host, Input, Output, HostBinding, HostListener, forwardRef, ElementRef, Component, ChangeDetectionStrategy, ViewChild, ContentChild, Injectable, NgModule } from '@angular/core';
|
3
3
|
import * as i4 from '@angular/common';
|
4
4
|
import { CommonModule } from '@angular/common';
|
5
5
|
import * as i1 from '@angular/forms';
|
@@ -11,11 +11,12 @@ import { MatIconModule } from '@angular/material/icon';
|
|
11
11
|
import * as i1$1 from '@angular/material/button';
|
12
12
|
import { MatButtonModule } from '@angular/material/button';
|
13
13
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
14
|
+
import { ENTER } from '@angular/cdk/keycodes';
|
15
|
+
import { Subject, merge, fromEvent } from 'rxjs';
|
16
|
+
import { filter, takeUntil, tap } from 'rxjs/operators';
|
14
17
|
import { mixinControlValueAccessor, mixinDisabled } from '@covalent/core/common';
|
15
18
|
import * as i1$2 from '@angular/common/http';
|
16
19
|
import { HttpRequest, HttpHeaders, HttpParams, HttpEventType } from '@angular/common/http';
|
17
|
-
import { Subject } from 'rxjs';
|
18
|
-
import { tap } from 'rxjs/operators';
|
19
20
|
|
20
21
|
class TdFileSelectDirective {
|
21
22
|
constructor(model) {
|
@@ -142,12 +143,30 @@ class TdFileDropDirective {
|
|
142
143
|
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
143
144
|
this._stopEvent(event);
|
144
145
|
});
|
146
|
+
// Listens to 'dragover' host event to validate transfer items.
|
147
|
+
// Checks if 'multiple' attr exists in host to allow multiple file drops.
|
148
|
+
// Stops event propagation and default action from browser for 'dragover' event.
|
149
|
+
this._dragoverListener = this._renderer.listen(this._element.nativeElement, 'dragover', (event) => {
|
150
|
+
const transfer = event.dataTransfer || new DataTransfer();
|
151
|
+
transfer.dropEffect = this._typeCheck(transfer.types);
|
152
|
+
if (this.disabled ||
|
153
|
+
(!this._multiple &&
|
154
|
+
((transfer.items && transfer.items.length > 1) ||
|
155
|
+
transfer.mozItemCount > 1))) {
|
156
|
+
transfer.dropEffect = 'none';
|
157
|
+
}
|
158
|
+
else {
|
159
|
+
transfer.dropEffect = 'copy';
|
160
|
+
}
|
161
|
+
this._stopEvent(event);
|
162
|
+
});
|
145
163
|
});
|
146
164
|
}
|
147
165
|
ngOnDestroy() {
|
148
|
-
var _a, _b;
|
166
|
+
var _a, _b, _c;
|
149
167
|
(_a = this._dragenterListener) === null || _a === void 0 ? void 0 : _a.call(this);
|
150
168
|
(_b = this._dragleaveListener) === null || _b === void 0 ? void 0 : _b.call(this);
|
169
|
+
(_c = this._dragoverListener) === null || _c === void 0 ? void 0 : _c.call(this);
|
151
170
|
}
|
152
171
|
/**
|
153
172
|
* Listens to 'drop' host event to get validated transfer items.
|
@@ -171,25 +190,6 @@ class TdFileDropDirective {
|
|
171
190
|
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
172
191
|
this._stopEvent(event);
|
173
192
|
}
|
174
|
-
/**
|
175
|
-
* Listens to 'dragover' host event to validate transfer items.
|
176
|
-
* Checks if 'multiple' attr exists in host to allow multiple file drops.
|
177
|
-
* Stops event propagation and default action from browser for 'dragover' event.
|
178
|
-
*/
|
179
|
-
onDragOver(event) {
|
180
|
-
const transfer = event.dataTransfer || new DataTransfer();
|
181
|
-
transfer.dropEffect = this._typeCheck(transfer.types);
|
182
|
-
if (this.disabled ||
|
183
|
-
(!this._multiple &&
|
184
|
-
((transfer.items && transfer.items.length > 1) ||
|
185
|
-
transfer.mozItemCount > 1))) {
|
186
|
-
transfer.dropEffect = 'none';
|
187
|
-
}
|
188
|
-
else {
|
189
|
-
transfer.dropEffect = 'copy';
|
190
|
-
}
|
191
|
-
this._stopEvent(event);
|
192
|
-
}
|
193
193
|
/**
|
194
194
|
* Validates if the transfer item types are 'Files'.
|
195
195
|
*/
|
@@ -208,7 +208,7 @@ class TdFileDropDirective {
|
|
208
208
|
}
|
209
209
|
}
|
210
210
|
TdFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
211
|
-
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)"
|
211
|
+
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)" }, properties: { "attr.multiple": "this.multipleBinding", "attr.disabled": "this.disabledBinding" } }, ngImport: i0 });
|
212
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, decorators: [{
|
213
213
|
type: Directive,
|
214
214
|
args: [{ selector: '[tdFileDrop]' }]
|
@@ -227,9 +227,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
227
227
|
}], onDrop: [{
|
228
228
|
type: HostListener,
|
229
229
|
args: ['drop', ['$event']]
|
230
|
-
}], onDragOver: [{
|
231
|
-
type: HostListener,
|
232
|
-
args: ['dragover', ['$event']]
|
233
230
|
}] } });
|
234
231
|
|
235
232
|
class TdFileInputLabelDirective extends TemplatePortalDirective {
|
@@ -252,8 +249,9 @@ class TdFileInputBase {
|
|
252
249
|
}
|
253
250
|
const _TdFileInputMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileInputBase));
|
254
251
|
class TdFileInputComponent extends _TdFileInputMixinBase {
|
255
|
-
constructor(_renderer, _changeDetectorRef) {
|
252
|
+
constructor(_ngZone, _renderer, _changeDetectorRef) {
|
256
253
|
super(_changeDetectorRef);
|
254
|
+
this._ngZone = _ngZone;
|
257
255
|
this._renderer = _renderer;
|
258
256
|
this._multiple = false;
|
259
257
|
/**
|
@@ -262,6 +260,7 @@ class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
262
260
|
* Emits a [File | FileList] object.
|
263
261
|
*/
|
264
262
|
this.selectFile = new EventEmitter();
|
263
|
+
this._destroy$ = new Subject();
|
265
264
|
}
|
266
265
|
get inputElement() {
|
267
266
|
return this._inputElement.nativeElement;
|
@@ -276,6 +275,16 @@ class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
276
275
|
get multiple() {
|
277
276
|
return this._multiple;
|
278
277
|
}
|
278
|
+
ngOnInit() {
|
279
|
+
this._ngZone.runOutsideAngular(() => {
|
280
|
+
merge(fromEvent(this._inputButton.nativeElement, 'click'), fromEvent(this._inputButton.nativeElement, 'keyup').pipe(filter((event) => event.keyCode === ENTER)))
|
281
|
+
.pipe(takeUntil(this._destroy$))
|
282
|
+
.subscribe(() => this._inputElement.nativeElement.click());
|
283
|
+
});
|
284
|
+
}
|
285
|
+
ngOnDestroy() {
|
286
|
+
this._destroy$.next();
|
287
|
+
}
|
279
288
|
/**
|
280
289
|
* Method executed when a file is selected.
|
281
290
|
*/
|
@@ -303,14 +312,14 @@ class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
303
312
|
this.disabled = isDisabled;
|
304
313
|
}
|
305
314
|
}
|
306
|
-
TdFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
315
|
+
TdFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
307
316
|
TdFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdFileInputComponent, selector: "td-file-input", inputs: { disabled: "disabled", value: "value", color: "color", multiple: "multiple", accept: "accept" }, outputs: { selectFile: "selectFile" }, providers: [
|
308
317
|
{
|
309
318
|
provide: NG_VALUE_ACCESSOR,
|
310
319
|
useExisting: forwardRef(() => TdFileInputComponent),
|
311
320
|
multi: true,
|
312
321
|
},
|
313
|
-
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (
|
322
|
+
], viewQueries: [{ propertyName: "_inputButton", first: true, predicate: ["fileInputButton"], descendants: true, read: ElementRef, static: true }, { propertyName: "_inputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"], components: [{ type: i1$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { type: TdFileSelectDirective, selector: "[tdFileSelect]", inputs: ["multiple"], outputs: ["fileSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
314
323
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, decorators: [{
|
315
324
|
type: Component,
|
316
325
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
@@ -319,8 +328,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
319
328
|
useExisting: forwardRef(() => TdFileInputComponent),
|
320
329
|
multi: true,
|
321
330
|
},
|
322
|
-
], selector: 'td-file-input', inputs: ['disabled', 'value'], template: "<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (
|
323
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
331
|
+
], selector: 'td-file-input', inputs: ['disabled', 'value'], template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"] }]
|
332
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _inputButton: [{
|
333
|
+
type: ViewChild,
|
334
|
+
args: ['fileInputButton', { static: true, read: ElementRef }]
|
335
|
+
}], _inputElement: [{
|
324
336
|
type: ViewChild,
|
325
337
|
args: ['fileInput', { static: true }]
|
326
338
|
}], color: [{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"covalent-core-file.mjs","sources":["../../../../libs/angular/file/src/directives/file-select.directive.ts","../../../../libs/angular/file/src/directives/file-drop.directive.ts","../../../../libs/angular/file/src/file-input/file-input.component.ts","../../../../libs/angular/file/src/file-input/file-input.component.html","../../../../libs/angular/file/src/file-upload/file-upload.component.ts","../../../../libs/angular/file/src/file-upload/file-upload.component.html","../../../../libs/angular/file/src/services/file.service.ts","../../../../libs/angular/file/src/file.module.ts","../../../../libs/angular/file/src/covalent-core-file.ts"],"sourcesContent":["import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n private _multiple = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be selected at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileSelect?: function\n * Event emitted when a file or files are selected in host [HTMLInputElement].\n * Emits a [FileList | File] object.\n * Alternative to not use [(ngModel)].\n */\n @Output() fileSelect: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n constructor(@Optional() @Host() private model: NgModel) {}\n\n /**\n * Listens to 'change' host event to get [HTMLInputElement] files.\n * Emits the 'fileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Uses [(ngModel)] if declared, instead of emitting 'fileSelect' event.\n */\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n const fileInputEl: HTMLInputElement = event.target;\n const files: FileList = fileInputEl.files || new FileList();\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.model\n ? this.model.update.emit(value)\n : this.fileSelect.emit(value);\n }\n }\n }\n}\n","import {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostListener,\n HostBinding,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class TdFileDropBase {}\n\n@Directive({ selector: '[tdFileDrop]' })\nexport class TdFileDropDirective implements OnInit, OnDestroy {\n private _multiple = false;\n private _dragenterListener?: VoidFunction;\n private _dragleaveListener?: VoidFunction;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be dropped at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n @Input() disabled? = false;\n\n /**\n * fileDrop?: function\n * Event emitted when a file or files are dropped in host element after being validated.\n * Emits a [FileList | File] object.\n */\n @Output() fileDrop: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n /**\n * Binds native 'disabled' attribute if [disabled] property is 'true'.\n */\n @HostBinding('attr.disabled')\n get disabledBinding(): string | undefined {\n return this.disabled ? '' : undefined;\n }\n\n constructor(\n private _renderer: Renderer2,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n // Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n // Stops event propagation and default action from browser for 'dragenter' event.\n this._dragenterListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragenter',\n (event: Event) => {\n if (!this.disabled) {\n this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n }\n this._stopEvent(event);\n }\n );\n\n // Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n // Stops event propagation and default action from browser for 'dragleave' event.\n this._dragleaveListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragleave',\n (event: Event) => {\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._dragenterListener?.();\n this._dragleaveListener?.();\n }\n\n /**\n * Listens to 'drop' host event to get validated transfer items.\n * Emits the 'fileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Stops event propagation and default action from browser for 'drop' event.\n */\n @HostListener('drop', ['$event'])\n onDrop(event: Event): void {\n if (!this.disabled) {\n const transfer: DataTransfer =\n (<DragEvent>event).dataTransfer ?? new DataTransfer();\n const files: FileList = transfer.files;\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.fileDrop.emit(value);\n }\n }\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragover' host event to validate transfer items.\n * Checks if 'multiple' attr exists in host to allow multiple file drops.\n * Stops event propagation and default action from browser for 'dragover' event.\n */\n @HostListener('dragover', ['$event'])\n onDragOver(event: Event): void {\n const transfer: DataTransfer =\n (<DragEvent>event).dataTransfer || new DataTransfer();\n transfer.dropEffect = this._typeCheck(transfer.types);\n if (\n this.disabled ||\n (!this._multiple &&\n ((transfer.items && transfer.items.length > 1) ||\n (<any>transfer).mozItemCount > 1))\n ) {\n transfer.dropEffect = 'none';\n } else {\n transfer.dropEffect = 'copy';\n }\n this._stopEvent(event);\n }\n\n /**\n * Validates if the transfer item types are 'Files'.\n */\n private _typeCheck(\n types: ReadonlyArray<string> | DOMStringList\n ): 'none' | 'copy' | 'link' | 'move' {\n let dropEffect: 'none' | 'copy' | 'link' | 'move' = 'none';\n if (\n types &&\n (((<any>types).contains && (<any>types).contains('Files')) ||\n ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1))\n ) {\n dropEffect = 'copy';\n }\n\n return dropEffect;\n }\n\n private _stopEvent(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import {\n Component,\n Directive,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ChangeDetectorRef,\n forwardRef,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n ICanDisable,\n IControlValueAccessor,\n mixinControlValueAccessor,\n mixinDisabled,\n} from '@covalent/core/common';\n\n@Directive({\n selector: '[tdFileInputLabel]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdFileInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(\n mixinDisabled(TdFileInputBase)\n);\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileInputComponent),\n multi: true,\n },\n ],\n selector: 'td-file-input',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-input.component.scss'],\n templateUrl: './file-input.component.html',\n})\nexport class TdFileInputComponent\n extends _TdFileInputMixinBase\n implements IControlValueAccessor, ICanDisable\n{\n private _multiple = false;\n\n /** The native `<input type=\"file\"> element */\n @ViewChild('fileInput', { static: true }) _inputElement!: ElementRef;\n get inputElement(): HTMLInputElement {\n return this._inputElement.nativeElement;\n }\n\n /**\n * color?: 'accent' | 'primary' | 'warn'\n * Sets button color. Uses same color palette accepted as [MatButton].\n */\n @Input() color?: 'accent' | 'primary' | 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n /**\n * select?: function\n * Event emitted a file is selected\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n constructor(\n private _renderer: Renderer2,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(files: File | FileList): void {\n this.writeValue(files);\n this.selectFile.emit(files);\n }\n\n /**\n * Used to clear the selected files from the [TdFileInputComponent].\n */\n clear(): void {\n this.writeValue(undefined);\n this._renderer.setProperty(this.inputElement, 'value', '');\n }\n\n /** Method executed when the disabled value changes */\n override onDisabledChange(v: boolean): void {\n if (v) {\n this.clear();\n }\n }\n /**\n * Sets disable to the component. Implemented as part of ControlValueAccessor.\n */\n override setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (keyup.enter)=\"fileInput.click()\"\n (click)=\"fileInput.click()\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ContentChild,\n ChangeDetectorRef,\n forwardRef,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { noop } from 'rxjs';\n\nexport class TdFileUploadBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileUploadComponent),\n multi: true,\n },\n ],\n selector: 'td-file-upload',\n styleUrls: ['./file-upload.component.scss'],\n templateUrl: './file-upload.component.html',\n})\nexport class TdFileUploadComponent implements ControlValueAccessor {\n private _multiple = false;\n private _required = false;\n private _disabled = false;\n\n @ViewChild(TdFileInputComponent) fileInput?: TdFileInputComponent;\n\n @ContentChild(TdFileInputLabelDirective)\n inputLabel?: TdFileInputLabelDirective;\n\n /**\n * defaultColor?: 'accent' | 'primary' | 'warn'\n * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n */\n @Input() defaultColor: 'accent' | 'primary' | 'warn' = 'primary';\n\n /**\n * activeColor?: 'accent' | 'primary' | 'warn'\n * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n */\n @Input() activeColor: 'accent' | 'primary' | 'warn' = 'accent';\n\n /**\n * cancelColor?: 'accent' | 'primary' | 'warn'\n * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n */\n @Input() cancelColor: 'accent' | 'primary' | 'warn' = 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n */\n @Input()\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * required?: boolean\n * Forces at least one file upload.\n * Defaults to 'false'\n */\n @Input()\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n @Input()\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.onDisabledChange(disabled);\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input() value?: unknown | undefined;\n\n /**\n * select?: function\n * Event emitted when a file is selected.\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n /**\n * upload?: function\n * Event emitted when upload button is clicked.\n * Emits a [File | FileList] object.\n */\n @Output() upload: EventEmitter<File | FileList | unknown> = new EventEmitter<\n File | FileList | unknown\n >();\n\n /**\n * cancel?: function\n * Event emitted when cancel button is clicked.\n */\n @Output() cancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n writeValue(value: unknown): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(): void {\n //\n }\n\n registerOnTouched(): void {\n //\n }\n\n /**\n * Method executed when upload button is clicked.\n */\n uploadPressed(): void {\n if (this.value) {\n this.upload.emit(this.value);\n }\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(value: File | FileList): void {\n this.value = value;\n this.selectFile.emit(value);\n }\n\n /**\n * Methods executed when cancel button is clicked.\n * Clears files.\n */\n _cancel(): void {\n this.value = undefined;\n this.cancel.emit();\n // check if the file input is rendered before clearing it\n if (this.fileInput) {\n this.fileInput.clear();\n }\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this._cancel();\n }\n }\n}\n","<td-file-input\n *ngIf=\"!value\"\n [(ngModel)]=\"value\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n [color]=\"defaultColor\"\n (selectFile)=\"(handleSelect)\"\n>\n <ng-template [cdkPortalOutlet]=\"inputLabel\" [ngIf]=\"true\"></ng-template>\n</td-file-input>\n<div *ngIf=\"value\">\n <button\n #fileUpload\n class=\"td-file-upload\"\n mat-raised-button\n type=\"button\"\n [color]=\"activeColor\"\n (keyup.delete)=\"_cancel()\"\n (keyup.backspace)=\"_cancel()\"\n (keyup.escape)=\"_cancel()\"\n (click)=\"uploadPressed()\"\n >\n <ng-content></ng-content>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n class=\"td-file-upload-cancel\"\n [color]=\"cancelColor\"\n (click)=\"_cancel()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n","import { Injectable, Optional } from '@angular/core';\nimport {\n HttpClient,\n HttpRequest,\n HttpEvent,\n HttpEventType,\n HttpHeaders,\n HttpParams,\n} from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport interface IUploadExtras {\n headers?: { [name: string]: string | string[] };\n params?: { [param: string]: string | string[] };\n}\n\n@Injectable()\nexport class TdFileService {\n private _progressSubject: Subject<number> = new Subject<number>();\n private _progressObservable: Observable<number>;\n\n /**\n * Gets progress observable to keep track of the files being uploaded.\n * Needs to be supported by backend.\n */\n get progress(): Observable<number> {\n return this._progressObservable;\n }\n\n /**\n * Creates a new instance\n * @param _http the http client instance\n * @breaking-change 3.0.0 remove 'Optional' decorator once the legay upload method is removed\n */\n constructor(@Optional() private readonly _http: HttpClient) {\n this._progressObservable = this._progressSubject.asObservable();\n }\n\n /**\n * Uploads a file to a URL.\n */\n send(\n url: string,\n method: string,\n body: File | FormData,\n { headers, params }: IUploadExtras = {}\n ): Observable<HttpEvent<any>> {\n if (!this._http) {\n throw new Error(\n 'The HttpClient module needs to be imported at root module level'\n );\n }\n const req: HttpRequest<File | FormData> = new HttpRequest(\n method.toUpperCase(),\n url,\n body,\n {\n reportProgress: true,\n headers: new HttpHeaders(headers || {}),\n params: new HttpParams({ fromObject: params || {} }),\n }\n );\n return this._http\n .request(req)\n .pipe(tap((event: HttpEvent<any>) => this.handleEvent(event)));\n }\n\n private handleEvent<T = any>(event: HttpEvent<T>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n this._progressSubject.next(0);\n break;\n case HttpEventType.UploadProgress:\n this._progressSubject.next(\n Math.round((100 * event.loaded) / (event.total ?? 0))\n );\n break;\n case HttpEventType.Response:\n this._progressSubject.next(100);\n break;\n default:\n break;\n }\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n TdFileSelectDirective,\n TdFileDropDirective,\n TdFileUploadComponent,\n TdFileInputComponent,\n TdFileInputLabelDirective,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n PortalModule,\n ],\n declarations: [TD_FILE],\n exports: [TD_FILE],\n providers: [TdFileService],\n})\nexport class CovalentFileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.TdFileDropDirective","i3.TdFileSelectDirective","i1.TdFileInputComponent","i2","i5"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"covalent-core-file.mjs","sources":["../../../../libs/angular/file/src/directives/file-select.directive.ts","../../../../libs/angular/file/src/directives/file-drop.directive.ts","../../../../libs/angular/file/src/file-input/file-input.component.ts","../../../../libs/angular/file/src/file-input/file-input.component.html","../../../../libs/angular/file/src/file-upload/file-upload.component.ts","../../../../libs/angular/file/src/file-upload/file-upload.component.html","../../../../libs/angular/file/src/services/file.service.ts","../../../../libs/angular/file/src/file.module.ts","../../../../libs/angular/file/src/covalent-core-file.ts"],"sourcesContent":["import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n private _multiple = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be selected at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileSelect?: function\n * Event emitted when a file or files are selected in host [HTMLInputElement].\n * Emits a [FileList | File] object.\n * Alternative to not use [(ngModel)].\n */\n @Output() fileSelect: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n constructor(@Optional() @Host() private model: NgModel) {}\n\n /**\n * Listens to 'change' host event to get [HTMLInputElement] files.\n * Emits the 'fileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Uses [(ngModel)] if declared, instead of emitting 'fileSelect' event.\n */\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n const fileInputEl: HTMLInputElement = event.target;\n const files: FileList = fileInputEl.files || new FileList();\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.model\n ? this.model.update.emit(value)\n : this.fileSelect.emit(value);\n }\n }\n }\n}\n","import {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostListener,\n HostBinding,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class TdFileDropBase {}\n\n@Directive({ selector: '[tdFileDrop]' })\nexport class TdFileDropDirective implements OnInit, OnDestroy {\n private _multiple = false;\n private _dragenterListener?: VoidFunction;\n private _dragleaveListener?: VoidFunction;\n private _dragoverListener?: VoidFunction;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be dropped at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n @Input() disabled? = false;\n\n /**\n * fileDrop?: function\n * Event emitted when a file or files are dropped in host element after being validated.\n * Emits a [FileList | File] object.\n */\n @Output() fileDrop: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n /**\n * Binds native 'disabled' attribute if [disabled] property is 'true'.\n */\n @HostBinding('attr.disabled')\n get disabledBinding(): string | undefined {\n return this.disabled ? '' : undefined;\n }\n\n constructor(\n private _renderer: Renderer2,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n // Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n // Stops event propagation and default action from browser for 'dragenter' event.\n this._dragenterListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragenter',\n (event: Event) => {\n if (!this.disabled) {\n this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n }\n this._stopEvent(event);\n }\n );\n\n // Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n // Stops event propagation and default action from browser for 'dragleave' event.\n this._dragleaveListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragleave',\n (event: Event) => {\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n );\n\n // Listens to 'dragover' host event to validate transfer items.\n // Checks if 'multiple' attr exists in host to allow multiple file drops.\n // Stops event propagation and default action from browser for 'dragover' event.\n this._dragoverListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragover',\n (event: DragEvent) => {\n const transfer: DataTransfer =\n event.dataTransfer || new DataTransfer();\n transfer.dropEffect = this._typeCheck(transfer.types);\n if (\n this.disabled ||\n (!this._multiple &&\n ((transfer.items && transfer.items.length > 1) ||\n (<any>transfer).mozItemCount > 1))\n ) {\n transfer.dropEffect = 'none';\n } else {\n transfer.dropEffect = 'copy';\n }\n this._stopEvent(event);\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._dragenterListener?.();\n this._dragleaveListener?.();\n this._dragoverListener?.();\n }\n\n /**\n * Listens to 'drop' host event to get validated transfer items.\n * Emits the 'fileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Stops event propagation and default action from browser for 'drop' event.\n */\n @HostListener('drop', ['$event'])\n onDrop(event: Event): void {\n if (!this.disabled) {\n const transfer: DataTransfer =\n (<DragEvent>event).dataTransfer ?? new DataTransfer();\n const files: FileList = transfer.files;\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.fileDrop.emit(value);\n }\n }\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Validates if the transfer item types are 'Files'.\n */\n private _typeCheck(\n types: ReadonlyArray<string> | DOMStringList\n ): 'none' | 'copy' | 'link' | 'move' {\n let dropEffect: 'none' | 'copy' | 'link' | 'move' = 'none';\n if (\n types &&\n (((<any>types).contains && (<any>types).contains('Files')) ||\n ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1))\n ) {\n dropEffect = 'copy';\n }\n\n return dropEffect;\n }\n\n private _stopEvent(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import {\n Component,\n Directive,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ChangeDetectorRef,\n forwardRef,\n OnInit,\n OnDestroy,\n NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { ENTER } from '@angular/cdk/keycodes';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport {\n ICanDisable,\n IControlValueAccessor,\n mixinControlValueAccessor,\n mixinDisabled,\n} from '@covalent/core/common';\n\n@Directive({\n selector: '[tdFileInputLabel]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdFileInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(\n mixinDisabled(TdFileInputBase)\n);\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileInputComponent),\n multi: true,\n },\n ],\n selector: 'td-file-input',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-input.component.scss'],\n templateUrl: './file-input.component.html',\n})\nexport class TdFileInputComponent\n extends _TdFileInputMixinBase\n implements OnInit, OnDestroy, IControlValueAccessor, ICanDisable\n{\n private _multiple = false;\n\n /** The native `<button class=\"td-file-input\"></button>` element */\n @ViewChild('fileInputButton', { static: true, read: ElementRef })\n _inputButton!: ElementRef<HTMLElement>;\n\n /** The native `<input type=\"file\"> element */\n @ViewChild('fileInput', { static: true })\n _inputElement!: ElementRef<HTMLInputElement>;\n get inputElement(): HTMLInputElement {\n return this._inputElement.nativeElement;\n }\n\n /**\n * color?: 'accent' | 'primary' | 'warn'\n * Sets button color. Uses same color palette accepted as [MatButton].\n */\n @Input() color?: 'accent' | 'primary' | 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n /**\n * select?: function\n * Event emitted a file is selected\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _ngZone: NgZone,\n private _renderer: Renderer2,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n merge(\n fromEvent(this._inputButton.nativeElement, 'click'),\n fromEvent<KeyboardEvent>(this._inputButton.nativeElement, 'keyup').pipe(\n filter((event) => event.keyCode === ENTER)\n )\n )\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => this._inputElement.nativeElement.click());\n });\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(files: File | FileList): void {\n this.writeValue(files);\n this.selectFile.emit(files);\n }\n\n /**\n * Used to clear the selected files from the [TdFileInputComponent].\n */\n clear(): void {\n this.writeValue(undefined);\n this._renderer.setProperty(this.inputElement, 'value', '');\n }\n\n /** Method executed when the disabled value changes */\n override onDisabledChange(v: boolean): void {\n if (v) {\n this.clear();\n }\n }\n /**\n * Sets disable to the component. Implemented as part of ControlValueAccessor.\n */\n override setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ContentChild,\n ChangeDetectorRef,\n forwardRef,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { noop } from 'rxjs';\n\nexport class TdFileUploadBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileUploadComponent),\n multi: true,\n },\n ],\n selector: 'td-file-upload',\n styleUrls: ['./file-upload.component.scss'],\n templateUrl: './file-upload.component.html',\n})\nexport class TdFileUploadComponent implements ControlValueAccessor {\n private _multiple = false;\n private _required = false;\n private _disabled = false;\n\n @ViewChild(TdFileInputComponent) fileInput?: TdFileInputComponent;\n\n @ContentChild(TdFileInputLabelDirective)\n inputLabel?: TdFileInputLabelDirective;\n\n /**\n * defaultColor?: 'accent' | 'primary' | 'warn'\n * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n */\n @Input() defaultColor: 'accent' | 'primary' | 'warn' = 'primary';\n\n /**\n * activeColor?: 'accent' | 'primary' | 'warn'\n * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n */\n @Input() activeColor: 'accent' | 'primary' | 'warn' = 'accent';\n\n /**\n * cancelColor?: 'accent' | 'primary' | 'warn'\n * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n */\n @Input() cancelColor: 'accent' | 'primary' | 'warn' = 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n */\n @Input()\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * required?: boolean\n * Forces at least one file upload.\n * Defaults to 'false'\n */\n @Input()\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n @Input()\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.onDisabledChange(disabled);\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input() value?: unknown | undefined;\n\n /**\n * select?: function\n * Event emitted when a file is selected.\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n /**\n * upload?: function\n * Event emitted when upload button is clicked.\n * Emits a [File | FileList] object.\n */\n @Output() upload: EventEmitter<File | FileList | unknown> = new EventEmitter<\n File | FileList | unknown\n >();\n\n /**\n * cancel?: function\n * Event emitted when cancel button is clicked.\n */\n @Output() cancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n writeValue(value: unknown): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(): void {\n //\n }\n\n registerOnTouched(): void {\n //\n }\n\n /**\n * Method executed when upload button is clicked.\n */\n uploadPressed(): void {\n if (this.value) {\n this.upload.emit(this.value);\n }\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(value: File | FileList): void {\n this.value = value;\n this.selectFile.emit(value);\n }\n\n /**\n * Methods executed when cancel button is clicked.\n * Clears files.\n */\n _cancel(): void {\n this.value = undefined;\n this.cancel.emit();\n // check if the file input is rendered before clearing it\n if (this.fileInput) {\n this.fileInput.clear();\n }\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this._cancel();\n }\n }\n}\n","<td-file-input\n *ngIf=\"!value\"\n [(ngModel)]=\"value\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n [color]=\"defaultColor\"\n (selectFile)=\"(handleSelect)\"\n>\n <ng-template [cdkPortalOutlet]=\"inputLabel\" [ngIf]=\"true\"></ng-template>\n</td-file-input>\n<div *ngIf=\"value\">\n <button\n #fileUpload\n class=\"td-file-upload\"\n mat-raised-button\n type=\"button\"\n [color]=\"activeColor\"\n (keyup.delete)=\"_cancel()\"\n (keyup.backspace)=\"_cancel()\"\n (keyup.escape)=\"_cancel()\"\n (click)=\"uploadPressed()\"\n >\n <ng-content></ng-content>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n class=\"td-file-upload-cancel\"\n [color]=\"cancelColor\"\n (click)=\"_cancel()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n","import { Injectable, Optional } from '@angular/core';\nimport {\n HttpClient,\n HttpRequest,\n HttpEvent,\n HttpEventType,\n HttpHeaders,\n HttpParams,\n} from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport interface IUploadExtras {\n headers?: { [name: string]: string | string[] };\n params?: { [param: string]: string | string[] };\n}\n\n@Injectable()\nexport class TdFileService {\n private _progressSubject: Subject<number> = new Subject<number>();\n private _progressObservable: Observable<number>;\n\n /**\n * Gets progress observable to keep track of the files being uploaded.\n * Needs to be supported by backend.\n */\n get progress(): Observable<number> {\n return this._progressObservable;\n }\n\n /**\n * Creates a new instance\n * @param _http the http client instance\n * @breaking-change 3.0.0 remove 'Optional' decorator once the legay upload method is removed\n */\n constructor(@Optional() private readonly _http: HttpClient) {\n this._progressObservable = this._progressSubject.asObservable();\n }\n\n /**\n * Uploads a file to a URL.\n */\n send(\n url: string,\n method: string,\n body: File | FormData,\n { headers, params }: IUploadExtras = {}\n ): Observable<HttpEvent<any>> {\n if (!this._http) {\n throw new Error(\n 'The HttpClient module needs to be imported at root module level'\n );\n }\n const req: HttpRequest<File | FormData> = new HttpRequest(\n method.toUpperCase(),\n url,\n body,\n {\n reportProgress: true,\n headers: new HttpHeaders(headers || {}),\n params: new HttpParams({ fromObject: params || {} }),\n }\n );\n return this._http\n .request(req)\n .pipe(tap((event: HttpEvent<any>) => this.handleEvent(event)));\n }\n\n private handleEvent<T = any>(event: HttpEvent<T>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n this._progressSubject.next(0);\n break;\n case HttpEventType.UploadProgress:\n this._progressSubject.next(\n Math.round((100 * event.loaded) / (event.total ?? 0))\n );\n break;\n case HttpEventType.Response:\n this._progressSubject.next(100);\n break;\n default:\n break;\n }\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n TdFileSelectDirective,\n TdFileDropDirective,\n TdFileUploadComponent,\n TdFileInputComponent,\n TdFileInputLabelDirective,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n PortalModule,\n ],\n declarations: [TD_FILE],\n exports: [TD_FILE],\n providers: [TdFileService],\n})\nexport class CovalentFileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.TdFileDropDirective","i3.TdFileSelectDirective","i1.TdFileInputComponent","i2","i5"],"mappings":";;;;;;;;;;;;;;;;;;;;MAQa,qBAAqB,CAAA;AA+BhC,IAAA,WAAA,CAAwC,KAAc,EAAA;AAAd,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAS;AA9B9C,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAY1B;;;;;AAKG;AACO,QAAA,IAAA,CAAA,UAAU,GAAkC,IAAI,YAAY,EAEnE,CAAC;KAUsD;AA5B1D;;;;AAIG;IACH,IACI,QAAQ,CAAC,QAA0B,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;AAYD;;AAEG;AACH,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC;KACxC;AAID;;;;AAIG;AAEH,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,KAAK,CAAC,MAAM,YAAY,gBAAgB,EAAE;AAC5C,YAAA,MAAM,WAAW,GAAqB,KAAK,CAAC,MAAM,CAAC;YACnD,MAAM,KAAK,GAAa,WAAW,CAAC,KAAK,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5D,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,gBAAA,MAAM,KAAK,GAAoB,IAAI,CAAC,SAAS;AAC3C,sBAAE,KAAK,CAAC,MAAM,GAAG,CAAC;AAChB,0BAAE,KAAK;AACP,0BAAE,KAAK,CAAC,CAAC,CAAC;AACZ,sBAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACb,gBAAA,IAAI,CAAC,KAAK;sBACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;sBAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,aAAA;AACF,SAAA;KACF;;kHAtDU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;iBAC3B,CAAA;;;8BAgCc,QAAQ;;8BAAI,IAAI;;yBAtBzB,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAWI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAQH,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,eAAe,CAAA;gBAa5B,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MC/BvB,cAAc,CAAA;AAAG,CAAA;MAGjB,mBAAmB,CAAA;AA2C9B,IAAA,WAAA,CACU,SAAoB,EACpB,QAAiC,EACjC,OAAe,EAAA;AAFf,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AACpB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAyB;AACjC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AA7CjB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAejB,QAAA,IAAQ,CAAA,QAAA,GAAI,KAAK,CAAC;AAE3B;;;;AAIG;AACO,QAAA,IAAA,CAAA,QAAQ,GAAkC,IAAI,YAAY,EAEjE,CAAC;KAsBA;AAzCJ;;;;AAIG;IACH,IACI,QAAQ,CAAC,QAA0B,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;AAaD;;AAEG;AACH,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC;KACxC;AAED;;AAEG;AACH,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,SAAS,CAAC;KACvC;IAQD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;;;YAGlC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAC7C,IAAI,CAAC,QAAQ,CAAC,aAAa,EAC3B,WAAW,EACX,CAAC,KAAY,KAAI;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACnE,iBAAA;AACD,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,aAAC,CACF,CAAC;;;YAIF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAC7C,IAAI,CAAC,QAAQ,CAAC,aAAa,EAC3B,WAAW,EACX,CAAC,KAAY,KAAI;AACf,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,aAAC,CACF,CAAC;;;;YAKF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAC5C,IAAI,CAAC,QAAQ,CAAC,aAAa,EAC3B,UAAU,EACV,CAAC,KAAgB,KAAI;gBACnB,MAAM,QAAQ,GACZ,KAAK,CAAC,YAAY,IAAI,IAAI,YAAY,EAAE,CAAC;gBAC3C,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtD,IACE,IAAI,CAAC,QAAQ;qBACZ,CAAC,IAAI,CAAC,SAAS;AACd,yBAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AACrC,4BAAA,QAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EACtC;AACA,oBAAA,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;AAC9B,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;AAC9B,iBAAA;AACD,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,aAAC,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;;AACT,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAvB,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAI,CAAuB,CAAC;AAC5B,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAvB,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAI,CAAuB,CAAC;AAC5B,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAtB,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAI,CAAsB,CAAC;KAC5B;AAED;;;;AAIG;AAEH,IAAA,MAAM,CAAC,KAAY,EAAA;;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,QAAQ,GACA,CAAA,EAAA,GAAA,KAAM,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,YAAY,EAAE,CAAC;AACxD,YAAA,MAAM,KAAK,GAAa,QAAQ,CAAC,KAAK,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,gBAAA,MAAM,KAAK,GAAoB,IAAI,CAAC,SAAS;AAC3C,sBAAE,KAAK,CAAC,MAAM,GAAG,CAAC;AAChB,0BAAE,KAAK;AACP,0BAAE,KAAK,CAAC,CAAC,CAAC;AACZ,sBAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;AAED;;AAEG;AACK,IAAA,UAAU,CAChB,KAA4C,EAAA;QAE5C,IAAI,UAAU,GAAsC,MAAM,CAAC;AAC3D,QAAA,IACE,KAAK;aACJ,CAAO,KAAM,CAAC,QAAQ,IAAU,KAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACvD,iBAAO,KAAM,CAAC,OAAO,IAAU,KAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACjE;YACA,UAAU,GAAG,MAAM,CAAC;AACrB,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,UAAU,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;;gHAxJU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;8IAajC,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAOI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAQH,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,eAAe,CAAA;gBASxB,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,eAAe,CAAA;gBA2E5B,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AChG5B,MAAO,yBAA0B,SAAQ,uBAAuB,CAAA;IACpE,WACE,CAAA,WAAiC,EACjC,gBAAkC,EAAA;AAElC,QAAA,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;KACtC;;sHANU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,QAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;iBAC1C,CAAA;;MAUY,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAmB,kBAAqC,EAAA;AAArC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;KAAI;AAC7D,CAAA;AAEY,MAAA,qBAAqB,GAAG,yBAAyB,CAC5D,aAAa,CAAC,eAAe,CAAC,EAC9B;AAiBI,MAAO,oBACX,SAAQ,qBAAqB,CAAA;AAoD7B,IAAA,WAAA,CACU,OAAe,EACf,SAAoB,EAC5B,kBAAqC,EAAA;QAErC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAJlB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AACf,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AAnDtB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAsC1B;;;;AAIG;AACO,QAAA,IAAA,CAAA,UAAU,GAAkC,IAAI,YAAY,EAEnE,CAAC;AAEI,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;KAQvC;AA9CD,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;KACzC;AAQD;;;AAGG;IACH,IACI,QAAQ,CAAC,QAA0B,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IA4BD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,KAAK,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EACnD,SAAS,CAAgB,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CACrE,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAC3C,CACF;AACE,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,iBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/D,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACvB;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;KAC5D;;AAGQ,IAAA,gBAAgB,CAAC,CAAU,EAAA;AAClC,QAAA,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;AACD;;AAEG;AACM,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;;iHAzGU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAbpB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAcmD,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,6KCzEhE,qeAuBA,EAAA,MAAA,EAAA,CAAA,oLAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD2Ca,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EAAA,QAAA,EACS,eAAe,EAEjB,MAAA,EAAA,CAAC,UAAU,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,qeAAA,EAAA,MAAA,EAAA,CAAA,oLAAA,CAAA,EAAA,CAAA;qJAY7B,YAAY,EAAA,CAAA;sBADX,SAAS;uBAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAKhE,aAAa,EAAA,CAAA;sBADZ,SAAS;gBAAC,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAU/B,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAOF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAaG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAOI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;ME9FI,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAmB,kBAAqC,EAAA;AAArC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;KAAI;AAC7D,CAAA;MAeY,qBAAqB,CAAA;AA+FhC,IAAA,WAAA,CAAoB,kBAAqC,EAAA;AAArC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AA9FjD,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAO1B;;;AAGG;AACM,QAAA,IAAY,CAAA,YAAA,GAAkC,SAAS,CAAC;AAEjE;;;AAGG;AACM,QAAA,IAAW,CAAA,WAAA,GAAkC,QAAQ,CAAC;AAE/D;;;AAGG;AACM,QAAA,IAAW,CAAA,WAAA,GAAkC,MAAM,CAAC;AA6C7D;;;;AAIG;AACO,QAAA,IAAA,CAAA,UAAU,GAAkC,IAAI,YAAY,EAEnE,CAAC;AAEJ;;;;AAIG;AACO,QAAA,IAAA,CAAA,MAAM,GAA4C,IAAI,YAAY,EAEzE,CAAC;AAEJ;;;AAGG;AACO,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAEH;AAnE7D;;;AAGG;IACH,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED;;;;AAIG;IACH,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IASD,IACI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACjC;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AA8BD,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,gBAAgB,GAAA;;KAEf;IAED,iBAAiB,GAAA;;KAEhB;AAED;;AAEG;IACH,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACF;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED;;;AAGG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;;QAEnB,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;;AAGD,IAAA,gBAAgB,CAAC,CAAU,EAAA;AACzB,QAAA,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;;kHAjJU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAXrB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAYa,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAF5B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCjC,k1BAmCA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDCa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EACS,gBAAgB,EAAA,QAAA,EAAA,k1BAAA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA,CAAA;wGASO,SAAS,EAAA,CAAA;sBAAzC,SAAS;uBAAC,oBAAoB,CAAA;gBAG/B,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,yBAAyB,CAAA;gBAO9B,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAMG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAOF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAcF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAaG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAGF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBASG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAOI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBASG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAQG,MAAM,EAAA,CAAA;sBAAf,MAAM;;;ME/GI,aAAa,CAAA;AAYxB;;;;AAIG;AACH,IAAA,WAAA,CAAyC,KAAiB,EAAA;AAAjB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAhBlD,QAAA,IAAA,CAAA,gBAAgB,GAAoB,IAAI,OAAO,EAAU,CAAC;QAiBhE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KACjE;AAfD;;;AAGG;AACH,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACjC;AAWD;;AAEG;AACH,IAAA,IAAI,CACF,GAAW,EACX,MAAc,EACd,IAAqB,EACrB,EAAE,OAAO,EAAE,MAAM,EAAA,GAAoB,EAAE,EAAA;AAEvC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;AACH,SAAA;AACD,QAAA,MAAM,GAAG,GAAiC,IAAI,WAAW,CACvD,MAAM,CAAC,WAAW,EAAE,EACpB,GAAG,EACH,IAAI,EACJ;AACE,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,OAAO,EAAE,IAAI,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;YACvC,MAAM,EAAE,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AACrD,SAAA,CACF,CAAC;QACF,OAAO,IAAI,CAAC,KAAK;aACd,OAAO,CAAC,GAAG,CAAC;AACZ,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAqB,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClE;AAEO,IAAA,WAAW,CAAU,KAAmB,EAAA;;QAC9C,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,aAAa,CAAC,IAAI;AACrB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,aAAa,CAAC,cAAc;gBAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,CAAA,EAAA,GAAA,KAAK,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC,CAAC,CACtD,CAAC;gBACF,MAAM;YACR,KAAK,aAAa,CAAC,QAAQ;AACzB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;KACF;;0GAlEU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;8BAkBI,QAAQ;;;;AChBvB,MAAM,OAAO,GAAgB;IAC3B,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,yBAAyB;CAC1B,CAAC;MAcW,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAnB7B,qBAAqB;QACrB,mBAAmB;QACnB,qBAAqB;QACrB,oBAAoB;AACpB,QAAA,yBAAyB,aAKvB,WAAW;QACX,YAAY;QACZ,aAAa;QACb,eAAe;AACf,QAAA,YAAY,aAbd,qBAAqB;QACrB,mBAAmB;QACnB,qBAAqB;QACrB,oBAAoB;QACpB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAed,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAFlB,SAAA,EAAA,CAAC,aAAa,CAAC,EATjB,OAAA,EAAA,CAAA;YACP,WAAW;YACX,YAAY;YACZ,aAAa;YACb,eAAe;YACf,YAAY;SACb,CAAA,EAAA,CAAA,CAAA;2FAKU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,YAAY;AACb,qBAAA;oBACD,YAAY,EAAE,CAAC,OAAO,CAAC;oBACvB,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,SAAS,EAAE,CAAC,aAAa,CAAC;iBAC3B,CAAA;;;ACtCD;;AAEG;;;;"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { EventEmitter, Directive, Optional, Host, Input, Output, HostBinding, HostListener, forwardRef, Component, ChangeDetectionStrategy, ViewChild, ContentChild, Injectable, NgModule } from '@angular/core';
|
2
|
+
import { EventEmitter, Directive, Optional, Host, Input, Output, HostBinding, HostListener, forwardRef, ElementRef, Component, ChangeDetectionStrategy, ViewChild, ContentChild, Injectable, NgModule } from '@angular/core';
|
3
3
|
import * as i4 from '@angular/common';
|
4
4
|
import { CommonModule } from '@angular/common';
|
5
5
|
import * as i1 from '@angular/forms';
|
@@ -11,11 +11,12 @@ import { MatIconModule } from '@angular/material/icon';
|
|
11
11
|
import * as i1$1 from '@angular/material/button';
|
12
12
|
import { MatButtonModule } from '@angular/material/button';
|
13
13
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
14
|
+
import { ENTER } from '@angular/cdk/keycodes';
|
15
|
+
import { Subject, merge, fromEvent } from 'rxjs';
|
16
|
+
import { filter, takeUntil, tap } from 'rxjs/operators';
|
14
17
|
import { mixinControlValueAccessor, mixinDisabled } from '@covalent/core/common';
|
15
18
|
import * as i1$2 from '@angular/common/http';
|
16
19
|
import { HttpRequest, HttpHeaders, HttpParams, HttpEventType } from '@angular/common/http';
|
17
|
-
import { Subject } from 'rxjs';
|
18
|
-
import { tap } from 'rxjs/operators';
|
19
20
|
|
20
21
|
class TdFileSelectDirective {
|
21
22
|
constructor(model) {
|
@@ -140,11 +141,29 @@ class TdFileDropDirective {
|
|
140
141
|
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
141
142
|
this._stopEvent(event);
|
142
143
|
});
|
144
|
+
// Listens to 'dragover' host event to validate transfer items.
|
145
|
+
// Checks if 'multiple' attr exists in host to allow multiple file drops.
|
146
|
+
// Stops event propagation and default action from browser for 'dragover' event.
|
147
|
+
this._dragoverListener = this._renderer.listen(this._element.nativeElement, 'dragover', (event) => {
|
148
|
+
const transfer = event.dataTransfer || new DataTransfer();
|
149
|
+
transfer.dropEffect = this._typeCheck(transfer.types);
|
150
|
+
if (this.disabled ||
|
151
|
+
(!this._multiple &&
|
152
|
+
((transfer.items && transfer.items.length > 1) ||
|
153
|
+
transfer.mozItemCount > 1))) {
|
154
|
+
transfer.dropEffect = 'none';
|
155
|
+
}
|
156
|
+
else {
|
157
|
+
transfer.dropEffect = 'copy';
|
158
|
+
}
|
159
|
+
this._stopEvent(event);
|
160
|
+
});
|
143
161
|
});
|
144
162
|
}
|
145
163
|
ngOnDestroy() {
|
146
164
|
this._dragenterListener?.();
|
147
165
|
this._dragleaveListener?.();
|
166
|
+
this._dragoverListener?.();
|
148
167
|
}
|
149
168
|
/**
|
150
169
|
* Listens to 'drop' host event to get validated transfer items.
|
@@ -167,25 +186,6 @@ class TdFileDropDirective {
|
|
167
186
|
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
168
187
|
this._stopEvent(event);
|
169
188
|
}
|
170
|
-
/**
|
171
|
-
* Listens to 'dragover' host event to validate transfer items.
|
172
|
-
* Checks if 'multiple' attr exists in host to allow multiple file drops.
|
173
|
-
* Stops event propagation and default action from browser for 'dragover' event.
|
174
|
-
*/
|
175
|
-
onDragOver(event) {
|
176
|
-
const transfer = event.dataTransfer || new DataTransfer();
|
177
|
-
transfer.dropEffect = this._typeCheck(transfer.types);
|
178
|
-
if (this.disabled ||
|
179
|
-
(!this._multiple &&
|
180
|
-
((transfer.items && transfer.items.length > 1) ||
|
181
|
-
transfer.mozItemCount > 1))) {
|
182
|
-
transfer.dropEffect = 'none';
|
183
|
-
}
|
184
|
-
else {
|
185
|
-
transfer.dropEffect = 'copy';
|
186
|
-
}
|
187
|
-
this._stopEvent(event);
|
188
|
-
}
|
189
189
|
/**
|
190
190
|
* Validates if the transfer item types are 'Files'.
|
191
191
|
*/
|
@@ -204,7 +204,7 @@ class TdFileDropDirective {
|
|
204
204
|
}
|
205
205
|
}
|
206
206
|
TdFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
207
|
-
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)"
|
207
|
+
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)" }, properties: { "attr.multiple": "this.multipleBinding", "attr.disabled": "this.disabledBinding" } }, ngImport: i0 });
|
208
208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, decorators: [{
|
209
209
|
type: Directive,
|
210
210
|
args: [{ selector: '[tdFileDrop]' }]
|
@@ -223,9 +223,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
223
223
|
}], onDrop: [{
|
224
224
|
type: HostListener,
|
225
225
|
args: ['drop', ['$event']]
|
226
|
-
}], onDragOver: [{
|
227
|
-
type: HostListener,
|
228
|
-
args: ['dragover', ['$event']]
|
229
226
|
}] } });
|
230
227
|
|
231
228
|
class TdFileInputLabelDirective extends TemplatePortalDirective {
|
@@ -248,8 +245,9 @@ class TdFileInputBase {
|
|
248
245
|
}
|
249
246
|
const _TdFileInputMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileInputBase));
|
250
247
|
class TdFileInputComponent extends _TdFileInputMixinBase {
|
251
|
-
constructor(_renderer, _changeDetectorRef) {
|
248
|
+
constructor(_ngZone, _renderer, _changeDetectorRef) {
|
252
249
|
super(_changeDetectorRef);
|
250
|
+
this._ngZone = _ngZone;
|
253
251
|
this._renderer = _renderer;
|
254
252
|
this._multiple = false;
|
255
253
|
/**
|
@@ -258,6 +256,7 @@ class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
258
256
|
* Emits a [File | FileList] object.
|
259
257
|
*/
|
260
258
|
this.selectFile = new EventEmitter();
|
259
|
+
this._destroy$ = new Subject();
|
261
260
|
}
|
262
261
|
get inputElement() {
|
263
262
|
return this._inputElement.nativeElement;
|
@@ -272,6 +271,16 @@ class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
272
271
|
get multiple() {
|
273
272
|
return this._multiple;
|
274
273
|
}
|
274
|
+
ngOnInit() {
|
275
|
+
this._ngZone.runOutsideAngular(() => {
|
276
|
+
merge(fromEvent(this._inputButton.nativeElement, 'click'), fromEvent(this._inputButton.nativeElement, 'keyup').pipe(filter((event) => event.keyCode === ENTER)))
|
277
|
+
.pipe(takeUntil(this._destroy$))
|
278
|
+
.subscribe(() => this._inputElement.nativeElement.click());
|
279
|
+
});
|
280
|
+
}
|
281
|
+
ngOnDestroy() {
|
282
|
+
this._destroy$.next();
|
283
|
+
}
|
275
284
|
/**
|
276
285
|
* Method executed when a file is selected.
|
277
286
|
*/
|
@@ -299,14 +308,14 @@ class TdFileInputComponent extends _TdFileInputMixinBase {
|
|
299
308
|
this.disabled = isDisabled;
|
300
309
|
}
|
301
310
|
}
|
302
|
-
TdFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
311
|
+
TdFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
303
312
|
TdFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdFileInputComponent, selector: "td-file-input", inputs: { disabled: "disabled", value: "value", color: "color", multiple: "multiple", accept: "accept" }, outputs: { selectFile: "selectFile" }, providers: [
|
304
313
|
{
|
305
314
|
provide: NG_VALUE_ACCESSOR,
|
306
315
|
useExisting: forwardRef(() => TdFileInputComponent),
|
307
316
|
multi: true,
|
308
317
|
},
|
309
|
-
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (
|
318
|
+
], viewQueries: [{ propertyName: "_inputButton", first: true, predicate: ["fileInputButton"], descendants: true, read: ElementRef, static: true }, { propertyName: "_inputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"], components: [{ type: i1$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { type: TdFileSelectDirective, selector: "[tdFileSelect]", inputs: ["multiple"], outputs: ["fileSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
310
319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileInputComponent, decorators: [{
|
311
320
|
type: Component,
|
312
321
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
@@ -315,8 +324,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
315
324
|
useExisting: forwardRef(() => TdFileInputComponent),
|
316
325
|
multi: true,
|
317
326
|
},
|
318
|
-
], selector: 'td-file-input', inputs: ['disabled', 'value'], template: "<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (
|
319
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
327
|
+
], selector: 'td-file-input', inputs: ['disabled', 'value'], template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"] }]
|
328
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _inputButton: [{
|
329
|
+
type: ViewChild,
|
330
|
+
args: ['fileInputButton', { static: true, read: ElementRef }]
|
331
|
+
}], _inputElement: [{
|
320
332
|
type: ViewChild,
|
321
333
|
args: ['fileInput', { static: true }]
|
322
334
|
}], color: [{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"covalent-core-file.mjs","sources":["../../../../libs/angular/file/src/directives/file-select.directive.ts","../../../../libs/angular/file/src/directives/file-drop.directive.ts","../../../../libs/angular/file/src/file-input/file-input.component.ts","../../../../libs/angular/file/src/file-input/file-input.component.html","../../../../libs/angular/file/src/file-upload/file-upload.component.ts","../../../../libs/angular/file/src/file-upload/file-upload.component.html","../../../../libs/angular/file/src/services/file.service.ts","../../../../libs/angular/file/src/file.module.ts","../../../../libs/angular/file/src/covalent-core-file.ts"],"sourcesContent":["import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n private _multiple = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be selected at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileSelect?: function\n * Event emitted when a file or files are selected in host [HTMLInputElement].\n * Emits a [FileList | File] object.\n * Alternative to not use [(ngModel)].\n */\n @Output() fileSelect: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n constructor(@Optional() @Host() private model: NgModel) {}\n\n /**\n * Listens to 'change' host event to get [HTMLInputElement] files.\n * Emits the 'fileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Uses [(ngModel)] if declared, instead of emitting 'fileSelect' event.\n */\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n const fileInputEl: HTMLInputElement = event.target;\n const files: FileList = fileInputEl.files || new FileList();\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.model\n ? this.model.update.emit(value)\n : this.fileSelect.emit(value);\n }\n }\n }\n}\n","import {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostListener,\n HostBinding,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class TdFileDropBase {}\n\n@Directive({ selector: '[tdFileDrop]' })\nexport class TdFileDropDirective implements OnInit, OnDestroy {\n private _multiple = false;\n private _dragenterListener?: VoidFunction;\n private _dragleaveListener?: VoidFunction;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be dropped at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n @Input() disabled? = false;\n\n /**\n * fileDrop?: function\n * Event emitted when a file or files are dropped in host element after being validated.\n * Emits a [FileList | File] object.\n */\n @Output() fileDrop: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n /**\n * Binds native 'disabled' attribute if [disabled] property is 'true'.\n */\n @HostBinding('attr.disabled')\n get disabledBinding(): string | undefined {\n return this.disabled ? '' : undefined;\n }\n\n constructor(\n private _renderer: Renderer2,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n // Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n // Stops event propagation and default action from browser for 'dragenter' event.\n this._dragenterListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragenter',\n (event: Event) => {\n if (!this.disabled) {\n this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n }\n this._stopEvent(event);\n }\n );\n\n // Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n // Stops event propagation and default action from browser for 'dragleave' event.\n this._dragleaveListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragleave',\n (event: Event) => {\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._dragenterListener?.();\n this._dragleaveListener?.();\n }\n\n /**\n * Listens to 'drop' host event to get validated transfer items.\n * Emits the 'fileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Stops event propagation and default action from browser for 'drop' event.\n */\n @HostListener('drop', ['$event'])\n onDrop(event: Event): void {\n if (!this.disabled) {\n const transfer: DataTransfer =\n (<DragEvent>event).dataTransfer ?? new DataTransfer();\n const files: FileList = transfer.files;\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.fileDrop.emit(value);\n }\n }\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragover' host event to validate transfer items.\n * Checks if 'multiple' attr exists in host to allow multiple file drops.\n * Stops event propagation and default action from browser for 'dragover' event.\n */\n @HostListener('dragover', ['$event'])\n onDragOver(event: Event): void {\n const transfer: DataTransfer =\n (<DragEvent>event).dataTransfer || new DataTransfer();\n transfer.dropEffect = this._typeCheck(transfer.types);\n if (\n this.disabled ||\n (!this._multiple &&\n ((transfer.items && transfer.items.length > 1) ||\n (<any>transfer).mozItemCount > 1))\n ) {\n transfer.dropEffect = 'none';\n } else {\n transfer.dropEffect = 'copy';\n }\n this._stopEvent(event);\n }\n\n /**\n * Validates if the transfer item types are 'Files'.\n */\n private _typeCheck(\n types: ReadonlyArray<string> | DOMStringList\n ): 'none' | 'copy' | 'link' | 'move' {\n let dropEffect: 'none' | 'copy' | 'link' | 'move' = 'none';\n if (\n types &&\n (((<any>types).contains && (<any>types).contains('Files')) ||\n ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1))\n ) {\n dropEffect = 'copy';\n }\n\n return dropEffect;\n }\n\n private _stopEvent(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import {\n Component,\n Directive,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ChangeDetectorRef,\n forwardRef,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n ICanDisable,\n IControlValueAccessor,\n mixinControlValueAccessor,\n mixinDisabled,\n} from '@covalent/core/common';\n\n@Directive({\n selector: '[tdFileInputLabel]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdFileInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(\n mixinDisabled(TdFileInputBase)\n);\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileInputComponent),\n multi: true,\n },\n ],\n selector: 'td-file-input',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-input.component.scss'],\n templateUrl: './file-input.component.html',\n})\nexport class TdFileInputComponent\n extends _TdFileInputMixinBase\n implements IControlValueAccessor, ICanDisable\n{\n private _multiple = false;\n\n /** The native `<input type=\"file\"> element */\n @ViewChild('fileInput', { static: true }) _inputElement!: ElementRef;\n get inputElement(): HTMLInputElement {\n return this._inputElement.nativeElement;\n }\n\n /**\n * color?: 'accent' | 'primary' | 'warn'\n * Sets button color. Uses same color palette accepted as [MatButton].\n */\n @Input() color?: 'accent' | 'primary' | 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n /**\n * select?: function\n * Event emitted a file is selected\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n constructor(\n private _renderer: Renderer2,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(files: File | FileList): void {\n this.writeValue(files);\n this.selectFile.emit(files);\n }\n\n /**\n * Used to clear the selected files from the [TdFileInputComponent].\n */\n clear(): void {\n this.writeValue(undefined);\n this._renderer.setProperty(this.inputElement, 'value', '');\n }\n\n /** Method executed when the disabled value changes */\n override onDisabledChange(v: boolean): void {\n if (v) {\n this.clear();\n }\n }\n /**\n * Sets disable to the component. Implemented as part of ControlValueAccessor.\n */\n override setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<button\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (keyup.enter)=\"fileInput.click()\"\n (click)=\"fileInput.click()\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ContentChild,\n ChangeDetectorRef,\n forwardRef,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { noop } from 'rxjs';\n\nexport class TdFileUploadBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileUploadComponent),\n multi: true,\n },\n ],\n selector: 'td-file-upload',\n styleUrls: ['./file-upload.component.scss'],\n templateUrl: './file-upload.component.html',\n})\nexport class TdFileUploadComponent implements ControlValueAccessor {\n private _multiple = false;\n private _required = false;\n private _disabled = false;\n\n @ViewChild(TdFileInputComponent) fileInput?: TdFileInputComponent;\n\n @ContentChild(TdFileInputLabelDirective)\n inputLabel?: TdFileInputLabelDirective;\n\n /**\n * defaultColor?: 'accent' | 'primary' | 'warn'\n * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n */\n @Input() defaultColor: 'accent' | 'primary' | 'warn' = 'primary';\n\n /**\n * activeColor?: 'accent' | 'primary' | 'warn'\n * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n */\n @Input() activeColor: 'accent' | 'primary' | 'warn' = 'accent';\n\n /**\n * cancelColor?: 'accent' | 'primary' | 'warn'\n * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n */\n @Input() cancelColor: 'accent' | 'primary' | 'warn' = 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n */\n @Input()\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * required?: boolean\n * Forces at least one file upload.\n * Defaults to 'false'\n */\n @Input()\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n @Input()\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.onDisabledChange(disabled);\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input() value?: unknown | undefined;\n\n /**\n * select?: function\n * Event emitted when a file is selected.\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n /**\n * upload?: function\n * Event emitted when upload button is clicked.\n * Emits a [File | FileList] object.\n */\n @Output() upload: EventEmitter<File | FileList | unknown> = new EventEmitter<\n File | FileList | unknown\n >();\n\n /**\n * cancel?: function\n * Event emitted when cancel button is clicked.\n */\n @Output() cancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n writeValue(value: unknown): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(): void {\n //\n }\n\n registerOnTouched(): void {\n //\n }\n\n /**\n * Method executed when upload button is clicked.\n */\n uploadPressed(): void {\n if (this.value) {\n this.upload.emit(this.value);\n }\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(value: File | FileList): void {\n this.value = value;\n this.selectFile.emit(value);\n }\n\n /**\n * Methods executed when cancel button is clicked.\n * Clears files.\n */\n _cancel(): void {\n this.value = undefined;\n this.cancel.emit();\n // check if the file input is rendered before clearing it\n if (this.fileInput) {\n this.fileInput.clear();\n }\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this._cancel();\n }\n }\n}\n","<td-file-input\n *ngIf=\"!value\"\n [(ngModel)]=\"value\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n [color]=\"defaultColor\"\n (selectFile)=\"(handleSelect)\"\n>\n <ng-template [cdkPortalOutlet]=\"inputLabel\" [ngIf]=\"true\"></ng-template>\n</td-file-input>\n<div *ngIf=\"value\">\n <button\n #fileUpload\n class=\"td-file-upload\"\n mat-raised-button\n type=\"button\"\n [color]=\"activeColor\"\n (keyup.delete)=\"_cancel()\"\n (keyup.backspace)=\"_cancel()\"\n (keyup.escape)=\"_cancel()\"\n (click)=\"uploadPressed()\"\n >\n <ng-content></ng-content>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n class=\"td-file-upload-cancel\"\n [color]=\"cancelColor\"\n (click)=\"_cancel()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n","import { Injectable, Optional } from '@angular/core';\nimport {\n HttpClient,\n HttpRequest,\n HttpEvent,\n HttpEventType,\n HttpHeaders,\n HttpParams,\n} from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport interface IUploadExtras {\n headers?: { [name: string]: string | string[] };\n params?: { [param: string]: string | string[] };\n}\n\n@Injectable()\nexport class TdFileService {\n private _progressSubject: Subject<number> = new Subject<number>();\n private _progressObservable: Observable<number>;\n\n /**\n * Gets progress observable to keep track of the files being uploaded.\n * Needs to be supported by backend.\n */\n get progress(): Observable<number> {\n return this._progressObservable;\n }\n\n /**\n * Creates a new instance\n * @param _http the http client instance\n * @breaking-change 3.0.0 remove 'Optional' decorator once the legay upload method is removed\n */\n constructor(@Optional() private readonly _http: HttpClient) {\n this._progressObservable = this._progressSubject.asObservable();\n }\n\n /**\n * Uploads a file to a URL.\n */\n send(\n url: string,\n method: string,\n body: File | FormData,\n { headers, params }: IUploadExtras = {}\n ): Observable<HttpEvent<any>> {\n if (!this._http) {\n throw new Error(\n 'The HttpClient module needs to be imported at root module level'\n );\n }\n const req: HttpRequest<File | FormData> = new HttpRequest(\n method.toUpperCase(),\n url,\n body,\n {\n reportProgress: true,\n headers: new HttpHeaders(headers || {}),\n params: new HttpParams({ fromObject: params || {} }),\n }\n );\n return this._http\n .request(req)\n .pipe(tap((event: HttpEvent<any>) => this.handleEvent(event)));\n }\n\n private handleEvent<T = any>(event: HttpEvent<T>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n this._progressSubject.next(0);\n break;\n case HttpEventType.UploadProgress:\n this._progressSubject.next(\n Math.round((100 * event.loaded) / (event.total ?? 0))\n );\n break;\n case HttpEventType.Response:\n this._progressSubject.next(100);\n break;\n default:\n break;\n }\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n TdFileSelectDirective,\n TdFileDropDirective,\n TdFileUploadComponent,\n TdFileInputComponent,\n TdFileInputLabelDirective,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n PortalModule,\n ],\n declarations: [TD_FILE],\n exports: [TD_FILE],\n providers: [TdFileService],\n})\nexport class CovalentFileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.TdFileDropDirective","i3.TdFileSelectDirective","i1.TdFileInputComponent","i2","i5"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"covalent-core-file.mjs","sources":["../../../../libs/angular/file/src/directives/file-select.directive.ts","../../../../libs/angular/file/src/directives/file-drop.directive.ts","../../../../libs/angular/file/src/file-input/file-input.component.ts","../../../../libs/angular/file/src/file-input/file-input.component.html","../../../../libs/angular/file/src/file-upload/file-upload.component.ts","../../../../libs/angular/file/src/file-upload/file-upload.component.html","../../../../libs/angular/file/src/services/file.service.ts","../../../../libs/angular/file/src/file.module.ts","../../../../libs/angular/file/src/covalent-core-file.ts"],"sourcesContent":["import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n private _multiple = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be selected at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileSelect?: function\n * Event emitted when a file or files are selected in host [HTMLInputElement].\n * Emits a [FileList | File] object.\n * Alternative to not use [(ngModel)].\n */\n @Output() fileSelect: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n constructor(@Optional() @Host() private model: NgModel) {}\n\n /**\n * Listens to 'change' host event to get [HTMLInputElement] files.\n * Emits the 'fileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Uses [(ngModel)] if declared, instead of emitting 'fileSelect' event.\n */\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n const fileInputEl: HTMLInputElement = event.target;\n const files: FileList = fileInputEl.files || new FileList();\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.model\n ? this.model.update.emit(value)\n : this.fileSelect.emit(value);\n }\n }\n }\n}\n","import {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostListener,\n HostBinding,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class TdFileDropBase {}\n\n@Directive({ selector: '[tdFileDrop]' })\nexport class TdFileDropDirective implements OnInit, OnDestroy {\n private _multiple = false;\n private _dragenterListener?: VoidFunction;\n private _dragleaveListener?: VoidFunction;\n private _dragoverListener?: VoidFunction;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be dropped at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n @Input() disabled? = false;\n\n /**\n * fileDrop?: function\n * Event emitted when a file or files are dropped in host element after being validated.\n * Emits a [FileList | File] object.\n */\n @Output() fileDrop: EventEmitter<FileList | File> = new EventEmitter<\n FileList | File\n >();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string | undefined {\n return this._multiple ? '' : undefined;\n }\n\n /**\n * Binds native 'disabled' attribute if [disabled] property is 'true'.\n */\n @HostBinding('attr.disabled')\n get disabledBinding(): string | undefined {\n return this.disabled ? '' : undefined;\n }\n\n constructor(\n private _renderer: Renderer2,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n // Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n // Stops event propagation and default action from browser for 'dragenter' event.\n this._dragenterListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragenter',\n (event: Event) => {\n if (!this.disabled) {\n this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n }\n this._stopEvent(event);\n }\n );\n\n // Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n // Stops event propagation and default action from browser for 'dragleave' event.\n this._dragleaveListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragleave',\n (event: Event) => {\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n );\n\n // Listens to 'dragover' host event to validate transfer items.\n // Checks if 'multiple' attr exists in host to allow multiple file drops.\n // Stops event propagation and default action from browser for 'dragover' event.\n this._dragoverListener = this._renderer.listen(\n this._element.nativeElement,\n 'dragover',\n (event: DragEvent) => {\n const transfer: DataTransfer =\n event.dataTransfer || new DataTransfer();\n transfer.dropEffect = this._typeCheck(transfer.types);\n if (\n this.disabled ||\n (!this._multiple &&\n ((transfer.items && transfer.items.length > 1) ||\n (<any>transfer).mozItemCount > 1))\n ) {\n transfer.dropEffect = 'none';\n } else {\n transfer.dropEffect = 'copy';\n }\n this._stopEvent(event);\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._dragenterListener?.();\n this._dragleaveListener?.();\n this._dragoverListener?.();\n }\n\n /**\n * Listens to 'drop' host event to get validated transfer items.\n * Emits the 'fileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Stops event propagation and default action from browser for 'drop' event.\n */\n @HostListener('drop', ['$event'])\n onDrop(event: Event): void {\n if (!this.disabled) {\n const transfer: DataTransfer =\n (<DragEvent>event).dataTransfer ?? new DataTransfer();\n const files: FileList = transfer.files;\n if (files.length) {\n const value: FileList | File = this._multiple\n ? files.length > 1\n ? files\n : files[0]\n : files[0];\n this.fileDrop.emit(value);\n }\n }\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Validates if the transfer item types are 'Files'.\n */\n private _typeCheck(\n types: ReadonlyArray<string> | DOMStringList\n ): 'none' | 'copy' | 'link' | 'move' {\n let dropEffect: 'none' | 'copy' | 'link' | 'move' = 'none';\n if (\n types &&\n (((<any>types).contains && (<any>types).contains('Files')) ||\n ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1))\n ) {\n dropEffect = 'copy';\n }\n\n return dropEffect;\n }\n\n private _stopEvent(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import {\n Component,\n Directive,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ChangeDetectorRef,\n forwardRef,\n OnInit,\n OnDestroy,\n NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { ENTER } from '@angular/cdk/keycodes';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport {\n ICanDisable,\n IControlValueAccessor,\n mixinControlValueAccessor,\n mixinDisabled,\n} from '@covalent/core/common';\n\n@Directive({\n selector: '[tdFileInputLabel]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdFileInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(\n mixinDisabled(TdFileInputBase)\n);\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileInputComponent),\n multi: true,\n },\n ],\n selector: 'td-file-input',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-input.component.scss'],\n templateUrl: './file-input.component.html',\n})\nexport class TdFileInputComponent\n extends _TdFileInputMixinBase\n implements OnInit, OnDestroy, IControlValueAccessor, ICanDisable\n{\n private _multiple = false;\n\n /** The native `<button class=\"td-file-input\"></button>` element */\n @ViewChild('fileInputButton', { static: true, read: ElementRef })\n _inputButton!: ElementRef<HTMLElement>;\n\n /** The native `<input type=\"file\"> element */\n @ViewChild('fileInput', { static: true })\n _inputElement!: ElementRef<HTMLInputElement>;\n get inputElement(): HTMLInputElement {\n return this._inputElement.nativeElement;\n }\n\n /**\n * color?: 'accent' | 'primary' | 'warn'\n * Sets button color. Uses same color palette accepted as [MatButton].\n */\n @Input() color?: 'accent' | 'primary' | 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n */\n @Input()\n set multiple(multiple: boolean | string) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n /**\n * select?: function\n * Event emitted a file is selected\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _ngZone: NgZone,\n private _renderer: Renderer2,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => {\n merge(\n fromEvent(this._inputButton.nativeElement, 'click'),\n fromEvent<KeyboardEvent>(this._inputButton.nativeElement, 'keyup').pipe(\n filter((event) => event.keyCode === ENTER)\n )\n )\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => this._inputElement.nativeElement.click());\n });\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(files: File | FileList): void {\n this.writeValue(files);\n this.selectFile.emit(files);\n }\n\n /**\n * Used to clear the selected files from the [TdFileInputComponent].\n */\n clear(): void {\n this.writeValue(undefined);\n this._renderer.setProperty(this.inputElement, 'value', '');\n }\n\n /** Method executed when the disabled value changes */\n override onDisabledChange(v: boolean): void {\n if (v) {\n this.clear();\n }\n }\n /**\n * Sets disable to the component. Implemented as part of ControlValueAccessor.\n */\n override setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ContentChild,\n ChangeDetectorRef,\n forwardRef,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { noop } from 'rxjs';\n\nexport class TdFileUploadBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileUploadComponent),\n multi: true,\n },\n ],\n selector: 'td-file-upload',\n styleUrls: ['./file-upload.component.scss'],\n templateUrl: './file-upload.component.html',\n})\nexport class TdFileUploadComponent implements ControlValueAccessor {\n private _multiple = false;\n private _required = false;\n private _disabled = false;\n\n @ViewChild(TdFileInputComponent) fileInput?: TdFileInputComponent;\n\n @ContentChild(TdFileInputLabelDirective)\n inputLabel?: TdFileInputLabelDirective;\n\n /**\n * defaultColor?: 'accent' | 'primary' | 'warn'\n * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n */\n @Input() defaultColor: 'accent' | 'primary' | 'warn' = 'primary';\n\n /**\n * activeColor?: 'accent' | 'primary' | 'warn'\n * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n */\n @Input() activeColor: 'accent' | 'primary' | 'warn' = 'accent';\n\n /**\n * cancelColor?: 'accent' | 'primary' | 'warn'\n * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n */\n @Input() cancelColor: 'accent' | 'primary' | 'warn' = 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n */\n @Input()\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * required?: boolean\n * Forces at least one file upload.\n * Defaults to 'false'\n */\n @Input()\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input() accept?: string;\n\n @Input()\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.onDisabledChange(disabled);\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input() value?: unknown | undefined;\n\n /**\n * select?: function\n * Event emitted when a file is selected.\n * Emits a [File | FileList] object.\n */\n @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n File | FileList\n >();\n\n /**\n * upload?: function\n * Event emitted when upload button is clicked.\n * Emits a [File | FileList] object.\n */\n @Output() upload: EventEmitter<File | FileList | unknown> = new EventEmitter<\n File | FileList | unknown\n >();\n\n /**\n * cancel?: function\n * Event emitted when cancel button is clicked.\n */\n @Output() cancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n writeValue(value: unknown): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(): void {\n //\n }\n\n registerOnTouched(): void {\n //\n }\n\n /**\n * Method executed when upload button is clicked.\n */\n uploadPressed(): void {\n if (this.value) {\n this.upload.emit(this.value);\n }\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(value: File | FileList): void {\n this.value = value;\n this.selectFile.emit(value);\n }\n\n /**\n * Methods executed when cancel button is clicked.\n * Clears files.\n */\n _cancel(): void {\n this.value = undefined;\n this.cancel.emit();\n // check if the file input is rendered before clearing it\n if (this.fileInput) {\n this.fileInput.clear();\n }\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this._cancel();\n }\n }\n}\n","<td-file-input\n *ngIf=\"!value\"\n [(ngModel)]=\"value\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [accept]=\"accept\"\n [color]=\"defaultColor\"\n (selectFile)=\"(handleSelect)\"\n>\n <ng-template [cdkPortalOutlet]=\"inputLabel\" [ngIf]=\"true\"></ng-template>\n</td-file-input>\n<div *ngIf=\"value\">\n <button\n #fileUpload\n class=\"td-file-upload\"\n mat-raised-button\n type=\"button\"\n [color]=\"activeColor\"\n (keyup.delete)=\"_cancel()\"\n (keyup.backspace)=\"_cancel()\"\n (keyup.escape)=\"_cancel()\"\n (click)=\"uploadPressed()\"\n >\n <ng-content></ng-content>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n class=\"td-file-upload-cancel\"\n [color]=\"cancelColor\"\n (click)=\"_cancel()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n","import { Injectable, Optional } from '@angular/core';\nimport {\n HttpClient,\n HttpRequest,\n HttpEvent,\n HttpEventType,\n HttpHeaders,\n HttpParams,\n} from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport interface IUploadExtras {\n headers?: { [name: string]: string | string[] };\n params?: { [param: string]: string | string[] };\n}\n\n@Injectable()\nexport class TdFileService {\n private _progressSubject: Subject<number> = new Subject<number>();\n private _progressObservable: Observable<number>;\n\n /**\n * Gets progress observable to keep track of the files being uploaded.\n * Needs to be supported by backend.\n */\n get progress(): Observable<number> {\n return this._progressObservable;\n }\n\n /**\n * Creates a new instance\n * @param _http the http client instance\n * @breaking-change 3.0.0 remove 'Optional' decorator once the legay upload method is removed\n */\n constructor(@Optional() private readonly _http: HttpClient) {\n this._progressObservable = this._progressSubject.asObservable();\n }\n\n /**\n * Uploads a file to a URL.\n */\n send(\n url: string,\n method: string,\n body: File | FormData,\n { headers, params }: IUploadExtras = {}\n ): Observable<HttpEvent<any>> {\n if (!this._http) {\n throw new Error(\n 'The HttpClient module needs to be imported at root module level'\n );\n }\n const req: HttpRequest<File | FormData> = new HttpRequest(\n method.toUpperCase(),\n url,\n body,\n {\n reportProgress: true,\n headers: new HttpHeaders(headers || {}),\n params: new HttpParams({ fromObject: params || {} }),\n }\n );\n return this._http\n .request(req)\n .pipe(tap((event: HttpEvent<any>) => this.handleEvent(event)));\n }\n\n private handleEvent<T = any>(event: HttpEvent<T>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n this._progressSubject.next(0);\n break;\n case HttpEventType.UploadProgress:\n this._progressSubject.next(\n Math.round((100 * event.loaded) / (event.total ?? 0))\n );\n break;\n case HttpEventType.Response:\n this._progressSubject.next(100);\n break;\n default:\n break;\n }\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport {\n TdFileInputComponent,\n TdFileInputLabelDirective,\n} from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n TdFileSelectDirective,\n TdFileDropDirective,\n TdFileUploadComponent,\n TdFileInputComponent,\n TdFileInputLabelDirective,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n PortalModule,\n ],\n declarations: [TD_FILE],\n exports: [TD_FILE],\n providers: [TdFileService],\n})\nexport class CovalentFileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.TdFileDropDirective","i3.TdFileSelectDirective","i1.TdFileInputComponent","i2","i5"],"mappings":"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"}
|
@@ -9,6 +9,7 @@ export declare class TdFileDropDirective implements OnInit, OnDestroy {
|
|
9
9
|
private _multiple;
|
10
10
|
private _dragenterListener?;
|
11
11
|
private _dragleaveListener?;
|
12
|
+
private _dragoverListener?;
|
12
13
|
/**
|
13
14
|
* multiple?: boolean
|
14
15
|
* Sets whether multiple files can be dropped at once in host element, or just a single file.
|
@@ -39,12 +40,6 @@ export declare class TdFileDropDirective implements OnInit, OnDestroy {
|
|
39
40
|
* Stops event propagation and default action from browser for 'drop' event.
|
40
41
|
*/
|
41
42
|
onDrop(event: Event): void;
|
42
|
-
/**
|
43
|
-
* Listens to 'dragover' host event to validate transfer items.
|
44
|
-
* Checks if 'multiple' attr exists in host to allow multiple file drops.
|
45
|
-
* Stops event propagation and default action from browser for 'dragover' event.
|
46
|
-
*/
|
47
|
-
onDragOver(event: Event): void;
|
48
43
|
/**
|
49
44
|
* Validates if the transfer item types are 'Files'.
|
50
45
|
*/
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { EventEmitter, ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef } from '@angular/core';
|
1
|
+
import { EventEmitter, ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef, OnInit, OnDestroy, NgZone } from '@angular/core';
|
2
2
|
import { TemplatePortalDirective } from '@angular/cdk/portal';
|
3
3
|
import { ICanDisable, IControlValueAccessor } from '@covalent/core/common';
|
4
4
|
import * as i0 from "@angular/core";
|
@@ -12,11 +12,14 @@ export declare class TdFileInputBase {
|
|
12
12
|
constructor(_changeDetectorRef: ChangeDetectorRef);
|
13
13
|
}
|
14
14
|
export declare const _TdFileInputMixinBase: (new (...args: any[]) => IControlValueAccessor) & (new (...args: any[]) => ICanDisable) & typeof TdFileInputBase;
|
15
|
-
export declare class TdFileInputComponent extends _TdFileInputMixinBase implements IControlValueAccessor, ICanDisable {
|
15
|
+
export declare class TdFileInputComponent extends _TdFileInputMixinBase implements OnInit, OnDestroy, IControlValueAccessor, ICanDisable {
|
16
|
+
private _ngZone;
|
16
17
|
private _renderer;
|
17
18
|
private _multiple;
|
19
|
+
/** The native `<button class="td-file-input"></button>` element */
|
20
|
+
_inputButton: ElementRef<HTMLElement>;
|
18
21
|
/** The native `<input type="file"> element */
|
19
|
-
_inputElement: ElementRef
|
22
|
+
_inputElement: ElementRef<HTMLInputElement>;
|
20
23
|
get inputElement(): HTMLInputElement;
|
21
24
|
/**
|
22
25
|
* color?: 'accent' | 'primary' | 'warn'
|
@@ -41,7 +44,10 @@ export declare class TdFileInputComponent extends _TdFileInputMixinBase implemen
|
|
41
44
|
* Emits a [File | FileList] object.
|
42
45
|
*/
|
43
46
|
selectFile: EventEmitter<File | FileList>;
|
44
|
-
|
47
|
+
private _destroy$;
|
48
|
+
constructor(_ngZone: NgZone, _renderer: Renderer2, _changeDetectorRef: ChangeDetectorRef);
|
49
|
+
ngOnInit(): void;
|
50
|
+
ngOnDestroy(): void;
|
45
51
|
/**
|
46
52
|
* Method executed when a file is selected.
|
47
53
|
*/
|
@@ -12,7 +12,7 @@ Example for usage:
|
|
12
12
|
<td-file-input
|
13
13
|
[(ngModel)]="files"
|
14
14
|
color="primary"
|
15
|
-
(
|
15
|
+
(selectFile)="selectEvent($event)"
|
16
16
|
accept=".ext,.anotherExt"
|
17
17
|
[disabled]="disabled"
|
18
18
|
multiple
|
@@ -52,7 +52,7 @@ export class Demo {
|
|
52
52
|
|
53
53
|
#### Events
|
54
54
|
|
55
|
-
-
|
55
|
+
- selectFile: function($event)
|
56
56
|
- Event emitted when a file is selected.
|
57
57
|
- Emits a [File or FileList] object.
|
58
58
|
|
@@ -13,7 +13,7 @@ Example for usage:
|
|
13
13
|
defaultColor="accent"
|
14
14
|
activeColor="warn"
|
15
15
|
cancelColor="primary"
|
16
|
-
(
|
16
|
+
(selectFile)="selectEvent($event)"
|
17
17
|
(upload)="uploadEvent($event)"
|
18
18
|
(cancel)="cancelEvent()"
|
19
19
|
accept=".ext,.anotherExt"
|
@@ -77,7 +77,7 @@ export class Demo {
|
|
77
77
|
|
78
78
|
- upload: function($event)
|
79
79
|
- Event emitted when upload button is clicked. Emits a [File or FileList] object.
|
80
|
-
-
|
80
|
+
- selectFile: function($event)
|
81
81
|
- Event emitted when a file is selected. Emits a [File or FileList] object.
|
82
82
|
- cancel: function
|
83
83
|
- Event emitted when cancel button is clicked.
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@covalent/core",
|
3
|
-
"version": "4.6.
|
3
|
+
"version": "4.6.1",
|
4
4
|
"exports": {
|
5
5
|
".": {
|
6
6
|
"sass": "./theming/_all-theme.scss",
|
@@ -135,7 +135,7 @@
|
|
135
135
|
"@angular/router": "^13.2.0",
|
136
136
|
"@angular/cdk": "^13.2.1",
|
137
137
|
"@angular/material": "^13.2.1",
|
138
|
-
"@covalent/core": "4.6.
|
138
|
+
"@covalent/core": "4.6.1",
|
139
139
|
"@angular/platform-browser": "^13.2.0",
|
140
140
|
"rxjs": "^7.4.0",
|
141
141
|
"@angular/animations": "^13.2.0",
|