@dignite-ng/expand.dynamic-form 0.0.7 → 0.0.8

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.
Files changed (28) hide show
  1. package/esm2022/lib/components/dynamic/dynamic.component.mjs +3 -3
  2. package/esm2022/lib/components/from/form-control-group.mjs +20 -3
  3. package/esm2022/lib/components/from/index.mjs +3 -3
  4. package/esm2022/lib/components/from/matrix/index.mjs +4 -0
  5. package/esm2022/lib/components/from/matrix/matrix-config.component.mjs +225 -0
  6. package/esm2022/lib/components/from/matrix/matrix-config.mjs +50 -0
  7. package/esm2022/lib/components/from/matrix/matrix-control.component.mjs +110 -0
  8. package/esm2022/lib/components/from/select/select-config.component.mjs +1 -1
  9. package/esm2022/lib/components/from/table/index.mjs +4 -0
  10. package/esm2022/lib/components/from/table/table-config.component.mjs +171 -0
  11. package/esm2022/lib/components/from/table/table-config.mjs +38 -0
  12. package/esm2022/lib/components/from/table/table-control.component.mjs +112 -0
  13. package/esm2022/lib/dynamic-form.module.mjs +22 -6
  14. package/fesm2022/dignite-ng-expand.dynamic-form.mjs +715 -21
  15. package/fesm2022/dignite-ng-expand.dynamic-form.mjs.map +1 -1
  16. package/lib/components/dynamic/dynamic.component.d.ts +2 -2
  17. package/lib/components/from/form-control-group.d.ts +1 -1
  18. package/lib/components/from/index.d.ts +2 -0
  19. package/lib/components/from/matrix/index.d.ts +3 -0
  20. package/lib/components/from/matrix/matrix-config.component.d.ts +72 -0
  21. package/lib/components/from/matrix/matrix-config.d.ts +24 -0
  22. package/lib/components/from/matrix/matrix-control.component.d.ts +39 -0
  23. package/lib/components/from/table/index.d.ts +3 -0
  24. package/lib/components/from/table/table-config.component.d.ts +57 -0
  25. package/lib/components/from/table/table-config.d.ts +18 -0
  26. package/lib/components/from/table/table-control.component.d.ts +36 -0
  27. package/lib/dynamic-form.module.d.ts +11 -8
  28. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, ViewChild, ChangeDetectionStrategy, Injectable, ViewContainerRef, NgModule } from '@angular/core';
2
+ import { Component, Input, ViewChild, ChangeDetectionStrategy, Injectable, inject, ViewContainerRef, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
- import { Validators, FormsModule, ReactiveFormsModule, FormArray, FormGroup, FormControl } from '@angular/forms';
4
+ import { Validators, FormsModule, ReactiveFormsModule, FormArray, FormGroup, FormControl, FormBuilder } from '@angular/forms';
5
5
  import * as i2 from '@abp/ng.core';
6
6
  import { CoreModule } from '@abp/ng.core';
7
+ import * as i6 from '@abp/ng.theme.shared';
7
8
  import { ThemeSharedModule } from '@abp/ng.theme.shared';
9
+ import * as i7 from '@ng-bootstrap/ng-bootstrap';
8
10
  import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
9
11
  import { NzTreeModule } from 'ng-zorro-antd/tree';
10
12
  import * as i4 from '@dignite-ng/expand.file-explorer';
@@ -1163,13 +1165,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1163
1165
  args: ['submitclick', { static: true }]
1164
1166
  }] } });
1165
1167
 
