@myrtex-org/form 1.1.41 → 1.1.42

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, Component, ChangeDetectionStrategy, EventEmitter, Directive, Input, Output, ChangeDetectorRef, Inject, ViewChild, NgModule } from '@angular/core';
2
+ import { Injectable, inject, ChangeDetectionStrategy, Component, EventEmitter, Output, Input, Directive, ChangeDetectorRef, Inject, ViewChild, NgModule } from '@angular/core';
3
3
  import * as i1$3 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1$1 from '@angular/router';
@@ -22,7 +22,6 @@ import * as i2$2 from '@angular/forms';
22
22
  import { FormsModule } from '@angular/forms';
23
23
  import { provideNgxMask } from 'ngx-mask';
24
24
  import { v4 } from 'uuid';
25
- import CustomStore from 'devextreme/data/custom_store';
26
25
  import * as i2$3 from 'devextreme-angular';
27
26
  import { DxDataGridModule } from 'devextreme-angular';
28
27
  import * as i3 from 'devextreme-angular/ui/nested';
@@ -1452,7 +1451,6 @@ class BaseFieldComponent {
1452
1451
  _initModel() {
1453
1452
  if (this.valueMode === 'manual') {
1454
1453
  this.model = cloneDeep(getValueModel(this.settings, this.manualValues)) || defaultValueModel(this.settings);
1455
- this._customInit();
1456
1454
  }
1457
1455
  else {
1458
1456
  this.model = defaultValueModel(this.settings);
@@ -2114,6 +2112,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2114
2112
  args: [{ selector: 'app-input-radio-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (settings) {\r\n <div class=\"input-radio-group-content\">\r\n @if (settings.options.label) {\r\n <mrx-label\r\n [required]=\"settings.options.required\"\r\n [tooltip]=\"settings.options.tooltip || ''\"\r\n >\r\n {{ settings.options.label }}\r\n </mrx-label>\r\n }\r\n\r\n <mrx-radio-group\r\n [(ngModel)]=\"value\"\r\n [fields]=\"autosaveFields\"\r\n [items]=\"list\"\r\n [invalid]=\"getInvalid\"\r\n [disabled]=\"disabled\"\r\n [invalidMessage]=\"getInvalidMessage\"\r\n (modelChange)=\"updateValue($event)\"\r\n ></mrx-radio-group>\r\n </div>\r\n}\r\n" }]
2115
2113
  }] });
2116
2114
 
2115
+ var TableItemType;
2116
+ (function (TableItemType) {
2117
+ TableItemType[TableItemType["Row"] = 1] = "Row";
2118
+ TableItemType[TableItemType["Group"] = 2] = "Group";
2119
+ })(TableItemType || (TableItemType = {}));
2120
+
2117
2121
  class FormDispenserModal {
2118
2122
  constructor() {
2119
2123
  this._store = inject(Store);
@@ -2334,14 +2338,12 @@ const getRowModel = (model) => {
2334
2338
  });
2335
2339
  return values;
2336
2340
  };
2337
- return { id: v4(), data: getValuesFromModel(model) };
2341
+ return { id: v4(), data: getValuesFromModel(model), itemType: TableItemType.Row };
2338
2342
  };
2339
2343
 
