@michalrakus/x-react-web-lib 1.9.0 → 1.11.0

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 (61) hide show
  1. package/XEditBrowse.d.ts +3 -0
  2. package/XEditBrowse.js +5 -0
  3. package/XInputInterval.d.ts +3 -0
  4. package/XInputInterval.js +5 -0
  5. package/XInputIntervalBase.d.ts +3 -0
  6. package/XInputIntervalBase.js +5 -0
  7. package/XObject.d.ts +3 -0
  8. package/XObject.js +5 -0
  9. package/gulpfile.js +4 -1
  10. package/lib/administration/XBrowseMetaBrowse.d.ts +2 -1
  11. package/lib/administration/XUserBrowse.d.ts +2 -1
  12. package/lib/administration/XUserBrowse.js +1 -1
  13. package/lib/administration/XUserForm.d.ts +6 -3
  14. package/lib/administration/XUserForm.js +9 -16
  15. package/lib/components/XAutoComplete.d.ts +4 -4
  16. package/lib/components/XAutoComplete.js +10 -20
  17. package/lib/components/XAutoCompleteBase.d.ts +15 -5
  18. package/lib/components/XAutoCompleteBase.js +114 -95
  19. package/lib/components/XAutoCompleteDT.d.ts +4 -3
  20. package/lib/components/XAutoCompleteDT.js +8 -7
  21. package/lib/components/XCalendar.d.ts +2 -1
  22. package/lib/components/XCalendar.js +1 -1
  23. package/lib/components/XDropdownDT.d.ts +3 -0
  24. package/lib/components/XDropdownDT.js +14 -7
  25. package/lib/components/XDropdownForEntity.d.ts +1 -0
  26. package/lib/components/XDropdownForEntity.js +3 -1
  27. package/lib/components/{XBrowse.d.ts → XEditBrowse.d.ts} +3 -3
  28. package/lib/components/{XBrowse.js → XEditBrowse.js} +22 -22
  29. package/lib/components/XFormBase.d.ts +14 -4
  30. package/lib/components/XFormBase.js +137 -42
  31. package/lib/components/XFormDataTable2.d.ts +7 -6
  32. package/lib/components/XFormDataTable2.js +18 -38
  33. package/lib/components/XFormNavigator3.d.ts +3 -3
  34. package/lib/components/XFormNavigator3.js +2 -2
  35. package/lib/components/XInputDate.js +1 -1
  36. package/lib/components/XInputInterval.d.ts +14 -0
  37. package/lib/components/XInputInterval.js +56 -0
  38. package/lib/components/XInputIntervalBase.d.ts +10 -0
  39. package/lib/components/XInputIntervalBase.js +97 -0
  40. package/lib/components/XInputIntervalDT.d.ts +11 -0
  41. package/lib/components/XInputIntervalDT.js +43 -0
  42. package/lib/components/XLazyDataTable.d.ts +9 -2
  43. package/lib/components/XLazyDataTable.js +58 -42
  44. package/lib/components/{SearchTableParams.d.ts → XSearchBrowseParams.d.ts} +2 -2
  45. package/lib/components/XSearchButton.d.ts +2 -2
  46. package/lib/components/XSearchButton.js +8 -12
  47. package/lib/components/XSearchButtonDT.d.ts +2 -2
  48. package/lib/components/XSearchButtonDT.js +9 -5
  49. package/lib/components/XUtils.d.ts +30 -2
  50. package/lib/components/XUtils.js +95 -17
  51. package/lib/components/XUtilsConversions.d.ts +3 -0
  52. package/lib/components/XUtilsConversions.js +53 -1
  53. package/lib/components/locale/x-en.json +4 -1
  54. package/lib/serverApi/ExportImportParam.d.ts +2 -2
  55. package/lib/serverApi/FindParam.d.ts +6 -5
  56. package/lib/serverApi/XUtilsCommon.d.ts +1 -0
  57. package/lib/serverApi/XUtilsCommon.js +70 -0
  58. package/package.json +1 -1
  59. package/XBrowse.d.ts +0 -3
  60. package/XBrowse.js +0 -5
  61. /package/lib/components/{SearchTableParams.js → XSearchBrowseParams.js} +0 -0
