UNPKG

@xmagic/nz-formly

Version:

基于ng-zorro-antd UI 扩展的ngx-formly组件库

1 lines 13.7 kB
{"version":3,"file":"xmagic-nz-formly-common.mjs","sources":["../../../lib/common/formly-box-templates.directive.ts","../../../lib/common/common.module.ts","../../../lib/common/formly-utils.ts","../../../lib/common/xmagic-nz-formly-common.ts"],"sourcesContent":["import {\r\n AfterContentInit,\r\n ContentChildren,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChange,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { NamedTemplate } from '@xmagic/nzx-antd/directive';\r\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\r\n\r\n@Directive({\r\n selector: '[formly-box]',\r\n exportAs: 'FormlyBox'\r\n})\r\nexport class FormlyBoxTemplates implements AfterContentInit, OnChanges {\r\n private tplMap = new Map<string, TemplateRef<NzSafeAny>>();\r\n @Input('formly-box') templateList?: TemplateList;\r\n @Output() templateChange = new EventEmitter<Map<string, TemplateRef<NzSafeAny>>>();\r\n @ContentChildren(NamedTemplate) namedTemplate!: QueryList<NamedTemplate<NzSafeAny>>;\r\n\r\n get templates(): Map<string, TemplateRef<NzSafeAny>> {\r\n return this.tplMap;\r\n }\r\n\r\n /**\r\n * 根据模板名称获取TemplateRef\r\n * @param templateName 模板名称\r\n */\r\n get(templateName: string): TemplateRef<NzSafeAny> | undefined {\r\n return this.tplMap.get(templateName);\r\n }\r\n\r\n constructor() {}\r\n\r\n ngAfterContentInit(): void {\r\n this.update();\r\n this.namedTemplate.changes.subscribe(v => {\r\n this.update();\r\n });\r\n }\r\n\r\n update(emitChange = true) {\r\n this.tplMap.clear();\r\n this.mergeTemplate(this.tplMap, emitChange);\r\n }\r\n\r\n ngOnChanges(changes: { [K in keyof this]?: SimpleChange } & SimpleChanges): void {\r\n if (changes.templateList && !changes.templateList.isFirstChange()) {\r\n this.update();\r\n }\r\n }\r\n\r\n /**\r\n * 合并参数模板\r\n * @param tplMap\r\n * @param emitChange\r\n */\r\n mergeTemplate(tplMap: Map<string, TemplateRef<NzSafeAny>>, emitChange = true) {\r\n this.mergeTemplates(tplMap, this.templateList);\r\n this.mergeQueryTemplate(tplMap, this.namedTemplate);\r\n this.templateChange.emit(tplMap);\r\n }\r\n\r\n /**\r\n * 合并content 模板\r\n * @param tplMap\r\n * @param templateList\r\n * @private\r\n */\r\n private mergeQueryTemplate(\r\n tplMap: Map<string, TemplateRef<NzSafeAny>>,\r\n templateList?: QueryList<NamedTemplate<NzSafeAny>>\r\n ): void {\r\n if (templateList) {\r\n templateList.forEach(v => {\r\n tplMap.set(v.named, v.template);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 合并魔板列表\r\n * @param tplMap 模板Map\r\n * @param templateList\r\n */\r\n private mergeTemplates(tplMap: Map<string, TemplateRef<NzSafeAny>>, templateList?: TemplateList): void {\r\n if (!templateList) {\r\n return;\r\n }\r\n\r\n templateList.forEach(v => {\r\n if (v instanceof NamedTemplate) {\r\n tplMap.set(v.named, v.template);\r\n } else {\r\n const namedTpl = new NamedTemplate(v);\r\n namedTpl.resolveName();\r\n tplMap.set(namedTpl.named, namedTpl.template);\r\n }\r\n });\r\n\r\n return;\r\n }\r\n}\r\n\r\n/**\r\n * 魔板列表\r\n */\r\nexport type TemplateList =\r\n | QueryList<TemplateRef<NzSafeAny>>\r\n | QueryList<NamedTemplate<NzSafeAny>>\r\n | NamedTemplate<NzSafeAny>[];\r\n","import { NgModule } from '@angular/core';\nimport { FormlyBoxTemplates } from './formly-box-templates.directive';\nimport { CommonModule } from '@angular/common';\n\nconst COMPONENT = [FormlyBoxTemplates];\n\n@NgModule({\n declarations: COMPONENT,\n imports: [CommonModule],\n exports: COMPONENT\n})\nexport class FormlyCommonModule {}\n","import { TemplateRef } from '@angular/core';\r\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\r\nimport { NzDropDownDirective } from 'ng-zorro-antd/dropdown';\r\nimport { FormlyFieldConfig, FormlyFieldProps } from '@ngx-formly/core';\r\nimport { Observable } from 'rxjs';\r\nimport { AsyncOption } from '@xmagic/nzx-antd/pipe';\r\nimport { FormlyBoxTemplates } from './formly-box-templates.directive';\r\n\r\n/**\r\n * 下拉菜单配置\r\n */\r\nexport interface DropdownWrapperOptions {\r\n nzDropdown?: {\r\n ref: string;\r\n /**\r\n * 菜单是否禁用\r\n */\r\n nzDisabled?: boolean;\r\n /**\r\n * 菜单弹出位置\r\n */\r\n nzPlacement?: 'bottomLeft' | 'bottomCenter' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight';\r\n /**\r\n * 触发下拉的行为\r\n */\r\n nzTrigger?: 'click' | 'hover';\r\n /**\r\n * 点击后是否隐藏菜单\r\n */\r\n nzClickHide?: boolean;\r\n /**\r\n * 菜单是否显示,可双向绑定\r\n */\r\n nzVisible?: boolean;\r\n /**\r\n * 下拉根元素的类名称\r\n */\r\n nzOverlayClassName?: string;\r\n /**\r\n * 下拉根元素的样式\r\n */\r\n nzOverlayStyle?: object;\r\n /**\r\n * 菜单显示状态改变时调用,参数为 nzVisible\r\n */\r\n nzVisibleChange?: (evt: boolean, field: FormlyFieldConfig, instance: NzDropDownDirective) => void;\r\n };\r\n}\r\n\r\n/**\r\n * 处理属性为模板类型, 根据模板名称处理成模板对象\r\n * @param value 数据对象\r\n * @param fieldTemplates 模板容器\r\n * @param propName 属性名\r\n * @param propTemplateName 模板属性名称\r\n */\r\nexport function resolveTplName<T = NzSafeAny>(\r\n value: NzSafeAny,\r\n fieldTemplates: FormlyBoxTemplates,\r\n propName: string,\r\n propTemplateName?: string\r\n): TemplateRef<T> | undefined {\r\n if (value[propName]) {\r\n return value[propName];\r\n }\r\n if (!fieldTemplates) {\r\n return undefined;\r\n }\r\n const tplName = propTemplateName || getTplName(propName);\r\n return fieldTemplates.get(value[tplName]);\r\n}\r\n\r\n/**\r\n * 处理属性为模板类型, 根据模板名称处理成模板对象列表\r\n * @param value 数据对象\r\n * @param fieldTemplates 模板容器\r\n * @param propName 属性名\r\n * @param propTemplateName 模板属性名称\r\n */\r\nexport function resolveTplNameArray<T = NzSafeAny>(\r\n value: NzSafeAny,\r\n fieldTemplates: FormlyBoxTemplates,\r\n propName: string,\r\n propTemplateName?: string\r\n): TemplateRef<T>[] {\r\n if (value[propName] != null) {\r\n return value[propName];\r\n }\r\n if (!fieldTemplates) {\r\n return [];\r\n }\r\n const tplName = propTemplateName || getTplName(propName);\r\n const tplValue = value[tplName];\r\n if (Array.isArray(tplValue)) {\r\n return tplValue.map(key => fieldTemplates.get(key)).filter(tpl => tpl) as TemplateRef<T>[];\r\n }\r\n return [];\r\n}\r\n\r\n/**\r\n * 根据属性名获取模板名称\r\n * @param propName 属性名\r\n */\r\nexport function getTplName(propName: string) {\r\n return `${propName}Name`;\r\n}\r\n\r\n/**\r\n * 获取模板名称\r\n * @param value\r\n * @param propName\r\n * @param propTemplateName 模板属性名称\r\n */\r\nexport function hasTplNameValue(value: NzSafeAny, propName: string, propTemplateName?: string): boolean {\r\n const tplName = propTemplateName || getTplName(propName);\r\n return value[propName] || value[tplName];\r\n}\r\n\r\n/**\r\n * 获取根节点的FieldConfig\r\n * @param field 当前节点配置\r\n */\r\nexport function getRootFiled(field: FormlyFieldConfig) {\r\n let p = field.parent;\r\n while (p && p.parent) {\r\n p = p.parent;\r\n }\r\n return p || field;\r\n}\r\n\r\n/**\r\n * 根据key获取指定FieldConfig\r\n * @param field 当前节点配置\r\n * @param key 配置的key\r\n */\r\nexport function findField(field: FormlyFieldConfig, key: string): FormlyFieldConfig | undefined {\r\n const rootField = getRootFiled(field);\r\n return rootField.get!(key);\r\n}\r\n\r\n/**\r\n * 异步配置信息\r\n */\r\nexport interface AsyncFormlyOptions<T extends NzSafeAny = NzSafeAny, U extends NzSafeAny = NzSafeAny>\r\n extends AsyncOption {\r\n /**\r\n * 可选项数据源\r\n */\r\n options?: string | Observable<U[]> | Promise<U[]> | U[];\r\n}\r\n\r\n/**\r\n * 控件模板参数配置项\r\n */\r\nexport type ControlOptions = DropdownWrapperOptions &\r\n Omit<FormlyFieldProps, 'options'> & {\r\n valueChanges?: (value: NzSafeAny, field: NzFormlyFieldConfig) => void;\r\n attributes?: {\r\n style: string;\r\n class: string;\r\n id: string;\r\n name: string;\r\n [key: string]: string | number;\r\n };\r\n };\r\n\r\nexport interface NzFormlyFieldConfig<T extends ControlOptions = ControlOptions> extends FormlyFieldConfig {\r\n /**\r\n * 这是为模板扩展的属性,所有模板访问的属性都应该从这里访问\r\n */\r\n props?: T;\r\n /**\r\n * @deprecated 使用 `props` 代替\r\n */\r\n templateOptions?: T;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}