1166
- class SelectConfig {
1167
- /**空值文本 */
1168
- 'Select.NullText' = ['', []];
1169
- //多选
1170
- 'Select.Multiple' = [false, []];
1171
- // 选项
1172
- 'Select.Options' = new FormArray([]);
1168
+ class MatrixConfig {
1169
+ // 矩阵类型
1170
+ 'MatrixBlockTypes' = new FormArray([]);
1171
+ constructor(data) {
1172
+ if (data) {
1173
+ for (const key in data) {
1174
+ if (data.hasOwnProperty(key)) {
1175
+ this[key] = data[key];
1176
+ }
1177
+ }
1178
+ }
1179
+ }
1180
+ }
1181
+ class MatrixItemConfig {
1182
+ displayName = ['', [Validators.required]];
1183
+ /**字段名字 */
1184
+ name = ['', [Validators.required]];
1173
1185
  constructor(data) {
1174
1186
  if (data) {
1175
1187
  for (const key in data) {
@@ -1180,6 +1192,129 @@ class SelectConfig {
1180
1192
  }
1181
1193
  }
1182
1194
  }
1195
+ class matrixFieldInputBase {
1196
+ /**字段名称 Display name of this field */
1197
+ displayName = ['', [Validators.required]];
1198
+ /**字段唯一名称 Unique Name*/
1199
+ name = ['', [Validators.required]];
1200
+ /**描述 说明 */
1201
+ description = ['', []];
1202
+ /**FieldType字段类型 表单控件名称 */
1203
+ formControlName = ['TextEdit', [Validators.required]];
1204
+ /**动态表单配置 */
1205
+ formConfiguration = new FormGroup({});
1206
+ constructor(data) {
1207
+ if (data) {
1208
+ for (const key in data) {
1209
+ if (data.hasOwnProperty(key)) {
1210
+ this[key] = data[key];
1211
+ }
1212
+ }
1213
+ }
1214
+ }
1215
+ }
1216
+
1217
+ class MatrixControlComponent {
1218
+ fb;
1219
+ constructor(fb) {
1220
+ this.fb = fb;
1221
+ }
1222
+ /**表单实体 */
1223
+ _entity;
1224
+ set entity(v) {
1225
+ this._entity = v;
1226
+ this.dataLoaded();
1227
+ }
1228
+ /**字段配置列表 */
1229
+ _fields = '';
1230
+ set fields(v) {
1231
+ this._fields = v;
1232
+ this.dataLoaded();
1233
+ }
1234
+ /**父级字段名称,用于为表单设置控件赋值 */
1235
+ _parentFiledName;
1236
+ set parentFiledName(v) {
1237
+ this._parentFiledName = v;
1238
+ this.dataLoaded();
1239
+ }
1240
+ /**父级字段名称,用于为表单设置控件赋值 */
1241
+ _selected;
1242
+ set selected(v) {
1243
+ this._selected = v;
1244
+ if (v) {
1245
+ this.dataLoaded();
1246
+ }
1247
+ }
1248
+ /**语言 */
1249
+ _culture;
1250
+ set culture(v) {
1251
+ this._culture = v;
1252
+ }
1253
+ submitclick;
1254
+ /** 获取父级字段代表的表单组*/
1255
+ extraProperties;
1256
+ /**数据加载完成 */
1257
+ async dataLoaded() {
1258
+ if (this._fields && this._entity && this._parentFiledName) {
1259
+ this.extraProperties = this._entity.get(this._parentFiledName);
1260
+ await this.AfterInit();
1261
+ this.submitclick.nativeElement.click();
1262
+ if (this._selected)
1263
+ this.fieldNameControl.patchValue(this._selected);
1264
+ }
1265
+ }
1266
+ formConfiguration;
1267
+ /**获取表格字段代表的控件 */
1268
+ fieldNameControl;
1269
+ AfterInit() {
1270
+ return new Promise((resolve, rejects) => {
1271
+ let formConfiguration = this._fields.field.formConfiguration;
1272
+ let newArrayGroup = this.fb.array([]);
1273
+ this.extraProperties.setControl(this._fields.field.name, newArrayGroup);
1274
+ this.fieldNameControl = this.extraProperties.get(this._fields.field.name);
1275
+ if (this._selected) {
1276
+ this._selected.forEach(el => {
1277
+ this.addMatrixControl(formConfiguration.MatrixBlockTypes.find(item => item.name == el.matrixBlockTypeName));
1278
+ });
1279
+ }
1280
+ this.MatrixBlockTypesList = formConfiguration.MatrixBlockTypes;
1281
+ resolve(true);
1282
+ });
1283
+ }
1284
+ /**矩阵列表 */
1285
+ MatrixBlockTypesList = [];
1286
+ /**增加指定矩阵控件项 */
1287
+ addMatrixControl(item) {
1288
+ this.fieldNameControl.push(this.fb.group({
1289
+ extraProperties: new FormGroup({}),
1290
+ matrixBlockTypeName: [item.name],
1291
+ displayName: [item.displayName]
1292
+ }));
1293
+ }
1294
+ /**删除矩阵控件 */
1295
+ deleteMatrixControl(index) {
1296
+ this.fieldNameControl.removeAt(index);
1297
+ }
1298
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixControlComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
1299
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MatrixControlComponent, selector: "df-matrix-control", inputs: { entity: "entity", fields: "fields", parentFiledName: "parentFiledName", selected: "selected", culture: "culture" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-2\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls;let i=index\">\n <div class=\"card mb-3 border \" [formGroupName]=\"i\">\n <div class=\"card-header d-flex align-items-center justify-content-between border-bottom pt-1\">\n <div>{{item.value.displayName}}</div>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteMatrixControl(i)\"><i\n class=\"fas fa-trash p-2\"></i></button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngFor=\"let el of MatrixBlockTypesList;let il =index\">\n <ng-container *ngIf=\"el.name===item.value.matrixBlockTypeName\">\n <ng-container *ngFor=\"let elf of el.fields; let fi=index\">\n <ng-container>\n <df-dynamic [entity]=\"item\"\n [fields]=\"{ field: elf,displayName:elf.displayName }\"\n [selected]=\"_selected ? _selected[i][_parentFiledName][elf.name]: ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div>\n <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <ng-container *ngFor=\"let item of MatrixBlockTypesList;let i =index\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click.stop)=\"addMatrixControl(item)\"><i\n class=\"fas fa-plus me-1\"></i>{{item.displayName}}</button>\n </ng-container>\n </div>\n </div>\n <div class=\"form-text\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }] });
1300
+ }
1301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixControlComponent, decorators: [{
1302
+ type: Component,
1303
+ args: [{ selector: 'df-matrix-control', template: "<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-2\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls;let i=index\">\n <div class=\"card mb-3 border \" [formGroupName]=\"i\">\n <div class=\"card-header d-flex align-items-center justify-content-between border-bottom pt-1\">\n <div>{{item.value.displayName}}</div>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteMatrixControl(i)\"><i\n class=\"fas fa-trash p-2\"></i></button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngFor=\"let el of MatrixBlockTypesList;let il =index\">\n <ng-container *ngIf=\"el.name===item.value.matrixBlockTypeName\">\n <ng-container *ngFor=\"let elf of el.fields; let fi=index\">\n <ng-container>\n <df-dynamic [entity]=\"item\"\n [fields]=\"{ field: elf,displayName:elf.displayName }\"\n [selected]=\"_selected ? _selected[i][_parentFiledName][elf.name]: ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div>\n <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <ng-container *ngFor=\"let item of MatrixBlockTypesList;let i =index\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click.stop)=\"addMatrixControl(item)\"><i\n class=\"fas fa-plus me-1\"></i>{{item.displayName}}</button>\n </ng-container>\n </div>\n </div>\n <div class=\"form-text\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>" }]
1304
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { entity: [{
1305
+ type: Input
1306
+ }], fields: [{
1307
+ type: Input
1308
+ }], parentFiledName: [{
1309
+ type: Input
1310
+ }], selected: [{
1311
+ type: Input
1312
+ }], culture: [{
1313
+ type: Input
1314
+ }], submitclick: [{
1315
+ type: ViewChild,
1316
+ args: ['submitclick', { static: true }]
1317
+ }] } });
1183
1318
 
1184
1319
  class DfApiService {
1185
1320
  constructor() { }
@@ -1260,6 +1395,236 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1260
1395
  }]
1261
1396
  }], ctorParameters: function () { return []; } });
1262
1397
 
