ngx-rs-ant 1.6.1 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/box-container/PluginManager.d.ts +7 -2
  2. package/box-container/box-container.component.d.ts +2 -1
  3. package/box-container/box-container.module.d.ts +7 -6
  4. package/box-container/box-item/item-config/form-item-config-error/form-item-config-error.component.d.ts +5 -0
  5. package/box-container/box-item/item-config/item-config.component.d.ts +2 -1
  6. package/box-container/box-item/item-style/item-style.component.d.ts +2 -1
  7. package/data-grid/data-grid.component.d.ts +2 -1
  8. package/data-grid/instance-link-template/instance-link-template.component.d.ts +2 -1
  9. package/drawer/drawer.component.d.ts +7 -6
  10. package/drawer/drawer.service.d.ts +1 -1
  11. package/esm2020/box-container/PluginManager.mjs +37 -15
  12. package/esm2020/box-container/box-container.component.mjs +19 -3
  13. package/esm2020/box-container/box-container.module.mjs +4 -1
  14. package/esm2020/box-container/box-item/item-config/form-item-config-error/form-item-config-error.component.mjs +11 -0
  15. package/esm2020/box-container/box-item/item-config/item-config.component.mjs +16 -6
  16. package/esm2020/box-container/box-item/item-style/item-style.component.mjs +14 -6
  17. package/esm2020/camunda-bpmn-editor/camunda-bpmn-editor.component.mjs +2 -2
  18. package/esm2020/data-grid/data-grid.component.mjs +7 -4
  19. package/esm2020/data-grid/instance-link-template/instance-link-template.component.mjs +5 -3
  20. package/esm2020/drawer/drawer.component.mjs +26 -21
  21. package/esm2020/drawer/drawer.service.mjs +4 -5
  22. package/esm2020/form/field-selector/field-selector.component.mjs +144 -0
  23. package/esm2020/form/form.component.mjs +17 -4
  24. package/esm2020/form/form.module.mjs +10 -5
  25. package/esm2020/form/form.service.mjs +19 -1
  26. package/esm2020/modal/modal.component.mjs +13 -7
  27. package/esm2020/modal/modal.service.mjs +1 -1
  28. package/esm2020/public-api.mjs +3 -1
  29. package/esm2020/util/form-item-config-base.mjs +7 -0
  30. package/fesm2015/ngx-rs-ant.mjs +323 -72
  31. package/fesm2015/ngx-rs-ant.mjs.map +1 -1
  32. package/fesm2020/ngx-rs-ant.mjs +325 -72
  33. package/fesm2020/ngx-rs-ant.mjs.map +1 -1
  34. package/form/field-selector/field-selector.component.d.ts +25 -0
  35. package/form/form.component.d.ts +4 -1
  36. package/form/form.module.d.ts +5 -4
  37. package/form/form.service.d.ts +1 -0
  38. package/modal/modal.component.d.ts +2 -2
  39. package/modal/modal.service.d.ts +1 -1
  40. package/package.json +1 -1
  41. package/public-api.d.ts +2 -0
  42. package/styles/coast-var.scss +1 -1
  43. package/util/form-item-config-base.d.ts +6 -0
