@michalrakus/x-react-web-lib 1.12.0 → 1.14.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 (63) hide show
  1. package/XFormCol.d.ts +3 -0
  2. package/XFormCol.js +5 -0
  3. package/XFormInlineRow.d.ts +3 -0
  4. package/XFormInlineRow.js +5 -0
  5. package/XFormRow.d.ts +3 -0
  6. package/XFormRow.js +5 -0
  7. package/XFormRowCol.d.ts +3 -0
  8. package/XFormRowCol.js +5 -0
  9. package/XUtilsConversions.d.ts +1 -1
  10. package/XUtilsConversions.js +1 -1
  11. package/XUtilsMetadataCommon.d.ts +3 -0
  12. package/XUtilsMetadataCommon.js +5 -0
  13. package/gulpfile.js +8 -2
  14. package/lib/components/XAutoComplete.d.ts +4 -2
  15. package/lib/components/XAutoComplete.js +13 -11
  16. package/lib/components/XAutoCompleteBase.d.ts +5 -0
  17. package/lib/components/XAutoCompleteBase.js +34 -3
  18. package/lib/components/XAutoCompleteDT.js +4 -4
  19. package/lib/components/XCalendar.js +1 -1
  20. package/lib/components/XDropdown.js +2 -2
  21. package/lib/components/XDropdownDT.js +4 -4
  22. package/lib/components/XDropdownDTFilter.d.ts +3 -0
  23. package/lib/components/XDropdownDTFilter.js +7 -6
  24. package/lib/components/XDropdownForEntity.js +2 -2
  25. package/lib/components/XEditBrowse.js +4 -3
  26. package/lib/components/XExportRowsDialog.js +1 -1
  27. package/lib/components/XFieldSelector.js +4 -4
  28. package/lib/components/XFormDataTable2.d.ts +15 -9
  29. package/lib/components/XFormDataTable2.js +42 -32
  30. package/lib/components/XFormRowCol/XFormCol.d.ts +8 -0
  31. package/lib/components/XFormRowCol/XFormCol.js +12 -0
  32. package/lib/components/XFormRowCol/XFormInlineRow.d.ts +8 -0
  33. package/lib/components/XFormRowCol/XFormInlineRow.js +12 -0
  34. package/lib/components/XFormRowCol/XFormRow.d.ts +8 -0
  35. package/lib/components/XFormRowCol/XFormRow.js +12 -0
  36. package/lib/components/XFormRowCol/XFormRowCol.d.ts +9 -0
  37. package/lib/components/XFormRowCol/XFormRowCol.js +30 -0
  38. package/lib/components/XFtsInput.js +1 -1
  39. package/lib/components/XInput.js +2 -2
  40. package/lib/components/XInputDT.js +2 -2
  41. package/lib/components/XInputDateDT.js +1 -1
  42. package/lib/components/XInputFileList.js +6 -6
  43. package/lib/components/XInputIntervalBase.js +1 -1
  44. package/lib/components/XInputText.js +1 -1
  45. package/lib/components/XInputTextDT.js +3 -3
  46. package/lib/components/XInputTextarea.js +1 -1
  47. package/lib/components/XLazyDataTable.d.ts +19 -1
  48. package/lib/components/XLazyDataTable.js +26 -45
  49. package/lib/components/XSearchButton.js +4 -4
  50. package/lib/components/XSearchButtonDT.js +3 -3
  51. package/lib/components/XSearchButtonOld.js +5 -5
  52. package/lib/components/XToOneAssocButton.js +3 -3
  53. package/lib/components/XUtils.d.ts +8 -0
  54. package/lib/components/XUtils.js +25 -2
  55. package/lib/components/XUtilsMetadata.d.ts +1 -19
  56. package/lib/components/XUtilsMetadata.js +8 -186
  57. package/lib/components/locale/x-en.json +4 -1
  58. package/lib/{components → serverApi}/XUtilsConversions.d.ts +18 -1
  59. package/lib/serverApi/XUtilsConversions.js +330 -0
  60. package/lib/serverApi/XUtilsMetadataCommon.d.ts +30 -0
  61. package/lib/serverApi/XUtilsMetadataCommon.js +208 -0
  62. package/package.json +2 -2
  63. package/lib/components/XUtilsConversions.js +0 -177