@@ -1,8 +1,9 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  export declare const XCalendar: (props: {
3
3
  id?: string | undefined;
4
4
  value: Date | null;
5
5
  onChange: (value: Date | null) => void;
6
+ onBlur?: ((event: React.FocusEvent<HTMLInputElement, Element>) => void) | undefined;
6
7
  readOnly?: boolean | undefined;
7
8
  datetime?: boolean | undefined;
8
9
  }) => JSX.Element;
@@ -22,6 +22,6 @@ var XCalendar = function (props) {
22
22
  }
23
23
  };
24
24
  var datetime = (_a = props.datetime) !== null && _a !== void 0 ? _a : false;
25
- return (react_1.default.createElement(calendar_1.Calendar, { id: props.id, value: props.value, onChange: onChange, disabled: props.readOnly, showIcon: true, showOnFocus: false, dateFormat: (0, XUtilsConversions_1.dateFormatCalendar)(), showTime: datetime, showSeconds: datetime, inputClassName: datetime ? 'x-input-datetime' : 'x-input-date' }));
25
+ return (react_1.default.createElement(calendar_1.Calendar, { id: props.id, value: props.value, onChange: onChange, disabled: props.readOnly, showIcon: true, showOnFocus: false, dateFormat: (0, XUtilsConversions_1.dateFormatCalendar)(), showTime: datetime, showSeconds: datetime, inputClassName: datetime ? 'x-input-datetime' : 'x-input-date', onBlur: props.onBlur }));
26
26
  };
27
27
  exports.XCalendar = XCalendar;
@@ -1,11 +1,14 @@
1
1
  /// <reference types="react" />
2
2
  import { XFormBase } from "./XFormBase";
3
3
  import { XDropdownOptionsMap } from "./XFormDataTable2";