@@ -0,0 +1,144 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "devextreme-angular/core";
5
+ import * as i3 from "devextreme-angular/ui/button";
6
+ import * as i4 from "devextreme-angular/ui/nested";
7
+ import * as i5 from "devextreme-angular/ui/drop-down-box";
8
+ import * as i6 from "devextreme-angular/ui/tag-box";
9
+ import * as i7 from "devextreme-angular/ui/text-box";
10
+ import * as i8 from "devextreme-angular/ui/tree-list";
11
+ import * as i9 from "devextreme-angular/ui/validator";
12
+ export class FieldSelectorComponent {
13
+ constructor() {
14
+ this.fieldTree = [];
15
+ this.required = false;
16
+ this.label = '属性';
17
+ this.readonly = false;
18
+ this.multiple = false;
19
+ this.fieldChanged = new EventEmitter();
20
+ this.__fields = [];
21
+ this.suspendSelectionChanged = false;
22
+ }
23
+ set _fields(__fields) {
24
+ if (this.__fields !== __fields) {
25
+ this.__fields = __fields;
26
+ this.fieldChange(this.__fields);
27
+ }
28
+ }
29
+ get _fields() {
30
+ return this.__fields;
31
+ }
32
+ ngOnInit() {
33
+ if (this.config.field) {
34
+ if (Array.isArray(this.config.field)) {
35
+ this._fields = this.config.field;
36
+ }
37
+ else {
38
+ this._fields = [this.config.field];
39
+ }
40
+ }
41
+ }
42
+ fieldChange(value) {
43
+ if (value && value.length > 0) {
44
+ this.config.__formAttribute = value.join(';');
45
+ if (this.multiple) {
46
+ this.config.field = value;
47
+ const fields = [];
48
+ for (const fieldName of value) {
49
+ fields.push(this.getField(this.fieldTree, fieldName));
50
+ }
51
+ this.fieldChanged.emit(fields);
52
+ }
53
+ else {
54
+ this.config.field = value[0];
55
+ this.fieldChanged.emit(this.getField(this.fieldTree, value[0]));
56
+ }
57
+ }
58
+ else {
59
+ this.config.field = '';
60
+ this.config.__formAttribute = '';
61
+ this.fieldChanged.emit();
62
+ }
63
+ }
64
+ getField(tree, field) {
65
+ for (const node of tree) {
66
+ if (node.innerName === field) {
67
+ return node;
68
+ }
69
+ if (node.children) {
70
+ const result = this.getField(node.children, field);
71
+ if (result) {
72
+ return result;
73
+ }
74
+ }
75
+ }
76
+ return undefined;
77
+ }
78
+ onRowPrepared($event) {
79
+ if ($event.rowType === 'header') {
80
+ $event.rowElement.style.display = 'none';
81
+ }
82
+ }
83
+ onCellPrepared($event) {
84
+ if ($event.rowType === 'data') {
85
+ if (!this.multiple) {
86
+ $event.cellElement.style.cursor = 'pointer';
87
+ }
88
+ if (this.multiple && !$event.visible && $event.data.hasItems) {
89
+ const checkbox = $event.cellElement.querySelector('.dx-select-checkbox');
90
+ checkbox.style.display = 'none';
91
+ }
92
+ }
93
+ }
94
+ onSelectionChanged($event, dropDownBox) {
95
+ if (this.multiple) {
96
+ return;
97
+ }
98
+ if (this.suspendSelectionChanged) {
99
+ this.suspendSelectionChanged = false;
100
+ return;
101
+ }
102
+ if ($event.selectedRowsData.length === 0) {
103
+ return;
104
+ }
105
+ if (!$event.selectedRowsData[0].visible && $event.selectedRowsData[0].hasItems) {
106
+ if ($event.component.isRowExpanded($event.selectedRowKeys[0])) {
107
+ $event.component.collapseRow($event.selectedRowKeys[0]);
108
+ }
109
+ else {
110
+ $event.component.expandRow($event.selectedRowKeys[0]);
111
+ }
112
+ this.suspendSelectionChanged = true;
113
+ $event.component.selectRows($event.currentDeselectedRowKeys[0]);
114
+ return;
115
+ }
116
+ dropDownBox.instance.close();
117
+ }
118
+ removeItem($event, field) {
119
+ $event.stopPropagation();
120
+ const findIndex = this._fields.findIndex((innerName) => innerName === field.innerName);
121
+ this._fields.splice(findIndex, 1);
122
+ }
123
+ }
124
+ FieldSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FieldSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
125
+ FieldSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FieldSelectorComponent, selector: "rs-field-selector", inputs: { fieldTree: "fieldTree", config: "config", required: "required", label: "label", readonly: "readonly", multiple: "multiple" }, outputs: { fieldChanged: "fieldChanged" }, ngImport: i0, template: "<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u5C5E\u6027</span>\n <span class=\"required-mark\" *ngIf=\"required\">&nbsp;*</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-drop-down-box #fieldDropDownBox\n [dataSource]=\"fieldTree\"\n valueExpr=\"innerName\"\n fieldTemplate=\"fieldTemplate\"\n contentTemplate=\"contentTemplate\"\n [showClearButton]=\"true\"\n [dropDownOptions]=\"{maxHeight: 'none', deferRendering: false}\"\n [(value)]=\"_fields\"\n [readOnly]=\"readonly\">\n <div *dxTemplate=\"let info of 'fieldTemplate'\">\n <dx-text-box [visible]=\"false\"></dx-text-box>\n <dx-tag-box [dataSource]=\"fieldTree\"\n valueExpr=\"innerName\"\n width=\"100%\"\n [openOnFieldClick]=\"false\"\n [(value)]=\"_fields\"\n [class.coast-tag-selector]=\"true\"\n [readOnly]=\"readonly\">\n <div *dxTemplate=\"let field of 'tag'\">\n <dx-button [elementAttr]=\"{ class: 'item'}\">\n <span>{{ field.caption }}</span>\n <i *ngIf=\"multiple && !readonly\" class=\"coast-icon-close\" (click)=\"removeItem($event, field)\"></i>\n </dx-button>\n </div>\n </dx-tag-box>\n </div>\n <div *dxTemplate=\"let data of 'contentTemplate'\">\n <dx-text-box mode=\"search\" placeholder=\"\u641C\u7D22...\" valueChangeEvent=\"keyup\"\n (onValueChanged)=\"dxTreeList.instance.searchByText($event.value)\"></dx-text-box>\n <dx-tree-list #dxTreeList\n [dataSource]=\"fieldTree\"\n [filterValue]=\"['visible','=',true]\"\n keyExpr=\"innerName\"\n parentIdExpr=\"parentInnerName\"\n [(selectedRowKeys)]=\"_fields\"\n [height]=\"360\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n (onRowPrepared)=\"onRowPrepared($event)\"\n (onCellPrepared)=\"onCellPrepared($event)\"\n (onSelectionChanged)=\"onSelectionChanged($event, fieldDropDownBox)\">\n <dxi-column dataField=\"innerName\" dataType=\"string\" [visible]=\"false\"></dxi-column>\n <dxi-column dataField=\"caption\" dataType=\"string\" caption=\"\u540D\u79F0\"></dxi-column>\n <dxi-column dataField=\"visible\" dataType=\"boolean\" [visible]=\"false\"></dxi-column>\n <dxo-selection [mode]=\"multiple ? 'multiple' : 'single'\" [allowSelectAll]=\"false\"></dxo-selection>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n </dx-tree-list>\n </div>\n <dx-validator>\n <dxi-validation-rule *ngIf=\"required\" type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-drop-down-box>\n </div>\n</div>\n", styles: [":host .dx-field{margin-bottom:8px;display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-label{flex:0 0 80px}:host .dx-field .dx-field-value{flex:1}:host dx-tag-box{display:block}:host dx-tag-box .item{min-height:20px}:host dx-tag-box .item .coast-icon-close{padding-left:4px}:host dx-tag-box .item .coast-icon-close:hover{color:var(--coast-danger-color, #d9534f)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i3.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i4.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i4.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i4.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { kind: "component", type: i4.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i5.DxDropDownBoxComponent, selector: "dx-drop-down-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "contentTemplate", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValueFormatter", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "label", "labelMode", "maxLength", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showDropDownButton", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width"], outputs: ["onChange", "onClosed", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "contentTemplateChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueFormatterChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "labelChange", "labelModeChange", "maxLengthChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showDropDownButtonChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxTreeListComponent, selector: "dx-tree-list", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoExpandAll", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataSource", "dataStructure", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "expandedRowKeys", "expandNodesOnFiltering", "filterBuilder", "filterBuilderPopup", "filterMode", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "hasItemsExpr", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "itemsExpr", "keyboardNavigation", "keyExpr", "loadPanel", "noDataText", "pager", "paging", "parentIdExpr", "remoteOperations", "renderAsync", "repaintChangesOnly", "rootValue", "rowAlternationEnabled", "rowDragging", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sorting", "stateStoring", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onNodesInitialized", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoExpandAllChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataSourceChange", "dataStructureChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "expandedRowKeysChange", "expandNodesOnFilteringChange", "filterBuilderChange", "filterBuilderPopupChange", "filterModeChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "hasItemsExprChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "itemsExprChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "noDataTextChange", "pagerChange", "pagingChange", "parentIdExprChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rootValueChange", "rowAlternationEnabledChange", "rowDraggingChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortingChange", "stateStoringChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i9.DxValidatorComponent, selector: "dx-validator", inputs: ["adapter", "elementAttr", "height", "name", "validationGroup", "validationRules", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onValidated", "adapterChange", "elementAttrChange", "heightChange", "nameChange", "validationGroupChange", "validationRulesChange", "widthChange"] }] });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FieldSelectorComponent, decorators: [{
127
+ type: Component,
128
+ args: [{ selector: 'rs-field-selector', template: "<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u5C5E\u6027</span>\n <span class=\"required-mark\" *ngIf=\"required\">&nbsp;*</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-drop-down-box #fieldDropDownBox\n [dataSource]=\"fieldTree\"\n valueExpr=\"innerName\"\n fieldTemplate=\"fieldTemplate\"\n contentTemplate=\"contentTemplate\"\n [showClearButton]=\"true\"\n [dropDownOptions]=\"{maxHeight: 'none', deferRendering: false}\"\n [(value)]=\"_fields\"\n [readOnly]=\"readonly\">\n <div *dxTemplate=\"let info of 'fieldTemplate'\">\n <dx-text-box [visible]=\"false\"></dx-text-box>\n <dx-tag-box [dataSource]=\"fieldTree\"\n valueExpr=\"innerName\"\n width=\"100%\"\n [openOnFieldClick]=\"false\"\n [(value)]=\"_fields\"\n [class.coast-tag-selector]=\"true\"\n [readOnly]=\"readonly\">\n <div *dxTemplate=\"let field of 'tag'\">\n <dx-button [elementAttr]=\"{ class: 'item'}\">\n <span>{{ field.caption }}</span>\n <i *ngIf=\"multiple && !readonly\" class=\"coast-icon-close\" (click)=\"removeItem($event, field)\"></i>\n </dx-button>\n </div>\n </dx-tag-box>\n </div>\n <div *dxTemplate=\"let data of 'contentTemplate'\">\n <dx-text-box mode=\"search\" placeholder=\"\u641C\u7D22...\" valueChangeEvent=\"keyup\"\n (onValueChanged)=\"dxTreeList.instance.searchByText($event.value)\"></dx-text-box>\n <dx-tree-list #dxTreeList\n [dataSource]=\"fieldTree\"\n [filterValue]=\"['visible','=',true]\"\n keyExpr=\"innerName\"\n parentIdExpr=\"parentInnerName\"\n [(selectedRowKeys)]=\"_fields\"\n [height]=\"360\"\n [showRowLines]=\"true\"\n [showBorders]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n (onRowPrepared)=\"onRowPrepared($event)\"\n (onCellPrepared)=\"onCellPrepared($event)\"\n (onSelectionChanged)=\"onSelectionChanged($event, fieldDropDownBox)\">\n <dxi-column dataField=\"innerName\" dataType=\"string\" [visible]=\"false\"></dxi-column>\n <dxi-column dataField=\"caption\" dataType=\"string\" caption=\"\u540D\u79F0\"></dxi-column>\n <dxi-column dataField=\"visible\" dataType=\"boolean\" [visible]=\"false\"></dxi-column>\n <dxo-selection [mode]=\"multiple ? 'multiple' : 'single'\" [allowSelectAll]=\"false\"></dxo-selection>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n </dx-tree-list>\n </div>\n <dx-validator>\n <dxi-validation-rule *ngIf=\"required\" type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-drop-down-box>\n </div>\n</div>\n", styles: [":host .dx-field{margin-bottom:8px;display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-label{flex:0 0 80px}:host .dx-field .dx-field-value{flex:1}:host dx-tag-box{display:block}:host dx-tag-box .item{min-height:20px}:host dx-tag-box .item .coast-icon-close{padding-left:4px}:host dx-tag-box .item .coast-icon-close:hover{color:var(--coast-danger-color, #d9534f)}\n"] }]
129
+ }], propDecorators: { fieldTree: [{
130
+ type: Input
131
+ }], config: [{
132
+ type: Input
133
+ }], required: [{
134
+ type: Input
135
+ }], label: [{
136
+ type: Input
137
+ }], readonly: [{
138
+ type: Input
139
+ }], multiple: [{
140
+ type: Input
141
+ }], fieldChanged: [{
142
+ type: Output
143
+ }] } });
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZm9ybS9maWVsZC1zZWxlY3Rvci9maWVsZC1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9mb3JtL2ZpZWxkLXNlbGVjdG9yL2ZpZWxkLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBUXJFLE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFPRSxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBSXBCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUVyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBYTdCLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFrRWxDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztLQStCakM7SUE1R0MsSUFBSSxPQUFPLENBQUMsUUFBYTtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBSUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDckIs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QUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDOzttSEEzSFUsc0JBQXNCO3VHQUF0QixzQkFBc0IsNE9DUm5DLHF2R0ErREE7MkZEdkRhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBTTdCLFNBQVM7c0JBRFIsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEeERyb3BEb3duQm94Q29tcG9uZW50fSBmcm9tIFwiZGV2ZXh0cmVtZS1hbmd1bGFyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JzLWZpZWxkLXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZFNlbGVjdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgZmllbGRUcmVlOiBhbnkgPSBbXTtcbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGxhYmVsOiBzdHJpbmcgPSAn5bGe5oCnJztcbiAgQElucHV0KClcbiAgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIGZpZWxkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHNldCBfZmllbGRzKF9fZmllbGRzOiBhbnkpIHtcbiAgICBpZiAodGhpcy5fX2ZpZWxkcyAhPT0gX19maWVsZHMpIHtcbiAgICAgIHRoaXMuX19maWVsZHMgPSBfX2ZpZWxkcztcbiAgICAgIHRoaXMuZmllbGRDaGFuZ2UodGhpcy5fX2ZpZWxkcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IF9maWVsZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX19maWVsZHM7XG4gIH1cblxuICBwcm90ZWN0ZWQgX19maWVsZHM6IHN0cmluZ1tdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZpZWxkKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy5maWVsZCkpIHtcbiAgICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5jb25maWcuZmllbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9maWVsZHMgPSBbdGhpcy5jb25maWcuZmllbGRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpZWxkQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb25maWcuX19mb3JtQXR0cmlidXRlID0gdmFsdWUuam9pbignOycpO1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5jb25maWcuZmllbGQgPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZmllbGROYW1lIG9mIHZhbHVlKSB7XG4gICAgICAgICAgZmllbGRzLnB1c2godGhpcy5nZXRGaWVsZCh0aGlzLmZpZWxkVHJlZSwgZmllbGROYW1lKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZENoYW5nZWQuZW1pdChmaWVsZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maWcuZmllbGQgPSB2YWx1ZVswXTtcbiAgICAgICAgdGhpcy5maWVsZENoYW5nZWQuZW1pdCh0aGlzLmdldEZpZWxkKHRoaXMuZmllbGRUcmVlLCB2YWx1ZVswXSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmZpZy5maWVsZCA9ICcnO1xuICAgICAgdGhpcy5jb25maWcuX19mb3JtQXR0cmlidXRlID0gJyc7XG4gICAgICB0aGlzLmZpZWxkQ2hhbmdlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZCh0cmVlOiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdHJlZSkge1xuICAgICAgaWYgKG5vZGUuaW5uZXJOYW1lID09PSBmaWVsZCkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gdGhpcy5nZXRGaWVsZChub2RlLmNoaWxkcmVuLCBmaWVsZCk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBvblJvd1ByZXBhcmVkKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudC5yb3dUeXBlID09PSAnaGVhZGVyJykge1xuICAgICAgJGV2ZW50LnJvd0VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gIH1cblxuICBvbkNlbGxQcmVwYXJlZCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICgkZXZlbnQucm93VHlwZSA9PT0gJ2RhdGEnKSB7XG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgJGV2ZW50LmNlbGxFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmICEkZXZlbnQudmlzaWJsZSAmJiAkZXZlbnQuZGF0YS5oYXNJdGVtcykge1xuICAgICAgICBjb25zdCBjaGVja2JveCA9ICRldmVudC5jZWxsRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHgtc2VsZWN0LWNoZWNrYm94Jyk7XG4gICAgICAgIGNoZWNrYm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3VzcGVuZFNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTtcblxuICBvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50OiBhbnksIGRyb3BEb3duQm94OiBEeERyb3BEb3duQm94Q29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3VzcGVuZFNlbGVjdGlvbkNoYW5nZWQpIHtcbiAgICAgIHRoaXMuc3VzcGVuZFNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCRldmVudC5zZWxlY3RlZFJvd3NEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoISRldmVudC5zZWxlY3RlZFJvd3NEYXRhWzBdLnZpc2libGUgJiYgJGV2ZW50LnNlbGVjdGVkUm93c0RhdGFbMF0uaGFzSXRlbXMpIHtcbiAgICAgIGlmICgkZXZlbnQuY29tcG9uZW50LmlzUm93RXhwYW5kZWQoJGV2ZW50LnNlbGVjdGVkUm93S2V5c1swXSkpIHtcbiAgICAgICAgJGV2ZW50LmNvbXBvbmVudC5jb2xsYXBzZVJvdygkZXZlbnQuc2VsZWN0ZWRSb3dLZXlzWzBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRldmVudC5jb21wb25lbnQuZXhwYW5kUm93KCRldmVudC5zZWxlY3RlZFJvd0tleXNbMF0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zdXNwZW5kU2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XG4gICAgICAkZXZlbnQuY29tcG9uZW50LnNlbGVjdFJvd3MoJGV2ZW50LmN1cnJlbnREZXNlbGVjdGVkUm93S2V5c1swXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyb3BEb3duQm94Lmluc3RhbmNlLmNsb3NlKCk7XG4gIH1cblxuICByZW1vdmVJdGVtKCRldmVudDogYW55LCBmaWVsZDogYW55KSB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGZpbmRJbmRleCA9IHRoaXMuX2ZpZWxkcy5maW5kSW5kZXgoKGlubmVyTmFtZTogYW55KSA9PiBpbm5lck5hbWUgPT09IGZpZWxkLmlubmVyTmFtZSk7XG4gICAgdGhpcy5fZmllbGRzLnNwbGljZShmaW5kSW5kZXgsIDEpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cbiAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLWxhYmVsXCI+XG4gICAgPHNwYW4+5bGe5oCnPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQtbWFya1wiICpuZ0lmPVwicmVxdWlyZWRcIj4mbmJzcDsqPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLXZhbHVlXCI+XG4gICAgPGR4LWRyb3AtZG93bi1ib3ggI2ZpZWxkRHJvcERvd25Cb3hcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJmaWVsZFRyZWVcIlxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlubmVyTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGRUZW1wbGF0ZT1cImZpZWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUZW1wbGF0ZT1cImNvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZHJvcERvd25PcHRpb25zXT1cInttYXhIZWlnaHQ6ICdub25lJywgZGVmZXJSZW5kZXJpbmc6IGZhbHNlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiX2ZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCI+XG4gICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGluZm8gb2YgJ2ZpZWxkVGVtcGxhdGUnXCI+XG4gICAgICAgIDxkeC10ZXh0LWJveCBbdmlzaWJsZV09XCJmYWxzZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgIDxkeC10YWctYm94IFtkYXRhU291cmNlXT1cImZpZWxkVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlubmVyTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIFtvcGVuT25GaWVsZENsaWNrXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiX2ZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jb2FzdC10YWctc2VsZWN0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiPlxuICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZmllbGQgb2YgJ3RhZydcIj5cbiAgICAgICAgICAgIDxkeC1idXR0b24gW2VsZW1lbnRBdHRyXT1cInsgY2xhc3M6ICdpdGVtJ31cIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQuY2FwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJtdWx0aXBsZSAmJiAhcmVhZG9ubHlcIiBjbGFzcz1cImNvYXN0LWljb24tY2xvc2VcIiAoY2xpY2spPVwicmVtb3ZlSXRlbSgkZXZlbnQsIGZpZWxkKVwiPjwvaT5cbiAgICAgICAgICAgIDwvZHgtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2R4LXRhZy1ib3g+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudFRlbXBsYXRlJ1wiPlxuICAgICAgICA8ZHgtdGV4dC1ib3ggbW9kZT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwi5pCc57SiLi4uXCIgdmFsdWVDaGFuZ2VFdmVudD1cImtleXVwXCJcbiAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJkeFRyZWVMaXN0Lmluc3RhbmNlLnNlYXJjaEJ5VGV4dCgkZXZlbnQudmFsdWUpXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgPGR4LXRyZWUtbGlzdCAjZHhUcmVlTGlzdFxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImZpZWxkVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlclZhbHVlXT1cIlsndmlzaWJsZScsJz0nLHRydWVdXCJcbiAgICAgICAgICAgICAgICAgICAgICBrZXlFeHByPVwiaW5uZXJOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZEV4cHI9XCJwYXJlbnRJbm5lck5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb3dLZXlzKV09XCJfZmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjM2MFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAob25Sb3dQcmVwYXJlZCk9XCJvblJvd1ByZXBhcmVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChvbkNlbGxQcmVwYXJlZCk9XCJvbkNlbGxQcmVwYXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQsIGZpZWxkRHJvcERvd25Cb3gpXCI+XG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaW5uZXJOYW1lXCIgZGF0YVR5cGU9XCJzdHJpbmdcIiBbdmlzaWJsZV09XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXB0aW9uXCIgZGF0YVR5cGU9XCJzdHJpbmdcIiBjYXB0aW9uPVwi5ZCN56ewXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInZpc2libGVcIiBkYXRhVHlwZT1cImJvb2xlYW5cIiBbdmlzaWJsZV09XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICA8ZHhvLXNlbGVjdGlvbiBbbW9kZV09XCJtdWx0aXBsZSA/ICdtdWx0aXBsZScgOiAnc2luZ2xlJ1wiIFthbGxvd1NlbGVjdEFsbF09XCJmYWxzZVwiPjwvZHhvLXNlbGVjdGlvbj5cbiAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxuICAgICAgICA8L2R4LXRyZWUtbGlzdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGR4LXZhbGlkYXRvcj5cbiAgICAgICAgPGR4aS12YWxpZGF0aW9uLXJ1bGUgKm5nSWY9XCJyZXF1aXJlZFwiIHR5cGU9XCJyZXF1aXJlZFwiIG1lc3NhZ2U9XCLlgLzkuI3og73kuLrnqbpcIj48L2R4aS12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICA8L2R4LXZhbGlkYXRvcj5cbiAgICA8L2R4LWRyb3AtZG93bi1ib3g+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -3,6 +3,7 @@ import { FormService } from "./form.service";
3
3
  import { DxValidationGroupComponent } from "devextreme-angular";