package/XFormCol.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ // generated by gulp
2
+
3
+ export * from './lib/components/XFormRowCol/XFormCol';
package/XFormCol.js ADDED
@@ -0,0 +1,5 @@
1
+ // generated by gulp
2
+
3
+ 'use strict';
4
+
5
+ module.exports = require('./lib/components/XFormRowCol/XFormCol.js');
@@ -0,0 +1,3 @@
1
+ // generated by gulp
2
+
3
+ export * from './lib/components/XFormRowCol/XFormInlineRow';
@@ -0,0 +1,5 @@
1
+ // generated by gulp
2
+
3
+ 'use strict';
4
+
5
+ module.exports = require('./lib/components/XFormRowCol/XFormInlineRow.js');
package/XFormRow.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ // generated by gulp
2
+
3
+ export * from './lib/components/XFormRowCol/XFormRow';
package/XFormRow.js ADDED
@@ -0,0 +1,5 @@
1
+ // generated by gulp
2
+
3
+ 'use strict';
4
+
5
+ module.exports = require('./lib/components/XFormRowCol/XFormRow.js');
@@ -0,0 +1,3 @@
1
+ // generated by gulp
2
+
3
+ export * from './lib/components/XFormRowCol/XFormRowCol';
package/XFormRowCol.js ADDED
@@ -0,0 +1,5 @@
1
+ // generated by gulp
2
+
3
+ 'use strict';
4
+
5
+ module.exports = require('./lib/components/XFormRowCol/XFormRowCol.js');
@@ -1,3 +1,3 @@
1
1
  // generated by gulp
2
2
 
3
- export * from './lib/components/XUtilsConversions';
3
+ export * from './lib/serverApi/XUtilsConversions';
@@ -2,4 +2,4 @@
2
2
 
3
3
  'use strict';
4
4
 