4
+ import { XCustomFilter } from "../serverApi/FindParam";
4
5
  export declare const XDropdownDT: (props: {
5
6
  form: XFormBase;
6
7
  entity: string;
7
8
  assocField: string;
8
9
  displayField: string;
10
+ sortField?: string | undefined;
11
+ filter?: XCustomFilter | undefined;
9
12
  dropdownOptionsMap: XDropdownOptionsMap;
10
13
  onDropdownOptionsMapChange: (dropdownOptionsMap: XDropdownOptionsMap) => void;
11
14
  rowData: any;
@@ -63,17 +63,22 @@ exports.XDropdownDT = void 0;
63
63
  var react_1 = __importStar(require("react"));
64
64
  var XUtils_1 = require("./XUtils");
65
65
  var dropdown_1 = require("primereact/dropdown");
66
+ var XUtilsMetadata_1 = require("./XUtilsMetadata");
66
67
  var XDropdownDT = function (props) {
67
68
  // poznamka: nacitanie/ulozenie options je vytiahnute do parent komponentu XFormDataTable koli tomu aby sme nenacitavali options pre kazdy riadok tabulky
69
+ // "members"
70
+ var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity), props.assocField);
71
+ var idField = XUtilsMetadata_1.XUtilsMetadata.getXEntity(xAssoc.entityName).idField;
68
72
  // parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
69
73
  (0, react_1.useEffect)(function () {
70
74
  //console.log("XDropdownDT - zavolany useEffect *******************")
71
75
  findOptions();
72
76
  }, []); // eslint-disable-line react-hooks/exhaustive-deps
73
77
  var findOptions = function () { return __awaiter(void 0, void 0, void 0, function () {
74
- var options;
75
- return __generator(this, function (_a) {
76
- switch (_a.label) {
78
+ var options, xAssoc_1;
79
+ var _a;
80
+ return __generator(this, function (_b) {
81
+ switch (_b.label) {
77
82
  case 0:
78
83
  options = props.dropdownOptionsMap[props.assocField];
79
84
  if (!(options === undefined)) return [3 /*break*/, 2];
@@ -83,15 +88,17 @@ var XDropdownDT = function (props) {
83
88
  // Nacitanie z DB sa koli asynchronnosti vykona az po zavolani tejto metody pre vsetky riadky tabulky, co je pre nas neskoro.
84
89
  // ak by tu tento riadok nebol, tak by sa options nacitavali tolkokrat, kolko je riadkov v tabulke
85
90
  props.dropdownOptionsMap[props.assocField] = [];
86
- return [4 /*yield*/, XUtils_1.XUtils.fetchMany('findRowsForAssoc', { entity: props.entity, assocField: props.assocField })];
91
+ xAssoc_1 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity), props.assocField);
92
+ return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc_1.entityName, props.filter, (_a = props.sortField) !== null && _a !== void 0 ? _a : props.displayField)];
87
93
  case 1:
88
- options = _a.sent();
94
+ //options = await XUtils.fetchMany('findRowsForAssoc', {entity: props.entity, assocField: props.assocField});
95
+ options = _b.sent();
89
96
  options.splice(0, 0, {}); // null polozka (nepridavat pre not null atributy)
90
97
  props.dropdownOptionsMap[props.assocField] = options;
91
98
  //console.log("XDropdownDT - findOptions - citali sme options pre field = " + props.assocField);
92
99
  //console.log(props.dropdownOptionsMap);
93
100
  props.onDropdownOptionsMapChange(props.dropdownOptionsMap); // vyrenderujeme nacitane hodnoty
94
- _a.label = 2;
101
+ _b.label = 2;
95
102
  case 2: return [2 /*return*/];
96
103
  }
97
104
  });
@@ -123,6 +130,6 @@ var XDropdownDT = function (props) {
123
130
  }
124
131
  var options = props.dropdownOptionsMap[props.assocField] !== undefined ? props.dropdownOptionsMap[props.assocField] : []; // mozno mozme do options prasknut rovno undefined...
125
132
  // appendTo={document.body} appenduje overlay panel na element body - eliminuje problem s overflow (pozri poznamku v XDropdownDTFilter)
126
- return (react_1.default.createElement(dropdown_1.Dropdown, { appendTo: document.body, id: props.assocField, optionLabel: props.displayField, value: assocObject, options: options, onChange: function (e) { return onValueChange(props.assocField, props.rowData, e.target.value); } }));
133
+ return (react_1.default.createElement(dropdown_1.Dropdown, { appendTo: document.body, id: props.assocField, optionLabel: props.displayField, value: assocObject, options: options, dataKey: idField, onChange: function (e) { return onValueChange(props.assocField, props.rowData, e.target.value); } }));
127
134
  };
128
135
  exports.XDropdownDT = XDropdownDT;
@@ -14,6 +14,7 @@ export interface XDropdownForEntityProps {
14
14
  filter?: XCustomFilter;
15
15
  }
16
16
  export declare class XDropdownForEntity extends Component<XDropdownForEntityProps> {
17
+ protected idField: string;
17
18
  state: {
18
19
  options: any[];
19
20
  };
@@ -89,6 +89,7 @@ exports.XDropdownForEntity = void 0;
89
89
  var react_1 = __importStar(require("react"));
90
90
  var dropdown_1 = require("primereact/dropdown");
91
91
  var XUtils_1 = require("./XUtils");
92
+ var XUtilsMetadata_1 = require("./XUtilsMetadata");
92
93
  // vseobecny Dropdown ktoreho parametrom je entity, zobrazuje zaznamy danej entity, po selectnuti vracia zaznam danej entity
93
94
  // ambicia je pouzivat ho vsade - vo formulari, vo filtroch, vo form tabulke, priamo aplikacnym programmerom
94
95
  // dalo by sa vyclenit este XDropdownBase, ktory by dostaval ako parameter options (bol by nezavisly od DB), zatial ho nerobime,
@@ -100,6 +101,7 @@ var XDropdownForEntity = /** @class */ (function (_super) {
100
101
  __extends(XDropdownForEntity, _super);
101
102
  function XDropdownForEntity(props) {
102
103
  var _this = _super.call(this, props) || this;
104
+ _this.idField = XUtilsMetadata_1.XUtilsMetadata.getXEntity(_this.props.entity).idField;
103
105
  _this.state = {
104
106
  options: []
105
107
  };
@@ -142,7 +144,7 @@ var XDropdownForEntity = /** @class */ (function (_super) {
142
144
  XDropdownForEntity.prototype.render = function () {
143
145
  // TODO - mozno by nebolo od veci pouzivat InputText ak readOnly === true (chybala by len sipka (rozbalovac)) a dalo by sa copy-paste-ovat
144
146
  // propertiesy na Dropdown-e: readOnly vyseduje, disabled znemoznuje vyber polozky
145
- return (react_1.default.createElement(dropdown_1.Dropdown, __assign({ id: this.props.id, options: this.state.options, optionLabel: this.props.displayField, value: this.props.value, onChange: this.onChange, readOnly: this.props.readOnly, disabled: this.props.readOnly }, XUtils_1.XUtils.createErrorProps(this.props.error))));
147
+ return (react_1.default.createElement(dropdown_1.Dropdown, __assign({ id: this.props.id, options: this.state.options, optionLabel: this.props.displayField, dataKey: this.idField, value: this.props.value, onChange: this.onChange, readOnly: this.props.readOnly, disabled: this.props.readOnly }, XUtils_1.XUtils.createErrorProps(this.props.error))));
146
148
  };
147
149
  return XDropdownForEntity;
148
150
  }(react_1.Component));
@@ -1,11 +1,11 @@
1
1
  import { Component } from "react";
2
2
  import { XEditColumnDialogValues } from "./XEditColumnDialog";
3
3
  import { XBrowseMeta } from "../serverApi/XBrowseMetadata";
4
- export interface XBrowseProps {
4
+ export interface XEditBrowseProps {
5
5
  entity: string;
6
6
  browseId?: string;
7
7
  }
8
- export declare class XBrowse extends Component<XBrowseProps> {
8
+ export declare class XEditBrowse extends Component<XEditBrowseProps> {
9
9
  state: {
10
10
  xBrowseMeta: XBrowseMeta;
11
11
  editMode: boolean;
@@ -14,7 +14,7 @@ export declare class XBrowse extends Component<XBrowseProps> {
14
14
  indexForAddColumn?: number;
15
15
  addColumn: boolean;
16
16
  xEditColumnDialogValues?: XEditColumnDialogValues;
17
- constructor(props: XBrowseProps);
17
+ constructor(props: XEditBrowseProps);
18
18
  getXBrowseMeta(): XBrowseMeta;
19
19
  createDefaultXBrowseMeta(): XBrowseMeta;
20
20
  onEditModeStart(): void;
@@ -101,7 +101,7 @@ var __read = (this && this.__read) || function (o, n) {
101
101
  return ar;
102
102
  };
103
103
  Object.defineProperty(exports, "__esModule", { value: true });
104
- exports.XBrowse = void 0;
104
+ exports.XEditBrowse = void 0;
105
105
  var react_1 = __importStar(require("react"));
106
106
  var SourceCodeLinkEntity_1 = require("./SourceCodeLinkEntity");
107
107
  var XEditColumnDialog_1 = require("./XEditColumnDialog");
@@ -109,10 +109,10 @@ var _ = __importStar(require("lodash"));
109
109
  var XUtilsMetadata_1 = require("./XUtilsMetadata");
110
110
  var XUtils_1 = require("./XUtils");
111
111
  var XLazyDataTable_1 = require("./XLazyDataTable");
112
- // TODO - pouzit extends XBrowseBase, ako je tomu pri CarForm?
113
- var XBrowse = /** @class */ (function (_super) {
114
- __extends(XBrowse, _super);
115
- function XBrowse(props) {
112
+ // TODO - pouzit extends XEditBrowseBase, ako je tomu pri CarForm?
113
+ var XEditBrowse = /** @class */ (function (_super) {
114
+ __extends(XEditBrowse, _super);
115
+ function XEditBrowse(props) {
116
116
  var _this = _super.call(this, props) || this;
117
117
  console.log("************* XBrowse const entity = " + _this.props.entity);
118
118
  _this.getXBrowseMeta = _this.getXBrowseMeta.bind(_this);
@@ -137,14 +137,14 @@ var XBrowse = /** @class */ (function (_super) {
137
137
  _this.onEdit = _this.onEdit.bind(_this);
138
138
  return _this;
139
139
  }
140
- XBrowse.prototype.getXBrowseMeta = function () {
140
+ XEditBrowse.prototype.getXBrowseMeta = function () {
141
141
  var xBrowseMeta = XUtilsMetadata_1.XUtilsMetadata.getXBrowseMeta(this.props.entity, this.props.browseId);
142
142
  if (xBrowseMeta === undefined) {
143
143
  xBrowseMeta = this.createDefaultXBrowseMeta();
144
144
  }
145
145
  return xBrowseMeta;
146
146
  };
147
- XBrowse.prototype.createDefaultXBrowseMeta = function () {
147
+ XEditBrowse.prototype.createDefaultXBrowseMeta = function () {
148
148
  var e_1, _a;
149
149
  var xColumnMetaList = [];
150
150
  var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.props.entity);
@@ -164,12 +164,12 @@ var XBrowse = /** @class */ (function (_super) {
164
164
  }
165
165
  return { entity: this.props.entity, rows: 15, columnMetaList: xColumnMetaList };
166
166
  };
167
- XBrowse.prototype.onEditModeStart = function () {
167
+ XEditBrowse.prototype.onEditModeStart = function () {
168
168
  // zmeny budeme robit na klonovanych datach - aby sme sa vedeli cez cancel vratit do povodneho stavu
169
169
  var xBrowseMetaCloned = _.cloneDeep(this.state.xBrowseMeta);
170
170
  this.setState({ xBrowseMeta: xBrowseMetaCloned, editMode: true });
171
171
  };
172
- XBrowse.prototype.onEditModeSave = function () {
172
+ XEditBrowse.prototype.onEditModeSave = function () {
173
173
  return __awaiter(this, void 0, void 0, function () {
174
174
  var xBrowseMeta, columnOrder, _a, _b, xColumnMeta, e_2;
175
175
  var e_3, _c;
@@ -213,19 +213,19 @@ var XBrowse = /** @class */ (function (_super) {
213
213
  });
214
214
  });
215
215
  };
216
- XBrowse.prototype.onEditModeCancel = function () {
216
+ XEditBrowse.prototype.onEditModeCancel = function () {
217
217
  // vratime formular z cache, resp. defaultny formular
218
218
  var xBrowseMeta = this.getXBrowseMeta();
219
219
  this.setState({ editMode: false, xBrowseMeta: xBrowseMeta });
220
220
  };
221
- XBrowse.prototype.onAddColumn = function (field) {
221
+ XEditBrowse.prototype.onAddColumn = function (field) {
222
222
  console.log("onAddColumn: " + field);
223
223
  this.indexForAddColumn = this.getIndexForColumn(field);
224
224
  this.addColumn = true;
225
225
  this.xEditColumnDialogValues = { field: "", header: "", dropdownInFilter: false }; // values are used for dialog initialization
226
226
  this.setState({ editColumnDialogOpened: true });
227
227
  };
228
- XBrowse.prototype.editColumnDialogOnHide = function (xEditColumnDialogValues) {
228
+ XEditBrowse.prototype.editColumnDialogOnHide = function (xEditColumnDialogValues) {
229
229
  if (xEditColumnDialogValues !== null) {
230
230
  if (this.indexForAddColumn !== undefined) {
231
231
  var xBrowseMeta = this.state.xBrowseMeta;
@@ -248,7 +248,7 @@ var XBrowse = /** @class */ (function (_super) {
248
248
  }
249
249
  this.setState({ editColumnDialogOpened: false });
250
250
  };
251
- XBrowse.prototype.onEditColumn = function (field) {
251
+ XEditBrowse.prototype.onEditColumn = function (field) {
252
252
  var _a;
253
253
  console.log("onEditColumn: " + field);
254
254
  this.indexForAddColumn = this.getIndexForColumn(field);
@@ -260,7 +260,7 @@ var XBrowse = /** @class */ (function (_super) {
260
260
  this.setState({ editColumnDialogOpened: true });
261
261
  }
262
262
  };
263
- XBrowse.prototype.onRemoveColumn = function (field) {
263
+ XEditBrowse.prototype.onRemoveColumn = function (field) {
264
264
  console.log("onRemoveColumn: " + field);
265
265
  var index = this.getIndexForColumn(field);
266
266
  if (index !== undefined) {
@@ -270,13 +270,13 @@ var XBrowse = /** @class */ (function (_super) {
270
270
  this.setState({ xBrowseMeta: xBrowseMeta });
271
271
  }
272
272
  };
273
- XBrowse.prototype.onMoveColumnLeft = function (field) {
273
+ XEditBrowse.prototype.onMoveColumnLeft = function (field) {
274
274
  this.moveColumn(field, -1);
275
275
  };
276
- XBrowse.prototype.onMoveColumnRight = function (field) {
276
+ XEditBrowse.prototype.onMoveColumnRight = function (field) {
277
277
  this.moveColumn(field, 1);
278
278
  };
279
- XBrowse.prototype.moveColumn = function (field, offset) {
279
+ XEditBrowse.prototype.moveColumn = function (field, offset) {
280
280
  var index = this.getIndexForColumn(field);
281
281
  if (index !== undefined) {
282
282
  var xBrowseMeta = this.state.xBrowseMeta;
@@ -285,7 +285,7 @@ var XBrowse = /** @class */ (function (_super) {
285
285
  this.setState({ xBrowseMeta: xBrowseMeta });
286
286
  }
287
287
  };
288
- XBrowse.prototype.getIndexForColumn = function (field) {
288
+ XEditBrowse.prototype.getIndexForColumn = function (field) {
289
289
  var e_4, _a;
290
290
  var searchedIndex = undefined;
291
291
  var xBrowseMeta = this.state.xBrowseMeta;
@@ -307,7 +307,7 @@ var XBrowse = /** @class */ (function (_super) {
307
307
  }
308
308
  return searchedIndex;
309
309
  };
310
- XBrowse.prototype.onEdit = function (selectedRow) {
310
+ XEditBrowse.prototype.onEdit = function (selectedRow) {
311
311
  var formElement = XUtils_1.XUtils.getAppForm(this.props.entity);
312
312
  if (formElement !== undefined) {
313
313
  var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.props.entity);
@@ -321,7 +321,7 @@ var XBrowse = /** @class */ (function (_super) {
321
321
  console.log("XBrowse entity = ".concat(this.props.entity, ": form not found/registered."));
322
322
  }
323
323
  };
324
- XBrowse.prototype.render = function () {
324
+ XEditBrowse.prototype.render = function () {
325
325
  var xBrowseMeta = this.state.xBrowseMeta;
326
326
  var xEditModeHandlers = {
327
327
  onStart: this.onEditModeStart,
@@ -355,6 +355,6 @@ var XBrowse = /** @class */ (function (_super) {
355
355
  entitySourceCodeLink,
356
356
  react_1.default.createElement(XEditColumnDialog_1.XEditColumnDialog, { dialogOpened: this.state.editColumnDialogOpened, entity: xBrowseMeta.entity, addColumn: this.addColumn, xEditColumnDialogValues: this.xEditColumnDialogValues, onHideDialog: this.editColumnDialogOnHide })));
357
357
  };
358
- return XBrowse;
358
+ return XEditBrowse;
359
359
  }(react_1.Component));
360
- exports.XBrowse = XBrowse;
360
+ exports.XEditBrowse = XEditBrowse;
@@ -5,9 +5,9 @@ import { FieldOnChange, XFormComponent } from "./XFormComponent";
5
5
  import { TableFieldOnChange, XFormDataTable2, XRowTechData } from "./XFormDataTable2";
6
6
  import { XErrorMap, XErrors } from "./XErrors";
7
7
  export type XOnSaveOrCancelProp = (object: XObject | null, objectChange: OperationType) => void;
8
- export interface FormProps {
8
+ export interface XFormProps {
9
9
  id?: number;
10
- object?: XObject;
10
+ initValues?: object;
11
11
  onSaveOrCancel?: XOnSaveOrCancelProp;
12
12
  }
13
13
  export declare function Form(entity: string): <T extends new (...args: any[]) => {}>(constructor: T) => {
@@ -15,7 +15,7 @@ export declare function Form(entity: string): <T extends new (...args: any[]) =>
15
15
  entity: string;
16
16
  };
17
17
  } & T;
18
- export declare abstract class XFormBase extends Component<FormProps> {
18
+ export declare abstract class XFormBase extends Component<XFormProps> {
19
19
  entity?: string;
20
20
  fields: Set<string>;
21
21
  state: {
@@ -24,7 +24,12 @@ export declare abstract class XFormBase extends Component<FormProps> {
24
24
  } | any;
25
25
  xFormComponentList: Array<XFormComponent<any, any>>;
26
26
  xFormDataTableList: Array<XFormDataTable2>;
27
- constructor(props: FormProps);
27
+ assocToValidateList: Array<string>;
28
+ assocToSortList: Array<{
29
+ assoc: string;
30
+ sortField: string;
31
+ }>;
32
+ constructor(props: XFormProps);
28
33
  componentDidMount(): Promise<void>;
29
34
  getEntity(): string;
30
35
  getXObject(): XObject;
@@ -45,13 +50,18 @@ export declare abstract class XFormBase extends Component<FormProps> {
45
50
  addXFormComponent(xFormComponent: XFormComponent<any, any>): void;
46
51
  findXFormComponent(field: string): XFormComponent<any, any> | undefined;
47
52
  addXFormDataTable(xFormDataTable: XFormDataTable2): void;
53
+ addAssocToValidate(oneToManyAssoc: string): void;
54
+ addAssocToSort(oneToManyAssoc: string, sortField: string): void;
48
55
  formReadOnlyBase(field: string): boolean;
49
56
  onClickSave(): Promise<void>;
50
57
  onClickCancel(): void;
51
58
  validateSave(): boolean;
52
59
  validateForm(): XErrorMap;
53
60
  fieldValidation(): XErrorMap;
61
+ getErrorMessagesForAssoc(oneToManyAssoc: string): string;
62
+ static saveErrorsIntoXRowTechData(row: any, xErrors: XErrors): void;
54
63
  formReadOnly(object: XObject, field: string): boolean;
64
+ createNewObject(): XObject;
55
65
  preInitForm(object: XObject, operationType: OperationType.Insert | OperationType.Update): void;
56
66
  validate(object: XObject): XErrors;
57
67
  preSave(object: XObject): void;