4
4
  import { validate_group } from "../util/utils";
5
5
  import { ChangeFilter } from "../util/change-filter";
6
+ import { lastValueFrom, map } from "rxjs";
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "./form.service";
8
9
  import * as i2 from "@angular/common";
@@ -10,7 +11,9 @@ import * as i3 from "../box-container/box-container.component";
10
11
  import * as i4 from "devextreme-angular/ui/nested";
11
12
  import * as i5 from "devextreme-angular/ui/button";
12
13
  import * as i6 from "devextreme-angular/ui/load-panel";
13
- import * as i7 from "devextreme-angular/ui/validation-group";
14
+ import * as i7 from "devextreme-angular/ui/text-box";
15
+ import * as i8 from "devextreme-angular/ui/validation-group";
16
+ import * as i9 from "devextreme-angular/ui/validator";
14
17
  export class FormComponent {
15
18
  constructor(viewContainerRef, service, elementRef) {
16
19
  this.viewContainerRef = viewContainerRef;
@@ -23,6 +26,7 @@ export class FormComponent {
23
26
  this.submitCallback = new EventEmitter();
24
27
  this.loading = false;
25
28
  this.changeFilter = new ChangeFilter();
29
+ this.extraValidate = this.extraValidate.bind(this);
26
30
  }
27
31
  ngOnInit() {
28
32
  this.load();
@@ -49,6 +53,7 @@ export class FormComponent {
49
53
  });
50
54
  this.service.getFormTemplateConfig(this.tenant, this.className, this.template).subscribe(response => {
51
55
  this.config = response.data.template;
56
+ this.extraValidator = this.config.extraValidator;
52
57
  if (this.onlyFrontEnd) {
53
58
  this.loading = false;
54
59
  }
@@ -75,6 +80,14 @@ export class FormComponent {
75
80
  }
76
81
  });
77
82
  }
83
+ extraValidate() {
84
+ return lastValueFrom(this.service.extraValidate(this.model, this.params, this.extraValidator).pipe(map(response => {
85
+ if (!response.isValid) {
86
+ this.extraValidateMessage = response.message;
87
+ return response;
88
+ }
89
+ })));
90
+ }
78
91
  submitForm() {
79
92
  this.validate().then(isValid => {
80
93
  if (isValid) {
@@ -110,10 +123,10 @@ export class FormComponent {
110
123
  }
111
124
  }
112
125
  FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.FormService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
113
- FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FormComponent, selector: "rs-form", inputs: { tenant: "tenant", className: "className", oid: "oid", copyOid: "copyOid", template: "template", extraAttrMap: "extraAttrMap", opener: "opener", params: "params", tabViewContainerRef: "tabViewContainerRef", onlyFrontEnd: "onlyFrontEnd", model: "model", readonly: "readonly" }, outputs: { onDataLoaded: "onDataLoaded", submitCallback: "submitCallback" }, providers: [FormService], viewQueries: [{ propertyName: "validator", first: true, predicate: DxValidationGroupComponent, descendants: true }, { propertyName: "formSubmitter", first: true, predicate: ["formSubmitter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:row nowrap}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BoxContainerComponent, selector: "rs-box-container", inputs: ["config", "model", "opener", "params", "readonly", "tabViewContainerRef"] }, { kind: "component", type: i4.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i5.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i7.DxValidationGroupComponent, selector: "dx-validation-group", inputs: ["elementAttr", "height", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "elementAttrChange", "heightChange", "widthChange"] }] });
126
+ FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FormComponent, selector: "rs-form", inputs: { tenant: "tenant", className: "className", oid: "oid", copyOid: "copyOid", template: "template", extraAttrMap: "extraAttrMap", opener: "opener", params: "params", tabViewContainerRef: "tabViewContainerRef", onlyFrontEnd: "onlyFrontEnd", model: "model", readonly: "readonly" }, outputs: { onDataLoaded: "onDataLoaded", submitCallback: "submitCallback" }, providers: [FormService], viewQueries: [{ propertyName: "validator", first: true, predicate: DxValidationGroupComponent, descendants: true }, { propertyName: "formSubmitter", first: true, predicate: ["formSubmitter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-text-box height=\"0\" style=\"border: none;\">\r\n <dx-validator>\r\n <dxi-validation-rule *ngIf=\"extraValidator\" type=\"async\"\r\n [validationCallback]=\"extraValidate\"></dxi-validation-rule>\r\n </dx-validator>\r\n </dx-text-box>\r\n <div *ngIf=\"extraValidateMessage\" class=\"dx-field\">\r\n <div class=\"dx-field-value\">\r\n <div class=\"dx-toast-error dx-toast-content\">\r\n <div class=\"dx-toast-message\">{{ extraValidateMessage }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:column nowrap}:host dx-validation-group .dx-field{top:16px}:host dx-validation-group .dx-field .dx-field-value .dx-toast-content{padding:4px 8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BoxContainerComponent, selector: "rs-box-container", inputs: ["id", "editMode", "config", "model", "opener", "params", "readonly", "tabViewContainerRef"] }, { kind: "component", type: i4.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i5.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i4.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxValidationGroupComponent, selector: "dx-validation-group", inputs: ["elementAttr", "height", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "elementAttrChange", "heightChange", "widthChange"] }, { kind: "component", type: i9.DxValidatorComponent, selector: "dx-validator", inputs: ["adapter", "elementAttr", "height", "name", "validationGroup", "validationRules", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onValidated", "adapterChange", "elementAttrChange", "heightChange", "nameChange", "validationGroupChange", "validationRulesChange", "widthChange"] }] });
114
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormComponent, decorators: [{
115
128
  type: Component,
116
- args: [{ selector: 'rs-form', providers: [FormService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:row nowrap}\n"] }]
129
+ args: [{ selector: 'rs-form', providers: [FormService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-text-box height=\"0\" style=\"border: none;\">\r\n <dx-validator>\r\n <dxi-validation-rule *ngIf=\"extraValidator\" type=\"async\"\r\n [validationCallback]=\"extraValidate\"></dxi-validation-rule>\r\n </dx-validator>\r\n </dx-text-box>\r\n <div *ngIf=\"extraValidateMessage\" class=\"dx-field\">\r\n <div class=\"dx-field-value\">\r\n <div class=\"dx-toast-error dx-toast-content\">\r\n <div class=\"dx-toast-message\">{{ extraValidateMessage }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:column nowrap}:host dx-validation-group .dx-field{top:16px}:host dx-validation-group .dx-field .dx-field-value .dx-toast-content{padding:4px 8px}\n"] }]
117
130
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.FormService }, { type: i0.ElementRef }]; }, propDecorators: { tenant: [{
118
131
  type: Input
119
132
  }], className: [{
@@ -149,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
149
162
  }], submitCallback: [{
150
163
  type: Output
151
164
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQW9CLDBCQUEwQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDakYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7OztBQVFuRCxNQUFNLE9BQU8sYUFBYTtJQW1DeEIsWUFBc0IsZ0JBQWtDLEVBQVUsT0FBb0IsRUFBVSxVQUFzQjtRQUFoRyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQ3RILFdBQU0sR0FBUyxHQUFHLENBQUM7UUFrQm5CLGlCQUFZLEdBQVksS0FBSyxDQUFDLENBQUMsc0JBQXNCO1FBSXJELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFLMUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQUUvRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNSLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUcxQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FB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LENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoRCxDQUFDOzswR0E3SFUsYUFBYTs4RkFBYixhQUFhLDZZQUZiLENBQUMsV0FBVyxDQUFDLHFFQTRCYiwwQkFBMEIsc0tDbER2Qyxpc0JBYUE7MkZEV2EsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxTQUFTLGFBR1IsQ0FBQyxXQUFXLENBQUM7MEpBSXhCLE1BQU07c0JBREwsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sR0FBRztzQkFERixLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLE1BQU07c0JBREwsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdpQyxTQUFTO3NCQUEvQyxTQUFTO3VCQUFDLDBCQUEwQjtnQkFDVCxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBRTFCLFlBQVk7c0JBRFgsTUFBTTtnQkFHUCxjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1TZXJ2aWNlfSBmcm9tIFwiLi9mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtEeEJ1dHRvbkNvbXBvbmVudCwgRHhWYWxpZGF0aW9uR3JvdXBDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcclxuaW1wb3J0IHt2YWxpZGF0ZV9ncm91cH0gZnJvbSBcIi4uL3V0aWwvdXRpbHNcIjtcclxuaW1wb3J0IHtDaGFuZ2VGaWx0ZXJ9IGZyb20gXCIuLi91dGlsL2NoYW5nZS1maWx0ZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnMtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtGb3JtU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIHRlbmFudD86IGFueSA9ICdUJztcclxuICBASW5wdXQoKVxyXG4gIGNsYXNzTmFtZSE6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIG9pZD86IGFueTtcclxuICBASW5wdXQoKVxyXG4gIGNvcHlPaWQ/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICB0ZW1wbGF0ZT86IGFueTtcclxuICBASW5wdXQoKVxyXG4gIGV4dHJhQXR0ck1hcD86IGFueTtcclxuICBASW5wdXQoKVxyXG4gIG9wZW5lcj86IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHBhcmFtcz86IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHRhYlZpZXdDb250YWluZXJSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBJbnB1dCgpXHJcbiAgb25seUZyb250RW5kOiBib29sZWFuID0gZmFsc2U7IC8vIOS7heWJjeerr++8jOS4jemAmui/h29pZOiOt+WPluWunuS+i21vZGVsXHJcbiAgQElucHV0KClcclxuICBtb2RlbD86IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uZmlnOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChEeFZhbGlkYXRpb25Hcm91cENvbXBvbmVudCkgdmFsaWRhdG9yITogRHhWYWxpZGF0aW9uR3JvdXBDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZm9ybVN1Ym1pdHRlcicpIGZvcm1TdWJtaXR0ZXIhOiBEeEJ1dHRvbkNvbXBvbmVudDtcclxuICBAT3V0cHV0KClcclxuICBvbkRhdGFMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29uZmlnOiBhbnksIG1vZGVsOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KClcclxuICBzdWJtaXRDYWxsYmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIGNoYW5nZUZpbHRlciA9IG5ldyBDaGFuZ2VGaWx0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgc2VydmljZTogRm9ybVNlcnZpY2UsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvYWQoKTtcclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyLmFueU5vdEZpcnN0KFsndGVuYW50JywgJ2NsYXNzTmFtZScsICdvaWQnLCAnY29weU9pZCcsICd0ZW1wbGF0ZSddLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZUZpbHRlci5kb0ZpbHRlcihjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5jaGFuZ2VGaWx0ZXIuZGlzcG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24odGhpcy5wYXJhbXMgfHwge30sIHtcclxuICAgICAgX19mb3JtOiB7XHJcbiAgICAgICAgdGVuYW50OiB0aGlzLnRlbmFudCxcclxuICAgICAgICBjbGFzc05hbWU6IHRoaXMuY2xhc3NOYW1lLFxyXG4gICAgICAgIG9pZDogdGhpcy5vaWQsXHJcbiAgICAgICAgY29weU9pZDogdGhpcy5jb3B5T2lkLFxyXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLnRlbXBsYXRlXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldEZvcm1UZW1wbGF0ZUNvbmZpZyh0aGlzLnRlbmFudCwgdGhpcy5jbGFzc05hbWUsIHRoaXMudGVtcGxhdGUpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgIHRoaXMuY29uZmlnID0gcmVzcG9uc2UuZGF0YS50ZW1wbGF0ZTtcclxuICAgICAgaWYgKHRoaXMub25seUZyb250RW5kKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb3B5T2lkIHx8IHRoaXMub2lkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldE9uZSh0aGlzLnRlbmFudCwgdGhpcy5jbGFzc05hbWUsIHRoaXMuY29weU9pZCB8fCB0aGlzLm9pZCwgdGhpcy50ZW1wbGF0ZSwgdGhpcy5jb3B5T2lkKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLm9uRGF0YUxvYWRlZC5lbWl0KHtcclxuICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbml0TW9kZWxCeVRlbXBsYXRlKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy50ZW1wbGF0ZSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIHRoaXMubW9kZWwgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5vbkRhdGFMb2FkZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzdWJtaXRGb3JtKCkge1xyXG4gICAgdGhpcy52YWxpZGF0ZSgpLnRoZW4oaXNWYWxpZCA9PiB7XHJcbiAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgY29uc3QgbWVyZ2VNb2RlbDogYW55ID0gey4uLnRoaXMubW9kZWx9O1xyXG4gICAgICAgIGlmICh0aGlzLmV4dHJhQXR0ck1hcCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLmV4dHJhQXR0ck1hcCkge1xyXG4gICAgICAgICAgICBtZXJnZU1vZGVsW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVPclVwZGF0ZSh0aGlzLnRlbmFudCwgdGhpcy5jbGFzc05hbWUsIHtcclxuICAgICAgICAgIG9pZDogdGhpcy5vaWQsXHJcbiAgICAgICAgICAuLi5tZXJnZU1vZGVsXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0Q2FsbGJhY2suZW1pdChyZXNwb25zZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXRDYWxsYmFjay5lbWl0KHtzdWNjZXNzOiBmYWxzZX0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9BbmNob3JQb2ludChhbmNob3JQb2ludElkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBvaW50cyA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ19fYW5jaG9yX3BvaW50XycgKyBhbmNob3JQb2ludElkKTtcclxuICAgIGlmIChwb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBwb2ludHNbMF0uc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKCkge1xyXG4gICAgcmV0dXJuIHZhbGlkYXRlX2dyb3VwKHRoaXMudmFsaWRhdG9yKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZm9ybVN1Ym1pdHRlci5pbnN0YW5jZS5lbGVtZW50KCkuY2xpY2soKTtcclxuICB9XHJcbn1cclxuIiwiPGR4LWxvYWQtcGFuZWwgW2NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudFwiIFtzaG93UGFuZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cImxvYWRpbmdcIj5cclxuICA8ZHhvLXBvc2l0aW9uIFtvZl09XCJ2aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudFwiPjwvZHhvLXBvc2l0aW9uPlxyXG48L2R4LWxvYWQtcGFuZWw+XHJcbjxkeC12YWxpZGF0aW9uLWdyb3VwICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICA8cnMtYm94LWNvbnRhaW5lciBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3BlbmVyXT1cInRoaXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXJhbXNdPVwicGFyYW1zXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGFiVmlld0NvbnRhaW5lclJlZl09XCJ0YWJWaWV3Q29udGFpbmVyUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIj48L3JzLWJveC1jb250YWluZXI+XHJcbiAgPGR4LWJ1dHRvbiAjZm9ybVN1Ym1pdHRlciBbdmlzaWJsZV09XCJmYWxzZVwiIChvbkNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiPjwvZHgtYnV0dG9uPlxyXG48L2R4LXZhbGlkYXRpb24tZ3JvdXA+XHJcbiJdfQ==
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQW9CLDBCQUEwQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDakYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBUXhDLE1BQU0sT0FBTyxhQUFhO0lBcUN4QixZQUFzQixnQkFBa0MsRUFBVSxPQUFvQixFQUFVLFVBQXNCO1FBQWhHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQW5DdEgsV0FBTSxHQUFTLEdBQUcsQ0FBQztRQWtCbkIsaUJBQVksR0FBWSxLQUFLLENBQUMsQ0FBQyxzQkFBc0I7UUFJckQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQU0xQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBRS9ELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ1IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxD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QVk7c0JBRFgsS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUlpQyxTQUFTO3NCQUEvQyxTQUFTO3VCQUFDLDBCQUEwQjtnQkFDVCxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBRTFCLFlBQVk7c0JBRFgsTUFBTTtnQkFHUCxjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1TZXJ2aWNlfSBmcm9tIFwiLi9mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtEeEJ1dHRvbkNvbXBvbmVudCwgRHhWYWxpZGF0aW9uR3JvdXBDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcclxuaW1wb3J0IHt2YWxpZGF0ZV9ncm91cH0gZnJvbSBcIi4uL3V0aWwvdXRpbHNcIjtcclxuaW1wb3J0IHtDaGFuZ2VGaWx0ZXJ9IGZyb20gXCIuLi91dGlsL2NoYW5nZS1maWx0ZXJcIjtcclxuaW1wb3J0IHtsYXN0VmFsdWVGcm9tLCBtYXB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JzLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbRm9ybVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICB0ZW5hbnQ/OiBhbnkgPSAnVCc7XHJcbiAgQElucHV0KClcclxuICBjbGFzc05hbWUhOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBvaWQ/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBjb3B5T2lkPzogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgdGVtcGxhdGU/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBleHRyYUF0dHJNYXA/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBvcGVuZXI/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBwYXJhbXM/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICB0YWJWaWV3Q29udGFpbmVyUmVmITogVmlld0NvbnRhaW5lclJlZjtcclxuICBASW5wdXQoKVxyXG4gIG9ubHlGcm9udEVuZDogYm9vbGVhbiA9IGZhbHNlOyAvLyDku4XliY3nq6/vvIzkuI3pgJrov4dvaWTojrflj5blrp7kvottb2RlbFxyXG4gIEBJbnB1dCgpXHJcbiAgbW9kZWw/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmZpZzogYW55O1xyXG4gIGV4dHJhVmFsaWRhdG9yPzogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoRHhWYWxpZGF0aW9uR3JvdXBDb21wb25lbnQpIHZhbGlkYXRvciE6IER4VmFsaWRhdGlvbkdyb3VwQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1TdWJtaXR0ZXInKSBmb3JtU3VibWl0dGVyITogRHhCdXR0b25Db21wb25lbnQ7XHJcbiAgQE91dHB1dCgpXHJcbiAgb25EYXRhTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbmZpZzogYW55LCBtb2RlbDogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgc3VibWl0Q2FsbGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VGaWx0ZXIgPSBuZXcgQ2hhbmdlRmlsdGVyKCk7XHJcbiAgcHJvdGVjdGVkIGV4dHJhVmFsaWRhdGVNZXNzYWdlOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIHNlcnZpY2U6IEZvcm1TZXJ2aWNlLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMuZXh0cmFWYWxpZGF0ZSA9IHRoaXMuZXh0cmFWYWxpZGF0ZS5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvYWQoKTtcclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyLmFueU5vdEZpcnN0KFsndGVuYW50JywgJ2NsYXNzTmFtZScsICdvaWQnLCAnY29weU9pZCcsICd0ZW1wbGF0ZSddLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZUZpbHRlci5kb0ZpbHRlcihjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5jaGFuZ2VGaWx0ZXIuZGlzcG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24odGhpcy5wYXJhbXMgfHwge30sIHtcclxuICAgICAgX19mb3JtOiB7XHJcbiAgICAgICAgdGVuYW50OiB0aGlzLnRlbmFudCxcclxuICAgICAgICBjbGFzc05hbWU6IHRoaXMuY2xhc3NOYW1lLFxyXG4gICAgICAgIG9pZDogdGhpcy5vaWQsXHJcbiAgICAgICAgY29weU9pZDogdGhpcy5jb3B5T2lkLFxyXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLnRlbXBsYXRlXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldEZvcm1UZW1wbGF0ZUNvbmZpZyh0aGlzLnRlbmFudCwgdGhpcy5jbGFzc05hbWUsIHRoaXMudGVtcGxhdGUpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgIHRoaXMuY29uZmlnID0gcmVzcG9uc2UuZGF0YS50ZW1wbGF0ZTtcclxuICAgICAgdGhpcy5leHRyYVZhbGlkYXRvciA9IHRoaXMuY29uZmlnLmV4dHJhVmFsaWRhdG9yO1xyXG4gICAgICBpZiAodGhpcy5vbmx5RnJvbnRFbmQpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvcHlPaWQgfHwgdGhpcy5vaWQpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0T25lKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy5jb3B5T2lkIHx8IHRoaXMub2lkLCB0aGlzLnRlbXBsYXRlLCB0aGlzLmNvcHlPaWQpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMub25EYXRhTG9hZGVkLmVtaXQoe1xyXG4gICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldEluaXRNb2RlbEJ5VGVtcGxhdGUodGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB0aGlzLnRlbXBsYXRlKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbCA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLm9uRGF0YUxvYWRlZC5lbWl0KHtcclxuICAgICAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcclxuICAgICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGV4dHJhVmFsaWRhdGUoKSB7XHJcbiAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZXh0cmFWYWxpZGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnBhcmFtcywgPHN0cmluZz50aGlzLmV4dHJhVmFsaWRhdG9yKS5waXBlKFxyXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2UuaXNWYWxpZCkge1xyXG4gICAgICAgICAgdGhpcy5leHRyYVZhbGlkYXRlTWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc3VibWl0Rm9ybSgpIHtcclxuICAgIHRoaXMudmFsaWRhdGUoKS50aGVuKGlzVmFsaWQgPT4ge1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIGNvbnN0IG1lcmdlTW9kZWw6IGFueSA9IHsuLi50aGlzLm1vZGVsfTtcclxuICAgICAgICBpZiAodGhpcy5leHRyYUF0dHJNYXApIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5leHRyYUF0dHJNYXApIHtcclxuICAgICAgICAgICAgbWVyZ2VNb2RlbFtlbnRyeS5uYW1lXSA9IGVudHJ5LnZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlcnZpY2UuY3JlYXRlT3JVcGRhdGUodGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB7XHJcbiAgICAgICAgICBvaWQ6IHRoaXMub2lkLFxyXG4gICAgICAgICAgLi4ubWVyZ2VNb2RlbFxyXG4gICAgICAgIH0pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdENhbGxiYWNrLmVtaXQocmVzcG9uc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3VibWl0Q2FsbGJhY2suZW1pdCh7c3VjY2VzczogZmFsc2V9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvQW5jaG9yUG9pbnQoYW5jaG9yUG9pbnRJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdfX2FuY2hvcl9wb2ludF8nICsgYW5jaG9yUG9pbnRJZCk7XHJcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcG9pbnRzWzBdLnNjcm9sbEludG9WaWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSgpIHtcclxuICAgIHJldHVybiB2YWxpZGF0ZV9ncm91cCh0aGlzLnZhbGlkYXRvcik7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLmZvcm1TdWJtaXR0ZXIuaW5zdGFuY2UuZWxlbWVudCgpLmNsaWNrKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkeC1sb2FkLXBhbmVsIFtjb250YWluZXJdPVwidmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIiBbc2hvd1BhbmVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICBbdmlzaWJsZV09XCJsb2FkaW5nXCI+XHJcbiAgPGR4by1wb3NpdGlvbiBbb2ZdPVwidmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIj48L2R4by1wb3NpdGlvbj5cclxuPC9keC1sb2FkLXBhbmVsPlxyXG48ZHgtdmFsaWRhdGlvbi1ncm91cCAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgPHJzLWJveC1jb250YWluZXIgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wZW5lcl09XCJ0aGlzXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGFyYW1zXT1cInBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RhYlZpZXdDb250YWluZXJSZWZdPVwidGFiVmlld0NvbnRhaW5lclJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCI+PC9ycy1ib3gtY29udGFpbmVyPlxyXG4gIDxkeC10ZXh0LWJveCBoZWlnaHQ9XCIwXCIgc3R5bGU9XCJib3JkZXI6IG5vbmU7XCI+XHJcbiAgICA8ZHgtdmFsaWRhdG9yPlxyXG4gICAgICA8ZHhpLXZhbGlkYXRpb24tcnVsZSAqbmdJZj1cImV4dHJhVmFsaWRhdG9yXCIgdHlwZT1cImFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25DYWxsYmFja109XCJleHRyYVZhbGlkYXRlXCI+PC9keGktdmFsaWRhdGlvbi1ydWxlPlxyXG4gICAgPC9keC12YWxpZGF0b3I+XHJcbiAgPC9keC10ZXh0LWJveD5cclxuICA8ZGl2ICpuZ0lmPVwiZXh0cmFWYWxpZGF0ZU1lc3NhZ2VcIiBjbGFzcz1cImR4LWZpZWxkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtdmFsdWVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImR4LXRvYXN0LWVycm9yIGR4LXRvYXN0LWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtdG9hc3QtbWVzc2FnZVwiPnt7IGV4dHJhVmFsaWRhdGVNZXNzYWdlIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGR4LWJ1dHRvbiAjZm9ybVN1Ym1pdHRlciBbdmlzaWJsZV09XCJmYWxzZVwiIChvbkNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiPjwvZHgtYnV0dG9uPlxyXG48L2R4LXZhbGlkYXRpb24tZ3JvdXA+XHJcbiJdfQ==
@@ -3,13 +3,16 @@ import { CommonModule } from '@angular/common';
3
3
  import { FormComponent } from './form.component';
4
4
  import { BoxContainerModule } from "../box-container/box-container.module";
5
5
  import { DevExtremeModule } from "devextreme-angular";
6
+ import { FieldSelectorComponent } from './field-selector/field-selector.component';
6
7
  import * as i0 from "@angular/core";
7
8
  export class FormModule {
8
9
  }
9
10
  FormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- FormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FormModule, declarations: [FormComponent], imports: [CommonModule,
11
+ FormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FormModule, declarations: [FormComponent,
12
+ FieldSelectorComponent], imports: [CommonModule,
11
13
  BoxContainerModule,
12
- DevExtremeModule], exports: [FormComponent] });
14
+ DevExtremeModule], exports: [FormComponent,
15
+ FieldSelectorComponent] });
13
16
  FormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormModule, imports: [CommonModule,
14
17
  BoxContainerModule,
15
18
  DevExtremeModule] });
@@ -17,7 +20,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
17
20
  type: NgModule,
18
21
  args: [{
19
22
  declarations: [
20
- FormComponent
23
+ FormComponent,
24
+ FieldSelectorComponent
21
25
  ],
22
26
  imports: [
23
27
  CommonModule,
@@ -25,8 +29,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
25
29
  DevExtremeModule
26
30
  ],
27
31
  exports: [
28
- FormComponent
32
+ FormComponent,
33
+ FieldSelectorComponent
29
34
  ]
30
35
  }]
31
36
  }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9mb3JtL2Zvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7QUFlcEQsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxpQkFYbkIsYUFBYSxhQUdiLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsZ0JBQWdCLGFBR2hCLGFBQWE7d0dBR0osVUFBVSxZQVJuQixZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLGdCQUFnQjsyRkFNUCxVQUFVO2tCQWJ0QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsYUFBYTtxQkFDZDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtCb3hDb250YWluZXJNb2R1bGV9IGZyb20gXCIuLi9ib3gtY29udGFpbmVyL2JveC1jb250YWluZXIubW9kdWxlXCI7XG5pbXBvcnQge0RldkV4dHJlbWVNb2R1bGV9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRm9ybUNvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJveENvbnRhaW5lck1vZHVsZSxcbiAgICBEZXZFeHRyZW1lTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGb3JtQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybU1vZHVsZSB7XG59XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9mb3JtL2Zvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFpQmpGLE1BQU0sT0FBTyxVQUFVOzt1R0FBVixVQUFVO3dHQUFWLFVBQVUsaUJBYm5CLGFBQWE7UUFDYixzQkFBc0IsYUFHdEIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixnQkFBZ0IsYUFHaEIsYUFBYTtRQUNiLHNCQUFzQjt3R0FHYixVQUFVLFlBVG5CLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsZ0JBQWdCOzJGQU9QLFVBQVU7a0JBZnRCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGFBQWE7d0JBQ2Isc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGFBQWE7d0JBQ2Isc0JBQXNCO3FCQUN2QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtCb3hDb250YWluZXJNb2R1bGV9IGZyb20gXCIuLi9ib3gtY29udGFpbmVyL2JveC1jb250YWluZXIubW9kdWxlXCI7XG5pbXBvcnQge0RldkV4dHJlbWVNb2R1bGV9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcbmltcG9ydCB7RmllbGRTZWxlY3RvckNvbXBvbmVudH0gZnJvbSAnLi9maWVsZC1zZWxlY3Rvci9maWVsZC1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGb3JtQ29tcG9uZW50LFxuICAgIEZpZWxkU2VsZWN0b3JDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCb3hDb250YWluZXJNb2R1bGUsXG4gICAgRGV2RXh0cmVtZU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBGaWVsZFNlbGVjdG9yQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybU1vZHVsZSB7XG59XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { map } from "rxjs";
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@angular/common/http";
4
5
  export class FormService {
@@ -33,6 +34,23 @@ export class FormService {
33
34
  }
34
35
  });
35
36
  }