1398
+ class MatrixConfigComponent {
1399
+ fb;
1400
+ _DfApiService;
1401
+ constructor(fb, _DfApiService) {
1402
+ this.fb = fb;
1403
+ this._DfApiService = _DfApiService;
1404
+ }
1405
+ /**表单控件组 */
1406
+ _FieldControlGroup;
1407
+ /**表单控件类型 */
1408
+ _type;
1409
+ set type(v) {
1410
+ this._type = v;
1411
+ this.dataLoaded();
1412
+ }
1413
+ /**表单实体 */
1414
+ _Entity;
1415
+ set Entity(v) {
1416
+ this._Entity = v;
1417
+ this.dataLoaded();
1418
+ }
1419
+ /**选择的表单信息 */
1420
+ _selected;
1421
+ set selected(v) {
1422
+ if (v) {
1423
+ this._selected = v;
1424
+ this.dataLoaded();
1425
+ }
1426
+ }
1427
+ submitclick;
1428
+ async dataLoaded() {
1429
+ if (this._Entity && this._type) {
1430
+ await this.AfterInit();
1431
+ this.submitclick.nativeElement.click();
1432
+ }
1433
+ }
1434
+ AfterInit() {
1435
+ return new Promise(async (resolve, rejects) => {
1436
+ this._FieldControlGroup = getExcludeAssignControl(this._type);
1437
+ // this._FieldControlGroup = getExcludeAssignControl(this._type)
1438
+ this._Entity.setControl('formConfiguration', this.fb.group(new MatrixConfig()));
1439
+ await this.setSelectValue();
1440
+ this.formConfiguration.patchValue(this._selected.formConfiguration);
1441
+ resolve(true);
1442
+ });
1443
+ }
1444
+ setSelectValue() {
1445
+ return new Promise((resolve, rejects) => {
1446
+ if (this._selected && this._selected.formControlName == this._type) {
1447
+ this._selected.formConfiguration['MatrixBlockTypes'].forEach(((el, index) => {
1448
+ this.addMatrixBlockTypeItem(el);
1449
+ el.fields.forEach((elf, indexf) => {
1450
+ this.addMatrixFieldItem(elf, index);
1451
+ });
1452
+ }));
1453
+ resolve(true);
1454
+ }
1455
+ });
1456
+ }
1457
+ /**获取表单配置 */
1458
+ get formConfiguration() {
1459
+ return this._Entity.get('formConfiguration');
1460
+ }
1461
+ /**获取表单配置下的矩阵块表单数组 */
1462
+ get MatrixBlockTypes() {
1463
+ return this.formConfiguration.controls['MatrixBlockTypes'];
1464
+ }
1465
+ /**模态框-状态 */
1466
+ matrixModalOpen = false;
1467
+ /**模态框-是否正在编辑 */
1468
+ isMatrixModalEdit = false;
1469
+ /**模态框-用于确定模态的繁忙状态是否为真 */
1470
+ modalBusy = false;
1471
+ /**模态框-表单 */
1472
+ matrixModalForm;
1473
+ /**表单控件模板-用于在form外提交submit */
1474
+ matrixModalModalSubmit;
1475
+ /**矩阵块-选择的下标 */
1476
+ selectMatrixBlockIndex = 0;
1477
+ /**矩阵块-选择的矩阵下字段的下标 */
1478
+ selectMatrixFieldIndex = 0;
1479
+ /**模态框-状态改变 */
1480
+ matrixModalVisibleChange(event) {
1481
+ if (!event) {
1482
+ this.isMatrixModalEdit = false;
1483
+ this.matrixModalForm = undefined;
1484
+ return;
1485
+ }
1486
+ }
1487
+ /**矩阵块--新增-打开模态框 */
1488
+ addMatrixBlockType() {
1489
+ this.matrixModalForm = this.fb.group(new MatrixItemConfig());
1490
+ this.matrixModalOpen = true;
1491
+ }
1492
+ /**模态框--矩阵表单保存提交 */
1493
+ createOrEditSave() {
1494
+ let input = this.matrixModalForm.value;
1495
+ if (!this.matrixModalForm.valid)
1496
+ return;
1497
+ if (this.isMatrixModalEdit) {
1498
+ let MatrixBlockTypesItem = this.MatrixBlockTypes.at(this.selectMatrixBlockIndex);
1499
+ MatrixBlockTypesItem.patchValue({
1500
+ ...input
1501
+ });
1502
+ }
1503
+ else {
1504
+ this.addMatrixBlockTypeItem(input);
1505
+ }
1506
+ this.matrixModalOpen = false;
1507
+ }
1508
+ /**新增矩阵块-向数组表单中增加项 */
1509
+ addMatrixBlockTypeItem(input) {
1510
+ this.MatrixBlockTypes.push(new FormGroup({
1511
+ displayName: new FormControl(input.displayName, Validators.required),
1512
+ name: new FormControl(input.name, Validators.required),
1513
+ fields: new FormArray([])
1514
+ }));
1515
+ }
1516
+ /**编辑矩阵块 */
1517
+ EditMatrixBlock(input) {
1518
+ this.matrixModalForm = this.fb.group(new MatrixItemConfig());
1519
+ this.matrixModalForm.patchValue({
1520
+ ...input
1521
+ });
1522
+ this.matrixModalOpen = true;
1523
+ this.isMatrixModalEdit = true;
1524
+ }
1525
+ /**删除矩阵块 */
1526
+ DeleteMatrixBlock(index) {
1527
+ this.MatrixBlockTypes.removeAt(index);
1528
+ }
1529
+ /**矩阵块-选择 */
1530
+ selectMatrixBlockChange(index) {
1531
+ this.selectMatrixBlockIndex = index;
1532
+ }
1533
+ /**矩阵字段-新增 */
1534
+ addMatrixField() {
1535
+ this.addMatrixFieldItem('', this.selectMatrixBlockIndex);
1536
+ }
1537
+ /**矩阵字段-新增矩阵字段项 */
1538
+ addMatrixFieldItem(input = '', selectMatrixBlockIndex) {
1539
+ /**矩阵下标的矩阵项Form */
1540
+ let MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(selectMatrixBlockIndex);
1541
+ let MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields');
1542
+ MatrixFieldItemForm.push(this.fb.group({
1543
+ /**字段名称 Display name of this field */
1544
+ displayName: [input.displayName, [Validators.required]],
1545
+ /**字段唯一名称 Unique Name*/
1546
+ name: [input.name, [Validators.required]],
1547
+ /**描述 说明 */
1548
+ description: [input.description, []],
1549
+ /**FieldType字段类型 表单控件名称 */
1550
+ formControlName: [input.formControlName || 'TextEdit', [Validators.required]],
1551
+ //动态表单配置
1552
+ formConfiguration: new FormGroup({}),
1553
+ }));
1554
+ }
1555
+ /**删除矩阵字段项 */
1556
+ deleteMatrixField(MatrixFieldForm, index) {
1557
+ MatrixFieldForm.removeAt(index);
1558
+ this.selectMatrixFieldIndex = 0;
1559
+ }
1560
+ /**矩阵字段-选择 */
1561
+ selectMatrixFieldChange(MatrixBlockIndex, MatrixFieldIndex) {
1562
+ this.selectMatrixFieldIndex = MatrixFieldIndex;
1563
+ }
1564
+ get nameInput() {
1565
+ return this.matrixModalForm?.get('name');
1566
+ }
1567
+ get FieldnameInput() {
1568
+ let MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(this.selectMatrixBlockIndex);
1569
+ let MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields');
1570
+ return MatrixFieldItemForm.at(this.selectMatrixFieldIndex).get('name');
1571
+ }
1572
+ /**矩阵displayNameInput字段失去焦点 */
1573
+ displayNameInputBlur(event) {
1574
+ let value = event.target.value;
1575
+ let pinyin = this._DfApiService.chineseToPinyin(value);
1576
+ let nameInput = this.nameInput;
1577
+ if (nameInput.value)
1578
+ return;
1579
+ nameInput.patchValue(pinyin);
1580
+ }
1581
+ /**矩阵displayNameInput字段失去焦点 */
1582
+ MatrixFieldDisplayNameInputBlur(event) {
1583
+ let value = event.target.value;
1584
+ let pinyin = this._DfApiService.chineseToPinyin(value);
1585
+ let FieldnameInput = this.FieldnameInput;
1586
+ if (FieldnameInput.value)
1587
+ return;
1588
+ FieldnameInput.patchValue(pinyin);
1589
+ }
1590
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, deps: [{ token: i1.FormBuilder }, { token: DfApiService }], target: i0.ɵɵFactoryTarget.Component });
1591
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MatrixConfigComponent, selector: "df-matrix-config", inputs: { type: "type", Entity: "Entity", selected: "selected" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "matrixModalModalSubmit", first: true, predicate: ["matrixModalModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let item of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\">\n <ng-container *ngFor=\"let item of _FieldControlGroup;let i =index\">\n <option [value]=\"item.name\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <ng-container *ngIf=\"item.value.formControlName&&item\">\n <df-dynamic [type]=\"item.value.formControlName\" [entity]=\"item\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n\n\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i2.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i2.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
1592
+ }
1593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, decorators: [{
1594
+ type: Component,
1595
+ args: [{ selector: 'df-matrix-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let item of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\">\n <ng-container *ngFor=\"let item of _FieldControlGroup;let i =index\">\n <option [value]=\"item.name\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <ng-container *ngIf=\"item.value.formControlName&&item\">\n <df-dynamic [type]=\"item.value.formControlName\" [entity]=\"item\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n\n\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>" }]
1596
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: DfApiService }]; }, propDecorators: { type: [{
1597
+ type: Input
1598
+ }], Entity: [{
1599
+ type: Input
1600
+ }], selected: [{
1601
+ type: Input
1602
+ }], submitclick: [{
1603
+ type: ViewChild,
1604
+ args: ['submitclick', { static: true }]
1605
+ }], matrixModalModalSubmit: [{
1606
+ type: ViewChild,
1607
+ args: ['matrixModalModalSubmit', { static: false }]
1608
+ }] } });
1609
+
1610
+ class SelectConfig {
1611
+ /**空值文本 */
1612
+ 'Select.NullText' = ['', []];
1613
+ //多选
1614
+ 'Select.Multiple' = [false, []];
1615
+ // 选项
1616
+ 'Select.Options' = new FormArray([]);
1617
+ constructor(data) {
1618
+ if (data) {
1619
+ for (const key in data) {
1620
+ if (data.hasOwnProperty(key)) {
1621
+ this[key] = data[key];
1622
+ }
1623
+ }
1624
+ }
1625
+ }
1626
+ }
1627
+
1263
1628
  class SelectConfigComponent {
1264
1629
  fb;
1265
1630
  _DfApiService;
@@ -1435,6 +1800,307 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1435
1800
  args: ['submitclick', { static: true }]
1436
1801
  }] } });