5
- module.exports = require('./lib/components/XUtilsConversions.js');
5
+ module.exports = require('./lib/serverApi/XUtilsConversions.js');
@@ -0,0 +1,3 @@
1
+ // generated by gulp
2
+
3
+ export * from './lib/serverApi/XUtilsMetadataCommon';
@@ -0,0 +1,5 @@
1
+ // generated by gulp
2
+
3
+ 'use strict';
4
+
5
+ module.exports = require('./lib/serverApi/XUtilsMetadataCommon.js');
package/gulpfile.js CHANGED
@@ -18,6 +18,11 @@ function generateApi(cb) {
18
18
  "./lib/administration/XBrowseMetaBrowse",
19
19
  "./lib/administration/XBrowseMetaForm",
20
20
 
21
+ "./lib/components/XFormRowCol/XFormCol",
22
+ "./lib/components/XFormRowCol/XFormInlineRow",
23
+ "./lib/components/XFormRowCol/XFormRow",
24
+ "./lib/components/XFormRowCol/XFormRowCol",
25
+
21
26
  "./lib/components/useXToken",
22
27
  "./lib/components/XAutoComplete",
23
28
  "./lib/components/XAutoCompleteBase",
@@ -59,12 +64,13 @@ function generateApi(cb) {
59
64
  "./lib/components/XToken",
60
65
  "./lib/components/XToOneAssocButton",
61
66
  "./lib/components/XUtils",
62
- "./lib/components/XUtilsConversions",
63
67
  "./lib/components/XUtilsMetadata",
64
68
 
65
69
  "./lib/serverApi/ExportImportParam",
66
70
  "./lib/serverApi/FindParam",
67
- "./lib/serverApi/XUtilsCommon"
71
+ "./lib/serverApi/XUtilsCommon",
72
+ "./lib/serverApi/XUtilsConversions",
73
+ "./lib/serverApi/XUtilsMetadataCommon"
68
74
  ];
69
75
 
70
76
  for (const apiFile of apiFileList) {
@@ -13,7 +13,8 @@ export interface XAutoCompleteProps extends XFormComponentProps<XObject> {
13
13
  filter?: XFilterProp;
14
14
  sortField?: string | DataTableSortMeta[];
15
15
  suggestions?: any[];
16
- size?: number;
16
+ lazy?: boolean;
17
+ width?: string;
17
18
  inputStyle?: React.CSSProperties;
18
19
  }
19
20
  export declare class XAutoComplete extends XFormComponent<XObject, XAutoCompleteProps> {
@@ -24,12 +25,13 @@ export declare class XAutoComplete extends XFormComponent<XObject, XAutoComplete
24
25
  };
25
26
  constructor(props: XAutoCompleteProps);
26
27
  componentDidMount(): void;
27
- readAndSetSuggestions(): Promise<void>;
28
+ readAndSetSuggestions(setStateCallback?: () => void): Promise<void>;
28
29
  getField(): string;
29
30
  isNotNull(): boolean;
30
31
  getValue(): any | null;
31
32
  onChangeAutoCompleteBase(object: any, objectChange: OperationType): void;
32
33
  onErrorChangeAutoCompleteBase(error: string | undefined): void;
34
+ onSearchStart(finishSearchStart?: () => void): void;
33
35
  validate(): {
34
36
  field: string;
35
37
  xError: XError;
@@ -57,28 +57,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
57
57
  exports.XAutoComplete = void 0;
58
58
  var react_1 = __importDefault(require("react"));
59
59
  var XFormComponent_1 = require("./XFormComponent");
60
- var XUtilsMetadata_1 = require("./XUtilsMetadata");
61
60
  var XUtils_1 = require("./XUtils");
62
61
  var XAutoCompleteBase_1 = require("./XAutoCompleteBase");
62
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
63
63
  var XAutoComplete = /** @class */ (function (_super) {
64
64
  __extends(XAutoComplete, _super);
65
65
  function XAutoComplete(props) {
66
66
  var _this = _super.call(this, props) || this;
67
- _this.xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity()), props.assocField);
67
+ _this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity()), props.assocField);
68
68
  _this.errorInBase = undefined;
69
69
  _this.state = {
70
70
  suggestions: []
71
71
  };
72
72
  _this.onChangeAutoCompleteBase = _this.onChangeAutoCompleteBase.bind(_this);
73
73
  _this.onErrorChangeAutoCompleteBase = _this.onErrorChangeAutoCompleteBase.bind(_this);
74
+ _this.onSearchStart = _this.onSearchStart.bind(_this);
74
75
  props.form.addField(props.assocField + '.' + props.displayField);
75
76
  return _this;
76
77
  }
77
78
  XAutoComplete.prototype.componentDidMount = function () {
78
79
  //console.log("volany XAutoComplete.componentDidMount()");
79
- this.readAndSetSuggestions();
80
+ if (!this.props.lazy) {
81
+ this.readAndSetSuggestions();
82
+ }
80
83
  };
81
- XAutoComplete.prototype.readAndSetSuggestions = function () {
84
+ XAutoComplete.prototype.readAndSetSuggestions = function (setStateCallback) {
82
85
  var _a;
83
86
  return __awaiter(this, void 0, void 0, function () {
84
87
  var suggestions;
@@ -89,7 +92,7 @@ var XAutoComplete = /** @class */ (function (_super) {
89
92
  return [4 /*yield*/, XUtils_1.XUtils.fetchRows(this.xAssoc.entityName, this.getFilterBase(this.props.filter), (_a = this.props.sortField) !== null && _a !== void 0 ? _a : this.props.displayField)];
90
93
  case 1:
91
94
  suggestions = _b.sent();
92
- this.setState({ suggestions: suggestions });
95
+ this.setState({ suggestions: suggestions }, setStateCallback);
93
96
  _b.label = 2;
94
97
  case 2: return [2 /*return*/];
95
98
  }
@@ -119,6 +122,9 @@ var XAutoComplete = /** @class */ (function (_super) {
119
122
  XAutoComplete.prototype.onErrorChangeAutoCompleteBase = function (error) {
120
123
  this.errorInBase = error; // odlozime si error
121
124
  };
125
+ XAutoComplete.prototype.onSearchStart = function (finishSearchStart) {
126
+ this.readAndSetSuggestions(finishSearchStart);
127
+ };
122
128
  // overrides method in XFormComponent
123
129
  XAutoComplete.prototype.validate = function () {
124
130
  if (this.errorInBase) {
@@ -131,15 +137,11 @@ var XAutoComplete = /** @class */ (function (_super) {
131
137
  XAutoComplete.prototype.render = function () {
132
138
  var _this = this;
133
139
  var _a;
134
- var xEntityAssoc = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.xAssoc.entityName);
135
- //const xDisplayField = XUtilsMetadata.getXFieldByPath(xEntityAssoc, this.props.displayField);
136
- // TODO - readOnly
137
- // TODO - size
138
- //const size = this.props.size ?? xDisplayField.length;
140
+ var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.xAssoc.entityName);
139
141
  // div className="col" nam zabezpeci aby XAutoCompleteBase nezaberal celu dlzku grid-u (ma nastaveny width=100% vdaka "formgroup-inline")
140
142
  return (react_1.default.createElement("div", { className: "field grid" },
141
143
  react_1.default.createElement("label", { htmlFor: this.props.assocField, className: "col-fixed", style: this.getLabelStyle() }, this.getLabel()),
142
- react_1.default.createElement(XAutoCompleteBase_1.XAutoCompleteBase, { value: this.getValue(), suggestions: (_a = this.props.suggestions) !== null && _a !== void 0 ? _a : this.state.suggestions, onChange: this.onChangeAutoCompleteBase, field: this.props.displayField, searchBrowse: this.props.searchBrowse, valueForm: this.props.assocForm, idField: xEntityAssoc.idField, error: this.getError(), onErrorChange: this.onErrorChangeAutoCompleteBase, customFilterFunction: function () { return _this.getFilterBase(_this.props.filter); } })));
144
+ react_1.default.createElement(XAutoCompleteBase_1.XAutoCompleteBase, { value: this.getValue(), suggestions: (_a = this.props.suggestions) !== null && _a !== void 0 ? _a : this.state.suggestions, onChange: this.onChangeAutoCompleteBase, field: this.props.displayField, searchBrowse: this.props.searchBrowse, valueForm: this.props.assocForm, idField: xEntityAssoc.idField, readOnly: this.isReadOnly(), error: this.getError(), onErrorChange: this.onErrorChangeAutoCompleteBase, width: this.props.width, customFilterFunction: function () { return _this.getFilterBase(_this.props.filter); }, onSearchStart: this.props.lazy ? this.onSearchStart : undefined })));
143
145
  };
144
146
  return XAutoComplete;
145
147
  }(XFormComponent_1.XFormComponent));
@@ -13,11 +13,13 @@ export interface XAutoCompleteBaseProps {
13
13
  valueForm?: JSX.Element;
14
14
  idField?: string;
15
15
  maxLength?: number;
16
+ width?: string;
16
17
  readOnly?: boolean;
17
18
  error?: string;
18
19
  onErrorChange: (error: string | undefined) => void;
19
20
  setFocusOnCreate?: boolean;
20
21
  customFilterFunction?: () => XCustomFilter | undefined;
22
+ onSearchStart?: (finishSearchStart?: () => void) => void;
21
23
  }
22
24
  export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps> {
23
25
  autoCompleteRef: any;
@@ -29,6 +31,7 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
29
31
  formDialogOpened: boolean;
30
32
  searchDialogOpened: boolean;
31
33
  };
34
+ wasSearchStartCalled: boolean;
32
35
  formDialogObjectId: number | undefined;
33
36
  formDialogInitValuesForInsert: any | undefined;
34
37
  constructor(props: XAutoCompleteBaseProps);
@@ -49,6 +52,8 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
49
52
  createInsertUpdateItems(splitButtonItems: MenuItem[]): void;
50
53
  createSearchItem(splitButtonItems: MenuItem[]): void;
51
54
  createDropdownItem(splitButtonItems: MenuItem[]): void;
55
+ onOpenDropdown(e: any): void;
56
+ openDropdown(e: any): void;
52
57
  computeInputValue(): any;
53
58
  createSearchBrowseParams(): XSearchBrowseParams;
54
59
  render(): JSX.Element;
@@ -94,6 +94,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
94
94
  formDialogOpened: false,
95
95
  searchDialogOpened: false
96
96
  };
97
+ _this.wasSearchStartCalled = false;
97
98
  _this.completeMethod = _this.completeMethod.bind(_this);
98
99
  _this.onChange = _this.onChange.bind(_this);
99
100
  _this.onSelect = _this.onSelect.bind(_this);
@@ -132,6 +133,15 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
132
133
  };
133
134
  XAutoCompleteBase.prototype.onChange = function (e) {
134
135
  if (typeof e.value === 'string') {
136
+ // ak user zacne typovat znaky, nacitame suggestions, ak sme lazy (onSearchStart !== undefined)
137
+ if (this.props.onSearchStart) {
138
+ if (e.value !== '') { // ak user vymaze cely input, este nechceme nacitat suggestions, az ked zapise nejaky znak
139
+ if (!this.wasSearchStartCalled) {
140
+ this.props.onSearchStart();
141
+ this.wasSearchStartCalled = true; // ak user dalej typuje, nechceme znova nacitavat suggestions
142
+ }
143
+ }
144
+ }
135
145
  this.setState({ inputChanged: true, inputValueState: e.value });
136
146
  }
137
147
  };
@@ -180,6 +190,8 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
180
190
  }
181
191
  }
182
192
  }
193
+ // odchadzame z inputu, zresetujeme priznak - ak zacne user pracovat s autocomplete-om, nacitaju sa suggestions z DB (ak mame lazy)
194
+ this.wasSearchStartCalled = false;
183
195
  };