2340
2344
  class InputTableComponent {
2341
2345
  constructor() {
2342
2346
  this.type = ComponentType.InputTable;
2343
- this._referenceService = inject(ReferenceService);
2344
- this._lookupsCache = new Map();
2345
2347
  this._store = inject(Store);
2346
2348
  this._detector = inject(ChangeDetectorRef);
2347
2349
  this._modalService = inject(ModalService);
@@ -2349,6 +2351,7 @@ class InputTableComponent {
2349
2351
  this._subscriptions$ = [];
2350
2352
  this._isCheckRequired = false;
2351
2353
  this._canEditObject = false;
2354
+ this._rows = [];
2352
2355
  this.dataSource = [];
2353
2356
  this.columns = [];
2354
2357
  this.values = [];
@@ -2357,14 +2360,14 @@ class InputTableComponent {
2357
2360
  set data(settings) {
2358
2361
  this.settings = settings;
2359
2362
  this.model = { sysName: settings.sysName, type: settings.type, data: [], totals: [] };
2363
+ this._rows = [];
2360
2364
  this._detector.detectChanges();
2361
2365
  this._initColumns(this.settings.components);
2362
2366
  }
2363
2367
  get rowsCount() {
2364
- return this.model?.data?.length || 0;
2368
+ return this._rows.length || 0;
2365
2369
  }
2366
2370
  get hasAnyTotal() {
2367
- // Проверяем все компоненты и их вложенные компоненты на наличие showTotal
2368
2371
  return this.settings.components.some(c => this.showTotal(c) || c.components?.some(inner => this.showTotal(inner)));
2369
2372
  }
2370
2373
  get isRedNoData() {
@@ -2373,12 +2376,6 @@ class InputTableComponent {
2373
2376
  ngOnInit() {
2374
2377
  this._initModel();
2375
2378
  this._changeSubject$.pipe(debounceTime(700)).subscribe(model => {
2376
- console.log('Данные таблицы обновлены и готовы к отправке:', model);
2377
- console.log('Чистые строки (data):', model.data);
2378
- console.log('Данные для отображения в Grid:', this.dataSource);
2379
- console.log('Grid Instance:', this.dataGrid.instance);
2380
- window.grid = this.dataGrid.instance;
2381
- console.log('Экземпляр привязан к window.grid');
2382
2379
  this._store.dispatch(updateValues({ value: model }));
2383
2380
  });
2384
2381
  this._subscriptions$.push(this._store.select(selectIsCheckRequired).subscribe(result => {
@@ -2395,7 +2392,8 @@ class InputTableComponent {
2395
2392
  const cloneResult = structuredClone(result);
2396
2393
  if (cloneResult && !Array.isArray(cloneResult) && this.model.data !== cloneResult.data) {
2397
2394
  this.model = structuredClone(cloneResult);
2398
- this._initDataSource(this.model.data);
2395
+ this._rows = this._extractRows(this.model.data);
2396
+ this._initDataSource(this._rows);
2399
2397
  }
2400
2398
  }));
2401
2399
  }
@@ -2412,25 +2410,25 @@ class InputTableComponent {
2412
2410
  isCheckRequired: this._isCheckRequired
2413
2411
  }).afterClosed().subscribe(resolve => {
2414
2412
  if (resolve.result) {
2415
- this.model.data = [...structuredClone(this.model.data), resolve.rowModel];
2416
- this._initDataSource(this.model.data);
2417
- this._changeSubject$.next(structuredClone(this.model));
2413
+ this._rows = [...structuredClone(this._rows), resolve.rowModel];
2414
+ this._initDataSource(this._rows);
2415
+ this._changeSubject$.next(this._buildTableValueModel());
2418
2416
  }
2419
2417
  });
2420
2418
  }
2421
2419
  deleteRow(event) {
2422
- const findRow = this.model.data.find(item => item.id === event.row.data.id);
2420
+ const findRow = this._rows.find(item => item.id === event.row.data.id);
2423
2421
  if (findRow) {
2424
- this.model.data = this.model.data.filter(item => item.id !== event.row.data.id);
2425
- this._initDataSource(this.model.data);
2426
- this._changeSubject$.next(this.model);
2422
+ this._rows = this._rows.filter(item => item.id !== event.row.data.id);
2423
+ this._initDataSource(this._rows);
2424
+ this._changeSubject$.next(this._buildTableValueModel());
2427
2425
  }
2428
2426
  }
2429
2427
  get disabled() {
2430
2428
  return !this._canEditObject;
2431
2429
  }
2432
2430
  editRow(event) {
2433
- const findRow = this.model.data.find(item => item.id === event.row.data.id);
2431
+ const findRow = this._rows.find(item => item.id === event.row.data.id);
2434
2432
  if (findRow) {
2435
2433
  this._modalService.open(InputTableModalComponent, {
2436
2434
  title: 'Редактирование строки',
@@ -2439,12 +2437,13 @@ class InputTableComponent {
2439
2437
  rowModel: findRow
2440
2438
  }).afterClosed().subscribe(resolve => {
2441
2439
  if (resolve.result) {
2442
- const cloneModel = structuredClone(this.model);
2443
- const findRow = cloneModel.data.find(row => row.id === resolve.rowModel.id);
2444
- if (findRow) {
2445
- findRow.data = resolve.rowModel.data;
2446
- this._initDataSource(cloneModel.data);
2447
- this._changeSubject$.next(structuredClone(cloneModel));
2440
+ const cloneRows = structuredClone(this._rows);
2441
+ const editableRow = cloneRows.find(row => row.id === resolve.rowModel.id);
2442
+ if (editableRow) {
2443
+ editableRow.data = resolve.rowModel.data;
2444
+ this._rows = cloneRows;
2445
+ this._initDataSource(this._rows);
2446
+ this._changeSubject$.next(this._buildTableValueModel());
2448
2447
  }
2449
2448
  }
2450
2449
  });
@@ -2467,8 +2466,6 @@ class InputTableComponent {
2467
2466
  switch (component.type) {
2468
2467
  case ComponentType.InputDate:
2469
2468
  return 'date';
2470
- case ComponentType.InputSwitch:
2471
- return 'boolean';
2472
2469
  default:
2473
2470
  return 'string';
2474
2471
  }
@@ -2481,7 +2478,7 @@ class InputTableComponent {
2481
2478
  return false;
2482
2479
  }
2483
2480
  isTotalColumn(component) {
2484
- return component.options['inTotals'];
2481
+ return component.options.inTotals;
2485
2482
  }
2486
2483
  _initModel() {
2487
2484
  this.model = {
@@ -2490,6 +2487,7 @@ class InputTableComponent {
2490
2487
  data: [],
2491
2488
  totals: []
2492
2489
  };
2490
+ this._rows = [];
2493
2491
  }
2494
2492
  _initDataSource(data) {
2495
2493
  this.dataSource = data.map((item) => {
@@ -2501,7 +2499,9 @@ class InputTableComponent {
2501
2499
  return newDataItem;
2502
2500
  });
2503
2501
  this._detector.detectChanges();
2504
- this.dataGrid.instance.refresh();
2502
+ if (this.dataGrid?.instance) {
2503
+ this.dataGrid.instance.refresh();
2504
+ }
2505
2505
  }
2506
2506
  _initColumns(components) {
2507
2507
  this.columns = components.map(c => this._transformColumn(structuredClone(c)));
@@ -2521,11 +2521,12 @@ class InputTableComponent {
2521
2521
  },
2522
2522
  ],
2523
2523
  });
2524
- this.dataGrid.instance.repaint();
2524
+ if (this.dataGrid?.instance) {
2525
+ this.dataGrid.instance.repaint();
2526
+ }
2525
2527
  this._detector.detectChanges();
2526
2528
  }
2527
2529
  _transformColumn(component) {
2528
- const dataType = this.getDataType(component);
2529
2530
  const column = {
2530
2531
  caption: component.options.label || '',
2531
2532
  columns: component.components.map(c => this._transformColumn(structuredClone(c))),
@@ -2534,10 +2535,9 @@ class InputTableComponent {
2534
2535
  format: this.getFormat(component),
2535
2536
  minWidth: 160
2536
2537
  };
2537
- if (dataType === 'boolean') {
2538
+ if (column.dataType === 'boolean') {
2538
2539
  column.calculateCellValue = (rowData) => {
2539
2540
  const value = rowData[component.sysName];
2540
- // Если true — Да, если false, "" или null — Нет
2541
2541
  return !!value;
2542
2542
  };
2543
2543
  column.lookup = {
@@ -2549,29 +2549,6 @@ class InputTableComponent {
2549
2549
  displayExpr: 'displayValue'
2550
2550
  };
2551
2551
  }
2552
- if (component.type === ComponentType.InputSelect) {
2553
- const selectModel = component;
2554
- if (selectModel.options.manual) {
2555
- column.lookup = {
2556
- dataSource: selectModel.options.items,
2557
- valueExpr: 'value',
2558
- displayExpr: 'text'
2559
- };
2560
- }
2561
- else if (selectModel.options.directory?.[0]) {
2562
- const directoryName = selectModel.options.directory[0];
2563
- column.lookup = {
2564
- // Оборачиваем в CustomStore для соответствия типам DevExtreme
2565
- dataSource: new CustomStore({
2566
- key: 'value',
2567
- load: () => this.getLookupData(directoryName),
2568
- byKey: (key) => this.getLookupData(directoryName).then(items => items.find(i => i.value === key))
2569
- }),
2570
- valueExpr: 'value',
2571
- displayExpr: 'text'
2572
- };
2573
- }
2574
- }
2575
2552
  if (this.settings.options.groups.length) {
2576
2553
  const findIdx = this.settings.options.groups.findIndex(x => x === component.sysName);
2577
2554
  if (findIdx !== -1) {
@@ -2580,27 +2557,121 @@ class InputTableComponent {
2580
2557
  }
2581
2558
  return column;
2582
2559
  }
2583
- getLookupData(directoryName) {
2584
- // Проверяем кэш
2585
- if (this._lookupsCache.has(directoryName)) {
2586
- return Promise.resolve(this._lookupsCache.get(directoryName));
2587
- }
2588
- // Запрашиваем данные (используем тот же objectId, что и в модалке)
2589
- // Убедитесь, что objectId доступен в этом компоненте
2590
- return new Promise((resolve) => {
2591
- this._referenceService.getReferences(directoryName, this.objectId).subscribe({
2592
- next: (result) => {
2593
- const items = (result?.rows || []).map((row) => ({
2594
- value: row.a,
2595
- text: row.b
2596
- }));
2597
- this._lookupsCache.set(directoryName, items);
2598
- resolve(items);
2599
- },
2600
- error: () => resolve([])
2601
- });
2560
+ _buildTableValueModel() {
2561
+ const groupedData = this._buildGroupedItems(this._rows, this.settings.options.groups || [], 0);
2562
+ const totals = this._calculateTotals(this._rows);
2563
+ this.model = {
2564
+ sysName: this.settings.sysName,
2565
+ type: this.settings.type,
2566
+ data: groupedData,
2567
+ totals
2568
+ };
2569
+ return structuredClone(this.model);
2570
+ }
2571
+ _buildGroupedItems(rows, groupFields, level) {
2572
+ if (!groupFields.length || level >= groupFields.length) {
2573
+ return rows.map(row => ({ ...row, itemType: row.itemType ?? TableItemType.Row }));
2574
+ }
2575
+ const groupField = groupFields[level];
2576
+ const groups = new Map();
2577
+ for (const row of rows) {
2578
+ const fieldValue = row.data.find(x => x.sysName === groupField)?.value ?? null;
2579
+ const key = JSON.stringify(fieldValue);
2580
+ const existing = groups.get(key) ?? {
2581
+ rows: [],
2582
+ groupValueSysName: this._getGroupValueSysName(fieldValue, groupField)
2583
+ };
2584
+ existing.rows.push(row);
2585
+ groups.set(key, existing);
2586
+ }
2587
+ const result = [];
2588
+ for (const groupItem of groups.values()) {
2589
+ const nestedData = this._buildGroupedItems(groupItem.rows, groupFields, level + 1);
2590
+ const groupModel = {
2591
+ itemType: TableItemType.Group,
2592
+ data: nestedData,
2593
+ totals: this._calculateTotals(groupItem.rows, groupItem.groupValueSysName)
2594
+ };
2595
+ result.push(groupModel);
2596
+ }
2597
+ return result;
2598
+ }
2599
+ _calculateTotals(rows, groupFieldSysName) {
2600
+ const totalColumns = this._getTotalColumns(this.settings.components);
2601
+ return totalColumns.map(component => {
2602
+ const sum = rows.reduce((acc, row) => {
2603
+ const value = row.data.find(x => x.sysName === component.sysName)?.value;
2604
+ const numericValue = typeof value === 'number' ? value : Number(value);
2605
+ return Number.isFinite(numericValue) ? acc + numericValue : acc;
2606
+ }, 0);
2607
+ return {
2608
+ sysName: this._getTotalSysName(component.sysName, groupFieldSysName),
2609
+ type: component.type,
2610
+ valueType: component.valueType,
2611
+ value: sum
2612
+ };
2602
2613
  });
2603
2614
  }
2615
+ _getTotalSysName(columnSysName, groupFieldSysName) {
2616
+ if (groupFieldSysName) {
2617
+ return `${columnSysName}_${groupFieldSysName}_total`;
2618
+ }
2619
+ return `${columnSysName}_total`;
2620
+ }
2621
+ _getGroupValueSysName(fieldValue, fallbackSysName) {
2622
+ if (Array.isArray(fieldValue) && fieldValue.length) {
2623
+ const firstValue = fieldValue[0];
2624
+ if (typeof firstValue === 'string' || typeof firstValue === 'number' || typeof firstValue === 'boolean') {
2625
+ return String(firstValue);
2626
+ }
2627
+ }
2628
+ if (fieldValue && typeof fieldValue === 'object') {
2629
+ if (typeof fieldValue.value === 'string' || typeof fieldValue.value === 'number' || typeof fieldValue.value === 'boolean') {
2630
+ return String(fieldValue.value);
2631
+ }
2632
+ if (typeof fieldValue.sysName === 'string' && fieldValue.sysName) {
2633
+ return fieldValue.sysName;
2634
+ }
2635
+ }
2636
+ if (typeof fieldValue === 'string' || typeof fieldValue === 'number' || typeof fieldValue === 'boolean') {
2637
+ return String(fieldValue);
2638
+ }
2639
+ return fallbackSysName;
2640
+ }
2641
+ _getTotalColumns(components) {
2642
+ const result = [];
2643
+ for (const component of components) {
2644
+ if (component.type === ComponentType.InputNumber && this.showTotal(component)) {
2645
+ result.push(component);
2646
+ }
2647
+ if (component.components?.length) {
2648
+ result.push(...this._getTotalColumns(component.components));
2649
+ }
2650
+ }
2651
+ return result;
2652
+ }
2653
+ _extractRows(items = []) {
2654
+ const rows = [];
2655
+ for (const item of items) {
2656
+ if (this._isRow(item)) {
2657
+ rows.push({
2658
+ ...item,
2659
+ itemType: TableItemType.Row
2660
+ });
2661
+ }
2662
+ else {
2663
+ const group = item;
2664
+ if (group.data?.length) {
2665
+ rows.push(...this._extractRows(group.data));
2666
+ }
2667
+ }
2668
+ }
2669
+ return rows;
2670
+ }
2671
+ _isRow(item) {
2672
+ const maybeRow = item;
2673
+ return typeof maybeRow.id === 'string' && Array.isArray(maybeRow.data);
2674
+ }
2604
2675
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2605
2676
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: InputTableComponent, selector: "app-input-table", inputs: { values: "values", data: "data" }, outputs: { changed: "changed" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: ["dataGrid"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }], ngImport: i0, template: "@if (settings) {\r\n <div class=\"input-table-content w-100\">\r\n @if (settings.options.label) {\r\n <mrx-label\r\n [required]=\"settings.options.required\"\r\n [tooltip]=\"settings.options.tooltip || ''\"\r\n >\r\n {{ settings.options.label }}\r\n </mrx-label>\r\n }\r\n\r\n <dx-data-grid\r\n #dataGrid\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [disabled]=\"disabled\"\r\n noDataText=\"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445\"\r\n style=\"width: 100%\"\r\n [wordWrapEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [class.noData]=\"isRedNoData\"\r\n >\r\n <dxo-toolbar>\r\n <dxi-item location=\"after\">\r\n <div *dxTemplate class=\"add-row\">\r\n <mrx-button\r\n [size]=\"'medium'\"\r\n [type]=\"'secondary'\"\r\n [customClasses]=\"'mb-3'\"\r\n (mrxClick)=\"createRow()\"\r\n >{{settings.options.addBtnTitle}}\r\n </mrx-button>\r\n </div>\r\n </dxi-item>\r\n </dxo-toolbar>\r\n\r\n <div *dxTemplate=\"let buttonData of 'editButtonTemplate'\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(buttonData)\"></span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let buttonData of 'deleteButtonTemplate'\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(buttonData)\"></span>\r\n </div>\r\n\r\n @if (dataSource.length) {\r\n <dxo-summary>\r\n @for (component of settings.components; track component.id; let first = $first) {\r\n @if (!first) {\r\n @if (showTotal(component)) {\r\n <dxi-group-item\r\n [column]=\"component.sysName\"\r\n summaryType=\"sum\"\r\n displayFormat=\"\u0418\u0442\u043E\u0433\u043E: {0}\"\r\n [showInGroupFooter]=\"true\"\r\n [alignByColumn]=\"true\">\r\n </dxi-group-item>\r\n\r\n <dxi-total-item \r\n [column]=\"component.sysName\" \r\n displayFormat=\"{0}\"\r\n summaryType=\"sum\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-group-item\r\n [column]=\"component.sysName\"\r\n summaryType=\"sum\"\r\n displayFormat=\"\u0418\u0442\u043E\u0433\u043E: {0}\"\r\n [showInGroupFooter]=\"true\"\r\n [alignByColumn]=\"true\">\r\n </dxi-group-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-group-item\r\n [column]=\"component.sysName\"\r\n summaryType=\"sum\"\r\n displayFormat=\"\u0418\u0442\u043E\u0433\u043E: {0}\"\r\n [showInGroupFooter]=\"true\"\r\n [alignByColumn]=\"true\">\r\n </dxi-group-item>\r\n }\r\n }\r\n }\r\n } @else {\r\n @if (hasAnyTotal) { \r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [cssClass]=\"'text-bold'\"\r\n [displayFormat]=\"showTotal(component) ? '{0}' : '\u0418\u0422\u041E\u0413\u041E'\"\r\n [summaryType]=\"showTotal(component) ? 'sum' : undefined\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n </dxo-summary>\r\n }\r\n </dx-data-grid>\r\n\r\n @if(!!settings.options.maxRows) {\r\n <mrx-hint-error-message\r\n message=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0440\u043E\u043A: {{ settings.options.maxRows }}\"\r\n [maxValue]=\"settings.options.maxRows\"\r\n [value]=\"rowsCount\"\r\n ></mrx-hint-error-message>\r\n }\r\n\r\n <ng-template #editTemplate let-cellInfo=\"cellInfo\">\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"gap: 4px\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(cellInfo)\"></span>\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(cellInfo)\"></span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n}\r\n\r\n\r\n", styles: [":host::ng-deep .input-table-content .noData .dx-datagrid-nodata{color:var(--system-text-negative, #8E2100)}:host::ng-deep .input-table-content .dx-datagrid{padding:0}:host::ng-deep .input-table-content .dx-datagrid-header-panel{display:flex;align-items:center;min-height:40px;padding:0}:host::ng-deep .input-table-content .dx-datagrid-rowsview{border-bottom:none}:host::ng-deep .input-table-content .dx-datagrid-rowsview.dx-empty{border-bottom:1px solid #ddd;height:48px}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer{border-top:none;border-left:none;border-right:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content{padding:0}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content th,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content td{border:1px solid #ddd;border-top:none;border-collapse:collapse}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table{border-top:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content .dx-datagrid-summary-item{font-weight:400}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-headers{position:relative;top:0;border-top:1px solid var(--neutral-bg-divider)}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-headers td.dx-command-expand.dx-datagrid-group-space{border-right:none!important;border-right-color:transparent}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer td.dx-command-expand.dx-datagrid-group-space{border-right-color:transparent}:host::ng-deep .input-table-content .dx-datagrid .dx-row>td,:host::ng-deep .input-table-content .dx-datagrid .page-wrapper .dx-treelist-container .dx-row>td{color:var(--neutral-text-secondary, #4D5157);font-family:var(--body-md-bold-font-family, \"PT Sans\");font-size:var(--body-md-bold-font-size, 14px);font-weight:var(--body-md-bold-font-weight, 700);line-height:var(--body-md-bold-line-height, 16px)}:host::ng-deep .input-table-content .dx-datagrid .dx-row.dx-data-row.dx-column-lines>td{color:var(--neutral-text-tertiary, #71767E);font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}:host::ng-deep .custom-cell-controls .dx-template-wrapper{display:inline-flex}\n"], dependencies: [{ kind: "component", type: i1$2.LabelComponent, selector: "mrx-label", inputs: ["requiredHidden", "required", "boldLabel", "disabled", "placeholder", "label", "customClasses", "triggerTextPosition", "isPublicInfo", "publicInfoTooltip", "isSwitch", "switchLabel", "switchValue", "switchSize", "isCheckbox", "checkboxLabel", "checkboxValue", "counter", "linkText", "linkPrevent", "linkType", "linkMonochrome", "href", "triggerType", "tooltip", "tooltipInitialVisible", "isSaveToStorage"], outputs: ["changeSwitchValue", "changeCheckboxValue", "clickedLink"] }, { kind: "component", type: i1$2.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }, { kind: "component", type: i2$3.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i3.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "linkAttr", "url", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i3.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i3.DxiGroupItemComponent, selector: "dxi-group-item", inputs: ["alignByColumn", "column", "customizeText", "displayFormat", "name", "showInColumn", "showInGroupFooter", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i3.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i3.DxoToolbarComponent, selector: "dxo-toolbar", inputs: ["disabled", "items", "visible", "fileSelectionItems", "container", "multiline"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i1$2.HintErrorMessageComponent, selector: "mrx-hint-error-message", inputs: ["message", "value", "maxValue", "minValue", "minLength", "maxLength", "checkInvalid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2606
2677
  }
@@ -3071,5 +3142,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3071
3142
  * Generated bundle index. Do not edit.
3072
3143
  */
3073
3144
 
3074
- export { ComponentShortType, ComponentSizeEnum, ComponentType, ConcurrencyInterceptor, ConcurrencyStoreService, ConditionOperatorType, CustomInputStateEnum, CustomInputStateEnumLabel, DateFormatEnum, DateFormatLabelEnum, DateTypeEnum, DateTypeLabelEnum, DependenceActionType, EApplicationActions, EFFECTS, InnTypeEnum, InnTypeLabelEnum, InputState, InputTableComponent, InputTableModalComponent, LogicalOperatorType, OBJECT_ID_NAME, OBJECT_VERSION_ID_NAME, ObjectFormEffects, ObjectFormModule, SECTION_SYS_NAME_NAME, STATE_NAME, SharedFormModule, TEMPLATE_SYS_NAME_NAME, TemplateComponentsGroupTypeEnum, TemplateComponentsGroupTypeLabels, TemplateStatus, ValueType, appendVersionId, conditionOperatorTypeLabel, getConditionOperatorsList, getDependenceActionsList, getTemplateStatusText, initialObjectFormState, initialSharedFormState, isNullOrUndefined, isNumeric, objectForm_actions as objectFormActions, objectForm_selector as objectFormSelectors, objectReducer, sharedFormReducer, sharedForm_selector as sharedSelectors };
3145
+ export { ComponentShortType, ComponentSizeEnum, ComponentType, ConcurrencyInterceptor, ConcurrencyStoreService, ConditionOperatorType, CustomInputStateEnum, CustomInputStateEnumLabel, DateFormatEnum, DateFormatLabelEnum, DateTypeEnum, DateTypeLabelEnum, DependenceActionType, EApplicationActions, EFFECTS, InnTypeEnum, InnTypeLabelEnum, InputState, InputTableComponent, InputTableModalComponent, LogicalOperatorType, OBJECT_ID_NAME, OBJECT_VERSION_ID_NAME, ObjectFormEffects, ObjectFormModule, SECTION_SYS_NAME_NAME, STATE_NAME, SharedFormModule, TEMPLATE_SYS_NAME_NAME, TableItemType, TemplateComponentsGroupTypeEnum, TemplateComponentsGroupTypeLabels, TemplateStatus, ValueType, appendVersionId, conditionOperatorTypeLabel, getConditionOperatorsList, getDependenceActionsList, getTemplateStatusText, initialObjectFormState, initialSharedFormState, isNullOrUndefined, isNumeric, objectForm_actions as objectFormActions, objectForm_selector as objectFormSelectors, objectReducer, sharedFormReducer, sharedForm_selector as sharedSelectors };
3075
3146
  //# sourceMappingURL=myrtex-org-form.mjs.map