UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

116 lines 14.1 kB
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==