1437
1802
 
1803
+ class TableConfig {
1804
+ // 选项
1805
+ TableColumns = new FormArray([]);
1806
+ constructor(data) {
1807
+ if (data) {
1808
+ for (const key in data) {
1809
+ if (data.hasOwnProperty(key)) {
1810
+ this[key] = data[key];
1811
+ }
1812
+ }
1813
+ }
1814
+ }
1815
+ }
1816
+ class TableFormControl {
1817
+ /**列标题 */
1818
+ displayName = ['', [Validators.required]];
1819
+ /**空间配置 */
1820
+ formConfiguration = new FormGroup({});
1821
+ /**列名 */
1822
+ name = ['', [Validators.required]];
1823
+ //控件标识
1824
+ formControlName = ['', [Validators.required]];
1825
+ /**是否必填 */
1826
+ required = [false];
1827
+ /**描述 */
1828
+ description = [''];
1829
+ constructor(data) {
1830
+ if (data) {
1831
+ for (const key in data) {
1832
+ if (data.hasOwnProperty(key)) {
1833
+ this[key] = data[key];
1834
+ }
1835
+ }
1836
+ }
1837
+ }
1838
+ }
1839
+
1840
+ class TableConfigComponent {
1841
+ fb;
1842
+ _DfApiService;
1843
+ constructor(fb, _DfApiService) {
1844
+ this.fb = fb;
1845
+ this._DfApiService = _DfApiService;
1846
+ }
1847
+ /**表单实体 */
1848
+ _Entity;
1849
+ set Entity(v) {
1850
+ this._Entity = v;
1851
+ this.dataLoaded();
1852
+ }
1853
+ /**选择的表单信息 */
1854
+ _selected;
1855
+ set selected(v) {
1856
+ if (v) {
1857
+ this._selected = v;
1858
+ this.dataLoaded();
1859
+ }
1860
+ }
1861
+ /**表单控件组 */
1862
+ _fieldControlGroup;
1863
+ /**表单控件类型 */
1864
+ _type;
1865
+ set type(v) {
1866
+ this._type = v;
1867
+ this.dataLoaded();
1868
+ }
1869
+ get formConfiguration() {
1870
+ return this._Entity.get('formConfiguration');
1871
+ }
1872
+ get TableColumns() {
1873
+ return this.formConfiguration.controls['TableColumns'];
1874
+ }
1875
+ submitclick;
1876
+ async dataLoaded() {
1877
+ if (this._Entity && this._type) {
1878
+ await this.AfterInit();
1879
+ this.submitclick.nativeElement.click();
1880
+ }
1881
+ }
1882
+ /**增加选项 */
1883
+ addTableColumns() {
1884
+ this.TableColumns.push(this.fb.group({
1885
+ ...new TableFormControl(),
1886
+ formConfiguration: [{}]
1887
+ }));
1888
+ }
1889
+ /**删除某个选项 */
1890
+ deleteTableColumns(index) {
1891
+ this.TableColumns.removeAt(index);
1892
+ }
1893
+ AfterInit() {
1894
+ return new Promise((resolve, rejects) => {
1895
+ this._Entity.setControl('formConfiguration', this.fb.group(new TableConfig()));
1896
+ this._fieldControlGroup = getExcludeAssignControl(this._type);
1897
+ if (this._selected && this._selected.formControlName == this._type) {
1898
+ this._selected.formConfiguration['TableColumns'].forEach(el => {
1899
+ this.addTableColumns();
1900
+ });
1901
+ this.formConfiguration.patchValue(this._selected.formConfiguration);
1902
+ }
1903
+ else {
1904
+ this.addTableColumns();
1905
+ }
1906
+ resolve(true);
1907
+ });
1908
+ }
1909
+ itemForm;
1910
+ /**选择表格的表单控件 */
1911
+ selectTableControl(event, i, item) {
1912
+ this.CurrentSelectionTableControlName = event.target.value;
1913
+ this.tableSelectOpen = true;
1914
+ this.tableSelectForm = this.fb.group(new TableFormControl());
1915
+ this.TableColumnsIndex = i;
1916
+ this.itemForm = item;
1917
+ }
1918
+ CurrentSelectionTableControlName;
1919
+ /**正在创建或编辑的表格项下标 */
1920
+ TableColumnsIndex;
1921
+ /**创建站点模态框状态 */
1922
+ tableSelectOpen = false;
1923
+ /**用于确定模态的繁忙状态是否为真 */
1924
+ modalBusy = false;
1925
+ /**创建站点表单 */
1926
+ tableSelectForm;
1927
+ /**表格已选择数据 */
1928
+ _tableSelected;
1929
+ /**表单控件模板-动态赋值表单控件 */
1930
+ tableSelectModalSubmit;
1931
+ /**创建站点模态框状态改变 */
1932
+ tableSelectVisibleChange(event) {
1933
+ if (!event) {
1934
+ this._tableSelected = undefined;
1935
+ this.tableSelectForm = undefined;
1936
+ this.CurrentSelectionTableControlName = undefined;
1937
+ this.TableColumnsIndex = undefined;
1938
+ return;
1939
+ }
1940
+ }
1941
+ /**表单保存提交 */
1942
+ createOrEditSave() {
1943
+ const formGroup = this.TableColumns.at(this.TableColumnsIndex);
1944
+ let formConfigurationgroup = formGroup.get('formConfiguration');
1945
+ formConfigurationgroup.setValue({
1946
+ ...this.tableSelectForm.value['formConfiguration'],
1947
+ });
1948
+ this.tableSelectOpen = false;
1949
+ }
1950
+ /**编辑站点按钮 */
1951
+ EditSitesBtn(rows, i) {
1952
+ this.CurrentSelectionTableControlName = rows.get('formControlName').value;
1953
+ this.tableSelectForm = this.fb.group(new TableFormControl());
1954
+ this.tableSelectForm.patchValue({
1955
+ ...rows.value
1956
+ });
1957
+ this.tableSelectForm.get('formConfiguration').patchValue({
1958
+ ...rows.value['formConfiguration']
1959
+ });
1960
+ this._tableSelected = rows.value;
1961
+ this.TableColumnsIndex = i;
1962
+ this.tableSelectOpen = true;
1963
+ }
1964
+ /**调整表格位置 */
1965
+ TableArrowUpOrDown(type, index) {
1966
+ let controlAt = this.TableColumns.at(index);
1967
+ this.TableColumns.removeAt(index);
1968
+ let lastindex = type == 'up' ? index - 1 : index + 1;
1969
+ this.TableColumns.insert(lastindex, controlAt);
1970
+ }
1971
+ /**字段标签input失去标点生成字段名字 */
1972
+ disPlayNameInputBlur(event, item) {
1973
+ let value = event.target.value;
1974
+ let pinyin = this._DfApiService.chineseToPinyin(value);
1975
+ let nameInput = item.get('name');
1976
+ if (nameInput.value)
1977
+ return;
1978
+ nameInput.patchValue(pinyin);
1979
+ }
1980
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableConfigComponent, deps: [{ token: i1.FormBuilder }, { token: DfApiService }], target: i0.ɵɵFactoryTarget.Component });
1981
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableConfigComponent, selector: "df-table-config", inputs: { Entity: "Entity", selected: "selected", type: "type" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "tableSelectModalSubmit", first: true, predicate: ["tableSelectModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'DigniteAbpForms::SelectListItem' | abpLocalization}}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'Cms::TableColumnDisplayName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnForm' | abpLocalization}}</th>\n <th scope=\"col\" class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addTableColumns()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"TableColumns\">\n <ng-container *ngFor=\"let item of TableColumns.controls;let i=index\">\n <tr [formGroupName]=\"i\">\n <td><input type=\"text\" class=\"form-control\" formControlName=\"displayName\" (blur)=\"disPlayNameInputBlur($event,item)\" ></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"name\"></td>\n <td>\n <select class=\"form-select\" formControlName=\"formControlName\"\n (change)=\"selectTableControl($event,i,item)\">\n <option value=\"\">SelectFrom</option>\n <ng-container *ngFor=\"let item_f of _fieldControlGroup;let i_f =index\">\n <option [value]=\"item_f.name\">{{item_f.displayName}}</option>\n </ng-container>\n </select>\n </td>\n <td scope=\"row\">\n <div class=\"flex-start\">\n <button class=\"btn btn-light btn-sm \" (click.stop)=\"EditSitesBtn(item,i)\">\n <i class=\"fas fa-edit\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" (click.stop)=\"deleteTableColumns(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" *ngIf=\"i!==0\"\n (click.stop)=\"TableArrowUpOrDown('up',i)\">\n <i class=\"fas fa-arrow-up\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" *ngIf=\"i!==TableColumns.controls.length-1\"\n (click.stop)=\"TableArrowUpOrDown('down',i)\">\n <i class=\"fas fa-arrow-down\"></i>\n </button>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n<abp-modal [(visible)]=\"tableSelectOpen\" [busy]=\"modalBusy\" (visibleChange)=\"tableSelectVisibleChange($event)\" [options]=\"{ size: CurrentSelectionTableControlName=='Matrix'?'xl':'' ,scrollable:false }\">\n <ng-template #abpHeader>\n <h3>{{_tableSelected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"tableSelectForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"tableSelectForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #tableSelectModalSubmit style=\"display: none\"></button>\n <ng-container *ngIf=\"CurrentSelectionTableControlName&&tableSelectForm\">\n <df-dynamic [type]=\"CurrentSelectionTableControlName\" [entity]=\"tableSelectForm\"\n [selected]=\"_tableSelected\" [formGroup]=\"tableSelectForm\"></df-dynamic>\n </ng-container>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"tableSelectModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: [".flex-end{display:flex;align-items:center;justify-content:flex-end}.flex-start{display:flex;align-items:center;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i2.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i2.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
1982
+ }
1983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableConfigComponent, decorators: [{
1984
+ type: Component,
1985
+ args: [{ selector: 'df-table-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'DigniteAbpForms::SelectListItem' | abpLocalization}}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'Cms::TableColumnDisplayName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnForm' | abpLocalization}}</th>\n <th scope=\"col\" class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addTableColumns()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"TableColumns\">\n <ng-container *ngFor=\"let item of TableColumns.controls;let i=index\">\n <tr [formGroupName]=\"i\">\n <td><input type=\"text\" class=\"form-control\" formControlName=\"displayName\" (blur)=\"disPlayNameInputBlur($event,item)\" ></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"name\"></td>\n <td>\n <select class=\"form-select\" formControlName=\"formControlName\"\n (change)=\"selectTableControl($event,i,item)\">\n <option value=\"\">SelectFrom</option>\n <ng-container *ngFor=\"let item_f of _fieldControlGroup;let i_f =index\">\n <option [value]=\"item_f.name\">{{item_f.displayName}}</option>\n </ng-container>\n </select>\n </td>\n <td scope=\"row\">\n <div class=\"flex-start\">\n <button class=\"btn btn-light btn-sm \" (click.stop)=\"EditSitesBtn(item,i)\">\n <i class=\"fas fa-edit\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" (click.stop)=\"deleteTableColumns(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" *ngIf=\"i!==0\"\n (click.stop)=\"TableArrowUpOrDown('up',i)\">\n <i class=\"fas fa-arrow-up\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" *ngIf=\"i!==TableColumns.controls.length-1\"\n (click.stop)=\"TableArrowUpOrDown('down',i)\">\n <i class=\"fas fa-arrow-down\"></i>\n </button>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n<abp-modal [(visible)]=\"tableSelectOpen\" [busy]=\"modalBusy\" (visibleChange)=\"tableSelectVisibleChange($event)\" [options]=\"{ size: CurrentSelectionTableControlName=='Matrix'?'xl':'' ,scrollable:false }\">\n <ng-template #abpHeader>\n <h3>{{_tableSelected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"tableSelectForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"tableSelectForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #tableSelectModalSubmit style=\"display: none\"></button>\n <ng-container *ngIf=\"CurrentSelectionTableControlName&&tableSelectForm\">\n <df-dynamic [type]=\"CurrentSelectionTableControlName\" [entity]=\"tableSelectForm\"\n [selected]=\"_tableSelected\" [formGroup]=\"tableSelectForm\"></df-dynamic>\n </ng-container>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"tableSelectModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: [".flex-end{display:flex;align-items:center;justify-content:flex-end}.flex-start{display:flex;align-items:center;justify-content:flex-start}\n"] }]
1986
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: DfApiService }]; }, propDecorators: { Entity: [{
1987
+ type: Input
1988
+ }], selected: [{
1989
+ type: Input
1990
+ }], type: [{
1991
+ type: Input
1992
+ }], submitclick: [{
1993
+ type: ViewChild,
1994
+ args: ['submitclick', { static: true }]
1995
+ }], tableSelectModalSubmit: [{
1996
+ type: ViewChild,
1997
+ args: ['tableSelectModalSubmit', { static: false }]
1998
+ }] } });
1999
+
2000
+ class TableControlComponent {
2001
+ constructor() {
2002
+ }
2003
+ fb = inject(FormBuilder);
2004
+ /**表单实体 */
2005
+ _entity;
2006
+ set entity(v) {
2007
+ this._entity = v;
2008
+ this.dataLoaded();
2009
+ }
2010
+ /**字段配置列表 */
2011
+ _fields = '';
2012
+ set fields(v) {
2013
+ this._fields = v;
2014
+ this.dataLoaded();
2015
+ }
2016
+ /**父级字段名称,用于为表单设置控件赋值 */
2017
+ _parentFiledName;
2018
+ set parentFiledName(v) {
2019
+ this._parentFiledName = v;
2020
+ this.dataLoaded();
2021
+ }
2022
+ /**父级字段名称,用于为表单设置控件赋值 */
2023
+ _selected;
2024
+ set selected(v) {
2025
+ this._selected = v;
2026
+ if (v) {
2027
+ this.dataLoaded();
2028
+ }
2029
+ }
2030
+ submitclick;
2031
+ /** 获取父级字段代表的表单组*/
2032
+ extraProperties;
2033
+ /**数据加载完成 */
2034
+ async dataLoaded() {
2035
+ if (this._fields && this._entity && this._parentFiledName) {
2036
+ this.extraProperties = this._entity.get(this._parentFiledName);
2037
+ await this.AfterInit();
2038
+ this.submitclick.nativeElement.click();
2039
+ }
2040
+ }
2041
+ formConfiguration;
2042
+ /**获取表格字段代表的控件 */
2043
+ fieldNameControl;
2044
+ AfterInit() {
2045
+ return new Promise((resolve, rejects) => {
2046
+ let ValidatorsArray = [];
2047
+ if (this._fields.required) {
2048
+ ValidatorsArray.push(Validators.required);
2049
+ }
2050
+ let formConfiguration = this._fields.field.formConfiguration;
2051
+ this.formConfiguration = formConfiguration;
2052
+ let newArrayGroup = this.fb.array([]);
2053
+ this.extraProperties.setControl(this._fields.field.name, newArrayGroup);
2054
+ this.fieldNameControl = this.extraProperties.get(this._fields.field.name);
2055
+ if (this._selected) {
2056
+ this._selected.forEach(el => {
2057
+ this.addTableControlItem();
2058
+ });
2059
+ this.fieldNameControl.patchValue(this._selected);
2060
+ }
2061
+ else {
2062
+ this.addTableControlItem();
2063
+ }
2064
+ resolve(true);
2065
+ });
2066
+ }
2067
+ /**增加表格项 */
2068
+ addTableControlItem() {
2069
+ this.fieldNameControl.push(this.fb.group({
2070
+ 'extraProperties': this.fb.group({})
2071
+ }));
2072
+ }
2073
+ /**删除表格项 */
2074
+ minusTableControlItem(index) {
2075
+ this.fieldNameControl.removeAt(index);
2076
+ }
2077
+ /**调整表格位置 */
2078
+ TableArrowUpOrDown(type, index) {
2079
+ let controlAt = this.fieldNameControl.at(index);
2080
+ this.fieldNameControl.removeAt(index);
2081
+ let lastindex = type == 'up' ? index - 1 : index + 1;
2082
+ this.fieldNameControl.insert(lastindex, controlAt);
2083
+ this._selected = this.fieldNameControl.value;
2084
+ }
2085
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2086
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableControlComponent, selector: "df-table-control", inputs: { entity: "entity", fields: "fields", parentFiledName: "parentFiledName", selected: "selected" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-2\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let item of formConfiguration.TableColumns\">\n <th scope=\"col\">{{ item.displayName }}</th>\n </ng-container>\n\n <th scope=\"col\" class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addTableControlItem()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls; let i = index\">\n <tr>\n <ng-container *ngFor=\"let el of formConfiguration.TableColumns\">\n <td>\n <ng-container *ngIf=\"item&&el\">\n <df-dynamic [entity]=\"item\" [fields]=\"{ field: el }\"\n [selected]=\"_selected[i]?.extraProperties[''+el.name+'']\"\n [parentFiledName]=\"'extraProperties'\"></df-dynamic>\n </ng-container>\n </td>\n </ng-container>\n <td scope=\"row\" class=\"\">\n <div class=\"flex-end mb-2\">\n <button class=\"btn btn-light btn-sm ms-1\" (click.stop)=\"minusTableControlItem(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" (click.stop)=\"TableArrowUpOrDown('up',i)\"\n *ngIf=\"i!==0\">\n <i class=\"fas fa-arrow-up\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"TableArrowUpOrDown('down',i)\"\n *ngIf=\"i!==fieldNameControl.controls.length-1\">\n <i class=\"fas fa-arrow-down\"></i>\n </button>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <div class=\"form-text\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>", styles: [".flex-end{display:flex;align-items:center;justify-content:flex-end}.flex-start{display:flex;align-items:center;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }] });
2087
+ }
2088
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableControlComponent, decorators: [{
2089
+ type: Component,
2090
+ args: [{ selector: 'df-table-control', template: "<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-2\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let item of formConfiguration.TableColumns\">\n <th scope=\"col\">{{ item.displayName }}</th>\n </ng-container>\n\n <th scope=\"col\" class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addTableControlItem()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </th>\n </tr>\n </thead>\n <tbody [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls; let i = index\">\n <tr>\n <ng-container *ngFor=\"let el of formConfiguration.TableColumns\">\n <td>\n <ng-container *ngIf=\"item&&el\">\n <df-dynamic [entity]=\"item\" [fields]=\"{ field: el }\"\n [selected]=\"_selected[i]?.extraProperties[''+el.name+'']\"\n [parentFiledName]=\"'extraProperties'\"></df-dynamic>\n </ng-container>\n </td>\n </ng-container>\n <td scope=\"row\" class=\"\">\n <div class=\"flex-end mb-2\">\n <button class=\"btn btn-light btn-sm ms-1\" (click.stop)=\"minusTableControlItem(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" (click.stop)=\"TableArrowUpOrDown('up',i)\"\n *ngIf=\"i!==0\">\n <i class=\"fas fa-arrow-up\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"TableArrowUpOrDown('down',i)\"\n *ngIf=\"i!==fieldNameControl.controls.length-1\">\n <i class=\"fas fa-arrow-down\"></i>\n </button>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <div class=\"form-text\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>", styles: [".flex-end{display:flex;align-items:center;justify-content:flex-end}.flex-start{display:flex;align-items:center;justify-content:flex-start}\n"] }]
2091
+ }], ctorParameters: function () { return []; }, propDecorators: { entity: [{
2092
+ type: Input
2093
+ }], fields: [{
2094
+ type: Input
2095
+ }], parentFiledName: [{
2096
+ type: Input
2097
+ }], selected: [{
2098
+ type: Input
2099
+ }], submitclick: [{
2100
+ type: ViewChild,
2101
+ args: ['submitclick', { static: true }]
2102
+ }] } });
2103
+
1438
2104
  /**
1439
2105
  * 表单控件分组-包含配置,控件,显示的数组
1440
2106
  */
@@ -1470,6 +2136,20 @@ const FieldControlGroup = [
1470
2136
  fieldComponent: DateEditControlComponent,
1471
2137
  // fieldViewComponent:TextBoxViewComponent,
1472
2138
  },
2139
+ {
2140
+ displayName: '表格',
2141
+ name: 'Table',
2142
+ fieldConfigComponent: TableConfigComponent,
2143
+ fieldComponent: TableControlComponent,
2144
+ // fieldViewComponent:TextBoxViewComponent,
2145
+ },
2146
+ {
2147
+ displayName: '矩阵',
2148
+ name: 'Matrix',
2149
+ fieldConfigComponent: MatrixConfigComponent,
2150
+ fieldComponent: MatrixControlComponent,
2151
+ // fieldViewComponent:TextBoxViewComponent,
2152
+ },
1473
2153
  {
1474
2154
  displayName: '文件管理',
1475
2155
  name: 'FileExplorer',
@@ -1485,15 +2165,13 @@ const FieldControlGroup = [
1485
2165
  },
1486
2166
  ];
1487
2167
  function getExcludeAssignControl(typeName) {
1488
- return FieldControlGroup.filter(el => el.name !== typeName);
2168
+ // return FieldControlGroup.filter(el => el.name !== typeName)
2169
+ return FieldControlGroup;
1489
2170
  }
1490
- function AddFieldControlGroup(array) {
2171
+ function AddFieldControlGroup(array = []) {
1491
2172
  FieldControlGroup.push(...array);
1492
2173
  }
1493
2174
 
1494
- // export * from './matrix'
1495
- // export * from './table'
1496
-
1497
2175
  class DynamicComponent {
1498
2176
  /**选择的表单信息 */
1499
2177
  _selected;
@@ -1589,11 +2267,11 @@ class DynamicComponent {
1589
2267
  instance.culture = this._culture;
1590
2268
  }
1591
2269
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1592
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicComponent, selector: "df-dynamic", inputs: { selected: "selected", type: "type", entity: "entity", culture: "culture", parentFiledName: "parentFiledName", fields: "fields" }, viewQueries: [{ propertyName: "FormControlRef", first: true, predicate: ["FormControlRef"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "FormComponentsRef", first: true, predicate: ["FormComponentsRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>", styles: [""] });
2270
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DynamicComponent, isStandalone: true, selector: "df-dynamic", inputs: { selected: "selected", type: "type", entity: "entity", culture: "culture", parentFiledName: "parentFiledName", fields: "fields" }, viewQueries: [{ propertyName: "FormControlRef", first: true, predicate: ["FormControlRef"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "FormComponentsRef", first: true, predicate: ["FormComponentsRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>", styles: [""] });
1593
2271
  }
1594
2272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicComponent, decorators: [{
1595
2273
  type: Component,
1596
- args: [{ selector: 'df-dynamic', template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>" }]
2274
+ args: [{ selector: 'df-dynamic', standalone: true, template: "<template #FormControlRef></template>\n<template #FormComponentsRef></template>" }]
1597
2275
  }], propDecorators: { selected: [{
1598
2276
  type: Input
1599
2277
  }], type: [{
@@ -1636,7 +2314,11 @@ class DynamicFormModule {
1636
2314
  CkEditorConfigComponent,
1637
2315
  SelectConfigComponent,
1638
2316
  SelectControlComponent,
1639
- DynamicComponent], imports: [FormsModule,
2317
+ // DynamicComponent,
2318
+ TableConfigComponent,
2319
+ TableControlComponent,
2320
+ MatrixConfigComponent,
2321
+ MatrixControlComponent], imports: [FormsModule,
1640
2322
  CoreModule,
1641
2323
  ThemeSharedModule,
1642
2324
  ReactiveFormsModule,
@@ -1655,7 +2337,11 @@ class DynamicFormModule {
1655
2337
  CkEditorConfigComponent,
1656
2338
  SelectConfigComponent,
1657
2339
  SelectControlComponent,
1658
- DynamicComponent] });
2340
+ // DynamicComponent,
2341
+ TableConfigComponent,
2342
+ TableControlComponent,
2343
+ MatrixConfigComponent,
2344
+ MatrixControlComponent] });
1659
2345
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicFormModule, imports: [FormsModule,
1660
2346
  CoreModule,
1661
2347
  ThemeSharedModule,
@@ -1681,7 +2367,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1681
2367
  CkEditorConfigComponent,
1682
2368
  SelectConfigComponent,
1683
2369
  SelectControlComponent,
1684
- DynamicComponent,
2370
+ // DynamicComponent,
2371
+ TableConfigComponent,
2372
+ TableControlComponent,
2373
+ MatrixConfigComponent,
2374
+ MatrixControlComponent,
1685
2375
  ],
1686
2376
  imports: [
1687
2377
  FormsModule,
@@ -1706,7 +2396,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1706
2396
  CkEditorConfigComponent,
1707
2397
  SelectConfigComponent,
1708
2398
  SelectControlComponent,
1709
- DynamicComponent
2399
+ // DynamicComponent,
2400
+ TableConfigComponent,
2401
+ TableControlComponent,
2402
+ MatrixConfigComponent,
2403
+ MatrixControlComponent,
1710
2404
  ],
1711
2405
  }]
1712
2406
  }] });
@@ -1893,5 +2587,5 @@ var index = /*#__PURE__*/Object.freeze({
1893
2587
  * Generated bundle index. Do not edit.
1894
2588
  */
1895
2589
 
1896
- export { AddFieldControlGroup, CkEditorConfigComponent, CkEditorControlComponent, DateEditConfigComponent, DateEditControlComponent, DateEditInterfaces, DfApiService, index$b as Dignite, DynamicComponent, DynamicFormModule, FieldControlGroup, FileExplorerConfigComponent, FileExplorerControlComponent, index$3 as Microsoft, NumbericEditConfigComponent, NumbericEditControlComponent, SelectConfigComponent, SelectControlComponent, SwitchConfigComponent, SwitchControlComponent, TextEditComponent, TextEditConfig, TextEditConfigComponent, TextEditMode, index as Volo, getExcludeAssignControl, maxDecimalPlacesValidator };
2590
+ export { AddFieldControlGroup, CkEditorConfigComponent, CkEditorControlComponent, DateEditConfigComponent, DateEditControlComponent, DateEditInterfaces, DfApiService, index$b as Dignite, DynamicComponent, DynamicFormModule, FieldControlGroup, FileExplorerConfigComponent, FileExplorerControlComponent, MatrixConfig, MatrixConfigComponent, MatrixControlComponent, MatrixItemConfig, index$3 as Microsoft, NumbericEditConfigComponent, NumbericEditControlComponent, SelectConfigComponent, SelectControlComponent, SwitchConfigComponent, SwitchControlComponent, TableConfig, TableConfigComponent, TableControlComponent, TableFormControl, TextEditComponent, TextEditConfig, TextEditConfigComponent, TextEditMode, index as Volo, getExcludeAssignControl, matrixFieldInputBase, maxDecimalPlacesValidator };
1897
2591
  //# sourceMappingURL=dignite-ng-expand.dynamic-form.mjs.map