@alauda-fe/common
Version:
Alauda frontend team common codes.
116 lines • 14.1 kB
JavaScript
import { NotificationService, coerceAttrBoolean } from '@alauda/ui';
import { ChangeDetectionStrategy, Component, Input, forwardRef, HostListener, ViewChild, ElementRef, } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { isErrorMessage } from '../../core/public-api';
import { EffectDirectiveModule } from '../../effect-directive/public-api';
import { TranslateService } from '../../translate/public-api';
import * as i0 from "@angular/core";
import * as i1 from "@alauda/ui";
import * as i2 from "../../translate/public-api";
const _c0 = ["fileInput"];
const _c1 = ["*"];
export const FileResultType = {
ARRAY_BUFFER: 'ArrayBuffer',
BINARY_STRING: 'BinaryString',
DATA_URL: 'DataURL',
TEXT: 'Text',
};
export class UploadFileComponent {
constructor(notification, translate) {
this.notification = notification;
this.translate = translate;
this.resultType = FileResultType.TEXT;
}
onClick() {
if (coerceAttrBoolean(this.disabled)) {
return;
}
this.fileInput.nativeElement.click();
}
async onChange(e) {
const el = e.target;
try {
const results = await Promise.all(Array.from(el.files).map(file => new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.addEventListener('load', () => {
const { result } = fileReader;
if (this.resultType === FileResultType.TEXT &&
result.includes('\uFFFD')) {
reject(new Error(this.translate.get('text_file_type_error')));
return;
}
resolve(result);
});
fileReader[`readAs${this.resultType}`](file);
})));
this.valueChange(this.multiple ? results : results[0]);
}
catch (e) {
if (isErrorMessage(e)) {
this.notification.error(e.message);
}
}
el.value = null;
}
writeValue() {
//
}
registerOnChange(fn) {
this.valueChange = fn;
}
registerOnTouched() {
//
}
static { this.ɵfac = function UploadFileComponent_Factory(t) { return new (t || UploadFileComponent)(i0.ɵɵdirectiveInject(i1.NotificationService), i0.ɵɵdirectiveInject(i2.TranslateService)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UploadFileComponent, selectors: [["acl-upload-file"]], viewQuery: function UploadFileComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(_c0, 5);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t.first);
} }, hostBindings: function UploadFileComponent_HostBindings(rf, ctx) { if (rf & 1) {
i0.ɵɵlistener("click", function UploadFileComponent_click_HostBindingHandler() { return ctx.onClick(); });
} }, inputs: { disabled: "disabled", accept: "accept", multiple: "multiple", resultType: "resultType" }, standalone: true, features: [i0.ɵɵProvidersFeature([
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => UploadFileComponent),
multi: true,
},
]), i0.ɵɵStandaloneFeature], ngContentSelectors: _c1, decls: 3, vars: 2, consts: [["fileInput", ""], ["type", "file", 1, "file-input", 3, "change", "multiple"]], template: function UploadFileComponent_Template(rf, ctx) { if (rf & 1) {
const _r1 = i0.ɵɵgetCurrentView();
i0.ɵɵprojectionDef();
i0.ɵɵprojection(0);
i0.ɵɵelementStart(1, "input", 1, 0);
i0.ɵɵlistener("change", function UploadFileComponent_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onChange($event)); });
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵadvance();
i0.ɵɵproperty("multiple", ctx.multiple);
i0.ɵɵattribute("accept", ctx.accept);
} }, dependencies: [EffectDirectiveModule], styles: ["[_nghost-%COMP%]{position:relative;display:inline-flex;overflow:hidden}.file-input[_ngcontent-%COMP%]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;z-index:-1}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UploadFileComponent, [{
type: Component,
args: [{ selector: 'acl-upload-file', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => UploadFileComponent),
multi: true,
},
], standalone: true, imports: [EffectDirectiveModule], template: "<ng-content></ng-content>\n<input\n #fileInput\n class=\"file-input\"\n type=\"file\"\n [attr.accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onChange($event)\"\n/>\n", styles: [":host{position:relative;display:inline-flex;overflow:hidden}.file-input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;z-index:-1}\n"] }]
}], () => [{ type: i1.NotificationService }, { type: i2.TranslateService }], { disabled: [{
type: Input
}], accept: [{
type: Input
}], multiple: [{
type: Input
}], resultType: [{
type: Input
}], fileInput: [{
type: ViewChild,
args: ['fileInput']
}], onClick: [{
type: HostListener,
args: ['click']
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UploadFileComponent, { className: "UploadFileComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2Zvcm0vdXBsb2FkLWZpbGUvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2Zvcm0vdXBsb2FkLWZpbGUvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFXLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFFOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLFlBQVksRUFBRSxhQUFhO0lBQzNCLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLElBQUksRUFBRSxNQUFNO0NBQ0osQ0FBQztBQXNCWCxNQUFNLE9BQU8sbUJBQW1CO0lBa0I5QixZQUNtQixZQUFpQyxFQUNqQyxTQUEyQjtRQUQzQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFUOUMsZUFBVSxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO0lBVTlDLENBQUM7SUFHSixPQUFPO1FBQ0wsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUs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WUFJTixNQUFNO2tCQURMLEtBQUs7WUFJTixRQUFRO2tCQURQLEtBQUs7WUFJTixVQUFVO2tCQURULEtBQUs7WUFJTixTQUFTO2tCQURSLFNBQVM7bUJBQUMsV0FBVztZQVd0QixPQUFPO2tCQUROLFlBQVk7bUJBQUMsT0FBTzs7a0ZBdkJWLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIGNvZXJjZUF0dHJCb29sZWFuIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBWYWx1ZU9mLCBpc0Vycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBFZmZlY3REaXJlY3RpdmVNb2R1bGUgfSBmcm9tICcuLi8uLi9lZmZlY3QtZGlyZWN0aXZlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3RyYW5zbGF0ZS9wdWJsaWMtYXBpJztcblxuZXhwb3J0IGNvbnN0IEZpbGVSZXN1bHRUeXBlID0ge1xuICBBUlJBWV9CVUZGRVI6ICdBcnJheUJ1ZmZlcicsXG4gIEJJTkFSWV9TVFJJTkc6ICdCaW5hcnlTdHJpbmcnLFxuICBEQVRBX1VSTDogJ0RhdGFVUkwnLFxuICBURVhUOiAnVGV4dCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBGaWxlUmVzdWx0VHlwZSA9IFZhbHVlT2Y8dHlwZW9mIEZpbGVSZXN1bHRUeXBlPjtcblxuZXhwb3J0IHR5cGUgRmlsZVJlc3VsdCA9IHN0cmluZyB8IEFycmF5QnVmZmVyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtdXBsb2FkLWZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc3R5bGVzLnNjc3MnXSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFVwbG9hZEZpbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0VmZmVjdERpcmVjdGl2ZU1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZEZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGFjY2VwdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIG11bHRpcGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHJlc3VsdFR5cGU6IEZpbGVSZXN1bHRUeXBlID0gRmlsZVJlc3VsdFR5cGUuVEVYVDtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKVxuICBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgdmFsdWVDaGFuZ2U6IChldjogRmlsZVJlc3VsdCB8IEZpbGVSZXN1bHRbXSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgb25DbGljaygpIHtcbiAgICBpZiAoY29lcmNlQXR0ckJvb2xlYW4odGhpcy5kaXNhYmxlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgYXN5bmMgb25DaGFuZ2UoZTogRXZlbnQpIHtcbiAgICBjb25zdCBlbCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBBcnJheS5mcm9tKGVsLmZpbGVzKS5tYXAoXG4gICAgICAgICAgZmlsZSA9PlxuICAgICAgICAgICAgbmV3IFByb21pc2U8RmlsZVJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgZmlsZVJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVzdWx0IH0gPSBmaWxlUmVhZGVyO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRUeXBlID09PSBGaWxlUmVzdWx0VHlwZS5URVhUICYmXG4gICAgICAgICAgICAgICAgICAocmVzdWx0IGFzIHN0cmluZykuaW5jbHVkZXMoJ1xcdUZGRkQnKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcih0aGlzLnRyYW5zbGF0ZS5nZXQoJ3RleHRfZmlsZV90eXBlX2Vycm9yJykpKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBmaWxlUmVhZGVyW2ByZWFkQXMke3RoaXMucmVzdWx0VHlwZX1gXShmaWxlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UodGhpcy5tdWx0aXBsZSA/IHJlc3VsdHMgOiByZXN1bHRzWzBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoaXNFcnJvck1lc3NhZ2UoZSkpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbC52YWx1ZSA9IG51bGw7XG4gIH1cblxuICB3cml0ZVZhbHVlKCkge1xuICAgIC8vXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZCgpIHtcbiAgICAvL1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48aW5wdXRcbiAgI2ZpbGVJbnB1dFxuICBjbGFzcz1cImZpbGUtaW5wdXRcIlxuICB0eXBlPVwiZmlsZVwiXG4gIFthdHRyLmFjY2VwdF09XCJhY2NlcHRcIlxuICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuLz5cbiJdfQ==