184
196
  XAutoCompleteBase.prototype.createErrorMessage = function () {
185
197
  return "Value \"".concat(this.state.inputValueState, "\" was not found among valid values.");
@@ -314,10 +326,29 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
314
326
  // this.autoCompleteRef.current je element <AutoComplete .../>, ktory vytvarame v render metode
315
327
  //console.log(this.autoCompleteRef.current);
316
328
  // otvori dropdown (search je metoda popisana v API, volanie sme skopcili zo zdrojakov primereact)
317
- _this.autoCompleteRef.current.search(e, '', 'dropdown');
329
+ // if (this.props.onSearchStart) {
330
+ // this.props.onSearchStart(() => this.finishSearchStart(e));
331
+ // }
332
+ // this.autoCompleteRef.current.search(e, '', 'dropdown');
333
+ _this.onOpenDropdown(e);
318
334
  }
319
335
  });
320
336
  };
337
+ XAutoCompleteBase.prototype.onOpenDropdown = function (e) {
338
+ var _this = this;
339
+ if (this.props.onSearchStart) {
340
+ this.props.onSearchStart(function () { return _this.openDropdown(e); });
341
+ }
342
+ else {
343
+ // otvori dropdown (search je metoda popisana v API, volanie sme skopcili zo zdrojakov primereact)
344
+ //this.autoCompleteRef.current.search(e, '', 'dropdown');
345
+ this.openDropdown(e);
346
+ }
347
+ };
348
+ XAutoCompleteBase.prototype.openDropdown = function (e) {
349
+ // otvori dropdown (search je metoda popisana v API, volanie sme skopcili zo zdrojakov primereact)
350
+ this.autoCompleteRef.current.search(e, '', 'dropdown');
351
+ };
321
352
  // vracia objekt (ak inputChanged === false) alebo string (ak inputChanged === true)
322
353
  XAutoCompleteBase.prototype.computeInputValue = function () {
323
354
  var inputValue;
@@ -358,7 +389,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
358
389
  }
