UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

92 lines 11.3 kB
import { Directive, inject } from '@angular/core'; import { BaseResourceFormComponent } from 'ng-resource-form-util'; import { ValidateRowDuplicateService } from '../core/services/form-row-duplicate/form-row-duplicate.service'; import * as i0 from "@angular/core"; const missingKeyValidator = control => { const [key, value] = control.value; return value && !key ? { keyIsMissing: true } : null; }; // 用以Form级别的键值映射对象的修改. // 这个表单有些特别. 内部实现是以FormArray实现, 但对外暴露的是一个key->value对象. export class BaseStringMapFormComponent extends BaseResourceFormComponent { constructor() { super(...arguments); this.rowDupService = inject(ValidateRowDuplicateService); } createForm() { return this.fb.array([]); } getDefaultFormModel() { return []; } adaptResourceModel(resource) { let newFormModel = Object.entries(resource || {}); if (newFormModel.length === 0) { newFormModel = this.getDefaultFormModel(); } return newFormModel; } adaptFormModel(formModel) { return formModel .filter(row => !!row[0]) .reduce((obj, [k, v]) => ({ ...obj, [k]: v }), {}); } getOnFormArrayResizeFn() { return () => this.createNewControl(); } add(index = this.form.length) { this.form.insert(index, this.getOnFormArrayResizeFn()()); this.cdr.markForCheck(); } remove(index) { this.form.removeAt(index); this.cdr.markForCheck(); this.form.controls.forEach(c => c.updateValueAndValidity()); } getPreviousKeys(index) { return this.formModel .slice(0, index) .map(([key]) => key) .filter(key => !!key); } getKeyValidators() { return []; } getValueValidators() { return []; } createNewControl() { return this.fb.array([ ['', this.getKeyValidators()], ['', this.getValueValidators()], ], [ missingKeyValidator, (control) => { if (control.controls[0].errors) { return { key: control.controls[0].errors, }; } if (control.controls[1].errors) { return { value: control.controls[1].errors, }; } return null; }, this.rowDupService.createFormArrayValidator({ rowKeys: [{ key: ['0'] }], formArray: this.form, }), ]); } static { this.ɵfac = /*@__PURE__*/ (() => { let ɵBaseStringMapFormComponent_BaseFactory; return function BaseStringMapFormComponent_Factory(t) { return (ɵBaseStringMapFormComponent_BaseFactory || (ɵBaseStringMapFormComponent_BaseFactory = i0.ɵɵgetInheritedFactory(BaseStringMapFormComponent)))(t || BaseStringMapFormComponent); }; })(); } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BaseStringMapFormComponent, standalone: true, features: [i0.ɵɵInheritDefinitionFeature] }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseStringMapFormComponent, [{ type: Directive, args: [{ standalone: true, }] }], null, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdHJpbmctbWFwLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvYmFzZS1zdHJpbmctbWFwLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOztBQUk3RyxNQUFNLG1CQUFtQixHQUFnQixPQUFPLENBQUMsRUFBRTtJQUNqRCxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbkMsT0FBTyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdkQsQ0FBQyxDQUFDO0FBRUYsc0JBQXNCO0FBQ3RCLHNEQUFzRDtBQUl0RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEseUJBSS9DO0lBUEQ7O1FBUUUsa0JBQWEsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztLQWtGckQ7SUFoRkMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVRLG1CQUFtQjtRQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFUSxrQkFBa0IsQ0FBQyxRQUFtQjtRQUM3QyxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUss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RSxJQUFJLENBQUMsSUFBSTthQUNyQixDQUFDO1NBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs0UUF0RlUsMEJBQTBCLFNBQTFCLDBCQUEwQjtvRUFBMUIsMEJBQTBCOztpRkFBMUIsMEJBQTBCO2NBSHRDLFNBQVM7ZUFBQztnQkFDVCxVQUFVLEVBQUUsSUFBSTthQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlRm9ybUNvbXBvbmVudCB9IGZyb20gJ25nLXJlc291cmNlLWZvcm0tdXRpbCc7XG5cbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBWYWxpZGF0ZVJvd0R1cGxpY2F0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2VzL2Zvcm0tcm93LWR1cGxpY2F0ZS9mb3JtLXJvdy1kdXBsaWNhdGUuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIEtleVZhbHVlVHVwbGUgPSBbc3RyaW5nLCBzdHJpbmddO1xuXG5jb25zdCBtaXNzaW5nS2V5VmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IGNvbnRyb2wgPT4ge1xuICBjb25zdCBba2V5LCB2YWx1ZV0gPSBjb250cm9sLnZhbHVlO1xuICByZXR1cm4gdmFsdWUgJiYgIWtleSA/IHsga2V5SXNNaXNzaW5nOiB0cnVlIH0gOiBudWxsO1xufTtcblxuLy8g55So5LulRm9ybee6p+WIq+eahOmUruWAvOaYoOWwhOWvueixoeeahOS/ruaUuS5cbi8vIOi/meS4quihqOWNleacieS6m+eJueWIqy4g5YaF6YOo5a6e546w5piv5LulRm9ybUFycmF55a6e546wLCDkvYblr7nlpJbmmrTpnLLnmoTmmK/kuIDkuKprZXktPnZhbHVl5a+56LGhLlxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VTdHJpbmdNYXBGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlc291cmNlRm9ybUNvbXBvbmVudDxcbiAgU3RyaW5nTWFwLFxuICBLZXlWYWx1ZVR1cGxlW10sXG4gIEZvcm1BcnJheVxuPiB7XG4gIHJvd0R1cFNlcnZpY2UgPSBpbmplY3QoVmFsaWRhdGVSb3dEdXBsaWNhdGVTZXJ2aWNlKTtcblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZiLmFycmF5KFtdKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldERlZmF1bHRGb3JtTW9kZWwoKTogS2V5VmFsdWVUdXBsZVtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdFJlc291cmNlTW9kZWwocmVzb3VyY2U6IFN0cmluZ01hcCkge1xuICAgIGxldCBuZXdGb3JtTW9kZWwgPSBPYmplY3QuZW50cmllcyhyZXNvdXJjZSB8fCB7fSk7XG4gICAgaWYgKG5ld0Zvcm1Nb2RlbC5sZW5ndGggPT09IDApIHtcbiAgICAgIG5ld0Zvcm1Nb2RlbCA9IHRoaXMuZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Rm9ybU1vZGVsO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRGb3JtTW9kZWwoZm9ybU1vZGVsOiBLZXlWYWx1ZVR1cGxlW10pIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsXG4gICAgICAuZmlsdGVyKHJvdyA9PiAhIXJvd1swXSlcbiAgICAgIC5yZWR1Y2UoKG9iaiwgW2ssIHZdKSA9PiAoeyAuLi5vYmosIFtrXTogdiB9KSwge30pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0T25Gb3JtQXJyYXlSZXNpemVGbigpIHtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5jcmVhdGVOZXdDb250cm9sKCk7XG4gIH1cblxuICBhZGQoaW5kZXggPSB0aGlzLmZvcm0ubGVuZ3RoKSB7XG4gICAgdGhpcy5mb3JtLmluc2VydChpbmRleCwgdGhpcy5nZXRPbkZvcm1BcnJheVJlc2l6ZUZuKCkoKSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZW1vdmUoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybS5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UHJldmlvdXNLZXlzKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtTW9kZWxcbiAgICAgIC5zbGljZSgwLCBpbmRleClcbiAgICAgIC5tYXAoKFtrZXldKSA9PiBrZXkpXG4gICAgICAuZmlsdGVyKGtleSA9PiAhIWtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0S2V5VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRWYWx1ZVZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTmV3Q29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5hcnJheShcbiAgICAgIFtcbiAgICAgICAgWycnLCB0aGlzLmdldEtleVZhbGlkYXRvcnMoKV0sXG4gICAgICAgIFsnJywgdGhpcy5nZXRWYWx1ZVZhbGlkYXRvcnMoKV0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBtaXNzaW5nS2V5VmFsaWRhdG9yLFxuICAgICAgICAoY29udHJvbDogRm9ybUFycmF5KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHNbMF0uZXJyb3JzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBrZXk6IGNvbnRyb2wuY29udHJvbHNbMF0uZXJyb3JzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHNbMV0uZXJyb3JzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB2YWx1ZTogY29udHJvbC5jb250cm9sc1sxXS5lcnJvcnMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5yb3dEdXBTZXJ2aWNlLmNyZWF0ZUZvcm1BcnJheVZhbGlkYXRvcih7XG4gICAgICAgICAgcm93S2V5czogW3sga2V5OiBbJzAnXSB9XSxcbiAgICAgICAgICBmb3JtQXJyYXk6IHRoaXMuZm9ybSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==