37
+ extraValidate(model, params, extraValidator) {
38
+ return this.http.post('api/validate/form', model, {
39
+ params: {
40
+ validator: extraValidator,
41
+ ...params
42
+ }
43
+ }).pipe(map(response => {
44
+ if (response.success) {
45
+ return response.data;
46
+ }
47
+ else {
48
+ return {
49
+ isValid: false
50
+ };
51
+ }
52
+ }));
53
+ }
36
54
  createOrUpdate(tenant, className, model) {
37
55
  let api = 'api/data/' + className;
38
56
  if (model.oid) {
@@ -50,4 +68,4 @@ FormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
50
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormService, decorators: [{
51
69
  type: Injectable
52
70
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZm9ybS9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBSXpDLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFDcEMsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQVcsRUFBRSxTQUFjLEVBQUUsUUFBYztRQUMvRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLG9CQUFvQixHQUFHLFNBQVMsRUFBRTtZQUMxRCxNQUFNLEVBQUU7Z0JBQ04sTUFBTTtnQkFDTixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7YUFDekI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVcsRUFBRSxTQUFjLEVBQUUsR0FBUSxFQUFFLFFBQWMsRUFBRSxNQUFZO1FBQ3hFLElBQUksR0FBRyxHQUFHLFdBQVcsR0FBRyxTQUFTLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsRUFBRTtZQUM3QixNQUFNLEVBQUU7Z0JBQ04sTUFBTTtnQkFDTixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7Z0JBQ3hCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTthQUNqQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFXLEVBQUUsU0FBYyxFQUFFLFFBQWM7UUFDaEUsSUFBSSxHQUFHLEdBQUcsV0FBVyxHQUFHLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLEVBQUU7WUFDN0IsTUFBTSxFQUFFO2dCQUNOLE1BQU07Z0JBQ04sU0FBUztnQkFDVCxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7YUFDekI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQVcsRUFBRSxTQUFjLEVBQUUsS0FBVTtRQUNwRCxJQUFJLEdBQUcsR0FBRyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNiLEdBQUcsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNyQyxNQUFNLEVBQUU7Z0JBQ04sTUFBTTthQUNQO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7d0dBN0NVLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICB9XG5cbiAgZ2V0Rm9ybVRlbXBsYXRlQ29uZmlnKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgdGVtcGxhdGU/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KCdhcGkvbWV0YWRhdGEvZm9ybS8nICsgY2xhc3NOYW1lLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgdGVuYW50LFxuICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUgfHwgJydcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldE9uZSh0ZW5hbnQ6IGFueSwgY2xhc3NOYW1lOiBhbnksIG9pZDogYW55LCB0ZW1wbGF0ZT86IGFueSwgaXNDb3B5PzogYW55KSB7XG4gICAgbGV0IGFwaSA9ICdhcGkvZGF0YS8nICsgY2xhc3NOYW1lICsgJy8nICsgb2lkO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYXBpLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgdGVuYW50LFxuICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUgfHwgJycsXG4gICAgICAgIGlzQ29weTogISFpc0NvcHlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEluaXRNb2RlbEJ5VGVtcGxhdGUodGVuYW50OiBhbnksIGNsYXNzTmFtZTogYW55LCB0ZW1wbGF0ZT86IGFueSkge1xuICAgIGxldCBhcGkgPSAnYXBpL2RhdGEvJyArIGNsYXNzTmFtZSArICcvbmV3JztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGFwaSwge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIHRlbmFudCxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUgfHwgJydcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZU9yVXBkYXRlKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgbW9kZWw6IGFueSkge1xuICAgIGxldCBhcGkgPSAnYXBpL2RhdGEvJyArIGNsYXNzTmFtZTtcbiAgICBpZiAobW9kZWwub2lkKSB7XG4gICAgICBhcGkgKz0gJy8nICsgbW9kZWwub2lkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihhcGksIG1vZGVsLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgdGVuYW50XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZm9ybS9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFHekIsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUNwQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBVyxFQUFFLFNBQWMsRUFBRSxRQUFjO1FBQy9ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sb0JBQW9CLEdBQUcsU0FBUyxFQUFFO1lBQzFELE1BQU0sRUFBRTtnQkFDTixNQUFNO2dCQUNOLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRTthQUN6QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBVyxFQUFFLFNBQWMsRUFBRSxHQUFRLEVBQUUsUUFBYyxFQUFFLE1BQVk7UUFDeEUsSUFBSSxHQUFHLEdBQUcsV0FBVyxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxFQUFFO1lBQzdCLE1BQU0sRUFBRTtnQkFDTixNQUFNO2dCQUNOLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRTtnQkFDeEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO2FBQ2pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQVcsRUFBRSxTQUFjLEVBQUUsUUFBYztRQUNoRSxJQUFJLEdBQUcsR0FBRyxXQUFXLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsRUFBRTtZQUM3QixNQUFNLEVBQUU7Z0JBQ04sTUFBTTtnQkFDTixTQUFTO2dCQUNULFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRTthQUN6QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVSxFQUFFLE1BQVcsRUFBRSxjQUFzQjtRQUMzRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLG1CQUFtQixFQUFFLEtBQUssRUFBRTtZQUNyRCxNQUFNLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLGNBQWM7Z0JBQ3pCLEdBQUcsTUFBTTthQUNWO1NBQ0YsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDYixJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQzthQUN0QjtpQkFBTTtnQkFDTCxPQUFPO29CQUNMLE9BQU8sRUFBRSxLQUFLO2lCQUNmLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQVcsRUFBRSxTQUFjLEVBQUUsS0FBVTtRQUNwRCxJQUFJLEdBQUcsR0FBRyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNiLEdBQUcsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNyQyxNQUFNLEVBQUU7Z0JBQ04sTUFBTTthQUNQO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7d0dBaEVVLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge21hcH0gZnJvbSBcInJ4anNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gIH1cblxuICBnZXRGb3JtVGVtcGxhdGVDb25maWcodGVuYW50OiBhbnksIGNsYXNzTmFtZTogYW55LCB0ZW1wbGF0ZT86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oJ2FwaS9tZXRhZGF0YS9mb3JtLycgKyBjbGFzc05hbWUsIHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICB0ZW5hbnQsXG4gICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSB8fCAnJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0T25lKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgb2lkOiBhbnksIHRlbXBsYXRlPzogYW55LCBpc0NvcHk/OiBhbnkpIHtcbiAgICBsZXQgYXBpID0gJ2FwaS9kYXRhLycgKyBjbGFzc05hbWUgKyAnLycgKyBvaWQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihhcGksIHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICB0ZW5hbnQsXG4gICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSB8fCAnJyxcbiAgICAgICAgaXNDb3B5OiAhIWlzQ29weVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SW5pdE1vZGVsQnlUZW1wbGF0ZSh0ZW5hbnQ6IGFueSwgY2xhc3NOYW1lOiBhbnksIHRlbXBsYXRlPzogYW55KSB7XG4gICAgbGV0IGFwaSA9ICdhcGkvZGF0YS8nICsgY2xhc3NOYW1lICsgJy9uZXcnO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYXBpLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgdGVuYW50LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSB8fCAnJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZXh0cmFWYWxpZGF0ZShtb2RlbDogYW55LCBwYXJhbXM6IGFueSwgZXh0cmFWYWxpZGF0b3I6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KCdhcGkvdmFsaWRhdGUvZm9ybScsIG1vZGVsLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgdmFsaWRhdG9yOiBleHRyYVZhbGlkYXRvcixcbiAgICAgICAgLi4ucGFyYW1zXG4gICAgICB9XG4gICAgfSkucGlwZShcbiAgICAgIG1hcChyZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlT3JVcGRhdGUodGVuYW50OiBhbnksIGNsYXNzTmFtZTogYW55LCBtb2RlbDogYW55KSB7XG4gICAgbGV0IGFwaSA9ICdhcGkvZGF0YS8nICsgY2xhc3NOYW1lO1xuICAgIGlmIChtb2RlbC5vaWQpIHtcbiAgICAgIGFwaSArPSAnLycgKyBtb2RlbC5vaWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGFwaSwgbW9kZWwsIHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICB0ZW5hbnRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19