359
390
  else {
360
391
  // mame len 1 operaciu - dame jednoduchy button
361
- dropdownButton = react_1.default.createElement(button_1.Button, { icon: "pi pi-chevron-down", onClick: function (e) { return _this.autoCompleteRef.current.search(e, '', 'dropdown'); }, className: 'x-dropdownbutton' + XUtils_1.XUtils.mobileCssSuffix(), disabled: readOnly });
392
+ dropdownButton = react_1.default.createElement(button_1.Button, { icon: "pi pi-chevron-down", onClick: function (e) { return _this.onOpenDropdown(e); }, className: 'x-dropdownbutton' + XUtils_1.XUtils.mobileCssSuffix(), disabled: readOnly });
362
393
  }
363
394
  // vypocitame inputValue
364
395
  var inputValue = this.computeInputValue();
@@ -374,7 +405,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
374
405
  // <DobrovolnikForm id={this.formDialogObjectId} object={this.formDialogInitValuesForInsert} onSaveOrCancel={this.formDialogOnSaveOrCancel}/>
375
406
  // formgroup-inline lepi SplitButton na autocomplete a zarovna jeho vysku
376
407
  return (react_1.default.createElement("div", { className: "x-auto-complete-base" },
377
- react_1.default.createElement(autocomplete_1.AutoComplete, __assign({ value: inputValue, suggestions: this.state.filteredSuggestions, completeMethod: this.completeMethod, field: this.props.field, onChange: this.onChange, onSelect: this.onSelect, onBlur: this.onBlur, maxLength: this.props.maxLength, ref: this.autoCompleteRef, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createErrorProps(error))),
408
+ react_1.default.createElement(autocomplete_1.AutoComplete, __assign({ value: inputValue, suggestions: this.state.filteredSuggestions, completeMethod: this.completeMethod, field: this.props.field, onChange: this.onChange, onSelect: this.onSelect, onBlur: this.onBlur, maxLength: this.props.maxLength, ref: this.autoCompleteRef, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createErrorProps(error), { style: { width: this.props.width } })),
378
409
  dropdownButton,
379
410
  this.props.valueForm != undefined && !readOnly ?
380
411
  react_1.default.createElement(dialog_1.Dialog, { visible: this.state.formDialogOpened, onHide: this.formDialogOnHide, header: this.formDialogObjectId ? 'Modification' : 'New row' }, react_1.default.cloneElement(this.props.valueForm, {
@@ -55,16 +55,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
55
55
  };
56
56
  Object.defineProperty(exports, "__esModule", { value: true });
57
57
  exports.XAutoCompleteDT = void 0;
58
- var XUtilsMetadata_1 = require("./XUtilsMetadata");
59
58
  var react_1 = __importDefault(require("react"));
60
59
  var XFormComponentDT_1 = require("./XFormComponentDT");
61
60
  var XUtils_1 = require("./XUtils");
62
61
  var XAutoCompleteBase_1 = require("./XAutoCompleteBase");
62
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
63
63
  var XAutoCompleteDT = /** @class */ (function (_super) {
64
64
  __extends(XAutoCompleteDT, _super);
65
65
  function XAutoCompleteDT(props) {
66
66
  var _this = _super.call(this, props) || this;
67
- _this.xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity), props.assocField);
67
+ _this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity), props.assocField);
68
68
  _this.errorInBase = undefined;
69
69
  _this.state = {
70
70
  suggestions: []
@@ -129,8 +129,8 @@ var XAutoCompleteDT = /** @class */ (function (_super) {
129
129
  XAutoCompleteDT.prototype.render = function () {
130
130
  var _this = this;
131
131
  var _a;
132
- var xEntityAssoc = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.xAssoc.entityName);
133
- //const xDisplayField = XUtilsMetadata.getXFieldByPath(xEntityAssoc, this.props.displayField);
132
+ var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.xAssoc.entityName);
133
+ //const xDisplayField = XUtilsMetadataCommon.getXFieldByPath(xEntityAssoc, this.props.displayField);
134
134
  // TODO - size
135
135
  //const size = this.props.size ?? xDisplayField.length;
136
136
  // div className="col" nam zabezpeci aby XAutoCompleteBase nezaberal celu dlzku grid-u (ma nastaveny width=100% vdaka "formgroup-inline")
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.XCalendar = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var calendar_1 = require("primereact/calendar");
9
- var XUtilsConversions_1 = require("./XUtilsConversions");
9
+ var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
10
10
  // wrapper for Calendar component, maybe better name would be XInputDateBase
11
11
  var XCalendar = function (props) {
12
12
  var _a;
@@ -20,14 +20,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.XDropdown = void 0;
22
22
  var react_1 = __importDefault(require("react"));
23
- var XUtilsMetadata_1 = require("./XUtilsMetadata");
24
23
  var XFormComponent_1 = require("./XFormComponent");
25
24
  var XDropdownForEntity_1 = require("./XDropdownForEntity");
25
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
26
26
  var XDropdown = /** @class */ (function (_super) {
27
27
  __extends(XDropdown, _super);
28
28
  function XDropdown(props) {
29
29
  var _this = _super.call(this, props) || this;
30
- _this.xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity()), props.assocField);
30
+ _this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity()), props.assocField);
31
31
  props.form.addField(props.assocField + '.' + props.displayField);
32
32
  return _this;
33
33
  }
@@ -63,12 +63,12 @@ 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
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
67
67
  var XDropdownDT = function (props) {
68
68
  // poznamka: nacitanie/ulozenie options je vytiahnute do parent komponentu XFormDataTable koli tomu aby sme nenacitavali options pre kazdy riadok tabulky
69
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;
70
+ var xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity), props.assocField);
71
+ var idField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(xAssoc.entityName).idField;
72
72
  // parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
73
73
  (0, react_1.useEffect)(function () {
74
74
  //console.log("XDropdownDT - zavolany useEffect *******************")
@@ -88,7 +88,7 @@ var XDropdownDT = function (props) {
88
88
  // Nacitanie z DB sa koli asynchronnosti vykona az po zavolani tejto metody pre vsetky riadky tabulky, co je pre nas neskoro.
89
89
  // ak by tu tento riadok nebol, tak by sa options nacitavali tolkokrat, kolko je riadkov v tabulke
90
90
  props.dropdownOptionsMap[props.assocField] = [];
91
- xAssoc_1 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity), props.assocField);
91
+ xAssoc_1 = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity), props.assocField);
92
92
  return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc_1.entityName, props.filter, (_a = props.sortField) !== null && _a !== void 0 ? _a : props.displayField)];
93
93
  case 1:
94
94
  //options = await XUtils.fetchMany('findRowsForAssoc', {entity: props.entity, assocField: props.assocField});
@@ -1,7 +1,10 @@
1
1
  /// <reference types="react" />
2
+ import { XCustomFilter } from "../serverApi/FindParam";
2
3
  export declare const XDropdownDTFilter: (props: {
3
4
  entity: string;
4
5
  path: string;
5
6
  value: any;
6
7
  onValueChange: (field: string, displayValue: any) => void;
8
+ filter?: XCustomFilter | undefined;
9
+ sortField?: string | undefined;
7
10
  }) => JSX.Element;
@@ -80,7 +80,7 @@ var react_1 = __importStar(require("react"));
80
80
  var XUtils_1 = require("./XUtils");
81
81
  var dropdown_1 = require("primereact/dropdown");
82
82
  var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
83
- var XUtilsMetadata_1 = require("./XUtilsMetadata");
83
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
84
84
  // pouzivany vo filtri v XLazyDataTable aj v XFormDataTable2
85
85
  var XDropdownDTFilter = function (props) {
86
86
  var _a = __read((0, react_1.useState)([]), 2), options = _a[0], setOptions = _a[1];
@@ -98,13 +98,14 @@ var XDropdownDTFilter = function (props) {
98
98
  };
99
99
  var findOptions = function (entity, path, displayField) { return __awaiter(void 0, void 0, void 0, function () {
100
100
  var xAssoc, options, emptyOption;
101
- return __generator(this, function (_a) {
102
- switch (_a.label) {
101
+ var _a;
102
+ return __generator(this, function (_b) {
103
+ switch (_b.label) {
103
104
  case 0:
104
- xAssoc = XUtilsMetadata_1.XUtilsMetadata.getLastXAssocByPath(XUtilsMetadata_1.XUtilsMetadata.getXEntity(entity), path);
105
- return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc.entityName, undefined, displayField)];
105
+ xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getLastXAssocByPath(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(entity), path);
106
+ return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc.entityName, props.filter, (_a = props.sortField) !== null && _a !== void 0 ? _a : displayField)];
106
107
  case 1:
107
- options = _a.sent();
108
+ options = _b.sent();
108
109
  emptyOption = {};
109
110
  emptyOption[displayField] = XUtils_1.XUtils.dropdownEmptyOptionValue;
110
111
  options.splice(0, 0, emptyOption); // null polozka (nepridavat pre not null atributy)
@@ -89,7 +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
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
93
93
  // vseobecny Dropdown ktoreho parametrom je entity, zobrazuje zaznamy danej entity, po selectnuti vracia zaznam danej entity
94
94
  // ambicia je pouzivat ho vsade - vo formulari, vo filtroch, vo form tabulke, priamo aplikacnym programmerom
95
95
  // dalo by sa vyclenit este XDropdownBase, ktory by dostaval ako parameter options (bol by nezavisly od DB), zatial ho nerobime,
@@ -101,7 +101,7 @@ var XDropdownForEntity = /** @class */ (function (_super) {
101
101
  __extends(XDropdownForEntity, _super);
102
102
  function XDropdownForEntity(props) {
103
103
  var _this = _super.call(this, props) || this;
104
- _this.idField = XUtilsMetadata_1.XUtilsMetadata.getXEntity(_this.props.entity).idField;
104
+ _this.idField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(_this.props.entity).idField;
105
105
  _this.state = {
106
106
  options: []
107
107
  };
@@ -109,6 +109,7 @@ 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
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
112
113
  // TODO - pouzit extends XEditBrowseBase, ako je tomu pri CarForm?
113
114
  var XEditBrowse = /** @class */ (function (_super) {
114
115
  __extends(XEditBrowse, _super);
@@ -147,8 +148,8 @@ var XEditBrowse = /** @class */ (function (_super) {
147
148
  XEditBrowse.prototype.createDefaultXBrowseMeta = function () {
148
149
  var e_1, _a;
149
150
  var xColumnMetaList = [];
150
- var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.props.entity);
151
- var xFieldList = XUtilsMetadata_1.XUtilsMetadata.getXFieldList(xEntity);
151
+ var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.props.entity);
152
+ var xFieldList = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldList(xEntity);
152
153
  try {
153
154
  for (var xFieldList_1 = __values(xFieldList), xFieldList_1_1 = xFieldList_1.next(); !xFieldList_1_1.done; xFieldList_1_1 = xFieldList_1.next()) {
154
155
  var xField = xFieldList_1_1.value;
@@ -310,7 +311,7 @@ var XEditBrowse = /** @class */ (function (_super) {
310
311
  XEditBrowse.prototype.onEdit = function (selectedRow) {
311
312
  var formElement = XUtils_1.XUtils.getAppForm(this.props.entity);
312
313
  if (formElement !== undefined) {
313
- var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.props.entity);
314
+ var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.props.entity);
314
315
  var id = selectedRow[xEntity.idField];
315
316
  // we add property id={selectedRow.<id>} into formElement
316
317
  var formElementCloned = react_1.default.cloneElement(formElement, { id: id }, formElement.children);
@@ -84,7 +84,7 @@ var dropdown_1 = require("primereact/dropdown");
84
84
  var checkbox_1 = require("primereact/checkbox");
85
85
  var XButton_1 = require("./XButton");
86
86
  var XUtils_1 = require("./XUtils");
87
- var XUtilsConversions_1 = require("./XUtilsConversions");
87
+ var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
88
88
  var XLocale_1 = require("./XLocale");
89
89
  var XExportRowsDialog = function (props) {
90
90
  var _a, _b;
@@ -54,7 +54,7 @@ exports.XFieldSelector = void 0;
54
54
  var react_1 = __importStar(require("react"));
55
55
  var treetable_1 = require("primereact/treetable");
56
56
  var column_1 = require("primereact/column");
57
- var XUtilsMetadata_1 = require("./XUtilsMetadata");
57
+ var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
58
58
  var XFieldSelector = function (props) {
59
59
  // poznamka: treeNodeList by sme mohli vypocitavat priamo, ale ked pouzijeme useState/useEffect tak sa createTreeNodeList zavola len raz pri vytvoreni komponentu
60
60
  var _a = __read((0, react_1.useState)([]), 2), treeNodeList = _a[0], setTreeNodeList = _a[1];
@@ -65,8 +65,8 @@ var XFieldSelector = function (props) {
65
65
  var createTreeNodeList = function (entity, keyPrefix) {
66
66
  var e_1, _a, e_2, _b;
67
67
  var treeNodeList = [];
68
- var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(entity);
69
- var xFieldList = XUtilsMetadata_1.XUtilsMetadata.getXFieldList(xEntity);
68
+ var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(entity);
69
+ var xFieldList = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldList(xEntity);
70
70
  try {
71
71
  for (var xFieldList_1 = __values(xFieldList), xFieldList_1_1 = xFieldList_1.next(); !xFieldList_1_1.done; xFieldList_1_1 = xFieldList_1.next()) {
72
72
  var xField = xFieldList_1_1.value;
@@ -84,7 +84,7 @@ var XFieldSelector = function (props) {
84
84
  }
85
85
  finally { if (e_1) throw e_1.error; }
86
86
  }
87
- var assocToOneList = XUtilsMetadata_1.XUtilsMetadata.getXAssocList(xEntity, ["many-to-one", "one-to-one"]);
87
+ var assocToOneList = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocList(xEntity, ["many-to-one", "one-to-one"]);
88
88
  try {
89
89
  for (var assocToOneList_1 = __values(assocToOneList), assocToOneList_1_1 = assocToOneList_1.next(); !assocToOneList_1_1.done; assocToOneList_1_1 = assocToOneList_1.next()) {
90
90
  var xAssoc = assocToOneList_1_1.value;
@@ -2,6 +2,7 @@ import { XFormBase } from "./XFormBase";
2
2
  import { Component, ReactChild } from "react";
3
3
  import { DataTableFilterMeta } from "primereact/datatable";
4
4
  import { XEntity, XField } from "../serverApi/XEntityMetadata";
5
+ import { XViewStatusOrBoolean } from "./XUtils";
5
6
  import { FilterMatchMode } from "primereact/api";
6
7
  import { XTableFieldChangeEvent } from "./XFieldChangeEvent";
7
8
  import { XCustomFilter } from "../serverApi/FindParam";
@@ -65,8 +66,8 @@ export declare class XFormDataTable2 extends Component<XFormDataTableProps> {
65
66
  filters: DataTableFilterMeta;
66
67
  };
67
68
  constructor(props: XFormDataTableProps);
68
- getPathForColumn(columnProps: XFormColumnProps): string;
69
- static getHeader(columnProps: XFormColumnProps, xEntity: XEntity, field: string, xField: XField): string;
69
+ getPathForColumn(columnProps: XFormColumnBaseProps): string;
70
+ static getHeader(columnProps: XFormColumnBaseProps, xEntity: XEntity, field: string, xField: XField): string;
70
71
  static isReadOnlyHeader(path: string | undefined, readOnly: XTableFieldReadOnlyProp | undefined): boolean;
71
72
  getEntity(): string;
72
73
  createInitFilters(): DataTableFilterMeta;
@@ -78,7 +79,7 @@ export declare class XFormDataTable2 extends Component<XFormDataTableProps> {
78
79
  getCheckboxFilterValue(field: string): boolean | null;
79
80
  onDropdownFilterChange(field: string, displayValue: any): void;
80
81
  getDropdownFilterValue(field: string): any;
81
- bodyTemplate(columnProps: XFormColumnProps, tableReadOnly: boolean, rowData: any, xEntity: XEntity): any;
82
+ bodyTemplate(columnProps: XFormColumnBaseProps, tableReadOnly: boolean, rowData: any, xEntity: XEntity): any;
82
83
  onClickAddRow(): void;
83
84
  onClickRemoveRowBySelection(): void;
84
85
  removeRow(row: any): void;
@@ -89,7 +90,7 @@ export declare class XFormDataTable2 extends Component<XFormDataTableProps> {
89
90
  export type XTableFieldOnChange = (e: XTableFieldChangeEvent<any, any>) => void;
90
91
  export type XTableFieldReadOnlyProp = boolean | ((object: any, tableRow: any) => boolean);
91
92
  export type XTableFieldFilterProp = XCustomFilter | ((object: any, rowData: any) => XCustomFilter | undefined);
92
- export interface XFormColumnProps {
93
+ export interface XFormColumnBaseProps {
93
94
  type: "inputSimple" | "dropdown" | "autoComplete" | "searchButton";
94
95
  header?: any;
95
96
  readOnly?: XTableFieldReadOnlyProp;
@@ -97,17 +98,18 @@ export interface XFormColumnProps {
97
98
  showFilterMenu?: boolean;
98
99
  width?: string;
99
100
  onChange?: XTableFieldOnChange;
101
+ columnViewStatus: XViewStatusOrBoolean;
100
102
  }
101
- export interface XFormInputSimpleColumnProps extends XFormColumnProps {
103
+ export interface XFormColumnProps extends XFormColumnBaseProps {
102
104
  field: string;
103
105
  }
104
- export interface XFormDropdownColumnProps extends XFormColumnProps {
106
+ export interface XFormDropdownColumnProps extends XFormColumnBaseProps {
105
107
  assocField: string;
106
108
  displayField: string;
107
109
  sortField?: string;
108
110
  filter?: XCustomFilter;
109
111
  }
110
- export interface XFormAutoCompleteColumnProps extends XFormColumnProps {
112
+ export interface XFormAutoCompleteColumnProps extends XFormColumnBaseProps {
111
113
  assocField: string;
112
114
  displayField: string;
113
115
  searchBrowse?: JSX.Element;
@@ -115,32 +117,36 @@ export interface XFormAutoCompleteColumnProps extends XFormColumnProps {
115
117
  filter?: XTableFieldFilterProp;
116
118
  suggestions?: any[];
117
119
  }
118
- export interface XFormSearchButtonColumnProps extends XFormColumnProps {
120
+ export interface XFormSearchButtonColumnProps extends XFormColumnBaseProps {
119
121
  assocField: string;
120
122
  displayField: string;
121
123
  searchBrowse: JSX.Element;
122
124
  }
123
125
  export declare const XFormColumn: {
124
- (props: XFormInputSimpleColumnProps): null;
126
+ (props: XFormColumnProps): null;
125
127
  defaultProps: {
126
128
  type: string;
129
+ columnViewStatus: boolean;
127
130
  };
128
131
  };
129
132
  export declare const XFormDropdownColumn: {
130
133
  (props: XFormDropdownColumnProps): null;
131
134
  defaultProps: {
132
135
  type: string;
136
+ columnViewStatus: boolean;
133
137
  };
134
138
  };
135
139
  export declare const XFormAutoCompleteColumn: {
136
140
  (props: XFormAutoCompleteColumnProps): null;
137
141
  defaultProps: {
138
142
  type: string;
143
+ columnViewStatus: boolean;
139
144
  };
140
145
  };
141
146
  export declare const XFormSearchButtonColumn: {
142
147
  (props: XFormSearchButtonColumnProps): null;
143
148
  defaultProps: {
144
149
  type: string;
150
+ columnViewStatus: boolean;
145
151
  };
146
152
  };