@dignite-ng/expand.dynamic-form 3.2.1 → 3.2.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dignite-ng-expand.dynamic-form.mjs","sources":["../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-config.ts","../../../../packages/dynamic-form/src/lib/enums/text-edit-mode.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit.component.html","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-config.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-config.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-control.component.html","../../../../packages/dynamic-form/src/lib/enums/date-edit-interfaces.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-config.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-config.ts","../../../../packages/dynamic-form/src/lib/services/df-api.service.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-config.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/form-control-group.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic.component.html","../../../../packages/dynamic-form/src/lib/services/form-control.service.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-view.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-view.component.html","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-config.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-config.component.html","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-control.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-control.component.html","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-search.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-search.component.html","../../../../packages/dynamic-form/src/lib/dynamic-form.module.ts","../../../../packages/dynamic-form/src/public-api.ts","../../../../packages/dynamic-form/src/dignite-ng-expand.dynamic-form.ts"],"sourcesContent":["import { FormControl, Validators } from \"@angular/forms\";\r\n\r\nexport class TextEditConfig {\r\n\r\n\r\n /**占位符 */\r\n 'TextEdit.Placeholder': any = [''];\r\n\r\n //字段类型,单行文本,多行文本\r\n 'TextEdit.Mode': any = [0];\r\n // 字数限制\r\n 'TextEdit.CharLimit': any = ['265'];\r\n}","export enum TextEditMode {\n // 简单类型\n SingleLine,\n // 复合类型;\n MultipleLine,\n \n}\n","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { TextEditConfig } from './text-edit-config';\nimport { TextEditMode } from '../../../enums/text-edit-mode';\n\n@Component({\n selector: 'df-text-edit-config',\n templateUrl: './text-edit-config.component.html',\n styleUrls: ['./text-edit-config.component.scss'],\n})\nexport class TextEditConfigComponent {\n constructor(private fb: FormBuilder) {}\n _TextEditMode = TextEditMode;\n RadioIndex1: any = Math.floor(Math.random() * 1001);\n RadioIndex2: any = Math.floor(Math.random() * 1001);\n\n /**表单控件类型 */\n formControlName: any;\n @Input()\n public set type(v: any) {\n this.formControlName = v;\n this.dataLoaded();\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this.formControlName) {\n await this.AfterInit();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new TextEditConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this.formControlName) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"TextEdit.Placeholder\" >\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::TextEditMode' | abpLocalization}}</label>\n <div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_TextEditMode.SingleLine\" formControlName=\"TextEdit.Mode\"\n id=\"flexRadioDefault{{RadioIndex1}}\">\n <label class=\"form-check-label\" for=\"flexRadioDefault{{RadioIndex1}}\">\n {{'AbpDynamicForm::SingleLine' | abpLocalization}}\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_TextEditMode.MultipleLine\" formControlName=\"TextEdit.Mode\"\n id=\"flexRadioDefault{{RadioIndex2}}\">\n <label class=\"form-check-label\" for=\"flexRadioDefault{{RadioIndex2}}\">\n {{'AbpDynamicForm::MultipleLine' | abpLocalization}}\n </label>\n </div>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::CharLimit' | abpLocalization}}</label>\n <input type=\"number\" class=\"form-control\" formControlName=\"TextEdit.CharLimit\">\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\n/* eslint-disable @angular-eslint/no-empty-lifecycle-method */\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { TextEditMode } from '../../../enums/text-edit-mode';\nimport { TextEditConfig } from './text-edit-config';\n\n@Component({\n selector: 'df-text-edit',\n templateUrl: './text-edit.component.html',\n styleUrls: ['./text-edit.component.scss']\n})\nexport class TextEditComponent {\n\n constructor(\n private fb: FormBuilder,\n ) {\n }\n\n _TextEditMode = TextEditMode\n /**表单实体 */\n _entity: FormGroup | undefined\n @Input()\n public set entity(v: any) {\n this._entity = v;\n if (v) this.dataLoaded()\n }\n\n /**字段配置列表 */\n _fields: any = ''\n @Input()\n public set fields(v: any) {\n this._fields = v;\n if (v) this.dataLoaded()\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n if (v) this.dataLoaded()\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any\n @Input()\n public set selected(v: any) {\n this._selected = v || '';\n if (v) this.dataLoaded()\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n extraProperties: FormGroup | undefined;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup\n await this.AfterInit()\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray:any[] = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required)\n }\n this._fields.field.formConfiguration={\n ...this.fb.group(new TextEditConfig()).value,\n ...this._fields.field.formConfiguration\n }\n if (this._fields.field.formConfiguration['TextEdit.CharLimit']) {\n ValidatorsArray.push(Validators.maxLength(this._fields.field.formConfiguration['TextEdit.CharLimit']))\n }\n \n const newControl = this.fb.control(this._selected, ValidatorsArray)\n this.extraProperties?.setControl(this._fields.field.name, newControl)\n resolve(true)\n })\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties?.removeControl(this._fields.field.name)\n }\n\n isObjEmpty = (obj) => Object.keys(obj).length === 0\n}\n","<form [formGroup]=\"_entity\">\n <div [formGroupName]=\"_parentFiledName\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <ng-container *ngIf=\"_fields.field.formConfiguration['TextEdit.Mode'] ===_TextEditMode.SingleLine\">\n <input type=\"text\" class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\n [placeholder]=\"_fields.field.formConfiguration['TextEdit.Placeholder']\" />\n </ng-container>\n <ng-container *ngIf=\"_fields.field.formConfiguration['TextEdit.Mode'] === _TextEditMode.MultipleLine\">\n <textarea class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\n [placeholder]=\"_fields.field.formConfiguration['TextEdit.Placeholder']\" rows=\"3\"></textarea>\n </ng-container>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-text-edit-view',\r\n templateUrl: './text-edit-view.component.html',\r\n styleUrl: './text-edit-view.component.scss',\r\n})\r\nexport class TextEditViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n let valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { TextEditMode } from '../../../enums/text-edit-mode';\r\nimport { TextEditConfig } from './text-edit-config';\r\n\r\n@Component({\r\n selector: 'df-text-edit-search',\r\n templateUrl: './text-edit-search.component.html',\r\n styleUrl: './text-edit-search.component.scss'\r\n})\r\nexport class TextEditSearchComponent {\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n ) {\r\n }\r\n\r\n _TextEditMode = TextEditMode\r\n /**表单实体 */\r\n _entity: FormGroup | undefined\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n if (v) this.dataLoaded()\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = ''\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n if (v) this.dataLoaded()\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n if (v) this.dataLoaded()\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v || '';\r\n if (v) this.dataLoaded()\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n extraProperties: FormGroup | undefined;\r\n private cdr = inject(ChangeDetectorRef);\r\n async dataLoaded() {\r\n if (this._fields && this._entity && this._parentFiledName) {\r\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup\r\n await this.AfterInit()\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n let ValidatorsArray:any[] = []\r\n this._fields.field.formConfiguration={\r\n ...this.fb.group(new TextEditConfig()).value,\r\n ...this._fields.field.formConfiguration\r\n }\r\n let newControl = this.fb.control(this._selected, ValidatorsArray)\r\n this.extraProperties?.setControl(this._fields.field.name, newControl)\r\n resolve(true)\r\n })\r\n }\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties?.removeControl(this._fields.field.name)\r\n }\r\n\r\n isObjEmpty = (obj) => Object.keys(obj).length === 0\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div [formGroupName]=\"_parentFiledName\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\r\n [placeholder]=\"_fields.field.formConfiguration['TextEdit.Placeholder']\" />\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","\r\nexport class SwitchConfig {\r\n /**默认值 */\r\n 'Switch.Default': any = [false];\r\n \r\n}","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { SwitchConfig } from './switch-config';\n@Component({\n selector: 'df-switch-config',\n templateUrl: './switch-config.component.html',\n styleUrls: ['./switch-config.component.scss'],\n})\nexport class SwitchConfigComponent {\n constructor(private fb: FormBuilder) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n this.dataLoaded();\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup | undefined) {\n this.formEntity = v;\n this.dataLoaded();\n }\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n // this.cdr.detectChanges();\n \n }\n }\n\n\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new SwitchConfig()));\n setTimeout(()=>{\n this.submitclick?.nativeElement?.click();\n },0)\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Switch.Default\"\n id=\"flexRadioDefault1\">\n <label class=\"form-check-label\" for=\"flexRadioDefault1\">\n {{'AbpDynamicForm::DefaultValue' | abpLocalization}}\n </label>\n </div>\n \n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n </div>\n</form>","import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'df-switch-control',\n templateUrl: './switch-control.component.html',\n styleUrls: ['./switch-control.component.scss'],\n})\nexport class SwitchControlComponent {\n constructor(private fb: FormBuilder) {}\n\n /**表单实体 */\n _entity: FormGroup | any;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n this.dataLoaded();\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n this.dataLoaded();\n }\n /** */\n _selected: any;\n @Input()\n public set selected(v: any) {\n // ?v:false;\n this._selected = v;\n this.dataLoaded();\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity.get('extraProperties') as FormGroup;\n }\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n let ValidatorsArray:any = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n let newControl = this.fb.control(\n this._selected\n ? this._selected\n : this._selected === false\n ? this._selected\n : this._fields.field.formConfiguration['Switch.Default'],\n ValidatorsArray\n );\n this.extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" formControlName=\"{{_fields.field.name}}\">\n </div>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-switch-search',\r\n templateUrl: './switch-search.component.html',\r\n styleUrl: './switch-search.component.scss'\r\n})\r\nexport class SwitchSearchComponent {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | any;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n this.dataLoaded();\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n this.dataLoaded();\r\n }\r\n /** */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n // ?v:false;\r\n this._selected = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray:any = [];\r\n const newControl = this.fb.control(\r\n this._selected\r\n ? this._selected\r\n : this._selected === false\r\n ? this._selected\r\n : '',\r\n ValidatorsArray\r\n );\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <!-- <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" formControlName=\"{{_fields.field.name}}\">\r\n </div> -->\r\n <!-- <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small> -->\r\n <select class=\"form-select form-control\" formControlName=\"{{_fields.field.name}}\" role=\"switch\">\r\n <option [value]=\"\"></option>\r\n <option [value]=\"true\">{{'AbpUi::Yes'|abpLocalization}}</option>\r\n <option [value]=\"false\">{{'AbpUi::No'|abpLocalization}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-switch-view',\r\n templateUrl: './switch-view.component.html',\r\n styleUrl: './switch-view.component.scss'\r\n})\r\nexport class SwitchViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n let valueOptions = this._value;\r\n if (this.type ) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n {{'AbpUi::'+(showValue ? 'Yes' : 'No') | abpLocalization}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{'AbpUi::'+(showValue ? 'Yes' : 'No') | abpLocalization}}\r\n </div>\r\n</div>\r\n}","import { FormControl, Validators } from \"@angular/forms\";\r\n\r\nexport class NumbericEditConfig {\r\n /**占位符 */\r\n 'NumericEditField.Placeholder': any = ['', []];\r\n /**最小值 */\r\n 'NumericEditField.Min': any = ['', [Validators.required]];\r\n //最大值\r\n 'NumericEditField.Max': any = ['', [Validators.required]];\r\n // 小数位数\r\n 'NumericEditField.Decimals': any = [2, []];\r\n //步长\r\n 'NumericEditField.Step': any = ['', []];\r\n //格式说明符\r\n 'FormatSpecifier': any = ['', []];\r\n\r\n constructor(data?: NumbericEditConfig) {\r\n if (data) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n this[key] = data[key];\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n}","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NumbericEditConfig } from './numberic-edit-config';\n\n@Component({\n selector: 'df-numberic-edit-config',\n templateUrl: './numberic-edit-config.component.html',\n styleUrls: ['./numberic-edit-config.component.scss'],\n})\nexport class NumbericEditConfigComponent {\n constructor(private fb: FormBuilder) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n // this.dataLoaded()\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v ? v : v == false ? v : '';\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: false }) submitclick?: ElementRef;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n \n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new NumbericEditConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Placeholder\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Min' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Min\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Max' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Max\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NumericDecimals' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Decimals\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NumericStep' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Step\">\n <small class=\"form-text text-muted d-block\">{{'AbpDynamicForm::NumericStepHelp'|abpLocalization}}</small>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::FormatSpecifier' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"FormatSpecifier\">\n <small class=\"form-text text-muted d-block\">See:<a href=\"https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings\" target=\"_blank\">https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings</a></small>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\" #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\n/* eslint-disable @typescript-eslint/adjacent-overload-signatures */\nimport {\n Component,\n ElementRef,\n Input,\n ViewChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function maxDecimalPlacesValidator(maxDecimalPlaces: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (typeof value === 'number' && isNaN(value) === false) {\n const decimalPart = value.toString().split('.')[1];\n if (decimalPart && decimalPart.length > maxDecimalPlaces) {\n return { maxDecimalPlaces: { actual: decimalPart.length, max: maxDecimalPlaces } };\n }\n }\n return null;\n };\n}\n@Component({\n selector: 'df-numberic-edit-control',\n templateUrl: './numberic-edit-control.component.html',\n styleUrls: ['./numberic-edit-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumbericEditControlComponent {\n constructor(private fb: FormBuilder, private cdr: ChangeDetectorRef) {}\n\n public get entity(): any {\n return this._entity;\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n //\n }\n\n /**表单实体 */\n _entity: FormGroup | any;\n\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity?.get('extraProperties') as FormGroup;\n }\n get fieldInput() {\n return this.extraProperties.get(this._fields.field.name);\n }\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n this.cdr.detectChanges();\n this.submitclick.nativeElement.click();\n }\n }\n formConfiguration: any = '';\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray: any[] = [];\n const formConfiguration = this._fields.field.formConfiguration;\n this.formConfiguration=formConfiguration;\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n if (formConfiguration['NumericEditField.Min']) {\n ValidatorsArray.push(Validators.min(formConfiguration['NumericEditField.Min']));\n }\n if (formConfiguration['NumericEditField.Max']) {\n ValidatorsArray.push(Validators.max(formConfiguration['NumericEditField.Max']));\n }\n const newControl = this.fb.control(this._selected, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name)\n }\n\n /**数字框输入 */\n inputchange(event) {\n const val = event.target.value;\n\n const decimalPart = val.toString().split('.')[1] || '';\n const formConfiguration = this._fields.field.formConfiguration;\n const Decimals = formConfiguration['NumericEditField.Decimals'];\n if (decimalPart.length > Decimals) {\n this.fieldInput?.patchValue(val.slice(0, val.length - (decimalPart.length - 2)));\n }\n this.extraProperties.updateValueAndValidity();\n this.fieldInput.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"_entity\">\n <div [formGroupName]=\"_parentFiledName\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <input type=\"number\" class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\n [placeholder]=\"_fields.field.formConfiguration['NumericEditField.Placeholder']||''\"\n [step]=\"_fields.field.formConfiguration['NumericEditField.Step']\" [min]=\"formConfiguration['NumericEditField.Min']\" [max]=\"formConfiguration['NumericEditField.Max']\" (input)=\"inputchange($event)\" />\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","export enum DateEditInterfaces {\n /// <summary>\n /// Only date is allowed to be entered.\n /// </summary>\n Date = 0,\n\n /// <summary>\n /// Both date and time are allowed to be entered.\n /// </summary>\n DateTime = 1,\n\n /// <summary>\n /// Allowed to select only year and month.\n /// </summary>\n Month = 2\n}\n","import { FormControl, Validators } from \"@angular/forms\";\r\nimport { DateEditInterfaces } from \"../../../enums/date-edit-interfaces\";\r\n\r\nexport class DateEditConfig {\r\n /**日期格式 */\r\n 'DateEdit.InputMode': any = [DateEditInterfaces.Date, []];\r\n /**最小值 */\r\n 'DateEdit.Min': any = ['', []];\r\n /**最大值 */\r\n 'DateEdit.Max': any = ['', []];\r\n\r\n constructor() {\r\n }\r\n}","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder,FormGroup } from '@angular/forms';\nimport { DateEditConfig } from './date-edit-config';\nimport { DateEditInterfaces } from '../../../enums/date-edit-interfaces';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'df-date-edit-config',\n templateUrl: './date-edit-config.component.html',\n styleUrls: ['./date-edit-config.component.scss'],\n})\nexport class DateEditConfigComponent {\n constructor(private fb: FormBuilder) {}\n private _dataPipe = inject(DatePipe);\n _DateEditInterfaces = DateEditInterfaces;\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n\n dateTimeType: any = 'date';\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n \n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new DateEditConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n this.timeTypeChange()\n }\n resolve(true);\n });\n }\n /**切换时间类型 */\n timeTypeChange() {\n const type = this.formConfiguration.value['DateEdit.InputMode'];\n let Min = this.formConfiguration.value['DateEdit.Min'];\n let Max = this.formConfiguration.value['DateEdit.Max'];\n if (type == DateEditInterfaces.Date) {\n this.dateTimeType = 'date';\n Min = this._dataPipe.transform(Min, 'yyyy-MM-dd');\n Max = this._dataPipe.transform(Max, 'yyyy-MM-dd');\n } else if (type == DateEditInterfaces.DateTime) {\n this.dateTimeType = 'datetime-local';\n Min = this._dataPipe.transform(Min, 'yyyy-MM-dd HH:mm:ss');\n Max = this._dataPipe.transform(Max, 'yyyy-MM-dd HH:mm:ss');\n } else if (type == DateEditInterfaces.Month) {\n this.dateTimeType = 'month';\n Min = this._dataPipe.transform(Min, 'yyyy-MM');\n Max = this._dataPipe.transform(Max, 'yyyy-MM');\n }\n this.formConfiguration.patchValue({\n 'DateEdit.Min': Min,\n 'DateEdit.Max': Max,\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::DateEditMode' | abpLocalization}}</label>\n <div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_DateEditInterfaces.Date\"\n formControlName=\"DateEdit.InputMode\" id=\"flexRadioDefault1\" (change)=\"timeTypeChange()\">\n <label class=\"form-check-label\" for=\"flexRadioDefault1\">\n {{'AbpDynamicForm::Date' | abpLocalization}}\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_DateEditInterfaces.DateTime\"\n formControlName=\"DateEdit.InputMode\" id=\"flexRadioDefault2\" (change)=\"timeTypeChange()\">\n <label class=\"form-check-label\" for=\"flexRadioDefault2\">\n {{'AbpDynamicForm::DateTime' | abpLocalization}}\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_DateEditInterfaces.Month\"\n formControlName=\"DateEdit.InputMode\" id=\"flexRadioDefault3\" (change)=\"timeTypeChange()\">\n <label class=\"form-check-label\" for=\"flexRadioDefault3\">\n {{'AbpDynamicForm::Month' | abpLocalization}}\n </label>\n </div>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Min' | abpLocalization}}</label>\n <input [type]=\"dateTimeType\" class=\"form-control\" step=\"1\" formControlName=\"DateEdit.Min\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Max' | abpLocalization}}</label>\n <input [type]=\"dateTimeType\" class=\"form-control\" step=\"1\" formControlName=\"DateEdit.Max\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, ElementRef, Input, ViewChild, ChangeDetectorRef, inject, OnDestroy } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DateEditInterfaces } from '../../../enums/date-edit-interfaces';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'df-date-edit-control',\n templateUrl: './date-edit-control.component.html',\n styleUrls: ['./date-edit-control.component.scss'],\n})\nexport class DateEditControlComponent implements OnDestroy {\n constructor(private fb: FormBuilder, private cdr: ChangeDetectorRef) {}\n private _dataPipe = inject(DatePipe);\n _DateEditInterfaces = DateEditInterfaces;\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n public get entity(): any {\n return this._entity;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity.get('extraProperties') as FormGroup;\n }\n get fieldInput() {\n return this.extraProperties.get(this._fields.field.name);\n }\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n\n this.cdr.detectChanges();\n this.submitclick.nativeElement.click();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray = [];\n const formConfiguration = this._fields.field.formConfiguration;\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n if (formConfiguration['DateEdit.Min']) {\n ValidatorsArray.push(Validators.min(formConfiguration['DateEdit.Min']));\n }\n if (formConfiguration['DateEdit.Max']) {\n ValidatorsArray.push(Validators.max(formConfiguration['DateEdit.Max']));\n }\n let controlName = this._selected;\n if (this._fields.field.formConfiguration['DateEdit.InputMode'] === DateEditInterfaces.Date) {\n controlName = this._dataPipe.transform(this._selected, 'yyyy-MM-dd');\n }\n if (\n this._fields.field.formConfiguration['DateEdit.InputMode'] === DateEditInterfaces.DateTime\n ) {\n controlName = this._dataPipe.transform(this._selected, 'yyyy-MM-dd HH:mm:ss');\n }\n if (this._fields.field.formConfiguration['DateEdit.InputMode'] === DateEditInterfaces.Month) {\n controlName = this._dataPipe.transform(this._selected, 'yyyy-MM');\n }\n const newControl = this.fb.control(controlName, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div [formGroupName]=\"_parentFiledName\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n\n <ng-container *ngIf=\"_fields.field.formConfiguration['DateEdit.InputMode'] === _DateEditInterfaces.Date\">\n <input type=\"date\" class=\"form-control\" step=\"1\" formControlName=\"{{_fields.field.name}}\"\n [min]=\"_fields.field.formConfiguration['DateEdit.Min']\"\n [max]=\"_fields.field.formConfiguration['DateEdit.Max']\" />\n </ng-container>\n <ng-container\n *ngIf=\"_fields.field.formConfiguration['DateEdit.InputMode'] === _DateEditInterfaces.DateTime\">\n <input type=\"datetime-local\" #dateTime (focus)=\"dateTime.focus()\" class=\"form-control\" step=\"1\" formControlName=\"{{_fields.field.name}}\"\n [min]=\"_fields.field.formConfiguration['DateEdit.Min']\"\n [max]=\"_fields.field.formConfiguration['DateEdit.Max']\" />\n </ng-container>\n <ng-container *ngIf=\"_fields.field.formConfiguration['DateEdit.InputMode'] === _DateEditInterfaces.Month\">\n <input type=\"month\" class=\"form-control\" step=\"1\" formControlName=\"{{_fields.field.name}}\"\n [min]=\"_fields.field.formConfiguration['DateEdit.Min']\"\n [max]=\"_fields.field.formConfiguration['DateEdit.Max']\" />\n </ng-container>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-date-edit-view',\r\n templateUrl: './date-edit-view.component.html',\r\n styleUrl: './date-edit-view.component.scss',\r\n})\r\nexport class DateEditViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue|shortDateTime}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue|shortDateTime}}\r\n </div>\r\n</div>\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-numeric-edit-search',\r\n templateUrl: './numeric-edit-search.component.html',\r\n styleUrl: './numeric-edit-search.component.scss',\r\n})\r\nexport class NumericEditSearchComponent {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n /**定义动态字符 */\r\n get numberInput() {\r\n return this.extraProperties.get(this._fields.field.name) as FormControl;\r\n }\r\n /**定义number表单用于获取最小值最大值 */\r\n numberForm: FormGroup = new FormGroup({\r\n min: new FormControl(''),\r\n max: new FormControl(''),\r\n });\r\n get minInput() {\r\n return this.numberForm.get('min') as FormControl;\r\n }\r\n get maxInput() {\r\n return this.numberForm.get('max') as FormControl;\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise(resolve => {\r\n const ValidatorsArray: any[] = [];\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n\r\n const newControl = this.fb.control(this._selected, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n this.numberForm.valueChanges.subscribe(res => {\r\n if (res.min<Number(this.formConfiguration['NumericEditField.Min'])) {\r\n this.minInput.patchValue(this.formConfiguration['NumericEditField.Min']);\r\n }\r\n if (res.min>Number(this.formConfiguration['NumericEditField.Max'])) {\r\n this.minInput.patchValue(this.formConfiguration['NumericEditField.Max']);\r\n }\r\n if ((res.min>res.max)&&res.max) {\r\n this.minInput.patchValue(res.max);\r\n }\r\n if (res.max>Number(this.formConfiguration['NumericEditField.Max'])) {\r\n this.maxInput.patchValue(this.formConfiguration['NumericEditField.Max']);\r\n }\r\n if (this.numberForm.valid && res.min && res.max) {\r\n this.numberInput.patchValue(`${res.min}-${res.max}`);\r\n } else {\r\n this.numberInput.patchValue('');\r\n }\r\n });\r\n resolve(true);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n}\r\n","<form [formGroup]=\"numberForm\">\r\n <div class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <div class=\"input-group\" >\r\n <input class=\"form-control\" type=\"number\" formControlName=\"min\">\r\n <span class=\"input-group-text px-1\">-</span>\r\n <input class=\"form-control\" type=\"number\" formControlName=\"max\">\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-numeric-edit-view',\r\n templateUrl: './numeric-edit-view.component.html',\r\n styleUrl: './numeric-edit-view.component.scss',\r\n})\r\nexport class NumericEditViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { FormArray} from \"@angular/forms\";\r\n\r\nexport class SelectConfig {\r\n /**空值文本 */\r\n 'Select.NullText': any = [''];\r\n //多选\r\n 'Select.Multiple': any = [false];\r\n // 选项\r\n 'Select.Options': any = new FormArray([]) \r\n}","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfApiService {\n\n\n \n /**获取图片的本地连接 */\n getImageLacolBase64Url(file: File) {\n return new Promise((resolve, rejects) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = error => rejects(error);\n })\n }\n\n \n\n}\n","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { SelectConfig } from './select-config';\nimport { DfApiService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'df-select-config',\n\n templateUrl: './select-config.component.html',\n styleUrls: ['./select-config.component.scss'],\n})\nexport class SelectConfigComponent {\n constructor(private fb: FormBuilder, private _DfApiService: DfApiService) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity?.get('formConfiguration') as FormGroup;\n }\n get SelectOptions() {\n return this.formConfiguration.controls['Select.Options'] as FormArray;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n }\n }\n /**增加选项 */\n addSelectOptions() {\n this.SelectOptions.push(\n new FormGroup({\n Text: new FormControl('', Validators.required),\n Value: new FormControl('', Validators.required),\n Selected: new FormControl(false),\n }),\n );\n }\n /**删除某个选项 */\n deleteSelectOptions(index) {\n this.SelectOptions.removeAt(index);\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity?.setControl('formConfiguration', this.fb.group(new SelectConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this._type) {\n for (const element of this._selected.formConfiguration['Select.Options']) {\n for (const key in element) {\n const item = element[key];\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\n element[capitalizedKey] = item;\n }\n this.addSelectOptions();\n }\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n } else {\n this.addSelectOptions();\n }\n resolve(true);\n });\n }\n\n /**\n * 当选择项的文本发生变化时,更新对应的值\n * @param event 输入事件对象\n * @param index 选择项的索引位置\n * @description 如果选择项已有Value值则不处理,否则将中文文本转换为拼音作为Value值\n */\n textChange(event, index) {\n const SelectOptionsItem = this.SelectOptions.at(index);\n const value = event.target.value;\n if (SelectOptionsItem.get('Value')?.value) return;\n SelectOptionsItem.patchValue({\n Value: structuredClone(value),\n });\n }\n\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.SelectOptions.controls, event.previousIndex, event.currentIndex);\n this.SelectOptions.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" type=\"button\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\" required\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" required formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" type=\"button\" (click.stop)=\"deleteSelectOptions(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NullText' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Select.NullText\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Select.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild, OnDestroy } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'df-select-control',\n templateUrl: './select-control.component.html',\n styleUrls: ['./select-control.component.scss'],\n})\nexport class SelectControlComponent implements OnDestroy {\n constructor(private fb: FormBuilder) {}\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any=[];\n @Input()\n public set selected(v: any) {\n this._selected = v||[];\n }\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity?.get('extraProperties') as FormGroup;\n }\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n formConfiguration: any = '';\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray: any[] = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n this.formConfiguration = this._fields.field.formConfiguration;\n const isMultiple = this.formConfiguration['Select.Multiple'];\n let selectValue: any = isMultiple ? [] : [];\n for (const element of this.formConfiguration['Select.Options']) {\n for (const key in element) {\n const item = element[key];\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\n element[capitalizedKey] = item;\n }\n if (element.Selected && this._selected.length === 0) {\n selectValue = isMultiple ? [...selectValue, element.Value] : [element.Value];\n }\n }\n if (this._selected.length === 0 && selectValue.length > 0) {\n this._selected = selectValue;\n }\n // this._selected = selectValue;\n const newControl = this.fb.control(this._selected, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <ng-container *ngIf=\"formConfiguration['Select.Multiple']; else elseTemplate\">\n <nz-select class=\"form-select dignite-form-select\" [nzMaxTagCount]=\"1\"\n nzShowSearch nzMode=\"multiple\" [nzPlaceHolder]=\"_fields.field.formConfiguration['Select.NullText']\"\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\" [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\n <nz-option *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options']\"\n [nzLabel]=\"item.Text\" [nzValue]=\"item.Value\"></nz-option>\n </nz-select>\n </ng-container>\n <ng-template #elseTemplate>\n <select class=\"form-select\" [multiple]=\"false\" formControlName=\"{{_fields.field.name}}\">\n <option [value]=\"''\">{{formConfiguration['Select.NullText']}}</option>\n <ng-container *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options'];let i =index\">\n <option [value]=\"item.Value\">{{item.Text}}</option>\n </ng-container>\n </select>\n </ng-template>\n <small class=\"form-text text-muted d-block\"\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-select-search',\r\n templateUrl: './select-search.component.html',\r\n styleUrl: './select-search.component.scss',\r\n})\r\nexport class SelectSearchComponent {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n const isMultiple = this.formConfiguration['Select.Multiple'];\r\n const selectValue: any = isMultiple ? [] : [];\r\n for (const element of this.formConfiguration['Select.Options']) {\r\n for (const key in element) {\r\n const item = element[key];\r\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n element[capitalizedKey] = item;\r\n }\r\n // if (this._selected) {\r\n // if (Array.isArray(this._selected) && element.Selected && this._selected.length === 0) {\r\n // selectValue = isMultiple ? [...selectValue, element.Value] : [element.Value];\r\n // }\r\n // }\r\n }\r\n this._selected = selectValue;\r\n const newControl = this.fb.control(this._selected, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n changeValue(event) {\r\n const selectvalue = this.extraProperties.get(this._fields.field.name).value;\r\n if (selectvalue[0] === '') {\r\n this.extraProperties.get(this._fields.field.name).setValue([]);\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <ng-container *ngIf=\"formConfiguration['Select.Multiple']; else elseTemplate\">\r\n <nz-select class=\"form-select dignite-form-select\" [nzMaxTagCount]=\"1\"\r\n nzShowSearch nzMode=\"multiple\" [nzPlaceHolder]=\"_fields.field.formConfiguration['Select.NullText']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\" [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options']\"\r\n [nzLabel]=\"item.Text\" [nzValue]=\"item.Value\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <select class=\"form-select\" [multiple]=\"false\" [placeholder]=\"formConfiguration['Select.NullText']\" formControlName=\"{{_fields.field.name}}\" (change)=\"changeValue($event)\">\r\n <option [value]=\"''\">{{formConfiguration['Select.NullText']}}</option>\r\n <ng-container *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options'];let i =index\">\r\n <option [value]=\"item.Value\">{{item.Text}}</option>\r\n </ng-container>\r\n </select>\r\n </ng-template>\r\n <!-- <small class=\"form-text text-muted d-block\"\r\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small> -->\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-select-view',\r\n templateUrl: './select-view.component.html',\r\n styleUrl: './select-view.component.scss',\r\n})\r\nexport class SelectViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n \r\n if (this.type && valueOptions) {\r\n const options = this.fields?.field?.formConfiguration?.['Select.Options'] || [];\r\n const getTextByValue = (val: any) => {\r\n const option = options.find((opt: any) => opt.value === val || opt.Value === val);\r\n return option?.text || option?.Text || val;\r\n };\r\n \r\n if (Array.isArray(valueOptions)) {\r\n this.showValue = valueOptions.map(getTextByValue).join(',');\r\n } else {\r\n this.showValue = getTextByValue(valueOptions);\r\n }\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { FormArray, Validators} from \"@angular/forms\";\r\n\r\nexport class TreeConfig {\r\n //是否多选\r\n 'TreeView.Multiple': any = [false];\r\n // 选项\r\n 'TreeView.Nodes': any = new FormArray([]);\r\n}\r\nexport class TreeitemConfig {\r\n //文本\r\n 'Text': any = ['', [Validators.required]];\r\n //值\r\n 'Value': any = ['', [Validators.required]];\r\n //是否选中\r\n 'Selected': any = [false];\r\n //子项\r\n 'Children': any = new FormArray([]);\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n ViewChild,\r\n AfterViewChecked,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormArray,\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { TreeConfig } from './tree-config';\r\nimport { ToPinyinService } from '@dignite-ng/expand.core';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'df-tree-config',\r\n templateUrl: './tree-config.component.html',\r\n styleUrls: ['./tree-config.component.scss'],\r\n})\r\nexport class TreeConfigComponent implements AfterViewChecked {\r\n constructor(private fb: FormBuilder, private toPinyinService: ToPinyinService) {}\r\n /**表单控件类型 */\r\n _type: any;\r\n @Input()\r\n public set type(v: any) {\r\n this._type = v;\r\n }\r\n\r\n /**选择的表单信息 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n formEntity: FormGroup | undefined;\r\n @Input()\r\n public set Entity(v: FormGroup) {\r\n this.formEntity = v;\r\n this.dataLoaded();\r\n }\r\n get formConfiguration() {\r\n return this.formEntity?.get('formConfiguration') as FormGroup;\r\n }\r\n get TreeOptions() {\r\n return this.formConfiguration?.controls['TreeView.Nodes'] as FormArray;\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n private cdr = inject(ChangeDetectorRef);\r\n async dataLoaded() {\r\n if (this.formEntity && this._type) {\r\n await this.AfterInit();\r\n }\r\n }\r\n\r\n AfterInit() {\r\n return new Promise(resolve => {\r\n this.formEntity?.setControl('formConfiguration', this.fb.group(new TreeConfig()));\r\n this.TreeOptions?.setValidators([Validators.required, Validators.minLength(1)]);\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n if (this._selected && this._selected.formControlName == this._type) {\r\n const treeNodes = this._selected.formConfiguration['TreeView.Nodes'];\r\n if (treeNodes?.length) {\r\n this.nodes = this.convertTreeOptionsToNodes(treeNodes);\r\n }\r\n\r\n this.syncTreeOptionsFromNodes();\r\n // for (const element of this._selected.formConfiguration['TreeView.Nodes']) {\r\n // for (const key in element) {\r\n // const item = element[key];\r\n // const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n // element[capitalizedKey] = item;\r\n // }\r\n // this.addTreeOptions();\r\n // }\r\n this.formConfiguration.patchValue({\r\n ...this._selected.formConfiguration,\r\n });\r\n } else {\r\n // this.addTreeOptions();\r\n }\r\n resolve(true);\r\n });\r\n }\r\n\r\n /**\r\n * 当选择项的文本发生变化时,更新对应的值\r\n * @param event 输入事件对象\r\n * @param index 选择项的索引位置\r\n * @description 如果选择项已有Value值则不处理,否则将中文文本转换为拼音作为Value值\r\n */\r\n // textChange(event, index) {\r\n // const TreeOptionsItem = this.TreeOptions.at(index);\r\n // const value = event.target.value;\r\n // if (TreeOptionsItem.get('Value')?.value) return;\r\n // TreeOptionsItem.patchValue({\r\n // Value: structuredClone(value),\r\n // });\r\n // }\r\n /**字段标签input失去标点生成字段名字 */\r\n disPlayNameInputBlur(event) {\r\n if (!this.nodeForm) return;\r\n const value = event.target.value;\r\n const pinyin = this.toPinyinService.get(value);\r\n const nameInput = this.nodeForm.get('key');\r\n if (!nameInput || nameInput.value) return;\r\n nameInput.patchValue(pinyin);\r\n }\r\n\r\n /**调整表格位置 */\r\n // drop(event: any) {\r\n // moveItemInArray(this.TreeOptions.controls, event.previousIndex, event.currentIndex);\r\n // this.TreeOptions.updateValueAndValidity();\r\n // }\r\n\r\n /**tree数据 */\r\n nodes: any[] = [];\r\n\r\n /**已展开的节点 */\r\n anExpandedNode: any[] = [];\r\n\r\n /**是否全部展开 */\r\n isAllExpanded = false;\r\n\r\n /**点击展开树节点图标触发 */\r\n nzExpandChange(event: any) {\r\n let anExpandedNode = this.anExpandedNode;\r\n if (anExpandedNode.includes(event.node.key)) {\r\n anExpandedNode = anExpandedNode.filter(key => key !== event.node.key);\r\n } else {\r\n anExpandedNode.push(event.node.key);\r\n }\r\n this.anExpandedNode = anExpandedNode;\r\n\r\n // 检查是否所有有子节点的节点都已展开\r\n // const allKeys = this.getAllNodeKeys(this.nodes);\r\n this.isAllExpanded = anExpandedNode.length > 0;\r\n }\r\n\r\n /**切换展开/收缩所有节点 */\r\n toggleExpandAll() {\r\n this.isAllExpanded = !this.isAllExpanded;\r\n this.anExpandedNode = this.isAllExpanded ? this.getAllNodeKeys(this.nodes) : [];\r\n if (!this.isAllExpanded) {\r\n this.nodes = [...this.setExpanded(this.nodes, false)];\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n //递归设置nodes中的expanded值 并且返回一个数组\r\n setExpanded(nodes: any[], expanded: boolean): string[] {\r\n for (const node of nodes) {\r\n node.expanded = expanded;\r\n if (node.children?.length) {\r\n node.children = this.setExpanded(node.children, expanded);\r\n }\r\n }\r\n return nodes;\r\n }\r\n\r\n /**获取所有有子节点的节点的key */\r\n private getAllNodeKeys(nodes: any[]): string[] {\r\n const keys: string[] = [];\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n keys.push(node.key);\r\n keys.push(...this.getAllNodeKeys(node.children));\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**检查是否有任何节点包含子节点 */\r\n hasAnyNodeWithChildren(): boolean {\r\n return this.getAllNodeKeys(this.nodes).length > 0;\r\n }\r\n\r\n /**更新展开状态 */\r\n private updateExpandedState() {\r\n const allKeys = this.getAllNodeKeys(this.nodes);\r\n this.isAllExpanded =\r\n allKeys.length > 0 && allKeys.every(key => this.anExpandedNode.includes(key));\r\n }\r\n /**正在操作的节点项 */\r\n selectTree: any;\r\n /**是否创建子节点 */\r\n isCreateChild: boolean | any = false;\r\n /**模态框状态 */\r\n isVisible: boolean | any = false;\r\n\r\n /**用于确定模态的繁忙状态是否为真 */\r\n modalBusy: boolean | any = false;\r\n /**创建表单 */\r\n nodeForm: FormGroup | undefined;\r\n\r\n /**表单控件模板-动态赋值表单控件 */\r\n @ViewChild('nodeModalSubmit', { static: false }) nodeModalSubmit: ElementRef;\r\n\r\n /**生成GUID */\r\n private generateGuid(): string {\r\n return crypto.randomUUID();\r\n }\r\n get keyInput() {\r\n return this.nodeForm?.get('key') as FormControl;\r\n }\r\n private _LocalizationService = inject(LocalizationService);\r\n /**\r\n * 验证器:检查字符串格式和唯一性\r\n * @description 格式只允许字母、数字、下划线和短横线,且值在树中必须唯一\r\n */\r\n keyValidator() {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const regex = /^[a-zA-Z0-9_-]+$/;\r\n if (control.value && !regex.test(control.value)) {\r\n return { repetition: this._LocalizationService.instant(`Cms::SlugValidatorsText`) };\r\n }\r\n // 检查唯一性\r\n if (control.value && this.isKeyExists(control.value)) {\r\n return { repetition: this._LocalizationService.instant(`Cms::ValueAlreadyExis`) };\r\n }\r\n return null;\r\n };\r\n }\r\n /**\r\n * 检查 key 是否在树中已存在\r\n * @param key 要检查的 key 值\r\n * @returns 如果存在返回 true,否则返回 false\r\n */\r\n private isKeyExists(key: string): boolean {\r\n const currentKey = this.selectTree?.key;\r\n return this.findKeyInNodes(this.nodes, key, currentKey);\r\n }\r\n\r\n /**\r\n * 递归查找 key 是否存在于节点中\r\n * @param nodes 节点数组\r\n * @param targetKey 要查找的 key\r\n * @param excludeKey 要排除的 key(编辑时排除当前节点)\r\n * @returns 如果找到返回 true,否则返回 false\r\n */\r\n private findKeyInNodes(nodes: any[], targetKey: string, excludeKey?: string): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey && node.key !== excludeKey) {\r\n return true;\r\n }\r\n if (node.children?.length && this.findKeyInNodes(node.children, targetKey, excludeKey)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**创建节点 */\r\n addNodeBtn() {\r\n this.isVisible = true;\r\n this.isCreateChild = false;\r\n this.selectTree = null;\r\n this.nodeForm = this.fb.group({\r\n title: ['', Validators.required],\r\n key: ['', [Validators.required, this.keyValidator()]],\r\n isChecked: [false],\r\n children: new FormArray([]),\r\n });\r\n }\r\n /**编辑节点 */\r\n editItemBtn(node: any) {\r\n this.isVisible = true;\r\n this.isCreateChild = false;\r\n this.selectTree = node;\r\n this.nodeForm = this.fb.group({\r\n title: [node.title, Validators.required],\r\n key: [node.key, [Validators.required, this.keyValidator()]],\r\n isChecked: [node.origin?.isChecked ?? false],\r\n children: new FormArray([]),\r\n });\r\n }\r\n /**创建子节点 */\r\n createChildItemBtn(node: any) {\r\n this.isVisible = true;\r\n this.isCreateChild = true;\r\n this.selectTree = node;\r\n this.nodeForm = this.fb.group({\r\n title: ['', Validators.required],\r\n key: ['', [Validators.required, this.keyValidator()]],\r\n isChecked: [false],\r\n children: new FormArray([]),\r\n });\r\n }\r\n /**重置模态框 */\r\n resetModal() {\r\n this.isVisible = false;\r\n this.isCreateChild = false;\r\n this.selectTree = null;\r\n }\r\n /**创建编辑保存 */\r\n createOrEditSave() {\r\n const { value } = this.nodeForm;\r\n const { selectTree, isCreateChild, nodes, anExpandedNode } = this;\r\n const isMultiple = this.formConfiguration.controls['TreeView.Multiple'] as FormControl;\r\n\r\n if (selectTree) {\r\n if (isCreateChild) {\r\n // 创建子节点\r\n this.addChildNode(nodes, selectTree.key, value);\r\n // 自动展开父节点\r\n if (!anExpandedNode.includes(selectTree.key)) {\r\n this.anExpandedNode = [...anExpandedNode, selectTree.key];\r\n }\r\n } else {\r\n // 编辑节点\r\n this.updateNodeByReference(selectTree.origin, value);\r\n }\r\n } else {\r\n // 创建根节点\r\n nodes.push(value);\r\n }\r\n\r\n // 单选模式下,如果当前节点被选中,清除其他节点的选中状态\r\n if (!isMultiple.value && value.isChecked) {\r\n this.clearAllChecked(nodes);\r\n this.setNodeCheckedOnly(nodes, value.key, true);\r\n }\r\n\r\n this.nodes = [...nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.updateExpandedState();\r\n this.cdr.detectChanges();\r\n this.resetModal();\r\n }\r\n\r\n /**递归添加子节点 */\r\n private addChildNode(nodes: any[], parentKey: string, newNode: any): boolean {\r\n for (const node of nodes) {\r\n if (node.key === parentKey) {\r\n if (!node.children) node.children = [];\r\n node.children.push(newNode);\r\n return true;\r\n }\r\n if (node.children?.length && this.addChildNode(node.children, parentKey, newNode)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**通过引用更新节点 */\r\n private updateNodeByReference(node: any, updatedData: any): void {\r\n node.title = updatedData.title;\r\n node.key = updatedData.key;\r\n node.isChecked = updatedData.isChecked;\r\n }\r\n\r\n /**删除节点 */\r\n deleteMenuItemBtn(node: any) {\r\n this.deleteNode(this.nodes, node.key);\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.updateExpandedState();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**递归删除节点 */\r\n private deleteNode(nodes: any[], targetKey: string): boolean {\r\n for (let i = 0; i < nodes.length; i++) {\r\n if (nodes[i].key === targetKey) {\r\n nodes.splice(i, 1);\r\n return true;\r\n }\r\n if (nodes[i].children?.length && this.deleteNode(nodes[i].children, targetKey)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**同步 nodes 到 TreeOptions */\r\n private syncTreeOptionsFromNodes() {\r\n this.TreeOptions.clear();\r\n const cleanedNodes = this.nodes.map(node => this.cleanNode(node));\r\n cleanedNodes.forEach(node => {\r\n this.TreeOptions.push(this.createTreeFormGroup(node));\r\n });\r\n }\r\n\r\n /**递归创建树表单组 */\r\n private createTreeFormGroup(node: any): FormGroup {\r\n const children = new FormArray([]);\r\n if (node.children?.length) {\r\n node.children.forEach(child => {\r\n children.push(this.createTreeFormGroup(child));\r\n });\r\n }\r\n return this.fb.group({\r\n Text: [node.title || '', Validators.required],\r\n Value: [node.key || '', Validators.required],\r\n Selected: [node.isChecked ?? false],\r\n Children: children,\r\n });\r\n }\r\n\r\n /**清理节点中的 ng-zorro 内部字段 */\r\n private cleanNode(node: any): any {\r\n const { title, key, isChecked, children } = node;\r\n return {\r\n title,\r\n key,\r\n isChecked,\r\n children: children?.length ? children.map(child => this.cleanNode(child)) : [],\r\n };\r\n }\r\n\r\n /**将 TreeOptions 数据结构转换为 nodes 数据结构 */\r\n private convertTreeOptionsToNodes(treeOptions: any[]): any[] {\r\n const result = [];\r\n for (const option of treeOptions) {\r\n result.push({\r\n title: option.Text,\r\n key: option.Value,\r\n isChecked: option.Selected ?? false,\r\n children: option.Children?.length ? this.convertTreeOptionsToNodes(option.Children) : [],\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n /**设置 */\r\n toggleMultiple(event: any) {\r\n this.clearAllChecked(this.nodes);\r\n return;\r\n const isMultiple = this.formConfiguration.controls['TreeView.Multiple'] as FormControl;\r\n if (!isMultiple.value) {\r\n this.clearAllChecked(this.nodes);\r\n } else {\r\n this.applyMultipleLogic(this.nodes);\r\n }\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**应用多选逻辑:选中的节点同时选中其所有子节点和父节点 */\r\n private applyMultipleLogic(nodes: any[]) {\r\n const checkedKeys: string[] = [];\r\n this.collectCheckedKeys(nodes, checkedKeys);\r\n checkedKeys.forEach(key => {\r\n this.setNodeChecked(nodes, key, true);\r\n this.setParentNodesChecked(nodes, key);\r\n });\r\n }\r\n\r\n /**收集所有选中节点的key */\r\n private collectCheckedKeys(nodes: any[], result: string[]) {\r\n for (const node of nodes) {\r\n if (node.isChecked) {\r\n result.push(node.key);\r\n }\r\n if (node.children?.length) {\r\n this.collectCheckedKeys(node.children, result);\r\n }\r\n }\r\n }\r\n\r\n /**切换节点选中状态 */\r\n toggleNodeChecked(event: any, node: any) {\r\n event.stopPropagation();\r\n const isMultiple = this.formConfiguration.controls['TreeView.Multiple'] as FormControl;\r\n const newChecked = !node.origin?.isChecked;\r\n\r\n if (!isMultiple.value) {\r\n this.clearAllChecked(this.nodes);\r\n if (newChecked) {\r\n this.setNodeCheckedOnly(this.nodes, node.key, true);\r\n }\r\n } else {\r\n this.setNodeChecked(this.nodes, node.key, newChecked);\r\n if (newChecked) {\r\n this.setParentNodesChecked(this.nodes, node.key);\r\n }\r\n }\r\n\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**清除所有节点的选中状态 */\r\n private clearAllChecked(nodes: any[]) {\r\n for (const node of nodes) {\r\n node.isChecked = false;\r\n if (node.children?.length) {\r\n this.clearAllChecked(node.children);\r\n }\r\n }\r\n }\r\n\r\n /**设置指定节点的选中状态 */\r\n private setNodeChecked(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n if (node.children?.length) {\r\n this.setChildrenChecked(node.children, checked);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeChecked(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**递归设置所有子节点的选中状态 */\r\n private setChildrenChecked(children: any[], checked: boolean) {\r\n for (const child of children) {\r\n child.isChecked = checked;\r\n if (child.children?.length) {\r\n this.setChildrenChecked(child.children, checked);\r\n }\r\n }\r\n }\r\n\r\n /**选中所有父节点 */\r\n private setParentNodesChecked(nodes: any[], targetKey: string, parent: any = null): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n if (parent) {\r\n parent.isChecked = true;\r\n this.setParentNodesChecked(this.nodes, parent.key);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setParentNodesChecked(node.children, targetKey, node)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**仅设置指定节点的选中状态,不影响子节点和父节点 */\r\n private setNodeCheckedOnly(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeCheckedOnly(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**拖拽 */\r\n dropOver(event: any) {\r\n const dragNode = event.dragNode;\r\n const targetNode = event.node;\r\n const pos = event.pos;\r\n\r\n // 移除被拖拽的节点\r\n const draggedData = this.removeNodeByKey(this.nodes, dragNode.key);\r\n if (!draggedData) return;\r\n\r\n // pos: 0=内部, -1=上方, 1=下方\r\n if (pos === 0) {\r\n // 放入目标节点内部作为子节点\r\n this.addChildNode(this.nodes, targetNode.key, draggedData);\r\n if (!this.anExpandedNode.includes(targetNode.key)) {\r\n this.anExpandedNode = [...this.anExpandedNode, targetNode.key];\r\n }\r\n } else {\r\n // 放在目标节点前后\r\n this.insertNodeBeside(this.nodes, targetNode.key, draggedData, pos);\r\n }\r\n\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**移除并返回节点 */\r\n private removeNodeByKey(\r\n nodes: any[],\r\n targetKey: string,\r\n parent: any[] = null,\r\n index: number = -1\r\n ): any {\r\n for (let i = 0; i < nodes.length; i++) {\r\n if (nodes[i].key === targetKey) {\r\n return nodes.splice(i, 1)[0];\r\n }\r\n if (nodes[i].children?.length) {\r\n const found = this.removeNodeByKey(nodes[i].children, targetKey, nodes[i].children, i);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**在目标节点旁边插入节点 */\r\n private insertNodeBeside(\r\n nodes: any[],\r\n targetKey: string,\r\n newNode: any,\r\n position: number\r\n ): boolean {\r\n for (let i = 0; i < nodes.length; i++) {\r\n if (nodes[i].key === targetKey) {\r\n const insertIndex = position === -1 ? i : i + 1;\r\n nodes.splice(insertIndex, 0, newNode);\r\n return true;\r\n }\r\n if (\r\n nodes[i].children?.length &&\r\n this.insertNodeBeside(nodes[i].children, targetKey, newNode, position)\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**判断节点的子节点是否有被选中的 */\r\n hasChildrenChecked(node: any): boolean {\r\n if (node.origin?.isChecked) {\r\n return false;\r\n }\r\n const originNode = this.findNodeByKey(this.nodes, node.key);\r\n if (!originNode?.children?.length) {\r\n return false;\r\n }\r\n return this.hasAnyChildChecked(originNode.children);\r\n }\r\n\r\n /**递归检查子节点是否有被选中的 */\r\n private hasAnyChildChecked(children: any[]): boolean {\r\n for (const child of children) {\r\n if (child.isChecked) {\r\n return true;\r\n }\r\n if (child.children?.length && this.hasAnyChildChecked(child.children)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**根据 key 查找节点 */\r\n private findNodeByKey(nodes: any[], key: string): any {\r\n for (const node of nodes) {\r\n if (node.key === key) {\r\n return node;\r\n }\r\n if (node.children?.length) {\r\n const found = this.findNodeByKey(node.children, key);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const checkboxes = document.querySelectorAll('input[type=\"checkbox\"][data-indeterminate]');\r\n checkboxes.forEach((checkbox: HTMLInputElement) => {\r\n const indeterminate = checkbox.getAttribute('data-indeterminate') === 'true';\r\n checkbox.indeterminate = indeterminate;\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"formEntity\">\r\n <div formGroupName=\"formConfiguration\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label \">{{'AbpDynamicForm::Nodes' | abpLocalization}}</label>\r\n <button *ngIf=\"hasAnyNodeWithChildren()\" class=\"btn btn-sm btn-light ms-2\"\r\n style=\"--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;\" type=\"button\"\r\n (click.stop)=\"toggleExpandAll()\">\r\n <i class=\"fa\" [ngClass]=\"isAllExpanded ? 'fa-compress' : 'fa-expand'\"></i>\r\n </button>\r\n <button class=\"btn btn-sm btn-dark soft ms-2 float-end\" type=\"button\"\r\n (click.stop)=\"addNodeBtn()\">{{'AbpDynamicForm::AddNode' |\r\n abpLocalization}}</button>\r\n <div class=\"border p-2 rounded-2 mt-2\">\r\n @if (nodes.length>0) {\r\n <abp-tree class=\"mb-2\" [nodes]=\"nodes\" [checkable]=\"false\" (dropOver)=\"dropOver($event)\"\r\n (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\" [draggable]=\"true\">\r\n <ng-template #menu let-node>\r\n <button ngbDropdownItem (click.stop)=\"editItemBtn(node)\"><i\r\n class=\" me-1 fa fa-pencil\"></i>{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"createChildItemBtn(node)\"><i\r\n class=\" me-1 fa fa-plus\"></i>{{'AbpDynamicForm::AddSubNode' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"deleteMenuItemBtn(node)\"><i\r\n class=\" me-1 fa fa-remove\"></i>{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </ng-template>\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n }\r\n <div *ngIf=\"nodes.length === 0\" class=\"text-muted \">{{'AbpDynamicForm::PleaseAddNode' |\r\n abpLocalization}}</div>\r\n </div>\r\n <div *ngIf=\"TreeOptions?.errors?.required\" class=\"invalid-feedback \">\r\n {{'AbpValidation::ThisFieldIsRequired.' | abpLocalization: 'Nodes'}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMultiple($event)\"\r\n formControlName=\"TreeView.Multiple\" id=\"Multiple\">\r\n <label class=\"form-check-label\" for=\"Multiple\">\r\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\r\n #submitclick></button>\r\n </div>\r\n</form>\r\n\r\n\r\n<!-- [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\" (visibleChange)=\"tableSelectVisibleChange($event)\"-->\r\n<abp-modal [(visible)]=\"isVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{isCreateChild ? ('AbpDynamicForm::AddSubNode' | abpLocalization) : (selectTree ? ('AbpUi::Edit' |\r\n abpLocalization) : ('Cms::New' | abpLocalization))}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"nodeForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"nodeForm\" (submit)=\"createOrEditSave()\">\r\n <button type=\"submit\" #nodeModalSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::NodeItemText' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"\"\r\n (blur)=\"disPlayNameInputBlur($event)\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemValue' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"key\" [placeholder]=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"keyInput?.errors?.repetition\">\r\n {{keyInput?.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"isChecked\" id=\"isSelected\">\r\n <label class=\"form-check-label\" for=\"isSelected\">\r\n {{'AbpDynamicForm::Selected' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!nodeForm.valid\"\r\n (abpClick)=\"nodeModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\r\n abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-tree-control',\r\n templateUrl: './tree-control.component.html',\r\n styleUrls: ['./tree-control.component.scss'],\r\n})\r\nexport class TreeControlComponent implements OnDestroy, AfterViewChecked {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any=[];\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v||[];\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n if (this._fields.required) {\r\n ValidatorsArray.push(Validators.required);\r\n }\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n const treeNodes = this.formConfiguration['TreeView.Nodes'];\r\n if (treeNodes?.length) {\r\n this.nodes = this.convertTreeOptionsToNodes(treeNodes);\r\n }\r\n \r\n // 如果没有预设值,从节点中获取默认选中的值\r\n if (!this._selected || this._selected.length === 0) {\r\n this._selected = this.getSelectedKeys(this.nodes);\r\n } else {\r\n // 有预设值时,同步更新 nodes 的选中状态\r\n this.syncNodesFromSelectedKeys(this._selected);\r\n }\r\n \r\n const newControl = this.fb.control(this._selected, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n\r\n /**将 TreeOptions 数据结构转换为 nodes 数据结构 */\r\n private convertTreeOptionsToNodes(treeOptions: any[]): any[] {\r\n const result = [];\r\n for (const option of treeOptions) {\r\n result.push({\r\n title: option.Text,\r\n key: option.Value,\r\n isChecked: option.Selected ?? false,\r\n children: option.Children?.length ? this.convertTreeOptionsToNodes(option.Children) : [],\r\n });\r\n }\r\n return result;\r\n }\r\n ngOnDestroy(): void {\r\n if (this.extraProperties && this._fields?.field?.name) {\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n }\r\n\r\n /**tree数据 */\r\n nodes: any[] = [];\r\n\r\n /**已展开的节点 */\r\n anExpandedNode: any[] = [];\r\n\r\n /**是否全部展开 */\r\n isAllExpanded = false;\r\n\r\n /**点击展开树节点图标触发 */\r\n nzExpandChange(event: any) {\r\n let anExpandedNode = this.anExpandedNode;\r\n if (anExpandedNode.includes(event.node.key)) {\r\n anExpandedNode = anExpandedNode.filter(key => key !== event.node.key);\r\n } else {\r\n anExpandedNode.push(event.node.key);\r\n }\r\n this.anExpandedNode = anExpandedNode;\r\n \r\n // 检查是否所有有子节点的节点都已展开\r\n const allKeys = this.getAllNodeKeys(this.nodes);\r\n this.isAllExpanded = allKeys.length > 0 && allKeys.every(key => anExpandedNode.includes(key));\r\n }\r\n\r\n /**切换展开/收缩所有节点 */\r\n toggleExpandAll() {\r\n this.isAllExpanded = !this.isAllExpanded;\r\n this.anExpandedNode = this.isAllExpanded ? this.getAllNodeKeys(this.nodes) : [];\r\n if (!this.isAllExpanded) {\r\n this.nodes = [...this.setExpanded(this.nodes, false)];\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**递归设置nodes中的expanded值 并且返回一个数组 */\r\n private setExpanded(nodes: any[], expanded: boolean): any[] {\r\n for (const node of nodes) {\r\n node.expanded = expanded;\r\n if (node.children?.length) {\r\n node.children = this.setExpanded(node.children, expanded);\r\n }\r\n }\r\n return nodes;\r\n }\r\n\r\n /**获取所有有子节点的节点的key */\r\n private getAllNodeKeys(nodes: any[]): string[] {\r\n const keys: string[] = [];\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n keys.push(node.key);\r\n keys.push(...this.getAllNodeKeys(node.children));\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**检查是否有任何节点包含子节点 */\r\n hasAnyNodeWithChildren(): boolean {\r\n return this.getAllNodeKeys(this.nodes).length > 0;\r\n }\r\n\r\n /**切换节点选中状态 */\r\n toggleNodeChecked(event: any, node: any) {\r\n event.stopPropagation();\r\n const isMultiple = this.formConfiguration['TreeView.Multiple'];\r\n const newChecked = !node.origin?.isChecked;\r\n \r\n if (!isMultiple) {\r\n this.clearAllChecked(this.nodes);\r\n if (newChecked) {\r\n this.setNodeCheckedOnly(this.nodes, node.key, true);\r\n }\r\n } else {\r\n this.setNodeChecked(this.nodes, node.key, newChecked);\r\n if (newChecked) {\r\n this.setParentNodesChecked(this.nodes, node.key);\r\n }\r\n }\r\n \r\n this.nodes = [...this.nodes];\r\n this.updateFormValue();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**清除所有节点的选中状态 */\r\n private clearAllChecked(nodes: any[]) {\r\n for (const node of nodes) {\r\n node.isChecked = false;\r\n if (node.children?.length) {\r\n this.clearAllChecked(node.children);\r\n }\r\n }\r\n }\r\n\r\n /**设置指定节点的选中状态 */\r\n private setNodeChecked(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n if (node.children?.length) {\r\n this.setChildrenChecked(node.children, checked);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeChecked(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**递归设置所有子节点的选中状态 */\r\n private setChildrenChecked(children: any[], checked: boolean) {\r\n for (const child of children) {\r\n child.isChecked = checked;\r\n if (child.children?.length) {\r\n this.setChildrenChecked(child.children, checked);\r\n }\r\n }\r\n }\r\n\r\n /**选中所有父节点 */\r\n private setParentNodesChecked(nodes: any[], targetKey: string, parent: any = null): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n if (parent) {\r\n parent.isChecked = true;\r\n this.setParentNodesChecked(this.nodes, parent.key);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setParentNodesChecked(node.children, targetKey, node)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**更新表单值 */\r\n private updateFormValue() {\r\n const selectedKeys = this.getSelectedKeys(this.nodes);\r\n const control = this.extraProperties.get(this._fields.field.name);\r\n control?.setValue(selectedKeys);\r\n }\r\n\r\n /**获取所有选中节点的 key */\r\n private getSelectedKeys(nodes: any[]): string[] {\r\n const keys = [];\r\n for (const node of nodes) {\r\n if (node.isChecked) {\r\n keys.push(node.key);\r\n }\r\n if (node.children?.length) {\r\n keys.push(...this.getSelectedKeys(node.children));\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**判断节点的子节点是否有被选中的 */\r\n hasChildrenChecked(node: any): boolean {\r\n if (node.origin?.isChecked) {\r\n return false;\r\n }\r\n const originNode = this.findNodeByKey(this.nodes, node.key);\r\n if (!originNode?.children?.length) {\r\n return false;\r\n }\r\n return this.hasAnyChildChecked(originNode.children);\r\n }\r\n\r\n /**递归检查子节点是否有被选中的 */\r\n private hasAnyChildChecked(children: any[]): boolean {\r\n for (const child of children) {\r\n if (child.isChecked) {\r\n return true;\r\n }\r\n if (child.children?.length && this.hasAnyChildChecked(child.children)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**根据 key 查找节点 */\r\n private findNodeByKey(nodes: any[], key: string): any {\r\n for (const node of nodes) {\r\n if (node.key === key) {\r\n return node;\r\n }\r\n if (node.children?.length) {\r\n const found = this.findNodeByKey(node.children, key);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**根据预设的 keys 同步更新 nodes 的选中状态 */\r\n private syncNodesFromSelectedKeys(selectedKeys: string[]) {\r\n this.clearAllChecked(this.nodes);\r\n for (const key of selectedKeys) {\r\n this.setNodeCheckedOnly(this.nodes, key, true);\r\n }\r\n }\r\n\r\n /**仅设置指定节点的选中状态,不影响子节点和父节点 */\r\n private setNodeCheckedOnly(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeCheckedOnly(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const checkboxes = document.querySelectorAll('input[type=\"checkbox\"][data-indeterminate]');\r\n checkboxes.forEach((checkbox: HTMLInputElement) => {\r\n const indeterminate = checkbox.getAttribute('data-indeterminate') === 'true';\r\n checkbox.indeterminate = indeterminate;\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <button *ngIf=\"hasAnyNodeWithChildren()\" class=\"btn btn-sm btn-light ms-2\"\r\n style=\"--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;\" type=\"button\"\r\n (click.stop)=\"toggleExpandAll()\">\r\n <i class=\"fa\" [ngClass]=\"isAllExpanded ? 'fa-compress' : 'fa-expand'\"></i>\r\n </button>\r\n <div class=\"border p-2 rounded-2 mt-2\">\r\n <abp-tree [nodes]=\"nodes\" (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\">\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input #checkbox type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, OnDestroy, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-tree-search',\r\n templateUrl: './tree-search.component.html',\r\n styleUrls: ['./tree-search.component.scss'],\r\n host: { 'class': 'df-tree-search-component' }\r\n})\r\nexport class TreeSearchComponent implements OnDestroy {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n const isMultiple = this.formConfiguration['TreeView.Multiple'];\r\n const selectValue: any = isMultiple ? [] : null;\r\n \r\n const treeOptions = this.formConfiguration['TreeView.Nodes'];\r\n if (treeOptions?.length) {\r\n this.nodes = this.convertTreeOptionsToNodes(treeOptions);\r\n }\r\n \r\n const initialValue = this._selected !== undefined ? this._selected : selectValue;\r\n const newControl = this.fb.control(initialValue, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n \r\n private convertTreeOptionsToNodes(treeOptions: any[]): any[] {\r\n return treeOptions.map(option => ({\r\n title: option.Text,\r\n key: option.Value,\r\n isLeaf: !option.Children?.length,\r\n children: option.Children?.length ? this.convertTreeOptionsToNodes(option.Children) : []\r\n }));\r\n }\r\n changeValue(event) {\r\n const selectvalue = this.extraProperties.get(this._fields.field.name).value;\r\n if (selectvalue[0] === '') {\r\n this.extraProperties.get(this._fields.field.name).setValue([]);\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.extraProperties && this._fields?.field?.name) {\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n }\r\n\r\n\r\n nodes: any[] = [];\r\n\r\n onChange($event: string[]): void {\r\n console.log($event);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <nz-tree-select class=\"form-select dignite-form-tree-select \" [nzMaxTagCount]=\"1\"\r\n nzShowSearch [nzMultiple]=\"_fields?.field?.formConfiguration?.['TreeView.Multiple'] || false\" \r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\" \r\n [nzDropdownClassName]=\"'dignite-form-tree-select-dropdown'\" [nzNodes]=\"nodes\" \r\n nzDefaultExpandAll (ngModelChange)=\"onChange($event)\"></nz-tree-select>\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-tree-view',\r\n templateUrl: './tree-view.component.html',\r\n styleUrls: ['./tree-view.component.scss'],\r\n})\r\nexport class TreeViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n const valueOptions = this._value;\r\n \r\n if (this.type && valueOptions !== null && valueOptions !== undefined) {\r\n const nodes = this.fields?.field?.formConfiguration?.['TreeView.Nodes'] || [];\r\n const findNodeByValue = (nodeList: any[], val: any): any => {\r\n for (const node of nodeList) {\r\n if (node.value === val || node.Value === val) return node;\r\n if (node.children || node.Children) {\r\n const found = findNodeByValue(node.children || node.Children, val);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n const getTextByValue = (val: any) => {\r\n const node = findNodeByValue(nodes, val);\r\n return node?.text || node?.Text || val;\r\n };\r\n \r\n if (Array.isArray(valueOptions)) {\r\n this.showValue = valueOptions.map(getTextByValue).join(',');\r\n } else {\r\n this.showValue = getTextByValue(valueOptions);\r\n }\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { FieldControlGroupInterfaces } from '../../interfaces';\r\n// import { CkEditorConfigComponent, CkEditorControlComponent } from \"./ck-editor\";\r\nimport { DateEditConfigComponent } from './date-edit/date-edit-config.component';\r\nimport { DateEditControlComponent } from './date-edit/date-edit-control.component';\r\nimport { DateEditViewComponent } from './date-edit/date-edit-view.component';\r\nimport { NumbericEditConfigComponent } from './numeric-edit/numberic-edit-config.component';\r\nimport { NumbericEditControlComponent } from './numeric-edit/numberic-edit-control.component';\r\nimport { NumericEditSearchComponent } from './numeric-edit/numeric-edit-search.component';\r\nimport { NumericEditViewComponent } from './numeric-edit/numeric-edit-view.component';\r\nimport { SelectConfigComponent, SelectControlComponent, SelectSearchComponent } from './select';\r\nimport { SelectViewComponent } from './select/select-view.component';\r\nimport { SwitchConfigComponent, SwitchControlComponent } from './switch';\r\nimport { SwitchSearchComponent } from './switch/switch-search.component';\r\nimport { SwitchViewComponent } from './switch/switch-view.component';\r\nimport { TextEditComponent, TextEditConfigComponent } from './text-edit';\r\nimport { TextEditSearchComponent } from './text-edit/text-edit-search.component';\r\nimport { TextEditViewComponent } from './text-edit/text-edit-view.component';\r\nimport { TreeConfigComponent, TreeControlComponent, TreeSearchComponent, TreeViewComponent } from './tree';\r\n\r\n/**\r\n * 表单控件分组-包含配置,控件,显示的数组\r\n */\r\nexport const FieldControlGroup: FieldControlGroupInterfaces[] = [\r\n {\r\n displayName: '文本框',\r\n name: 'TextEdit',\r\n fieldConfigComponent: TextEditConfigComponent,\r\n fieldComponent: TextEditComponent,\r\n fieldViewComponent:TextEditViewComponent,\r\n fieldSearchComponent:TextEditSearchComponent,\r\n },\r\n {\r\n displayName: '开关',\r\n name: 'Switch',\r\n fieldConfigComponent: SwitchConfigComponent,\r\n fieldComponent: SwitchControlComponent,\r\n fieldViewComponent:SwitchViewComponent,\r\n fieldSearchComponent:SwitchSearchComponent,\r\n },\r\n {\r\n displayName: '选择',\r\n name: 'Select',\r\n fieldConfigComponent: SelectConfigComponent,\r\n fieldComponent: SelectControlComponent,\r\n fieldViewComponent:SelectViewComponent,\r\n fieldSearchComponent:SelectSearchComponent,\r\n },\r\n {\r\n displayName: '数字',\r\n name: 'NumericEdit',\r\n fieldConfigComponent: NumbericEditConfigComponent,\r\n fieldComponent: NumbericEditControlComponent,\r\n fieldViewComponent:NumericEditViewComponent,\r\n fieldSearchComponent:NumericEditSearchComponent,\r\n },\r\n {\r\n displayName: '日期',\r\n name: 'DateEdit',\r\n fieldConfigComponent: DateEditConfigComponent,\r\n fieldComponent: DateEditControlComponent,\r\n fieldViewComponent:DateEditViewComponent,\r\n },\r\n {\r\n displayName: 'Tree',\r\n name: 'TreeView',\r\n fieldConfigComponent: TreeConfigComponent,\r\n fieldComponent: TreeControlComponent,\r\n fieldSearchComponent: TreeSearchComponent,\r\n fieldViewComponent:TreeViewComponent,\r\n },\r\n];\r\n\r\n\r\nexport function addFieldControlGroup(array:any[] = []) {\r\n\r\n for (const element of array) {\r\n const find = FieldControlGroup.find((control) => {\r\n return control.name === element.name;\r\n });\r\n if(!find){\r\n FieldControlGroup.push(element);\r\n }\r\n }\r\n return FieldControlGroup;\r\n}\r\n","/* eslint-disable no-unsafe-optional-chaining */\n/* eslint-disable @angular-eslint/component-selector */\nimport { Component, Inject, Input, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FieldControlGroupInterfaces } from '../../interfaces';\nimport { addFieldControlGroup, } from '../form';\n\n\n/**\n * 丢弃\n * @deprecated\n */\n@Component({\n selector: 'df-dynamic',\n templateUrl: './dynamic.component.html',\n styleUrls: ['./dynamic.component.scss'],\n})\nexport class DynamicComponent {\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v === undefined ? '' : v === null ? '' : v;\n }\n\n /**表单控件类型 */\n _type: string;\n @Input()\n public set type(v: string) {\n this._type = v;\n if (this._entity) this.dataLoaded(3);\n }\n\n /**语言 */\n _culture: FormGroup | undefined;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n if (v) {\n this._entity = v;\n this.dataLoaded(3);\n }\n }\n\n /**表单控件模板-动态表单配置组件 */\n @ViewChild('FormControlRef', { read: ViewContainerRef, static: true })\n FormControlRef?: ViewContainerRef;\n\n /**表单控件模板-动态表单组件 */\n @ViewChild('FormComponentsRef', { read: ViewContainerRef, static: true })\n FormComponentsRef?: ViewContainerRef;\n\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\n\n /**数据加载完成 */\n async dataLoaded(val) {\n const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\n if (this._entity) {\n //加载所有的动态表单组件\n if (this._type) {\n const fieldControlItem = _fieldControlGroup.find(el => el.name === this._type);\n this.loadfieldConfigComponent(fieldControlItem);\n }\n if (this._fields && this._parentFiledName && this._culture) {\n /**表单控件组中的项 */\n const fieldControlItem = _fieldControlGroup.find(\n el => el.name === this._fields?.field?.formControlName\n );\n this.loadfieldComponent(fieldControlItem);\n }\n }\n }\n\n /**加载动态表单配置组件 */\n loadfieldConfigComponent(FieldControlItem?: FieldControlGroupInterfaces) {\n \n \n //清空了容器中的所有组件\n this.FormControlRef?.clear();\n if (!FieldControlItem || !FieldControlItem.fieldConfigComponent) return;\n //在容器中创建组件\n const { instance }:any = this.FormControlRef?.createComponent(\n FieldControlItem.fieldConfigComponent\n ); //创建组件模板\n /**向创建的组件模板中传值 */\n instance.selected = this._selected;\n instance.type = this._type;\n instance.Entity = this._entity;\n }\n\n /**加载动态表单组件 */\n loadfieldComponent(FieldControlItem?: FieldControlGroupInterfaces) {\n // this.FormControlRef.clear\n //清空了容器中的所有组件\n this.FormComponentsRef?.clear();\n if (!FieldControlItem || !FieldControlItem.fieldComponent) return;\n //在容器中创建组件\n const { instance }:any = this.FormComponentsRef?.createComponent(FieldControlItem.fieldComponent); //创建组件模板\n /**向创建的组件模板中传值 */\n instance.fields = this._fields;\n instance.parentFiledName = this._parentFiledName;\n instance.selected = this._selected;\n instance.culture = this._culture;\n instance.entity = this._entity;\n \n }\n\n}\n","\n<div [formGroup]=\"_entity\">\n <template #FormControlRef></template>\n <template #FormComponentsRef></template>\n</div>\n\n","import { Inject, Injectable } from '@angular/core';\r\nimport { FieldControlGroup } from '../components';\r\n\r\n/**\r\n * 表单控件服务\r\n * @description 用于获取表单所有控件的配置信息\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormControlService {\r\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\r\n _FieldControlGroup = FieldControlGroup;\r\n\r\n addFieldControlGroup() {\r\n const array=this.mergedConfig;\r\n for (const element of array) {\r\n const find = FieldControlGroup.find(control => {\r\n return control.name === element.name;\r\n });\r\n if (!find) {\r\n FieldControlGroup.push(element);\r\n }\r\n }\r\n return FieldControlGroup;\r\n }\r\n}\r\n","/* eslint-disable no-unsafe-optional-chaining */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, ViewChild, ViewContainerRef, AfterContentInit } from '@angular/core';\r\nimport { FormControlService } from '../../services/form-control.service';\r\nimport { FieldControlGroupInterfaces } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'df-dynamic-view',\r\n templateUrl: './dynamic-view.component.html',\r\n styleUrl: './dynamic-view.component.scss',\r\n})\r\nexport class DynamicViewComponent implements AfterContentInit {\r\n constructor(private _FormControlService: FormControlService) {}\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n // if(this._value) this.dataLoaded();\r\n }\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormTemplateRef', { read: ViewContainerRef, static: true })\r\n FormTemplateRef?: ViewContainerRef;\r\n\r\n ngAfterContentInit(): void {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n if (this.type && this._value!=='') {\r\n const _fieldControlGroup: any[] = this._FormControlService.addFieldControlGroup();\r\n const fieldControlItem = _fieldControlGroup.find(el => el.name === this.type);\r\n this.loadViewComponent(fieldControlItem);\r\n }\r\n }\r\n\r\n /**加载动态展示组件 */\r\n loadViewComponent(FieldControlItem?: FieldControlGroupInterfaces) {\r\n //清空了容器中的所有组件\r\n this.FormTemplateRef?.clear();\r\n if (!FieldControlItem || !FieldControlItem.fieldViewComponent) return;\r\n //在容器中创建组件\r\n const { instance }: any = this.FormTemplateRef?.createComponent(\r\n FieldControlItem.fieldViewComponent,\r\n ); //创建组件模板\r\n /**向创建的组件模板中传值 */\r\n instance.type = this.type;\r\n instance.value = this._value;\r\n instance.fields = this.fields;\r\n instance.showInList = this.showInList;\r\n }\r\n}\r\n","<template #FormTemplateRef></template>","/* eslint-disable no-unsafe-optional-chaining */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n Inject,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { addFieldControlGroup } from '../form';\r\n\r\n@Component({\r\n selector: 'df-dynamic-config',\r\n templateUrl: './dynamic-config.component.html',\r\n styleUrl: './dynamic-config.component.scss',\r\n})\r\nexport class DynamicConfigComponent implements AfterContentInit {\r\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\r\n\r\n formControlName: any = '';\r\n @Input() set type(v: string) {\r\n this.formControlName = v;\r\n }\r\n @Input() selected: any;\r\n\r\n formEntity: FormGroup | undefined;\r\n @Input() set form(v: FormGroup | undefined) {\r\n this.formEntity = v;\r\n }\r\n\r\n \r\n\r\n get formControlNameInput(){\r\n return this.formEntity.get('formControlName') as FormControl;\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.loadfieldConfigComponent(this.formControlName);\r\n this.formControlNameInput?.valueChanges.subscribe((res: any) => {\r\n this.loadfieldConfigComponent(res);\r\n });\r\n }\r\n\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormconfigRef', { read: ViewContainerRef, static: true })\r\n FormconfigRef?: ViewContainerRef;\r\n\r\n /**加载动态表单配置组件 */\r\n loadfieldConfigComponent(formControlName:string) {\r\n const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\r\n const fieldControlItem = _fieldControlGroup.find(el => el.name === formControlName);\r\n\r\n //清空了容器中的所有组件\r\n this.FormconfigRef?.clear();\r\n if (!fieldControlItem || !fieldControlItem.fieldConfigComponent) return;\r\n //在容器中创建组件\r\n const { instance }:any = this.FormconfigRef?.createComponent(fieldControlItem.fieldConfigComponent); //创建组件模板\r\n // /**向创建的组件模板中传值 */\r\n instance.selected = this.selected?JSON.parse(JSON.stringify(this.selected)):this.selected;\r\n instance.type = formControlName;\r\n instance.Entity = this.formEntity;\r\n }\r\n}\r\n"," <template #FormconfigRef></template>","/* eslint-disable no-unsafe-optional-chaining */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n Inject,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n// import { FieldControlGroupInterfaces } from '@dignite-ng/expand.dynamic-form';\r\nimport { addFieldControlGroup } from '../form';\r\n\r\n@Component({\r\n selector: 'df-dynamic-control',\r\n templateUrl: './dynamic-control.component.html',\r\n styleUrl: './dynamic-control.component.scss',\r\n})\r\nexport class DynamicControlComponent implements AfterContentInit {\r\n /**选择的表单信息 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v === undefined ? '' : v === null ? '' : v;\r\n }\r\n\r\n /**语言 */\r\n _culture: FormGroup | undefined;\r\n @Input()\r\n public set culture(v: any) {\r\n this._culture = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n if (v) {\r\n this._entity = v;\r\n // this.dataLoaded(3);\r\n }\r\n }\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormControlRef', { read: ViewContainerRef, static: true })\r\n FormControlRef?: ViewContainerRef;\r\n\r\n /**表单控件模板-动态表单组件 */\r\n @ViewChild('FormComponentsRef', { read: ViewContainerRef, static: true })\r\n FormComponentsRef?: ViewContainerRef;\r\n\r\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.loadfieldComponent(this._fields?.field?.formControlName);\r\n }\r\n\r\n // /**数据加载完成 */\r\n // async dataLoaded() {\r\n // const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\r\n // if (this._entity) {\r\n // //加载所有的动态表单组件\r\n // if (this._fields && this._parentFiledName && this._culture) {\r\n // /**表单控件组中的项 */\r\n // const fieldControlItem = _fieldControlGroup.find(\r\n // el => el.name === this._fields?.field?.formControlName,\r\n // );\r\n // this.loadfieldComponent(fieldControlItem);\r\n // }\r\n // }\r\n // }\r\n\r\n /**加载动态表单组件 */\r\n loadfieldComponent(formControlName: string) {\r\n const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\r\n /**表单控件组中的项 */\r\n const fieldControlItem = _fieldControlGroup.find(el => el.name === formControlName);\r\n\r\n //清空了容器中的所有组件\r\n this.FormComponentsRef?.clear();\r\n if (!fieldControlItem || !fieldControlItem.fieldComponent) return;\r\n //在容器中创建组件\r\n const { instance }: any = this.FormComponentsRef?.createComponent(\r\n fieldControlItem.fieldComponent,\r\n ); //创建组件模板\r\n /**向创建的组件模板中传值 */\r\n instance.fields = this._fields;\r\n instance.parentFiledName = this._parentFiledName;\r\n instance.selected = this._selected;\r\n instance.culture = this._culture;\r\n instance.entity = this._entity;\r\n }\r\n}\r\n","<template #FormComponentsRef></template>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormControlService } from '../../services/form-control.service';\r\nimport { FieldControlGroupInterfaces } from '../../interfaces';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-dynamic-search',\r\n templateUrl: './dynamic-search.component.html',\r\n styleUrl: './dynamic-search.component.scss',\r\n})\r\nexport class DynamicSearchComponent {\r\n constructor(private _FormControlService: FormControlService) {\r\n }\r\n\r\n \r\n\r\n /**语言 */\r\n _culture: FormGroup | any;\r\n @Input()\r\n public set culture(v: any) {\r\n this._culture = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n if (v) {\r\n this._entity = v;\r\n }\r\n }\r\n\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormSearchTemplateRef', { read: ViewContainerRef, static: true })\r\n FormSearchTemplateRef?: ViewContainerRef;\r\n\r\n ngAfterContentInit(): void {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n if (this._fields && this._entity&&this._culture) {\r\n let _fieldControlGroup: any[] = this._FormControlService.addFieldControlGroup();\r\n let fieldControlItem = _fieldControlGroup.find(el => el.name === this._fields?.field?.formControlName);\r\n this.loadComponent(fieldControlItem);\r\n }\r\n }\r\n\r\n /**加载动态展示组件 */\r\n loadComponent(FieldControlItem?: FieldControlGroupInterfaces) {\r\n //清空了容器中的所有组件\r\n this.FormSearchTemplateRef?.clear();\r\n if (!FieldControlItem || !FieldControlItem.fieldSearchComponent) return;\r\n //在容器中创建组件\r\n const { instance }: any = this.FormSearchTemplateRef?.createComponent(\r\n FieldControlItem.fieldSearchComponent,\r\n ); //创建组件模板\r\n \r\n /**向创建的组件模板中传值 */\r\n instance.fields = this._fields;\r\n instance.parentFiledName = this._parentFiledName;\r\n instance.culture = this._culture;\r\n instance.entity = this._entity;\r\n }\r\n}\r\n","<template #FormSearchTemplateRef></template>","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\n// import { NzTreeModule } from 'ng-zorro-antd/tree';\nimport {\n TextEditConfigComponent,\n TextEditComponent,\n SwitchConfigComponent,\n SwitchControlComponent,\n NumbericEditConfigComponent,\n NumbericEditControlComponent,\n DateEditConfigComponent,\n DateEditControlComponent,\n SelectConfigComponent,\n SelectControlComponent,\n DynamicComponent,\n} from './components';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { DynamicConfigComponent } from './components/dynamic/dynamic-config.component';\nimport { DynamicViewComponent } from './components/dynamic/dynamic-view.component';\nimport { DynamicControlComponent } from './components/dynamic/dynamic-control.component';\nimport { SelectViewComponent } from './components/form/select/select-view.component';\nimport { SwitchViewComponent } from './components/form/switch/switch-view.component';\nimport { TextEditViewComponent } from './components/form/text-edit/text-edit-view.component';\nimport { DateEditViewComponent } from './components/form/date-edit/date-edit-view.component';\nimport { NumericEditViewComponent } from './components/form/numeric-edit/numeric-edit-view.component';\nimport { DynamicSearchComponent } from './components/dynamic/dynamic-search.component';\nimport { SelectSearchComponent } from './components/form/select/select-search.component';\nimport { TextEditSearchComponent } from './components/form/text-edit/text-edit-search.component';\nimport { SwitchSearchComponent } from './components/form/switch/switch-search.component';\nimport { NumericEditSearchComponent } from './components/form/numeric-edit/numeric-edit-search.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ExtensibleModule } from '@abp/ng.components/extensible';\nimport {\n TreeConfigComponent,\n TreeControlComponent,\n TreeSearchComponent,\n TreeViewComponent,\n} from './components/form/tree';\nimport { TreeModule } from '@abp/ng.components/tree';\nimport { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';\n\n@NgModule({\n declarations: [\n TextEditConfigComponent,\n TextEditComponent,\n SwitchConfigComponent,\n SwitchControlComponent,\n NumbericEditConfigComponent,\n NumbericEditControlComponent,\n DateEditConfigComponent,\n DateEditControlComponent,\n SelectConfigComponent,\n SelectControlComponent,\n DynamicComponent,\n DynamicConfigComponent,\n DynamicViewComponent,\n DynamicControlComponent,\n SelectViewComponent,\n SwitchViewComponent,\n TextEditViewComponent,\n DateEditViewComponent,\n NumericEditViewComponent,\n DynamicSearchComponent,\n SelectSearchComponent,\n TextEditSearchComponent,\n SwitchSearchComponent,\n NumericEditSearchComponent,\n TreeConfigComponent,\n TreeControlComponent,\n TreeSearchComponent,\n TreeViewComponent,\n ],\n imports: [\n FormsModule,\n CoreModule,\n ThemeSharedModule,\n ReactiveFormsModule,\n NgbDropdownModule,\n NzSelectModule,\n DragDropModule,\n NgbDatepickerModule,\n ExtensibleModule,\n TreeModule,\n NzTreeSelectModule,\n // NzTreeModule,\n ],\n exports: [\n TextEditConfigComponent,\n TextEditComponent,\n TextEditViewComponent,\n SwitchConfigComponent,\n SwitchControlComponent,\n SwitchViewComponent,\n NumbericEditConfigComponent,\n NumbericEditControlComponent,\n DateEditConfigComponent,\n DateEditControlComponent,\n DateEditViewComponent,\n SelectConfigComponent,\n SelectControlComponent,\n SelectViewComponent,\n SelectSearchComponent,\n DynamicComponent,\n DynamicConfigComponent,\n DynamicViewComponent,\n DynamicControlComponent,\n DynamicSearchComponent,\n TreeConfigComponent,\n TreeControlComponent,\n TreeSearchComponent,\n TreeViewComponent,\n ],\n providers: [],\n})\nexport class DynamicFormModule {\n static forRoot(config?: any): ModuleWithProviders<DynamicFormModule> {\n return {\n ngModule: DynamicFormModule,\n providers: [],\n };\n }\n}\n","/*\n * Public API Surface of dynamic-form\n */\n\nexport * from './lib/dynamic-form.module';\nexport * from './lib/components';\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i2.DfApiService","i5","i4","i6","i1.FormControlService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dignite-ng-expand.dynamic-form.mjs","sources":["../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-config.ts","../../../../packages/dynamic-form/src/lib/enums/text-edit-mode.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit.component.html","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/text-edit/text-edit-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-config.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/switch/switch-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-config.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numberic-edit-control.component.html","../../../../packages/dynamic-form/src/lib/enums/date-edit-interfaces.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-config.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/date-edit/date-edit-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/numeric-edit/numeric-edit-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-config.ts","../../../../packages/dynamic-form/src/lib/services/df-api.service.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/select/select-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/select/select-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-config.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-config.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-config.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-control.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-control.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-search.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-search.component.html","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-view.component.ts","../../../../packages/dynamic-form/src/lib/components/form/tree/tree-view.component.html","../../../../packages/dynamic-form/src/lib/components/form/form-control-group.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic.component.html","../../../../packages/dynamic-form/src/lib/services/form-control.service.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-view.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-view.component.html","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-config.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-config.component.html","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-control.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-control.component.html","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-search.component.ts","../../../../packages/dynamic-form/src/lib/components/dynamic/dynamic-search.component.html","../../../../packages/dynamic-form/src/lib/dynamic-form.module.ts","../../../../packages/dynamic-form/src/public-api.ts","../../../../packages/dynamic-form/src/dignite-ng-expand.dynamic-form.ts"],"sourcesContent":["import { FormControl, Validators } from \"@angular/forms\";\r\n\r\nexport class TextEditConfig {\r\n\r\n\r\n /**占位符 */\r\n 'TextEdit.Placeholder': any = [''];\r\n\r\n //字段类型,单行文本,多行文本\r\n 'TextEdit.Mode': any = [0];\r\n // 字数限制\r\n 'TextEdit.CharLimit': any = ['265'];\r\n}","export enum TextEditMode {\n // 简单类型\n SingleLine,\n // 复合类型;\n MultipleLine,\n \n}\n","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { TextEditConfig } from './text-edit-config';\nimport { TextEditMode } from '../../../enums/text-edit-mode';\n\n@Component({\n selector: 'df-text-edit-config',\n templateUrl: './text-edit-config.component.html',\n styleUrls: ['./text-edit-config.component.scss'],\n})\nexport class TextEditConfigComponent {\n constructor(private fb: FormBuilder) {}\n _TextEditMode = TextEditMode;\n RadioIndex1: any = Math.floor(Math.random() * 1001);\n RadioIndex2: any = Math.floor(Math.random() * 1001);\n\n /**表单控件类型 */\n formControlName: any;\n @Input()\n public set type(v: any) {\n this.formControlName = v;\n this.dataLoaded();\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this.formControlName) {\n await this.AfterInit();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new TextEditConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this.formControlName) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"TextEdit.Placeholder\" >\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::TextEditMode' | abpLocalization}}</label>\n <div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_TextEditMode.SingleLine\" formControlName=\"TextEdit.Mode\"\n id=\"flexRadioDefault{{RadioIndex1}}\">\n <label class=\"form-check-label\" for=\"flexRadioDefault{{RadioIndex1}}\">\n {{'AbpDynamicForm::SingleLine' | abpLocalization}}\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_TextEditMode.MultipleLine\" formControlName=\"TextEdit.Mode\"\n id=\"flexRadioDefault{{RadioIndex2}}\">\n <label class=\"form-check-label\" for=\"flexRadioDefault{{RadioIndex2}}\">\n {{'AbpDynamicForm::MultipleLine' | abpLocalization}}\n </label>\n </div>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::CharLimit' | abpLocalization}}</label>\n <input type=\"number\" class=\"form-control\" formControlName=\"TextEdit.CharLimit\">\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\n/* eslint-disable @angular-eslint/no-empty-lifecycle-method */\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { TextEditMode } from '../../../enums/text-edit-mode';\nimport { TextEditConfig } from './text-edit-config';\n\n@Component({\n selector: 'df-text-edit',\n templateUrl: './text-edit.component.html',\n styleUrls: ['./text-edit.component.scss']\n})\nexport class TextEditComponent {\n\n constructor(\n private fb: FormBuilder,\n ) {\n }\n\n _TextEditMode = TextEditMode\n /**表单实体 */\n _entity: FormGroup | undefined\n @Input()\n public set entity(v: any) {\n this._entity = v;\n if (v) this.dataLoaded()\n }\n\n /**字段配置列表 */\n _fields: any = ''\n @Input()\n public set fields(v: any) {\n this._fields = v;\n if (v) this.dataLoaded()\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n if (v) this.dataLoaded()\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any\n @Input()\n public set selected(v: any) {\n this._selected = v || '';\n if (v) this.dataLoaded()\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n extraProperties: FormGroup | undefined;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup\n await this.AfterInit()\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray:any[] = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required)\n }\n this._fields.field.formConfiguration={\n ...this.fb.group(new TextEditConfig()).value,\n ...this._fields.field.formConfiguration\n }\n if (this._fields.field.formConfiguration['TextEdit.CharLimit']) {\n ValidatorsArray.push(Validators.maxLength(this._fields.field.formConfiguration['TextEdit.CharLimit']))\n }\n \n const newControl = this.fb.control(this._selected, ValidatorsArray)\n this.extraProperties?.setControl(this._fields.field.name, newControl)\n resolve(true)\n })\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties?.removeControl(this._fields.field.name)\n }\n\n isObjEmpty = (obj) => Object.keys(obj).length === 0\n}\n","<form [formGroup]=\"_entity\">\n <div [formGroupName]=\"_parentFiledName\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <ng-container *ngIf=\"_fields.field.formConfiguration['TextEdit.Mode'] ===_TextEditMode.SingleLine\">\n <input type=\"text\" class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\n [placeholder]=\"_fields.field.formConfiguration['TextEdit.Placeholder']\" />\n </ng-container>\n <ng-container *ngIf=\"_fields.field.formConfiguration['TextEdit.Mode'] === _TextEditMode.MultipleLine\">\n <textarea class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\n [placeholder]=\"_fields.field.formConfiguration['TextEdit.Placeholder']\" rows=\"3\"></textarea>\n </ng-container>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-text-edit-view',\r\n templateUrl: './text-edit-view.component.html',\r\n styleUrl: './text-edit-view.component.scss',\r\n})\r\nexport class TextEditViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n \r\n let valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { TextEditMode } from '../../../enums/text-edit-mode';\r\nimport { TextEditConfig } from './text-edit-config';\r\n\r\n@Component({\r\n selector: 'df-text-edit-search',\r\n templateUrl: './text-edit-search.component.html',\r\n styleUrl: './text-edit-search.component.scss'\r\n})\r\nexport class TextEditSearchComponent {\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n ) {\r\n }\r\n\r\n _TextEditMode = TextEditMode\r\n /**表单实体 */\r\n _entity: FormGroup | undefined\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n if (v) this.dataLoaded()\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = ''\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n if (v) this.dataLoaded()\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n if (v) this.dataLoaded()\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v || '';\r\n if (v) this.dataLoaded()\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n extraProperties: FormGroup | undefined;\r\n private cdr = inject(ChangeDetectorRef);\r\n async dataLoaded() {\r\n if (this._fields && this._entity && this._parentFiledName) {\r\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup\r\n await this.AfterInit()\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n let ValidatorsArray:any[] = []\r\n this._fields.field.formConfiguration={\r\n ...this.fb.group(new TextEditConfig()).value,\r\n ...this._fields.field.formConfiguration\r\n }\r\n let newControl = this.fb.control(this._selected, ValidatorsArray)\r\n this.extraProperties?.setControl(this._fields.field.name, newControl)\r\n resolve(true)\r\n })\r\n }\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties?.removeControl(this._fields.field.name)\r\n }\r\n\r\n isObjEmpty = (obj) => Object.keys(obj).length === 0\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div [formGroupName]=\"_parentFiledName\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\r\n [placeholder]=\"_fields.field.formConfiguration['TextEdit.Placeholder']\" />\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","\r\nexport class SwitchConfig {\r\n /**默认值 */\r\n 'Switch.Default': any = [false];\r\n \r\n}","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { SwitchConfig } from './switch-config';\n@Component({\n selector: 'df-switch-config',\n templateUrl: './switch-config.component.html',\n styleUrls: ['./switch-config.component.scss'],\n})\nexport class SwitchConfigComponent {\n constructor(private fb: FormBuilder) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n this.dataLoaded();\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup | undefined) {\n this.formEntity = v;\n this.dataLoaded();\n }\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n // this.cdr.detectChanges();\n \n }\n }\n\n\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new SwitchConfig()));\n setTimeout(()=>{\n this.submitclick?.nativeElement?.click();\n },0)\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Switch.Default\"\n id=\"flexRadioDefault1\">\n <label class=\"form-check-label\" for=\"flexRadioDefault1\">\n {{'AbpDynamicForm::DefaultValue' | abpLocalization}}\n </label>\n </div>\n \n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n </div>\n</form>","import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'df-switch-control',\n templateUrl: './switch-control.component.html',\n styleUrls: ['./switch-control.component.scss'],\n})\nexport class SwitchControlComponent {\n constructor(private fb: FormBuilder) {}\n\n /**表单实体 */\n _entity: FormGroup | any;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n this.dataLoaded();\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n this.dataLoaded();\n }\n /** */\n _selected: any;\n @Input()\n public set selected(v: any) {\n // ?v:false;\n this._selected = v;\n this.dataLoaded();\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity.get('extraProperties') as FormGroup;\n }\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n let ValidatorsArray:any = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n let newControl = this.fb.control(\n this._selected\n ? this._selected\n : this._selected === false\n ? this._selected\n : this._fields.field.formConfiguration['Switch.Default'],\n ValidatorsArray\n );\n this.extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" formControlName=\"{{_fields.field.name}}\">\n </div>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-switch-search',\r\n templateUrl: './switch-search.component.html',\r\n styleUrl: './switch-search.component.scss'\r\n})\r\nexport class SwitchSearchComponent {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | any;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n this.dataLoaded();\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n this.dataLoaded();\r\n }\r\n /** */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n // ?v:false;\r\n this._selected = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray:any = [];\r\n const newControl = this.fb.control(\r\n this._selected\r\n ? this._selected\r\n : this._selected === false\r\n ? this._selected\r\n : '',\r\n ValidatorsArray\r\n );\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <!-- <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" formControlName=\"{{_fields.field.name}}\">\r\n </div> -->\r\n <!-- <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small> -->\r\n <select class=\"form-select form-control\" formControlName=\"{{_fields.field.name}}\" role=\"switch\">\r\n <option [value]=\"\"></option>\r\n <option [value]=\"true\">{{'AbpUi::Yes'|abpLocalization}}</option>\r\n <option [value]=\"false\">{{'AbpUi::No'|abpLocalization}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-switch-view',\r\n templateUrl: './switch-view.component.html',\r\n styleUrl: './switch-view.component.scss'\r\n})\r\nexport class SwitchViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n let valueOptions = this._value;\r\n if (this.type ) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n {{'AbpUi::'+(showValue ? 'Yes' : 'No') | abpLocalization}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{'AbpUi::'+(showValue ? 'Yes' : 'No') | abpLocalization}}\r\n </div>\r\n</div>\r\n}","import { FormControl, Validators } from \"@angular/forms\";\r\n\r\nexport class NumbericEditConfig {\r\n /**占位符 */\r\n 'NumericEditField.Placeholder': any = ['', []];\r\n /**最小值 */\r\n 'NumericEditField.Min': any = ['', [Validators.required]];\r\n //最大值\r\n 'NumericEditField.Max': any = ['', [Validators.required]];\r\n // 小数位数\r\n 'NumericEditField.Decimals': any = [2, []];\r\n //步长\r\n 'NumericEditField.Step': any = ['', []];\r\n //格式说明符\r\n 'FormatSpecifier': any = ['', []];\r\n\r\n constructor(data?: NumbericEditConfig) {\r\n if (data) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n this[key] = data[key];\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n}","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NumbericEditConfig } from './numberic-edit-config';\n\n@Component({\n selector: 'df-numberic-edit-config',\n templateUrl: './numberic-edit-config.component.html',\n styleUrls: ['./numberic-edit-config.component.scss'],\n})\nexport class NumbericEditConfigComponent {\n constructor(private fb: FormBuilder) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n // this.dataLoaded()\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v ? v : v == false ? v : '';\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: false }) submitclick?: ElementRef;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n \n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new NumbericEditConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Placeholder\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Min' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Min\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Max' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Max\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NumericDecimals' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Decimals\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NumericStep' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"NumericEditField.Step\">\n <small class=\"form-text text-muted d-block\">{{'AbpDynamicForm::NumericStepHelp'|abpLocalization}}</small>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::FormatSpecifier' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"FormatSpecifier\">\n <small class=\"form-text text-muted d-block\">See:<a href=\"https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings\" target=\"_blank\">https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings</a></small>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\" #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\n/* eslint-disable @typescript-eslint/adjacent-overload-signatures */\nimport {\n Component,\n ElementRef,\n Input,\n ViewChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function maxDecimalPlacesValidator(maxDecimalPlaces: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (typeof value === 'number' && isNaN(value) === false) {\n const decimalPart = value.toString().split('.')[1];\n if (decimalPart && decimalPart.length > maxDecimalPlaces) {\n return { maxDecimalPlaces: { actual: decimalPart.length, max: maxDecimalPlaces } };\n }\n }\n return null;\n };\n}\n@Component({\n selector: 'df-numberic-edit-control',\n templateUrl: './numberic-edit-control.component.html',\n styleUrls: ['./numberic-edit-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumbericEditControlComponent {\n constructor(private fb: FormBuilder, private cdr: ChangeDetectorRef) {}\n\n public get entity(): any {\n return this._entity;\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n //\n }\n\n /**表单实体 */\n _entity: FormGroup | any;\n\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity?.get('extraProperties') as FormGroup;\n }\n get fieldInput() {\n return this.extraProperties.get(this._fields.field.name);\n }\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n this.cdr.detectChanges();\n this.submitclick.nativeElement.click();\n }\n }\n formConfiguration: any = '';\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray: any[] = [];\n const formConfiguration = this._fields.field.formConfiguration;\n this.formConfiguration=formConfiguration;\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n if (formConfiguration['NumericEditField.Min']) {\n ValidatorsArray.push(Validators.min(formConfiguration['NumericEditField.Min']));\n }\n if (formConfiguration['NumericEditField.Max']) {\n ValidatorsArray.push(Validators.max(formConfiguration['NumericEditField.Max']));\n }\n const newControl = this.fb.control(this._selected, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name)\n }\n\n /**数字框输入 */\n inputchange(event) {\n const val = event.target.value;\n\n const decimalPart = val.toString().split('.')[1] || '';\n const formConfiguration = this._fields.field.formConfiguration;\n const Decimals = formConfiguration['NumericEditField.Decimals'];\n if (decimalPart.length > Decimals) {\n this.fieldInput?.patchValue(val.slice(0, val.length - (decimalPart.length - 2)));\n }\n this.extraProperties.updateValueAndValidity();\n this.fieldInput.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"_entity\">\n <div [formGroupName]=\"_parentFiledName\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <input type=\"number\" class=\"form-control\" formControlName=\"{{_fields.field.name}}\"\n [placeholder]=\"_fields.field.formConfiguration['NumericEditField.Placeholder']||''\"\n [step]=\"_fields.field.formConfiguration['NumericEditField.Step']\" [min]=\"formConfiguration['NumericEditField.Min']\" [max]=\"formConfiguration['NumericEditField.Max']\" (input)=\"inputchange($event)\" />\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","export enum DateEditInterfaces {\n /// <summary>\n /// Only date is allowed to be entered.\n /// </summary>\n Date = 0,\n\n /// <summary>\n /// Both date and time are allowed to be entered.\n /// </summary>\n DateTime = 1,\n\n /// <summary>\n /// Allowed to select only year and month.\n /// </summary>\n Month = 2\n}\n","import { FormControl, Validators } from \"@angular/forms\";\r\nimport { DateEditInterfaces } from \"../../../enums/date-edit-interfaces\";\r\n\r\nexport class DateEditConfig {\r\n /**日期格式 */\r\n 'DateEdit.InputMode': any = [DateEditInterfaces.Date, []];\r\n /**最小值 */\r\n 'DateEdit.Min': any = ['', []];\r\n /**最大值 */\r\n 'DateEdit.Max': any = ['', []];\r\n\r\n constructor() {\r\n }\r\n}","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder,FormGroup } from '@angular/forms';\nimport { DateEditConfig } from './date-edit-config';\nimport { DateEditInterfaces } from '../../../enums/date-edit-interfaces';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'df-date-edit-config',\n templateUrl: './date-edit-config.component.html',\n styleUrls: ['./date-edit-config.component.scss'],\n})\nexport class DateEditConfigComponent {\n constructor(private fb: FormBuilder) {}\n private _dataPipe = inject(DatePipe);\n _DateEditInterfaces = DateEditInterfaces;\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n\n dateTimeType: any = 'date';\n get formConfiguration() {\n return this.formEntity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n \n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity.setControl('formConfiguration', this.fb.group(new DateEditConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n this.timeTypeChange()\n }\n resolve(true);\n });\n }\n /**切换时间类型 */\n timeTypeChange() {\n const type = this.formConfiguration.value['DateEdit.InputMode'];\n let Min = this.formConfiguration.value['DateEdit.Min'];\n let Max = this.formConfiguration.value['DateEdit.Max'];\n if (type == DateEditInterfaces.Date) {\n this.dateTimeType = 'date';\n Min = this._dataPipe.transform(Min, 'yyyy-MM-dd');\n Max = this._dataPipe.transform(Max, 'yyyy-MM-dd');\n } else if (type == DateEditInterfaces.DateTime) {\n this.dateTimeType = 'datetime-local';\n Min = this._dataPipe.transform(Min, 'yyyy-MM-dd HH:mm:ss');\n Max = this._dataPipe.transform(Max, 'yyyy-MM-dd HH:mm:ss');\n } else if (type == DateEditInterfaces.Month) {\n this.dateTimeType = 'month';\n Min = this._dataPipe.transform(Min, 'yyyy-MM');\n Max = this._dataPipe.transform(Max, 'yyyy-MM');\n }\n this.formConfiguration.patchValue({\n 'DateEdit.Min': Min,\n 'DateEdit.Max': Max,\n });\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::DateEditMode' | abpLocalization}}</label>\n <div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_DateEditInterfaces.Date\"\n formControlName=\"DateEdit.InputMode\" id=\"flexRadioDefault1\" (change)=\"timeTypeChange()\">\n <label class=\"form-check-label\" for=\"flexRadioDefault1\">\n {{'AbpDynamicForm::Date' | abpLocalization}}\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_DateEditInterfaces.DateTime\"\n formControlName=\"DateEdit.InputMode\" id=\"flexRadioDefault2\" (change)=\"timeTypeChange()\">\n <label class=\"form-check-label\" for=\"flexRadioDefault2\">\n {{'AbpDynamicForm::DateTime' | abpLocalization}}\n </label>\n </div>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"_DateEditInterfaces.Month\"\n formControlName=\"DateEdit.InputMode\" id=\"flexRadioDefault3\" (change)=\"timeTypeChange()\">\n <label class=\"form-check-label\" for=\"flexRadioDefault3\">\n {{'AbpDynamicForm::Month' | abpLocalization}}\n </label>\n </div>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Min' | abpLocalization}}</label>\n <input [type]=\"dateTimeType\" class=\"form-control\" step=\"1\" formControlName=\"DateEdit.Min\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::Max' | abpLocalization}}</label>\n <input [type]=\"dateTimeType\" class=\"form-control\" step=\"1\" formControlName=\"DateEdit.Max\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, ElementRef, Input, ViewChild, ChangeDetectorRef, inject, OnDestroy } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DateEditInterfaces } from '../../../enums/date-edit-interfaces';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'df-date-edit-control',\n templateUrl: './date-edit-control.component.html',\n styleUrls: ['./date-edit-control.component.scss'],\n})\nexport class DateEditControlComponent implements OnDestroy {\n constructor(private fb: FormBuilder, private cdr: ChangeDetectorRef) {}\n private _dataPipe = inject(DatePipe);\n _DateEditInterfaces = DateEditInterfaces;\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n public get entity(): any {\n return this._entity;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity.get('extraProperties') as FormGroup;\n }\n get fieldInput() {\n return this.extraProperties.get(this._fields.field.name);\n }\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n\n this.cdr.detectChanges();\n this.submitclick.nativeElement.click();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray = [];\n const formConfiguration = this._fields.field.formConfiguration;\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n if (formConfiguration['DateEdit.Min']) {\n ValidatorsArray.push(Validators.min(formConfiguration['DateEdit.Min']));\n }\n if (formConfiguration['DateEdit.Max']) {\n ValidatorsArray.push(Validators.max(formConfiguration['DateEdit.Max']));\n }\n let controlName = this._selected;\n if (this._fields.field.formConfiguration['DateEdit.InputMode'] === DateEditInterfaces.Date) {\n controlName = this._dataPipe.transform(this._selected, 'yyyy-MM-dd');\n }\n if (\n this._fields.field.formConfiguration['DateEdit.InputMode'] === DateEditInterfaces.DateTime\n ) {\n controlName = this._dataPipe.transform(this._selected, 'yyyy-MM-dd HH:mm:ss');\n }\n if (this._fields.field.formConfiguration['DateEdit.InputMode'] === DateEditInterfaces.Month) {\n controlName = this._dataPipe.transform(this._selected, 'yyyy-MM');\n }\n const newControl = this.fb.control(controlName, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div [formGroupName]=\"_parentFiledName\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n\n <ng-container *ngIf=\"_fields.field.formConfiguration['DateEdit.InputMode'] === _DateEditInterfaces.Date\">\n <input type=\"date\" class=\"form-control\" step=\"1\" formControlName=\"{{_fields.field.name}}\"\n [min]=\"_fields.field.formConfiguration['DateEdit.Min']\"\n [max]=\"_fields.field.formConfiguration['DateEdit.Max']\" />\n </ng-container>\n <ng-container\n *ngIf=\"_fields.field.formConfiguration['DateEdit.InputMode'] === _DateEditInterfaces.DateTime\">\n <input type=\"datetime-local\" #dateTime (focus)=\"dateTime.focus()\" class=\"form-control\" step=\"1\" formControlName=\"{{_fields.field.name}}\"\n [min]=\"_fields.field.formConfiguration['DateEdit.Min']\"\n [max]=\"_fields.field.formConfiguration['DateEdit.Max']\" />\n </ng-container>\n <ng-container *ngIf=\"_fields.field.formConfiguration['DateEdit.InputMode'] === _DateEditInterfaces.Month\">\n <input type=\"month\" class=\"form-control\" step=\"1\" formControlName=\"{{_fields.field.name}}\"\n [min]=\"_fields.field.formConfiguration['DateEdit.Min']\"\n [max]=\"_fields.field.formConfiguration['DateEdit.Max']\" />\n </ng-container>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-date-edit-view',\r\n templateUrl: './date-edit-view.component.html',\r\n styleUrl: './date-edit-view.component.scss',\r\n})\r\nexport class DateEditViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue|shortDateTime}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue|shortDateTime}}\r\n </div>\r\n</div>\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-numeric-edit-search',\r\n templateUrl: './numeric-edit-search.component.html',\r\n styleUrl: './numeric-edit-search.component.scss',\r\n})\r\nexport class NumericEditSearchComponent {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n /**定义动态字符 */\r\n get numberInput() {\r\n return this.extraProperties.get(this._fields.field.name) as FormControl;\r\n }\r\n /**定义number表单用于获取最小值最大值 */\r\n numberForm: FormGroup = new FormGroup({\r\n min: new FormControl(''),\r\n max: new FormControl(''),\r\n });\r\n get minInput() {\r\n return this.numberForm.get('min') as FormControl;\r\n }\r\n get maxInput() {\r\n return this.numberForm.get('max') as FormControl;\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise(resolve => {\r\n const ValidatorsArray: any[] = [];\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n\r\n const newControl = this.fb.control(this._selected, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n this.numberForm.valueChanges.subscribe(res => {\r\n if (res.min<Number(this.formConfiguration['NumericEditField.Min'])) {\r\n this.minInput.patchValue(this.formConfiguration['NumericEditField.Min']);\r\n }\r\n if (res.min>Number(this.formConfiguration['NumericEditField.Max'])) {\r\n this.minInput.patchValue(this.formConfiguration['NumericEditField.Max']);\r\n }\r\n if ((res.min>res.max)&&res.max) {\r\n this.minInput.patchValue(res.max);\r\n }\r\n if (res.max>Number(this.formConfiguration['NumericEditField.Max'])) {\r\n this.maxInput.patchValue(this.formConfiguration['NumericEditField.Max']);\r\n }\r\n if (this.numberForm.valid && res.min && res.max) {\r\n this.numberInput.patchValue(`${res.min}-${res.max}`);\r\n } else {\r\n this.numberInput.patchValue('');\r\n }\r\n });\r\n resolve(true);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n}\r\n","<form [formGroup]=\"numberForm\">\r\n <div class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <div class=\"input-group\" >\r\n <input class=\"form-control\" type=\"number\" formControlName=\"min\">\r\n <span class=\"input-group-text px-1\">-</span>\r\n <input class=\"form-control\" type=\"number\" formControlName=\"max\">\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-numeric-edit-view',\r\n templateUrl: './numeric-edit-view.component.html',\r\n styleUrl: './numeric-edit-view.component.scss',\r\n})\r\nexport class NumericEditViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { FormArray} from \"@angular/forms\";\r\n\r\nexport class SelectConfig {\r\n /**空值文本 */\r\n 'Select.NullText': any = [''];\r\n //多选\r\n 'Select.Multiple': any = [false];\r\n // 选项\r\n 'Select.Options': any = new FormArray([]) \r\n}","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfApiService {\n\n\n \n /**获取图片的本地连接 */\n getImageLacolBase64Url(file: File) {\n return new Promise((resolve, rejects) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = error => rejects(error);\n })\n }\n\n \n\n}\n","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { SelectConfig } from './select-config';\nimport { DfApiService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'df-select-config',\n\n templateUrl: './select-config.component.html',\n styleUrls: ['./select-config.component.scss'],\n})\nexport class SelectConfigComponent {\n constructor(private fb: FormBuilder, private _DfApiService: DfApiService) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n\n /**表单实体 */\n formEntity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this.formEntity = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this.formEntity?.get('formConfiguration') as FormGroup;\n }\n get SelectOptions() {\n return this.formConfiguration.controls['Select.Options'] as FormArray;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this.formEntity && this._type) {\n await this.AfterInit();\n }\n }\n /**增加选项 */\n addSelectOptions() {\n this.SelectOptions.push(\n new FormGroup({\n Text: new FormControl('', Validators.required),\n Value: new FormControl('', Validators.required),\n Selected: new FormControl(false),\n }),\n );\n }\n /**删除某个选项 */\n deleteSelectOptions(index) {\n this.SelectOptions.removeAt(index);\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this.formEntity?.setControl('formConfiguration', this.fb.group(new SelectConfig()));\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected && this._selected.formControlName == this._type) {\n for (const element of this._selected.formConfiguration['Select.Options']) {\n for (const key in element) {\n const item = element[key];\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\n element[capitalizedKey] = item;\n }\n this.addSelectOptions();\n }\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n } else {\n this.addSelectOptions();\n }\n resolve(true);\n });\n }\n\n /**\n * 当选择项的文本发生变化时,更新对应的值\n * @param event 输入事件对象\n * @param index 选择项的索引位置\n * @description 如果选择项已有Value值则不处理,否则将中文文本转换为拼音作为Value值\n */\n textChange(event, index) {\n const SelectOptionsItem = this.SelectOptions.at(index);\n const value = event.target.value;\n if (SelectOptionsItem.get('Value')?.value) return;\n SelectOptionsItem.patchValue({\n Value: structuredClone(value),\n });\n }\n\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.SelectOptions.controls, event.previousIndex, event.currentIndex);\n this.SelectOptions.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"formEntity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemText' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::SelectListItemValue' | abpLocalization}}</th>\n <th scope=\"col\">{{'AbpDynamicForm::Selected' | abpLocalization}}</th>\n <th scope=\"col\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" type=\"button\" (click.stop)=\"addSelectOptions()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"Select.Options\">\n <ng-container *ngFor=\"let item of SelectOptions.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"Text\" required\n (change)=\"textChange($event,i)\"></td>\n <td><input type=\"text\" class=\"form-control\" required formControlName=\"Value\"></td>\n <td>\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Selected\"\n id=\"selected\">\n </div>\n </td>\n <td scope=\"row\" style=\"width: 1%;\">\n <button class=\"btn btn-light btn-sm\" type=\"button\" (click.stop)=\"deleteSelectOptions(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::NullText' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Select.NullText\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Select.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild, OnDestroy } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'df-select-control',\n templateUrl: './select-control.component.html',\n styleUrls: ['./select-control.component.scss'],\n})\nexport class SelectControlComponent implements OnDestroy {\n constructor(private fb: FormBuilder) {}\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any=[];\n @Input()\n public set selected(v: any) {\n this._selected = v||[];\n }\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity?.get('extraProperties') as FormGroup;\n }\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n formConfiguration: any = '';\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray: any[] = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n this.formConfiguration = this._fields.field.formConfiguration;\n const isMultiple = this.formConfiguration['Select.Multiple'];\n let selectValue: any = isMultiple ? [] : [];\n for (const element of this.formConfiguration['Select.Options']) {\n for (const key in element) {\n const item = element[key];\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\n element[capitalizedKey] = item;\n }\n if (element.Selected && this._selected.length === 0) {\n selectValue = isMultiple ? [...selectValue, element.Value] : [element.Value];\n }\n }\n if (this._selected.length === 0 && selectValue.length > 0) {\n this._selected = selectValue;\n }\n // this._selected = selectValue;\n const newControl = this.fb.control(this._selected, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.extraProperties.removeControl(this._fields.field.name);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <ng-container *ngIf=\"formConfiguration['Select.Multiple']; else elseTemplate\">\n <nz-select class=\"form-select dignite-form-select\" [nzMaxTagCount]=\"1\"\n nzShowSearch nzMode=\"multiple\" [nzPlaceHolder]=\"_fields.field.formConfiguration['Select.NullText']\"\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\" [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\n <nz-option *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options']\"\n [nzLabel]=\"item.Text\" [nzValue]=\"item.Value\"></nz-option>\n </nz-select>\n </ng-container>\n <ng-template #elseTemplate>\n <select class=\"form-select\" [multiple]=\"false\" formControlName=\"{{_fields.field.name}}\">\n <option [value]=\"''\">{{formConfiguration['Select.NullText']}}</option>\n <ng-container *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options'];let i =index\">\n <option [value]=\"item.Value\">{{item.Text}}</option>\n </ng-container>\n </select>\n </ng-template>\n <small class=\"form-text text-muted d-block\"\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-select-search',\r\n templateUrl: './select-search.component.html',\r\n styleUrl: './select-search.component.scss',\r\n})\r\nexport class SelectSearchComponent {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n const isMultiple = this.formConfiguration['Select.Multiple'];\r\n const selectValue: any = isMultiple ? [] : [];\r\n for (const element of this.formConfiguration['Select.Options']) {\r\n for (const key in element) {\r\n const item = element[key];\r\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n element[capitalizedKey] = item;\r\n }\r\n // if (this._selected) {\r\n // if (Array.isArray(this._selected) && element.Selected && this._selected.length === 0) {\r\n // selectValue = isMultiple ? [...selectValue, element.Value] : [element.Value];\r\n // }\r\n // }\r\n }\r\n this._selected = selectValue;\r\n const newControl = this.fb.control(this._selected, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n changeValue(event) {\r\n const selectvalue = this.extraProperties.get(this._fields.field.name).value;\r\n if (selectvalue[0] === '') {\r\n this.extraProperties.get(this._fields.field.name).setValue([]);\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n //Called once, before the instance is destroyed.\r\n //Add 'implements OnDestroy' to the class.\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <ng-container *ngIf=\"formConfiguration['Select.Multiple']; else elseTemplate\">\r\n <nz-select class=\"form-select dignite-form-select\" [nzMaxTagCount]=\"1\"\r\n nzShowSearch nzMode=\"multiple\" [nzPlaceHolder]=\"_fields.field.formConfiguration['Select.NullText']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\" [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options']\"\r\n [nzLabel]=\"item.Text\" [nzValue]=\"item.Value\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <select class=\"form-select\" [multiple]=\"false\" [placeholder]=\"formConfiguration['Select.NullText']\" formControlName=\"{{_fields.field.name}}\" (change)=\"changeValue($event)\">\r\n <option [value]=\"''\">{{formConfiguration['Select.NullText']}}</option>\r\n <ng-container *ngFor=\"let item of _fields?.field?.formConfiguration['Select.Options'];let i =index\">\r\n <option [value]=\"item.Value\">{{item.Text}}</option>\r\n </ng-container>\r\n </select>\r\n </ng-template>\r\n <!-- <small class=\"form-text text-muted d-block\"\r\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small> -->\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-select-view',\r\n templateUrl: './select-view.component.html',\r\n styleUrl: './select-view.component.scss',\r\n})\r\nexport class SelectViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n \r\n if (this.type && valueOptions) {\r\n const options = this.fields?.field?.formConfiguration?.['Select.Options'] || [];\r\n const getTextByValue = (val: any) => {\r\n const option = options.find((opt: any) => opt.value === val || opt.Value === val);\r\n return option?.text || option?.Text || val;\r\n };\r\n \r\n if (Array.isArray(valueOptions)) {\r\n this.showValue = valueOptions.map(getTextByValue).join(',');\r\n } else {\r\n this.showValue = getTextByValue(valueOptions);\r\n }\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { FormArray, Validators} from \"@angular/forms\";\r\n\r\nexport class TreeConfig {\r\n //是否多选\r\n 'TreeView.Multiple': any = [false];\r\n // 选项\r\n 'TreeView.Nodes': any = new FormArray([]);\r\n}\r\nexport class TreeitemConfig {\r\n //文本\r\n 'Text': any = ['', [Validators.required]];\r\n //值\r\n 'Value': any = ['', [Validators.required]];\r\n //是否选中\r\n 'Selected': any = [false];\r\n //子项\r\n 'Children': any = new FormArray([]);\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n ViewChild,\r\n AfterViewChecked,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormArray,\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { TreeConfig } from './tree-config';\r\nimport { ToPinyinService } from '@dignite-ng/expand.core';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'df-tree-config',\r\n templateUrl: './tree-config.component.html',\r\n styleUrls: ['./tree-config.component.scss'],\r\n})\r\nexport class TreeConfigComponent implements AfterViewChecked {\r\n constructor(private fb: FormBuilder, private toPinyinService: ToPinyinService) {}\r\n /**表单控件类型 */\r\n _type: any;\r\n @Input()\r\n public set type(v: any) {\r\n this._type = v;\r\n }\r\n\r\n /**选择的表单信息 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n formEntity: FormGroup | undefined;\r\n @Input()\r\n public set Entity(v: FormGroup) {\r\n this.formEntity = v;\r\n this.dataLoaded();\r\n }\r\n get formConfiguration() {\r\n return this.formEntity?.get('formConfiguration') as FormGroup;\r\n }\r\n get TreeOptions() {\r\n return this.formConfiguration?.controls['TreeView.Nodes'] as FormArray;\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n private cdr = inject(ChangeDetectorRef);\r\n async dataLoaded() {\r\n if (this.formEntity && this._type) {\r\n await this.AfterInit();\r\n }\r\n }\r\n\r\n AfterInit() {\r\n return new Promise(resolve => {\r\n this.formEntity?.setControl('formConfiguration', this.fb.group(new TreeConfig()));\r\n this.TreeOptions?.setValidators([Validators.required, Validators.minLength(1)]);\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n if (this._selected && this._selected.formControlName == this._type) {\r\n const treeNodes = this._selected.formConfiguration['TreeView.Nodes'];\r\n if (treeNodes?.length) {\r\n this.nodes = this.convertTreeOptionsToNodes(treeNodes);\r\n }\r\n\r\n this.syncTreeOptionsFromNodes();\r\n // for (const element of this._selected.formConfiguration['TreeView.Nodes']) {\r\n // for (const key in element) {\r\n // const item = element[key];\r\n // const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n // element[capitalizedKey] = item;\r\n // }\r\n // this.addTreeOptions();\r\n // }\r\n this.formConfiguration.patchValue({\r\n ...this._selected.formConfiguration,\r\n });\r\n } else {\r\n // this.addTreeOptions();\r\n }\r\n resolve(true);\r\n });\r\n }\r\n\r\n /**\r\n * 当选择项的文本发生变化时,更新对应的值\r\n * @param event 输入事件对象\r\n * @param index 选择项的索引位置\r\n * @description 如果选择项已有Value值则不处理,否则将中文文本转换为拼音作为Value值\r\n */\r\n // textChange(event, index) {\r\n // const TreeOptionsItem = this.TreeOptions.at(index);\r\n // const value = event.target.value;\r\n // if (TreeOptionsItem.get('Value')?.value) return;\r\n // TreeOptionsItem.patchValue({\r\n // Value: structuredClone(value),\r\n // });\r\n // }\r\n /**字段标签input失去标点生成字段名字 */\r\n disPlayNameInputBlur(event) {\r\n if (!this.nodeForm) return;\r\n const value = event.target.value;\r\n const pinyin = this.toPinyinService.get(value);\r\n const nameInput = this.nodeForm.get('key');\r\n if (!nameInput || nameInput.value) return;\r\n nameInput.patchValue(pinyin);\r\n }\r\n\r\n /**调整表格位置 */\r\n // drop(event: any) {\r\n // moveItemInArray(this.TreeOptions.controls, event.previousIndex, event.currentIndex);\r\n // this.TreeOptions.updateValueAndValidity();\r\n // }\r\n\r\n /**tree数据 */\r\n nodes: any[] = [];\r\n\r\n /**已展开的节点 */\r\n anExpandedNode: any[] = [];\r\n\r\n /**是否全部展开 */\r\n isAllExpanded = false;\r\n\r\n /**点击展开树节点图标触发 */\r\n nzExpandChange(event: any) {\r\n let anExpandedNode = this.anExpandedNode;\r\n if (anExpandedNode.includes(event.node.key)) {\r\n anExpandedNode = anExpandedNode.filter(key => key !== event.node.key);\r\n } else {\r\n anExpandedNode.push(event.node.key);\r\n }\r\n this.anExpandedNode = anExpandedNode;\r\n\r\n // 检查是否所有有子节点的节点都已展开\r\n // const allKeys = this.getAllNodeKeys(this.nodes);\r\n this.isAllExpanded = anExpandedNode.length > 0;\r\n }\r\n\r\n /**切换展开/收缩所有节点 */\r\n toggleExpandAll() {\r\n this.isAllExpanded = !this.isAllExpanded;\r\n this.anExpandedNode = this.isAllExpanded ? this.getAllNodeKeys(this.nodes) : [];\r\n if (!this.isAllExpanded) {\r\n this.nodes = [...this.setExpanded(this.nodes, false)];\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n //递归设置nodes中的expanded值 并且返回一个数组\r\n setExpanded(nodes: any[], expanded: boolean): string[] {\r\n for (const node of nodes) {\r\n node.expanded = expanded;\r\n if (node.children?.length) {\r\n node.children = this.setExpanded(node.children, expanded);\r\n }\r\n }\r\n return nodes;\r\n }\r\n\r\n /**获取所有有子节点的节点的key */\r\n private getAllNodeKeys(nodes: any[]): string[] {\r\n const keys: string[] = [];\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n keys.push(node.key);\r\n keys.push(...this.getAllNodeKeys(node.children));\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**检查是否有任何节点包含子节点 */\r\n hasAnyNodeWithChildren(): boolean {\r\n return this.getAllNodeKeys(this.nodes).length > 0;\r\n }\r\n\r\n /**更新展开状态 */\r\n private updateExpandedState() {\r\n const allKeys = this.getAllNodeKeys(this.nodes);\r\n this.isAllExpanded =\r\n allKeys.length > 0 && allKeys.every(key => this.anExpandedNode.includes(key));\r\n }\r\n /**正在操作的节点项 */\r\n selectTree: any;\r\n /**是否创建子节点 */\r\n isCreateChild: boolean | any = false;\r\n /**模态框状态 */\r\n isVisible: boolean | any = false;\r\n\r\n /**用于确定模态的繁忙状态是否为真 */\r\n modalBusy: boolean | any = false;\r\n /**创建表单 */\r\n nodeForm: FormGroup | undefined;\r\n\r\n /**表单控件模板-动态赋值表单控件 */\r\n @ViewChild('nodeModalSubmit', { static: false }) nodeModalSubmit: ElementRef;\r\n\r\n /**生成GUID */\r\n private generateGuid(): string {\r\n return crypto.randomUUID();\r\n }\r\n get keyInput() {\r\n return this.nodeForm?.get('key') as FormControl;\r\n }\r\n private _LocalizationService = inject(LocalizationService);\r\n /**\r\n * 验证器:检查字符串格式和唯一性\r\n * @description 格式只允许字母、数字、下划线和短横线,且值在树中必须唯一\r\n */\r\n keyValidator() {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const regex = /^[a-zA-Z0-9_-]+$/;\r\n if (control.value && !regex.test(control.value)) {\r\n return { repetition: this._LocalizationService.instant(`Cms::SlugValidatorsText`) };\r\n }\r\n // 检查唯一性\r\n if (control.value && this.isKeyExists(control.value)) {\r\n return { repetition: this._LocalizationService.instant(`Cms::ValueAlreadyExis`) };\r\n }\r\n return null;\r\n };\r\n }\r\n /**\r\n * 检查 key 是否在树中已存在\r\n * @param key 要检查的 key 值\r\n * @returns 如果存在返回 true,否则返回 false\r\n */\r\n private isKeyExists(key: string): boolean {\r\n const currentKey = this.selectTree?.key;\r\n return this.findKeyInNodes(this.nodes, key, currentKey);\r\n }\r\n\r\n /**\r\n * 递归查找 key 是否存在于节点中\r\n * @param nodes 节点数组\r\n * @param targetKey 要查找的 key\r\n * @param excludeKey 要排除的 key(编辑时排除当前节点)\r\n * @returns 如果找到返回 true,否则返回 false\r\n */\r\n private findKeyInNodes(nodes: any[], targetKey: string, excludeKey?: string): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey && node.key !== excludeKey) {\r\n return true;\r\n }\r\n if (node.children?.length && this.findKeyInNodes(node.children, targetKey, excludeKey)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**创建节点 */\r\n addNodeBtn() {\r\n this.isVisible = true;\r\n this.isCreateChild = false;\r\n this.selectTree = null;\r\n this.nodeForm = this.fb.group({\r\n title: ['', Validators.required],\r\n key: ['', [Validators.required, this.keyValidator()]],\r\n isChecked: [false],\r\n children: new FormArray([]),\r\n });\r\n }\r\n /**编辑节点 */\r\n editItemBtn(node: any) {\r\n this.isVisible = true;\r\n this.isCreateChild = false;\r\n this.selectTree = node;\r\n this.nodeForm = this.fb.group({\r\n title: [node.title, Validators.required],\r\n key: [node.key, [Validators.required, this.keyValidator()]],\r\n isChecked: [node.origin?.isChecked ?? false],\r\n children: new FormArray([]),\r\n });\r\n }\r\n /**创建子节点 */\r\n createChildItemBtn(node: any) {\r\n this.isVisible = true;\r\n this.isCreateChild = true;\r\n this.selectTree = node;\r\n this.nodeForm = this.fb.group({\r\n title: ['', Validators.required],\r\n key: ['', [Validators.required, this.keyValidator()]],\r\n isChecked: [false],\r\n children: new FormArray([]),\r\n });\r\n }\r\n /**重置模态框 */\r\n resetModal() {\r\n this.isVisible = false;\r\n this.isCreateChild = false;\r\n this.selectTree = null;\r\n }\r\n /**创建编辑保存 */\r\n createOrEditSave() {\r\n const { value } = this.nodeForm;\r\n const { selectTree, isCreateChild, nodes, anExpandedNode } = this;\r\n const isMultiple = this.formConfiguration.controls['TreeView.Multiple'] as FormControl;\r\n\r\n if (selectTree) {\r\n if (isCreateChild) {\r\n // 创建子节点\r\n this.addChildNode(nodes, selectTree.key, value);\r\n // 自动展开父节点\r\n if (!anExpandedNode.includes(selectTree.key)) {\r\n this.anExpandedNode = [...anExpandedNode, selectTree.key];\r\n }\r\n } else {\r\n // 编辑节点\r\n this.updateNodeByReference(selectTree.origin, value);\r\n }\r\n } else {\r\n // 创建根节点\r\n nodes.push(value);\r\n }\r\n\r\n // 单选模式下,如果当前节点被选中,清除其他节点的选中状态\r\n if (!isMultiple.value && value.isChecked) {\r\n this.clearAllChecked(nodes);\r\n this.setNodeCheckedOnly(nodes, value.key, true);\r\n }\r\n\r\n this.nodes = [...nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.updateExpandedState();\r\n this.cdr.detectChanges();\r\n this.resetModal();\r\n }\r\n\r\n /**递归添加子节点 */\r\n private addChildNode(nodes: any[], parentKey: string, newNode: any): boolean {\r\n for (const node of nodes) {\r\n if (node.key === parentKey) {\r\n if (!node.children) node.children = [];\r\n node.children.push(newNode);\r\n return true;\r\n }\r\n if (node.children?.length && this.addChildNode(node.children, parentKey, newNode)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**通过引用更新节点 */\r\n private updateNodeByReference(node: any, updatedData: any): void {\r\n node.title = updatedData.title;\r\n node.key = updatedData.key;\r\n node.isChecked = updatedData.isChecked;\r\n }\r\n\r\n /**删除节点 */\r\n deleteMenuItemBtn(node: any) {\r\n this.deleteNode(this.nodes, node.key);\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.updateExpandedState();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**递归删除节点 */\r\n private deleteNode(nodes: any[], targetKey: string): boolean {\r\n for (let i = 0; i < nodes.length; i++) {\r\n if (nodes[i].key === targetKey) {\r\n nodes.splice(i, 1);\r\n return true;\r\n }\r\n if (nodes[i].children?.length && this.deleteNode(nodes[i].children, targetKey)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**同步 nodes 到 TreeOptions */\r\n private syncTreeOptionsFromNodes() {\r\n this.TreeOptions.clear();\r\n const cleanedNodes = this.nodes.map(node => this.cleanNode(node));\r\n cleanedNodes.forEach(node => {\r\n this.TreeOptions.push(this.createTreeFormGroup(node));\r\n });\r\n }\r\n\r\n /**递归创建树表单组 */\r\n private createTreeFormGroup(node: any): FormGroup {\r\n const children = new FormArray([]);\r\n if (node.children?.length) {\r\n node.children.forEach(child => {\r\n children.push(this.createTreeFormGroup(child));\r\n });\r\n }\r\n return this.fb.group({\r\n Text: [node.title || '', Validators.required],\r\n Value: [node.key || '', Validators.required],\r\n Selected: [node.isChecked ?? false],\r\n Children: children,\r\n });\r\n }\r\n\r\n /**清理节点中的 ng-zorro 内部字段 */\r\n private cleanNode(node: any): any {\r\n const { title, key, isChecked, children } = node;\r\n return {\r\n title,\r\n key,\r\n isChecked,\r\n children: children?.length ? children.map(child => this.cleanNode(child)) : [],\r\n };\r\n }\r\n\r\n /**将 TreeOptions 数据结构转换为 nodes 数据结构 */\r\n private convertTreeOptionsToNodes(treeOptions: any[]): any[] {\r\n const result = [];\r\n for (const option of treeOptions) {\r\n result.push({\r\n title: option.Text,\r\n key: option.Value,\r\n isChecked: option.Selected ?? false,\r\n children: option.Children?.length ? this.convertTreeOptionsToNodes(option.Children) : [],\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n /**设置 */\r\n toggleMultiple(event: any) {\r\n this.clearAllChecked(this.nodes);\r\n return;\r\n const isMultiple = this.formConfiguration.controls['TreeView.Multiple'] as FormControl;\r\n if (!isMultiple.value) {\r\n this.clearAllChecked(this.nodes);\r\n } else {\r\n this.applyMultipleLogic(this.nodes);\r\n }\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**应用多选逻辑:选中的节点同时选中其所有子节点和父节点 */\r\n private applyMultipleLogic(nodes: any[]) {\r\n const checkedKeys: string[] = [];\r\n this.collectCheckedKeys(nodes, checkedKeys);\r\n checkedKeys.forEach(key => {\r\n this.setNodeChecked(nodes, key, true);\r\n this.setParentNodesChecked(nodes, key);\r\n });\r\n }\r\n\r\n /**收集所有选中节点的key */\r\n private collectCheckedKeys(nodes: any[], result: string[]) {\r\n for (const node of nodes) {\r\n if (node.isChecked) {\r\n result.push(node.key);\r\n }\r\n if (node.children?.length) {\r\n this.collectCheckedKeys(node.children, result);\r\n }\r\n }\r\n }\r\n\r\n /**切换节点选中状态 */\r\n toggleNodeChecked(event: any, node: any) {\r\n event.stopPropagation();\r\n const isMultiple = this.formConfiguration.controls['TreeView.Multiple'] as FormControl;\r\n const newChecked = !node.origin?.isChecked;\r\n\r\n if (!isMultiple.value) {\r\n this.clearAllChecked(this.nodes);\r\n if (newChecked) {\r\n this.setNodeCheckedOnly(this.nodes, node.key, true);\r\n }\r\n } else {\r\n this.setNodeChecked(this.nodes, node.key, newChecked);\r\n if (newChecked) {\r\n this.setParentNodesChecked(this.nodes, node.key);\r\n }\r\n }\r\n\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**清除所有节点的选中状态 */\r\n private clearAllChecked(nodes: any[]) {\r\n for (const node of nodes) {\r\n node.isChecked = false;\r\n if (node.children?.length) {\r\n this.clearAllChecked(node.children);\r\n }\r\n }\r\n }\r\n\r\n /**设置指定节点的选中状态 */\r\n private setNodeChecked(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n if (node.children?.length) {\r\n this.setChildrenChecked(node.children, checked);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeChecked(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**递归设置所有子节点的选中状态 */\r\n private setChildrenChecked(children: any[], checked: boolean) {\r\n for (const child of children) {\r\n child.isChecked = checked;\r\n if (child.children?.length) {\r\n this.setChildrenChecked(child.children, checked);\r\n }\r\n }\r\n }\r\n\r\n /**选中所有父节点 */\r\n private setParentNodesChecked(nodes: any[], targetKey: string, parent: any = null): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n if (parent) {\r\n parent.isChecked = true;\r\n this.setParentNodesChecked(this.nodes, parent.key);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setParentNodesChecked(node.children, targetKey, node)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**仅设置指定节点的选中状态,不影响子节点和父节点 */\r\n private setNodeCheckedOnly(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeCheckedOnly(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**拖拽 */\r\n dropOver(event: any) {\r\n const dragNode = event.dragNode;\r\n const targetNode = event.node;\r\n const pos = event.pos;\r\n\r\n // 移除被拖拽的节点\r\n const draggedData = this.removeNodeByKey(this.nodes, dragNode.key);\r\n if (!draggedData) return;\r\n\r\n // pos: 0=内部, -1=上方, 1=下方\r\n if (pos === 0) {\r\n // 放入目标节点内部作为子节点\r\n this.addChildNode(this.nodes, targetNode.key, draggedData);\r\n if (!this.anExpandedNode.includes(targetNode.key)) {\r\n this.anExpandedNode = [...this.anExpandedNode, targetNode.key];\r\n }\r\n } else {\r\n // 放在目标节点前后\r\n this.insertNodeBeside(this.nodes, targetNode.key, draggedData, pos);\r\n }\r\n\r\n this.nodes = [...this.nodes];\r\n this.syncTreeOptionsFromNodes();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**移除并返回节点 */\r\n private removeNodeByKey(\r\n nodes: any[],\r\n targetKey: string,\r\n parent: any[] = null,\r\n index: number = -1\r\n ): any {\r\n for (let i = 0; i < nodes.length; i++) {\r\n if (nodes[i].key === targetKey) {\r\n return nodes.splice(i, 1)[0];\r\n }\r\n if (nodes[i].children?.length) {\r\n const found = this.removeNodeByKey(nodes[i].children, targetKey, nodes[i].children, i);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**在目标节点旁边插入节点 */\r\n private insertNodeBeside(\r\n nodes: any[],\r\n targetKey: string,\r\n newNode: any,\r\n position: number\r\n ): boolean {\r\n for (let i = 0; i < nodes.length; i++) {\r\n if (nodes[i].key === targetKey) {\r\n const insertIndex = position === -1 ? i : i + 1;\r\n nodes.splice(insertIndex, 0, newNode);\r\n return true;\r\n }\r\n if (\r\n nodes[i].children?.length &&\r\n this.insertNodeBeside(nodes[i].children, targetKey, newNode, position)\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**判断节点的子节点是否有被选中的 */\r\n hasChildrenChecked(node: any): boolean {\r\n if (node.origin?.isChecked) {\r\n return false;\r\n }\r\n const originNode = this.findNodeByKey(this.nodes, node.key);\r\n if (!originNode?.children?.length) {\r\n return false;\r\n }\r\n return this.hasAnyChildChecked(originNode.children);\r\n }\r\n\r\n /**递归检查子节点是否有被选中的 */\r\n private hasAnyChildChecked(children: any[]): boolean {\r\n for (const child of children) {\r\n if (child.isChecked) {\r\n return true;\r\n }\r\n if (child.children?.length && this.hasAnyChildChecked(child.children)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**根据 key 查找节点 */\r\n private findNodeByKey(nodes: any[], key: string): any {\r\n for (const node of nodes) {\r\n if (node.key === key) {\r\n return node;\r\n }\r\n if (node.children?.length) {\r\n const found = this.findNodeByKey(node.children, key);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const checkboxes = document.querySelectorAll('input[type=\"checkbox\"][data-indeterminate]');\r\n checkboxes.forEach((checkbox: HTMLInputElement) => {\r\n const indeterminate = checkbox.getAttribute('data-indeterminate') === 'true';\r\n checkbox.indeterminate = indeterminate;\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"formEntity\">\r\n <div formGroupName=\"formConfiguration\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label \">{{'AbpDynamicForm::Nodes' | abpLocalization}}</label>\r\n <button *ngIf=\"hasAnyNodeWithChildren()\" class=\"btn btn-sm btn-light ms-2\"\r\n style=\"--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;\" type=\"button\"\r\n (click.stop)=\"toggleExpandAll()\">\r\n <i class=\"fa\" [ngClass]=\"isAllExpanded ? 'fa-compress' : 'fa-expand'\"></i>\r\n </button>\r\n <button class=\"btn btn-sm btn-dark soft ms-2 float-end\" type=\"button\"\r\n (click.stop)=\"addNodeBtn()\">{{'AbpDynamicForm::AddNode' |\r\n abpLocalization}}</button>\r\n <div class=\"border p-2 rounded-2 mt-2\">\r\n @if (nodes.length>0) {\r\n <abp-tree class=\"mb-2\" [nodes]=\"nodes\" [checkable]=\"false\" (dropOver)=\"dropOver($event)\"\r\n (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\" [draggable]=\"true\">\r\n <ng-template #menu let-node>\r\n <button ngbDropdownItem (click.stop)=\"editItemBtn(node)\"><i\r\n class=\" me-1 fa fa-pencil\"></i>{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"createChildItemBtn(node)\"><i\r\n class=\" me-1 fa fa-plus\"></i>{{'AbpDynamicForm::AddSubNode' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"deleteMenuItemBtn(node)\"><i\r\n class=\" me-1 fa fa-remove\"></i>{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </ng-template>\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n }\r\n <div *ngIf=\"nodes.length === 0\" class=\"text-muted \">{{'AbpDynamicForm::PleaseAddNode' |\r\n abpLocalization}}</div>\r\n </div>\r\n <div *ngIf=\"TreeOptions?.errors?.required\" class=\"invalid-feedback \">\r\n {{'AbpValidation::ThisFieldIsRequired.' | abpLocalization: 'Nodes'}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMultiple($event)\"\r\n formControlName=\"TreeView.Multiple\" id=\"Multiple\">\r\n <label class=\"form-check-label\" for=\"Multiple\">\r\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\r\n #submitclick></button>\r\n </div>\r\n</form>\r\n\r\n\r\n<!-- [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\" (visibleChange)=\"tableSelectVisibleChange($event)\"-->\r\n<abp-modal [(visible)]=\"isVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{isCreateChild ? ('AbpDynamicForm::AddSubNode' | abpLocalization) : (selectTree ? ('AbpUi::Edit' |\r\n abpLocalization) : ('Cms::New' | abpLocalization))}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"nodeForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"nodeForm\" (submit)=\"createOrEditSave()\">\r\n <button type=\"submit\" #nodeModalSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::NodeItemText' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"\"\r\n (blur)=\"disPlayNameInputBlur($event)\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemValue' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"key\" [placeholder]=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"keyInput?.errors?.repetition\">\r\n {{keyInput?.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"isChecked\" id=\"isSelected\">\r\n <label class=\"form-check-label\" for=\"isSelected\">\r\n {{'AbpDynamicForm::Selected' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!nodeForm.valid\"\r\n (abpClick)=\"nodeModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\r\n abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-tree-control',\r\n templateUrl: './tree-control.component.html',\r\n styleUrls: ['./tree-control.component.scss'],\r\n})\r\nexport class TreeControlComponent implements OnDestroy, AfterViewChecked {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any=[];\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v||[];\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n if (this._fields.required) {\r\n ValidatorsArray.push(Validators.required);\r\n }\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n const treeNodes = this.formConfiguration['TreeView.Nodes'];\r\n if (treeNodes?.length) {\r\n this.nodes = this.convertTreeOptionsToNodes(treeNodes);\r\n }\r\n \r\n // 如果没有预设值,从节点中获取默认选中的值\r\n if (!this._selected || this._selected.length === 0) {\r\n this._selected = this.getSelectedKeys(this.nodes);\r\n } else {\r\n // 有预设值时,同步更新 nodes 的选中状态\r\n this.syncNodesFromSelectedKeys(this._selected);\r\n }\r\n \r\n const newControl = this.fb.control(this._selected, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n\r\n /**将 TreeOptions 数据结构转换为 nodes 数据结构 */\r\n private convertTreeOptionsToNodes(treeOptions: any[]): any[] {\r\n const result = [];\r\n for (const option of treeOptions) {\r\n result.push({\r\n title: option.Text,\r\n key: option.Value,\r\n isChecked: option.Selected ?? false,\r\n children: option.Children?.length ? this.convertTreeOptionsToNodes(option.Children) : [],\r\n });\r\n }\r\n return result;\r\n }\r\n ngOnDestroy(): void {\r\n if (this.extraProperties && this._fields?.field?.name) {\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n }\r\n\r\n /**tree数据 */\r\n nodes: any[] = [];\r\n\r\n /**已展开的节点 */\r\n anExpandedNode: any[] = [];\r\n\r\n /**是否全部展开 */\r\n isAllExpanded = false;\r\n\r\n /**点击展开树节点图标触发 */\r\n nzExpandChange(event: any) {\r\n let anExpandedNode = this.anExpandedNode;\r\n if (anExpandedNode.includes(event.node.key)) {\r\n anExpandedNode = anExpandedNode.filter(key => key !== event.node.key);\r\n } else {\r\n anExpandedNode.push(event.node.key);\r\n }\r\n this.anExpandedNode = anExpandedNode;\r\n \r\n // 检查是否所有有子节点的节点都已展开\r\n const allKeys = this.getAllNodeKeys(this.nodes);\r\n this.isAllExpanded = allKeys.length > 0 && allKeys.every(key => anExpandedNode.includes(key));\r\n }\r\n\r\n /**切换展开/收缩所有节点 */\r\n toggleExpandAll() {\r\n this.isAllExpanded = !this.isAllExpanded;\r\n this.anExpandedNode = this.isAllExpanded ? this.getAllNodeKeys(this.nodes) : [];\r\n if (!this.isAllExpanded) {\r\n this.nodes = [...this.setExpanded(this.nodes, false)];\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**递归设置nodes中的expanded值 并且返回一个数组 */\r\n private setExpanded(nodes: any[], expanded: boolean): any[] {\r\n for (const node of nodes) {\r\n node.expanded = expanded;\r\n if (node.children?.length) {\r\n node.children = this.setExpanded(node.children, expanded);\r\n }\r\n }\r\n return nodes;\r\n }\r\n\r\n /**获取所有有子节点的节点的key */\r\n private getAllNodeKeys(nodes: any[]): string[] {\r\n const keys: string[] = [];\r\n for (const node of nodes) {\r\n if (node.children?.length) {\r\n keys.push(node.key);\r\n keys.push(...this.getAllNodeKeys(node.children));\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**检查是否有任何节点包含子节点 */\r\n hasAnyNodeWithChildren(): boolean {\r\n return this.getAllNodeKeys(this.nodes).length > 0;\r\n }\r\n\r\n /**切换节点选中状态 */\r\n toggleNodeChecked(event: any, node: any) {\r\n event.stopPropagation();\r\n const isMultiple = this.formConfiguration['TreeView.Multiple'];\r\n const newChecked = !node.origin?.isChecked;\r\n \r\n if (!isMultiple) {\r\n this.clearAllChecked(this.nodes);\r\n if (newChecked) {\r\n this.setNodeCheckedOnly(this.nodes, node.key, true);\r\n }\r\n } else {\r\n this.setNodeChecked(this.nodes, node.key, newChecked);\r\n if (newChecked) {\r\n this.setParentNodesChecked(this.nodes, node.key);\r\n }\r\n }\r\n \r\n this.nodes = [...this.nodes];\r\n this.updateFormValue();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**清除所有节点的选中状态 */\r\n private clearAllChecked(nodes: any[]) {\r\n for (const node of nodes) {\r\n node.isChecked = false;\r\n if (node.children?.length) {\r\n this.clearAllChecked(node.children);\r\n }\r\n }\r\n }\r\n\r\n /**设置指定节点的选中状态 */\r\n private setNodeChecked(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n if (node.children?.length) {\r\n this.setChildrenChecked(node.children, checked);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeChecked(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**递归设置所有子节点的选中状态 */\r\n private setChildrenChecked(children: any[], checked: boolean) {\r\n for (const child of children) {\r\n child.isChecked = checked;\r\n if (child.children?.length) {\r\n this.setChildrenChecked(child.children, checked);\r\n }\r\n }\r\n }\r\n\r\n /**选中所有父节点 */\r\n private setParentNodesChecked(nodes: any[], targetKey: string, parent: any = null): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n if (parent) {\r\n parent.isChecked = true;\r\n this.setParentNodesChecked(this.nodes, parent.key);\r\n }\r\n return true;\r\n }\r\n if (node.children?.length && this.setParentNodesChecked(node.children, targetKey, node)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**更新表单值 */\r\n private updateFormValue() {\r\n const selectedKeys = this.getSelectedKeys(this.nodes);\r\n const control = this.extraProperties.get(this._fields.field.name);\r\n control?.setValue(selectedKeys);\r\n }\r\n\r\n /**获取所有选中节点的 key */\r\n private getSelectedKeys(nodes: any[]): string[] {\r\n const keys = [];\r\n for (const node of nodes) {\r\n if (node.isChecked) {\r\n keys.push(node.key);\r\n }\r\n if (node.children?.length) {\r\n keys.push(...this.getSelectedKeys(node.children));\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**判断节点的子节点是否有被选中的 */\r\n hasChildrenChecked(node: any): boolean {\r\n if (node.origin?.isChecked) {\r\n return false;\r\n }\r\n const originNode = this.findNodeByKey(this.nodes, node.key);\r\n if (!originNode?.children?.length) {\r\n return false;\r\n }\r\n return this.hasAnyChildChecked(originNode.children);\r\n }\r\n\r\n /**递归检查子节点是否有被选中的 */\r\n private hasAnyChildChecked(children: any[]): boolean {\r\n for (const child of children) {\r\n if (child.isChecked) {\r\n return true;\r\n }\r\n if (child.children?.length && this.hasAnyChildChecked(child.children)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**根据 key 查找节点 */\r\n private findNodeByKey(nodes: any[], key: string): any {\r\n for (const node of nodes) {\r\n if (node.key === key) {\r\n return node;\r\n }\r\n if (node.children?.length) {\r\n const found = this.findNodeByKey(node.children, key);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**根据预设的 keys 同步更新 nodes 的选中状态 */\r\n private syncNodesFromSelectedKeys(selectedKeys: string[]) {\r\n this.clearAllChecked(this.nodes);\r\n for (const key of selectedKeys) {\r\n this.setNodeCheckedOnly(this.nodes, key, true);\r\n }\r\n }\r\n\r\n /**仅设置指定节点的选中状态,不影响子节点和父节点 */\r\n private setNodeCheckedOnly(nodes: any[], targetKey: string, checked: boolean): boolean {\r\n for (const node of nodes) {\r\n if (node.key === targetKey) {\r\n node.isChecked = checked;\r\n return true;\r\n }\r\n if (node.children?.length && this.setNodeCheckedOnly(node.children, targetKey, checked)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const checkboxes = document.querySelectorAll('input[type=\"checkbox\"][data-indeterminate]');\r\n checkboxes.forEach((checkbox: HTMLInputElement) => {\r\n const indeterminate = checkbox.getAttribute('data-indeterminate') === 'true';\r\n checkbox.indeterminate = indeterminate;\r\n });\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <button *ngIf=\"hasAnyNodeWithChildren()\" class=\"btn btn-sm btn-light ms-2\"\r\n style=\"--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;\" type=\"button\"\r\n (click.stop)=\"toggleExpandAll()\">\r\n <i class=\"fa\" [ngClass]=\"isAllExpanded ? 'fa-compress' : 'fa-expand'\"></i>\r\n </button>\r\n <div class=\"border p-2 rounded-2 mt-2\">\r\n <abp-tree [nodes]=\"nodes\" (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\">\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input #checkbox type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, OnDestroy, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-tree-search',\r\n templateUrl: './tree-search.component.html',\r\n styleUrls: ['./tree-search.component.scss'],\r\n host: { 'class': 'df-tree-search-component' }\r\n})\r\nexport class TreeSearchComponent implements OnDestroy {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n this.dataLoaded();\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n get extraProperties() {\r\n return this._entity?.get('extraProperties') as FormGroup;\r\n }\r\n private cdr = inject(ChangeDetectorRef);\r\n /**数据加载完成 */\r\n async dataLoaded() {\r\n if (this._fields && this._entity) {\r\n await this.AfterInit();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n formConfiguration: any = '';\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n this.formConfiguration = this._fields.field.formConfiguration;\r\n const isMultiple = this.formConfiguration['TreeView.Multiple'];\r\n const selectValue: any = isMultiple ? [] : null;\r\n \r\n const treeOptions = this.formConfiguration['TreeView.Nodes'];\r\n if (treeOptions?.length) {\r\n this.nodes = this.convertTreeOptionsToNodes(treeOptions);\r\n }\r\n \r\n const initialValue = this._selected !== undefined ? this._selected : selectValue;\r\n const newControl = this.fb.control(initialValue, ValidatorsArray);\r\n this.extraProperties.setControl(this._fields.field.name, newControl);\r\n resolve(true);\r\n });\r\n }\r\n \r\n private convertTreeOptionsToNodes(treeOptions: any[]): any[] {\r\n return treeOptions.map(option => ({\r\n title: option.Text,\r\n key: option.Value,\r\n isLeaf: !option.Children?.length,\r\n children: option.Children?.length ? this.convertTreeOptionsToNodes(option.Children) : []\r\n }));\r\n }\r\n changeValue(event) {\r\n const selectvalue = this.extraProperties.get(this._fields.field.name).value;\r\n if (selectvalue[0] === '') {\r\n this.extraProperties.get(this._fields.field.name).setValue([]);\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.extraProperties && this._fields?.field?.name) {\r\n this.extraProperties.removeControl(this._fields.field.name);\r\n }\r\n }\r\n\r\n\r\n nodes: any[] = [];\r\n\r\n onChange($event: string[]): void {\r\n console.log($event);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div formGroupName=\"extraProperties\" class=\"selectcontrol\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <nz-tree-select class=\"form-select dignite-form-tree-select \" [nzMaxTagCount]=\"1\"\r\n nzShowSearch [nzMultiple]=\"_fields?.field?.formConfiguration?.['TreeView.Multiple'] || false\" \r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\" \r\n [nzDropdownClassName]=\"'dignite-form-tree-select-dropdown'\" [nzNodes]=\"nodes\" \r\n nzDefaultExpandAll (ngModelChange)=\"onChange($event)\"></nz-tree-select>\r\n </div>\r\n\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'df-tree-view',\r\n templateUrl: './tree-view.component.html',\r\n styleUrls: ['./tree-view.component.scss'],\r\n})\r\nexport class TreeViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n const valueOptions = this._value;\r\n \r\n if (this.type && valueOptions !== null && valueOptions !== undefined) {\r\n const nodes = this.fields?.field?.formConfiguration?.['TreeView.Nodes'] || [];\r\n const findNodeByValue = (nodeList: any[], val: any): any => {\r\n for (const node of nodeList) {\r\n if (node.value === val || node.Value === val) return node;\r\n if (node.children || node.Children) {\r\n const found = findNodeByValue(node.children || node.Children, val);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n \r\n const getTextByValue = (val: any) => {\r\n const node = findNodeByValue(nodes, val);\r\n return node?.text || node?.Text || val;\r\n };\r\n \r\n if (Array.isArray(valueOptions)) {\r\n this.showValue = valueOptions.map(getTextByValue).join(',');\r\n } else {\r\n this.showValue = getTextByValue(valueOptions);\r\n }\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n</div>\r\n}","import { FieldControlGroupInterfaces } from '../../interfaces';\r\n// import { CkEditorConfigComponent, CkEditorControlComponent } from \"./ck-editor\";\r\nimport { DateEditConfigComponent } from './date-edit/date-edit-config.component';\r\nimport { DateEditControlComponent } from './date-edit/date-edit-control.component';\r\nimport { DateEditViewComponent } from './date-edit/date-edit-view.component';\r\nimport { NumbericEditConfigComponent } from './numeric-edit/numberic-edit-config.component';\r\nimport { NumbericEditControlComponent } from './numeric-edit/numberic-edit-control.component';\r\nimport { NumericEditSearchComponent } from './numeric-edit/numeric-edit-search.component';\r\nimport { NumericEditViewComponent } from './numeric-edit/numeric-edit-view.component';\r\nimport { SelectConfigComponent, SelectControlComponent, SelectSearchComponent } from './select';\r\nimport { SelectViewComponent } from './select/select-view.component';\r\nimport { SwitchConfigComponent, SwitchControlComponent } from './switch';\r\nimport { SwitchSearchComponent } from './switch/switch-search.component';\r\nimport { SwitchViewComponent } from './switch/switch-view.component';\r\nimport { TextEditComponent, TextEditConfigComponent } from './text-edit';\r\nimport { TextEditSearchComponent } from './text-edit/text-edit-search.component';\r\nimport { TextEditViewComponent } from './text-edit/text-edit-view.component';\r\nimport { TreeConfigComponent, TreeControlComponent, TreeSearchComponent, TreeViewComponent } from './tree';\r\n\r\n/**\r\n * 表单控件分组-包含配置,控件,显示的数组\r\n */\r\nexport const FieldControlGroup: FieldControlGroupInterfaces[] = [\r\n {\r\n displayName: '文本框',\r\n name: 'TextEdit',\r\n fieldConfigComponent: TextEditConfigComponent,\r\n fieldComponent: TextEditComponent,\r\n fieldViewComponent:TextEditViewComponent,\r\n fieldSearchComponent:TextEditSearchComponent,\r\n },\r\n {\r\n displayName: '开关',\r\n name: 'Switch',\r\n fieldConfigComponent: SwitchConfigComponent,\r\n fieldComponent: SwitchControlComponent,\r\n fieldViewComponent:SwitchViewComponent,\r\n fieldSearchComponent:SwitchSearchComponent,\r\n },\r\n {\r\n displayName: '选择',\r\n name: 'Select',\r\n fieldConfigComponent: SelectConfigComponent,\r\n fieldComponent: SelectControlComponent,\r\n fieldViewComponent:SelectViewComponent,\r\n fieldSearchComponent:SelectSearchComponent,\r\n },\r\n {\r\n displayName: '数字',\r\n name: 'NumericEdit',\r\n fieldConfigComponent: NumbericEditConfigComponent,\r\n fieldComponent: NumbericEditControlComponent,\r\n fieldViewComponent:NumericEditViewComponent,\r\n fieldSearchComponent:NumericEditSearchComponent,\r\n },\r\n {\r\n displayName: '日期',\r\n name: 'DateEdit',\r\n fieldConfigComponent: DateEditConfigComponent,\r\n fieldComponent: DateEditControlComponent,\r\n fieldViewComponent:DateEditViewComponent,\r\n },\r\n {\r\n displayName: 'Tree',\r\n name: 'TreeView',\r\n fieldConfigComponent: TreeConfigComponent,\r\n fieldComponent: TreeControlComponent,\r\n fieldSearchComponent: TreeSearchComponent,\r\n fieldViewComponent:TreeViewComponent,\r\n },\r\n];\r\n\r\n\r\nexport function addFieldControlGroup(array:any[] = []) {\r\n\r\n for (const element of array) {\r\n const find = FieldControlGroup.find((control) => {\r\n return control.name === element.name;\r\n });\r\n if(!find){\r\n FieldControlGroup.push(element);\r\n }\r\n }\r\n return FieldControlGroup;\r\n}\r\n","/* eslint-disable no-unsafe-optional-chaining */\n/* eslint-disable @angular-eslint/component-selector */\nimport { Component, Inject, Input, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FieldControlGroupInterfaces } from '../../interfaces';\nimport { addFieldControlGroup, } from '../form';\n\n\n/**\n * 丢弃\n * @deprecated\n */\n@Component({\n selector: 'df-dynamic',\n templateUrl: './dynamic.component.html',\n styleUrls: ['./dynamic.component.scss'],\n})\nexport class DynamicComponent {\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v === undefined ? '' : v === null ? '' : v;\n }\n\n /**表单控件类型 */\n _type: string;\n @Input()\n public set type(v: string) {\n this._type = v;\n if (this._entity) this.dataLoaded(3);\n }\n\n /**语言 */\n _culture: FormGroup | undefined;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n if (v) {\n this._entity = v;\n this.dataLoaded(3);\n }\n }\n\n /**表单控件模板-动态表单配置组件 */\n @ViewChild('FormControlRef', { read: ViewContainerRef, static: true })\n FormControlRef?: ViewContainerRef;\n\n /**表单控件模板-动态表单组件 */\n @ViewChild('FormComponentsRef', { read: ViewContainerRef, static: true })\n FormComponentsRef?: ViewContainerRef;\n\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\n\n /**数据加载完成 */\n async dataLoaded(val) {\n const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\n if (this._entity) {\n //加载所有的动态表单组件\n if (this._type) {\n const fieldControlItem = _fieldControlGroup.find(el => el.name === this._type);\n this.loadfieldConfigComponent(fieldControlItem);\n }\n if (this._fields && this._parentFiledName && this._culture) {\n /**表单控件组中的项 */\n const fieldControlItem = _fieldControlGroup.find(\n el => el.name === this._fields?.field?.formControlName\n );\n this.loadfieldComponent(fieldControlItem);\n }\n }\n }\n\n /**加载动态表单配置组件 */\n loadfieldConfigComponent(FieldControlItem?: FieldControlGroupInterfaces) {\n \n \n //清空了容器中的所有组件\n this.FormControlRef?.clear();\n if (!FieldControlItem || !FieldControlItem.fieldConfigComponent) return;\n //在容器中创建组件\n const { instance }:any = this.FormControlRef?.createComponent(\n FieldControlItem.fieldConfigComponent\n ); //创建组件模板\n /**向创建的组件模板中传值 */\n instance.selected = this._selected;\n instance.type = this._type;\n instance.Entity = this._entity;\n }\n\n /**加载动态表单组件 */\n loadfieldComponent(FieldControlItem?: FieldControlGroupInterfaces) {\n // this.FormControlRef.clear\n //清空了容器中的所有组件\n this.FormComponentsRef?.clear();\n if (!FieldControlItem || !FieldControlItem.fieldComponent) return;\n //在容器中创建组件\n const { instance }:any = this.FormComponentsRef?.createComponent(FieldControlItem.fieldComponent); //创建组件模板\n /**向创建的组件模板中传值 */\n instance.fields = this._fields;\n instance.parentFiledName = this._parentFiledName;\n instance.selected = this._selected;\n instance.culture = this._culture;\n instance.entity = this._entity;\n \n }\n\n}\n","\n<div [formGroup]=\"_entity\">\n <template #FormControlRef></template>\n <template #FormComponentsRef></template>\n</div>\n\n","import { Inject, Injectable } from '@angular/core';\r\nimport { FieldControlGroup } from '../components';\r\n\r\n/**\r\n * 表单控件服务\r\n * @description 用于获取表单所有控件的配置信息\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormControlService {\r\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\r\n _FieldControlGroup = FieldControlGroup;\r\n\r\n addFieldControlGroup() {\r\n const array=this.mergedConfig;\r\n for (const element of array) {\r\n const find = FieldControlGroup.find(control => {\r\n return control.name === element.name;\r\n });\r\n if (!find) {\r\n FieldControlGroup.push(element);\r\n }\r\n }\r\n return FieldControlGroup;\r\n }\r\n}\r\n","/* eslint-disable no-unsafe-optional-chaining */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, ViewChild, ViewContainerRef, AfterContentInit } from '@angular/core';\r\nimport { FormControlService } from '../../services/form-control.service';\r\nimport { FieldControlGroupInterfaces } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'df-dynamic-view',\r\n templateUrl: './dynamic-view.component.html',\r\n styleUrl: './dynamic-view.component.scss',\r\n})\r\nexport class DynamicViewComponent implements AfterContentInit {\r\n constructor(private _FormControlService: FormControlService) {}\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n // if(this._value) this.dataLoaded();\r\n }\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormTemplateRef', { read: ViewContainerRef, static: true })\r\n FormTemplateRef?: ViewContainerRef;\r\n\r\n ngAfterContentInit(): void {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n if (this.type && this._value!=='') {\r\n const _fieldControlGroup: any[] = this._FormControlService.addFieldControlGroup();\r\n const fieldControlItem = _fieldControlGroup.find(el => el.name === this.type);\r\n this.loadViewComponent(fieldControlItem);\r\n }\r\n }\r\n\r\n /**加载动态展示组件 */\r\n loadViewComponent(FieldControlItem?: FieldControlGroupInterfaces) {\r\n //清空了容器中的所有组件\r\n this.FormTemplateRef?.clear();\r\n if (!FieldControlItem || !FieldControlItem.fieldViewComponent) return;\r\n //在容器中创建组件\r\n const { instance }: any = this.FormTemplateRef?.createComponent(\r\n FieldControlItem.fieldViewComponent,\r\n ); //创建组件模板\r\n /**向创建的组件模板中传值 */\r\n instance.type = this.type;\r\n instance.value = this._value;\r\n instance.fields = this.fields;\r\n instance.showInList = this.showInList;\r\n }\r\n}\r\n","<template #FormTemplateRef></template>","/* eslint-disable no-unsafe-optional-chaining */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n Inject,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { addFieldControlGroup } from '../form';\r\n\r\n@Component({\r\n selector: 'df-dynamic-config',\r\n templateUrl: './dynamic-config.component.html',\r\n styleUrl: './dynamic-config.component.scss',\r\n})\r\nexport class DynamicConfigComponent implements AfterContentInit {\r\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\r\n\r\n formControlName: any = '';\r\n @Input() set type(v: string) {\r\n this.formControlName = v;\r\n }\r\n @Input() selected: any;\r\n\r\n formEntity: FormGroup | undefined;\r\n @Input() set form(v: FormGroup | undefined) {\r\n this.formEntity = v;\r\n }\r\n\r\n \r\n\r\n get formControlNameInput(){\r\n return this.formEntity.get('formControlName') as FormControl;\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.loadfieldConfigComponent(this.formControlName);\r\n this.formControlNameInput?.valueChanges.subscribe((res: any) => {\r\n this.loadfieldConfigComponent(res);\r\n });\r\n }\r\n\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormconfigRef', { read: ViewContainerRef, static: true })\r\n FormconfigRef?: ViewContainerRef;\r\n\r\n /**加载动态表单配置组件 */\r\n loadfieldConfigComponent(formControlName:string) {\r\n const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\r\n const fieldControlItem = _fieldControlGroup.find(el => el.name === formControlName);\r\n\r\n //清空了容器中的所有组件\r\n this.FormconfigRef?.clear();\r\n if (!fieldControlItem || !fieldControlItem.fieldConfigComponent) return;\r\n //在容器中创建组件\r\n const { instance }:any = this.FormconfigRef?.createComponent(fieldControlItem.fieldConfigComponent); //创建组件模板\r\n // /**向创建的组件模板中传值 */\r\n instance.selected = this.selected?JSON.parse(JSON.stringify(this.selected)):this.selected;\r\n instance.type = formControlName;\r\n instance.Entity = this.formEntity;\r\n }\r\n}\r\n"," <template #FormconfigRef></template>","/* eslint-disable no-unsafe-optional-chaining */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n Inject,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n// import { FieldControlGroupInterfaces } from '@dignite-ng/expand.dynamic-form';\r\nimport { addFieldControlGroup } from '../form';\r\n\r\n@Component({\r\n selector: 'df-dynamic-control',\r\n templateUrl: './dynamic-control.component.html',\r\n styleUrl: './dynamic-control.component.scss',\r\n})\r\nexport class DynamicControlComponent implements AfterContentInit {\r\n /**选择的表单信息 */\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v === undefined ? '' : v === null ? '' : v;\r\n }\r\n\r\n /**语言 */\r\n _culture: FormGroup | undefined;\r\n @Input()\r\n public set culture(v: any) {\r\n this._culture = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n if (v) {\r\n this._entity = v;\r\n // this.dataLoaded(3);\r\n }\r\n }\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormControlRef', { read: ViewContainerRef, static: true })\r\n FormControlRef?: ViewContainerRef;\r\n\r\n /**表单控件模板-动态表单组件 */\r\n @ViewChild('FormComponentsRef', { read: ViewContainerRef, static: true })\r\n FormComponentsRef?: ViewContainerRef;\r\n\r\n constructor(@Inject('MERGED_FORM_CONFIG') private mergedConfig: any[]) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.loadfieldComponent(this._fields?.field?.formControlName);\r\n }\r\n\r\n // /**数据加载完成 */\r\n // async dataLoaded() {\r\n // const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\r\n // if (this._entity) {\r\n // //加载所有的动态表单组件\r\n // if (this._fields && this._parentFiledName && this._culture) {\r\n // /**表单控件组中的项 */\r\n // const fieldControlItem = _fieldControlGroup.find(\r\n // el => el.name === this._fields?.field?.formControlName,\r\n // );\r\n // this.loadfieldComponent(fieldControlItem);\r\n // }\r\n // }\r\n // }\r\n\r\n /**加载动态表单组件 */\r\n loadfieldComponent(formControlName: string) {\r\n const _fieldControlGroup: any[] = addFieldControlGroup(this.mergedConfig);\r\n /**表单控件组中的项 */\r\n const fieldControlItem = _fieldControlGroup.find(el => el.name === formControlName);\r\n\r\n //清空了容器中的所有组件\r\n this.FormComponentsRef?.clear();\r\n if (!fieldControlItem || !fieldControlItem.fieldComponent) return;\r\n //在容器中创建组件\r\n const { instance }: any = this.FormComponentsRef?.createComponent(\r\n fieldControlItem.fieldComponent,\r\n ); //创建组件模板\r\n /**向创建的组件模板中传值 */\r\n instance.fields = this._fields;\r\n instance.parentFiledName = this._parentFiledName;\r\n instance.selected = this._selected;\r\n instance.culture = this._culture;\r\n instance.entity = this._entity;\r\n }\r\n}\r\n","<template #FormComponentsRef></template>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormControlService } from '../../services/form-control.service';\r\nimport { FieldControlGroupInterfaces } from '../../interfaces';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'df-dynamic-search',\r\n templateUrl: './dynamic-search.component.html',\r\n styleUrl: './dynamic-search.component.scss',\r\n})\r\nexport class DynamicSearchComponent {\r\n constructor(private _FormControlService: FormControlService) {\r\n }\r\n\r\n \r\n\r\n /**语言 */\r\n _culture: FormGroup | any;\r\n @Input()\r\n public set culture(v: any) {\r\n this._culture = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n /**表单实体 */\r\n _entity: FormGroup | undefined;\r\n @Input()\r\n public set entity(v: any) {\r\n if (v) {\r\n this._entity = v;\r\n }\r\n }\r\n\r\n\r\n /**表单控件模板-动态表单配置组件 */\r\n @ViewChild('FormSearchTemplateRef', { read: ViewContainerRef, static: true })\r\n FormSearchTemplateRef?: ViewContainerRef;\r\n\r\n ngAfterContentInit(): void {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n if (this._fields && this._entity&&this._culture) {\r\n let _fieldControlGroup: any[] = this._FormControlService.addFieldControlGroup();\r\n let fieldControlItem = _fieldControlGroup.find(el => el.name === this._fields?.field?.formControlName);\r\n this.loadComponent(fieldControlItem);\r\n }\r\n }\r\n\r\n /**加载动态展示组件 */\r\n loadComponent(FieldControlItem?: FieldControlGroupInterfaces) {\r\n //清空了容器中的所有组件\r\n this.FormSearchTemplateRef?.clear();\r\n if (!FieldControlItem || !FieldControlItem.fieldSearchComponent) return;\r\n //在容器中创建组件\r\n const { instance }: any = this.FormSearchTemplateRef?.createComponent(\r\n FieldControlItem.fieldSearchComponent,\r\n ); //创建组件模板\r\n \r\n /**向创建的组件模板中传值 */\r\n instance.fields = this._fields;\r\n instance.parentFiledName = this._parentFiledName;\r\n instance.culture = this._culture;\r\n instance.entity = this._entity;\r\n }\r\n}\r\n","<template #FormSearchTemplateRef></template>","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\n// import { NzTreeModule } from 'ng-zorro-antd/tree';\nimport {\n TextEditConfigComponent,\n TextEditComponent,\n SwitchConfigComponent,\n SwitchControlComponent,\n NumbericEditConfigComponent,\n NumbericEditControlComponent,\n DateEditConfigComponent,\n DateEditControlComponent,\n SelectConfigComponent,\n SelectControlComponent,\n DynamicComponent,\n} from './components';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { DynamicConfigComponent } from './components/dynamic/dynamic-config.component';\nimport { DynamicViewComponent } from './components/dynamic/dynamic-view.component';\nimport { DynamicControlComponent } from './components/dynamic/dynamic-control.component';\nimport { SelectViewComponent } from './components/form/select/select-view.component';\nimport { SwitchViewComponent } from './components/form/switch/switch-view.component';\nimport { TextEditViewComponent } from './components/form/text-edit/text-edit-view.component';\nimport { DateEditViewComponent } from './components/form/date-edit/date-edit-view.component';\nimport { NumericEditViewComponent } from './components/form/numeric-edit/numeric-edit-view.component';\nimport { DynamicSearchComponent } from './components/dynamic/dynamic-search.component';\nimport { SelectSearchComponent } from './components/form/select/select-search.component';\nimport { TextEditSearchComponent } from './components/form/text-edit/text-edit-search.component';\nimport { SwitchSearchComponent } from './components/form/switch/switch-search.component';\nimport { NumericEditSearchComponent } from './components/form/numeric-edit/numeric-edit-search.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ExtensibleModule } from '@abp/ng.components/extensible';\nimport {\n TreeConfigComponent,\n TreeControlComponent,\n TreeSearchComponent,\n TreeViewComponent,\n} from './components/form/tree';\nimport { TreeModule } from '@abp/ng.components/tree';\nimport { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';\n\n@NgModule({\n declarations: [\n TextEditConfigComponent,\n TextEditComponent,\n SwitchConfigComponent,\n SwitchControlComponent,\n NumbericEditConfigComponent,\n NumbericEditControlComponent,\n DateEditConfigComponent,\n DateEditControlComponent,\n SelectConfigComponent,\n SelectControlComponent,\n DynamicComponent,\n DynamicConfigComponent,\n DynamicViewComponent,\n DynamicControlComponent,\n SelectViewComponent,\n SwitchViewComponent,\n TextEditViewComponent,\n DateEditViewComponent,\n NumericEditViewComponent,\n DynamicSearchComponent,\n SelectSearchComponent,\n TextEditSearchComponent,\n SwitchSearchComponent,\n NumericEditSearchComponent,\n TreeConfigComponent,\n TreeControlComponent,\n TreeSearchComponent,\n TreeViewComponent,\n ],\n imports: [\n FormsModule,\n CoreModule,\n ThemeSharedModule,\n ReactiveFormsModule,\n NgbDropdownModule,\n NzSelectModule,\n DragDropModule,\n NgbDatepickerModule,\n ExtensibleModule,\n TreeModule,\n NzTreeSelectModule,\n // NzTreeModule,\n ],\n exports: [\n TextEditConfigComponent,\n TextEditComponent,\n TextEditViewComponent,\n SwitchConfigComponent,\n SwitchControlComponent,\n SwitchViewComponent,\n NumbericEditConfigComponent,\n NumbericEditControlComponent,\n DateEditConfigComponent,\n DateEditControlComponent,\n DateEditViewComponent,\n SelectConfigComponent,\n SelectControlComponent,\n SelectViewComponent,\n SelectSearchComponent,\n DynamicComponent,\n DynamicConfigComponent,\n DynamicViewComponent,\n DynamicControlComponent,\n DynamicSearchComponent,\n TreeConfigComponent,\n TreeControlComponent,\n TreeSearchComponent,\n TreeViewComponent,\n ],\n providers: [],\n})\nexport class DynamicFormModule {\n static forRoot(config?: any): ModuleWithProviders<DynamicFormModule> {\n return {\n ngModule: DynamicFormModule,\n providers: [],\n };\n }\n}\n","/*\n * Public API Surface of dynamic-form\n */\n\nexport * from './lib/dynamic-form.module';\nexport * from './lib/components';\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i2.DfApiService","i5","i4","i6","i1.FormControlService"],"mappings":"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"}
|