@michalrakus/x-react-web-lib 1.0.0 → 1.1.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 (72) hide show
  1. package/LICENSE.md +21 -0
  2. package/XInputTextarea.d.ts +3 -0
  3. package/XInputTextarea.js +5 -0
  4. package/gulpfile.js +1 -0
  5. package/lib/administration/XBrowseMetaBrowse.js +2 -1
  6. package/lib/administration/XBrowseMetaForm.js +4 -2
  7. package/lib/administration/XUserBrowse.js +3 -2
  8. package/lib/administration/XUserForm.js +5 -3
  9. package/lib/components/SourceCodeLinkEntity.js +3 -2
  10. package/lib/components/XAutoComplete.d.ts +3 -3
  11. package/lib/components/XAutoComplete.js +19 -38
  12. package/lib/components/XAutoCompleteBase.d.ts +1 -1
  13. package/lib/components/XAutoCompleteBase.js +27 -23
  14. package/lib/components/XBrowse.js +11 -5
  15. package/lib/components/XButton.js +2 -1
  16. package/lib/components/XButtonIconSmall.js +2 -1
  17. package/lib/components/XChangePasswordForm.js +12 -7
  18. package/lib/components/XCheckbox.d.ts +8 -10
  19. package/lib/components/XCheckbox.js +39 -31
  20. package/lib/components/XCheckboxDT.js +2 -1
  21. package/lib/components/XDataTable.js +16 -10
  22. package/lib/components/XDropdown.d.ts +4 -3
  23. package/lib/components/XDropdown.js +24 -45
  24. package/lib/components/XDropdownDT.js +10 -5
  25. package/lib/components/XDropdownDTFilter.js +12 -7
  26. package/lib/components/XDropdownFormDTFilter.js +12 -7
  27. package/lib/components/XEditColumnDialog.js +12 -7
  28. package/lib/components/XErrors.d.ts +1 -0
  29. package/lib/components/XExportRowsDialog.js +13 -8
  30. package/lib/components/XFieldSelector.js +11 -6
  31. package/lib/components/XFormBase.d.ts +1 -0
  32. package/lib/components/XFormBase.js +50 -22
  33. package/lib/components/XFormBaseT.js +3 -1
  34. package/lib/components/XFormComponent.d.ts +10 -6
  35. package/lib/components/XFormComponent.js +63 -49
  36. package/lib/components/XFormDataTable2.d.ts +8 -3
  37. package/lib/components/XFormDataTable2.js +115 -32
  38. package/lib/components/XFormFooter.js +2 -1
  39. package/lib/components/XFormNavigator3.js +18 -7
  40. package/lib/components/XHolders.js +4 -2
  41. package/lib/components/XInput.d.ts +13 -0
  42. package/lib/components/XInput.js +38 -0
  43. package/lib/components/XInputDate.js +3 -2
  44. package/lib/components/XInputDateDT.js +3 -2
  45. package/lib/components/XInputDecimal.js +2 -1
  46. package/lib/components/XInputDecimalDT.js +2 -1
  47. package/lib/components/XInputText.d.ts +6 -11
  48. package/lib/components/XInputText.js +17 -50
  49. package/lib/components/XInputTextDT.js +4 -4
  50. package/lib/components/XInputTextarea.d.ts +18 -0
  51. package/lib/components/XInputTextarea.js +85 -0
  52. package/lib/components/XLazyDataTable.d.ts +3 -0
  53. package/lib/components/XLazyDataTable.js +166 -79
  54. package/lib/components/XLoginDialog.js +2 -1
  55. package/lib/components/XLoginForm.js +11 -6
  56. package/lib/components/XResponseError.js +4 -2
  57. package/lib/components/XSearchButton.d.ts +2 -3
  58. package/lib/components/XSearchButton.js +15 -36
  59. package/lib/components/XSearchButtonDT.js +13 -8
  60. package/lib/components/XSearchButtonOld.js +13 -8
  61. package/lib/components/XToOneAssocButton.js +2 -1
  62. package/lib/components/XUtils.d.ts +3 -1
  63. package/lib/components/XUtils.js +32 -5
  64. package/lib/components/XUtilsConversions.js +10 -2
  65. package/lib/components/XUtilsMetadata.d.ts +1 -1
  66. package/lib/components/XUtilsMetadata.js +20 -11
  67. package/lib/components/useXToken.js +1 -1
  68. package/lib/serverApi/ExportImportParam.d.ts +3 -3
  69. package/lib/serverApi/FindParam.d.ts +3 -13
  70. package/lib/serverApi/FindParam.js +14 -0
  71. package/lib/serverApi/XUtilsCommon.js +2 -2
  72. package/package.json +24 -25
@@ -3,10 +3,12 @@ var __extends = (this && this.__extends) || (function () {
3
3
  var extendStatics = function (d, b) {
4
4
  extendStatics = Object.setPrototypeOf ||
5
5
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
7
  return extendStatics(d, b);
8
8
  };
9
9
  return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
10
12
  extendStatics(d, b);
11
13
  function __() { this.constructor = d; }
12
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -25,7 +27,11 @@ var __assign = (this && this.__assign) || function () {
25
27
  };
26
28
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
29
  if (k2 === undefined) k2 = k;
28
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
30
+ var desc = Object.getOwnPropertyDescriptor(m, k);
31
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
+ desc = { enumerable: true, get: function() { return m[k]; } };
33
+ }
34
+ Object.defineProperty(o, k2, desc);
29
35
  }) : (function(o, m, k, k2) {
30
36
  if (k2 === undefined) k2 = k;
31
37
  o[k2] = m[k];
@@ -38,7 +44,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
38
44
  var __importStar = (this && this.__importStar) || function (mod) {
39
45
  if (mod && mod.__esModule) return mod;
40
46
  var result = {};
41
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
47
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
42
48
  __setModuleDefault(result, mod);
43
49
  return result;
44
50
  };
@@ -69,6 +75,7 @@ var XInputDecimalDT_1 = require("./XInputDecimalDT");
69
75
  var XInputDateDT_1 = require("./XInputDateDT");
70
76
  var XCheckboxDT_1 = require("./XCheckboxDT");
71
77
  var tristatecheckbox_1 = require("primereact/tristatecheckbox");
78
+ var api_1 = require("primereact/api");
72
79
  var XFormDataTable2 = /** @class */ (function (_super) {
73
80
  __extends(XFormDataTable2, _super);
74
81
  function XFormDataTable2(props) {
@@ -85,7 +92,7 @@ var XFormDataTable2 = /** @class */ (function (_super) {
85
92
  _this.state = {
86
93
  selectedRow: undefined,
87
94
  dropdownOptionsMap: {},
88
- filters: {}
95
+ filters: _this.createInitFilters()
89
96
  };
90
97
  _this.onClickAddRowDefault = _this.onClickAddRowDefault.bind(_this);
91
98
  _this.onClickRemoveRowDefault = _this.onClickRemoveRowDefault.bind(_this);
@@ -170,6 +177,58 @@ var XFormDataTable2 = /** @class */ (function (_super) {
170
177
  }
171
178
  return this.entity;
172
179
  };
180
+ XFormDataTable2.prototype.createInitFilters = function () {
181
+ var e_2, _a;
182
+ var initFilters = {};
183
+ var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity());
184
+ try {
185
+ // TODO - asi by bolo fajn si tieto field, xField niekam ulozit a iterovat ulozene hodnoty, pouziva sa to na viacerych miestach
186
+ for (var _b = __values(this.props.children), _c = _b.next(); !_c.done; _c = _b.next()) {
187
+ var child = _c.value;
188
+ var childColumn = child; // nevedel som to krajsie...
189
+ var field = XFormDataTable2.getPathForColumn(childColumn.props);
190
+ var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
191
+ // TODO column.props.dropdownInFilter - pre "menu" by bolo fajn mat zoznam "enumov"
192
+ var filterMatchMode = this.getFilterMatchMode(xField);
193
+ var filterItem = void 0;
194
+ if (this.props.filterDisplay === "menu") {
195
+ // DataTableOperatorFilterMetaData: operator + filter values
196
+ filterItem = {
197
+ operator: api_1.FilterOperator.OR,
198
+ constraints: [{ value: null, matchMode: filterMatchMode }]
199
+ };
200
+ }
201
+ else {
202
+ // props.filterDisplay === "row"
203
+ // DataTableFilterMetaData: filter value
204
+ filterItem = { value: null, matchMode: filterMatchMode };
205
+ }
206
+ initFilters[field] = filterItem;
207
+ }
208
+ }
209
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
210
+ finally {
211
+ try {
212
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
213
+ }
214
+ finally { if (e_2) throw e_2.error; }
215
+ }
216
+ return initFilters;
217
+ };
218
+ XFormDataTable2.prototype.getFilterMatchMode = function (xField) {
219
+ var filterMatchMode;
220
+ if (xField.type === "string") {
221
+ filterMatchMode = api_1.FilterMatchMode.STARTS_WITH;
222
+ }
223
+ // zatial vsetky ostatne EQUALS
224
+ else if (xField.type === "decimal" || xField.type === "number" || xField.type === "date" || xField.type === "datetime" || xField.type === "boolean") {
225
+ filterMatchMode = api_1.FilterMatchMode.EQUALS;
226
+ }
227
+ else {
228
+ throw "XField ".concat(xField.name, ": unknown xField.type = ").concat(xField.type);
229
+ }
230
+ return filterMatchMode;
231
+ };
173
232
  XFormDataTable2.prototype.onSelectionChange = function (event) {
174
233
  console.log("zavolany onSelectionChange");
175
234
  console.log(event.value);
@@ -188,11 +247,12 @@ var XFormDataTable2 = /** @class */ (function (_super) {
188
247
  // TODO - treba vyklonovat?
189
248
  var filtersCloned = __assign({}, this.state.filters);
190
249
  if (checkboxValue !== null) {
191
- filtersCloned[field] = { value: checkboxValue ? "true" : "false", matchMode: "equals" };
250
+ filtersCloned[field] = { value: checkboxValue ? "true" : "false", matchMode: api_1.FilterMatchMode.EQUALS };
192
251
  }
193
252
  else {
194
253
  // pouzivatel zrusil hodnotu vo filtri (vybral prazdny stav v checkboxe), zrusime polozku z filtra
195
- delete filtersCloned[field];
254
+ //delete filtersCloned[field];
255
+ filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
196
256
  }
197
257
  this.setState({ filters: filtersCloned });
198
258
  };
@@ -213,11 +273,12 @@ var XFormDataTable2 = /** @class */ (function (_super) {
213
273
  // TODO - treba vyklonovat?
214
274
  var filtersCloned = __assign({}, this.state.filters);
215
275
  if (displayValue !== XUtils_1.XUtils.dropdownEmptyOptionValue) {
216
- filtersCloned[field] = { value: displayValue, matchMode: "equals" };
276
+ filtersCloned[field] = { value: displayValue, matchMode: api_1.FilterMatchMode.EQUALS };
217
277
  }
218
278
  else {
219
279
  // pouzivatel zrusil hodnotu vo filtri (vybral prazdny riadok), zrusime polozku z filtra
220
- delete filtersCloned[field];
280
+ //delete filtersCloned[field];
281
+ filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
221
282
  }
222
283
  this.setState({ filters: filtersCloned });
223
284
  };
@@ -225,17 +286,22 @@ var XFormDataTable2 = /** @class */ (function (_super) {
225
286
  var dropdownValue = XUtils_1.XUtils.dropdownEmptyOptionValue;
226
287
  var filterValue = this.state.filters[field];
227
288
  if (filterValue !== undefined && filterValue !== null) {
228
- dropdownValue = filterValue.value;
289
+ if (filterValue.value !== null) {
290
+ dropdownValue = filterValue.value;
291
+ }
229
292
  }
230
293
  return dropdownValue;
231
294
  };
232
- XFormDataTable2.prototype.onBodyValueChange = function (field, rowData, newValue) {
233
- //console.log("onBodyValueChange");
234
- // zmenime hodnotu v modeli (odtial sa hodnota cita)
235
- rowData[field] = newValue;
236
- // kedze "rowData" je sucastou "props.form.state.object", tak nam staci zavolat setState({object: object}), aby sa zmena prejavila
237
- this.props.form.onObjectDataChange();
238
- };
295
+ /* pravdepodobne zombie
296
+ onBodyValueChange (field: string, rowData: any, newValue: any) {
297
+ //console.log("onBodyValueChange");
298
+
299
+ // zmenime hodnotu v modeli (odtial sa hodnota cita)
300
+ rowData[field] = newValue;
301
+ // kedze "rowData" je sucastou "props.form.state.object", tak nam staci zavolat setState({object: object}), aby sa zmena prejavila
302
+ this.props.form.onObjectDataChange();
303
+ }
304
+ */
239
305
  // body={(rowData: any) => bodyTemplate(childColumn.props.field, rowData)}
240
306
  XFormDataTable2.prototype.bodyTemplate = function (columnProps, rowData, xEntity) {
241
307
  var body;
@@ -320,13 +386,14 @@ var XFormDataTable2 = /** @class */ (function (_super) {
320
386
  if (this.props.shrinkWidth) {
321
387
  style.maxWidth = 'min-content'; // ak nic nedame (nechame auto), tak (v pripade ak nebudeme mat horizontalny scrollbar) natiahne tabulku na celu sirku stranky, co nechceme
322
388
  }
323
- var tableStyle;
389
+ // pri prechode z Primereact 6.x na 9.x sa tableLayout zmenil z fixed na auto a nefungovalo nastavenie sirok stlpcov - docasne teda takto
390
+ var tableStyle = { tableLayout: 'fixed' };
324
391
  if (this.props.width !== undefined) {
325
392
  var width = this.props.width;
326
393
  if (!isNaN(Number(width))) { // if width is number
327
394
  width = width + 'rem';
328
395
  }
329
- tableStyle = { width: width };
396
+ tableStyle = __assign(__assign({}, tableStyle), { width: width });
330
397
  }
331
398
  // pre lepsiu citatelnost vytvarame stlpce uz tu
332
399
  var columnElemList = react_1.default.Children.map(this.props.children, function (child) {
@@ -352,17 +419,36 @@ var XFormDataTable2 = /** @class */ (function (_super) {
352
419
  var dropdownValue = thisLocal.getDropdownFilterValue(field);
353
420
  filterElement = react_1.default.createElement(XDropdownDTFilter_1.XDropdownDTFilter, { entity: thisLocal.getEntity(), path: field, value: dropdownValue, onValueChange: thisLocal.onDropdownFilterChange });
354
421
  }
422
+ // *********** showFilterMenu ***********
423
+ var showFilterMenu;
424
+ if (childColumnProps.showFilterMenu !== undefined) {
425
+ showFilterMenu = childColumnProps.showFilterMenu;
426
+ }
427
+ else {
428
+ showFilterMenu = true; // default
429
+ if (thisLocal.props.filterDisplay === "row") {
430
+ if (xField.type === "boolean" || childColumnProps.dropdownInFilter) {
431
+ showFilterMenu = false;
432
+ }
433
+ }
434
+ }
435
+ // *********** showClearButton ***********
436
+ // pre filterDisplay = "row" nechceme clear button, chceme setrit miesto
437
+ var showClearButton = thisLocal.props.filterDisplay === "menu";
355
438
  // *********** width/headerStyle ***********
356
439
  var width = XUtils_1.XUtils.processPropWidth(childColumn.props.width);
357
440
  if (width === undefined || width === "default") {
358
- width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, childColumnProps.type, header);
441
+ // TODO - if filter not used at all, then buttons flags should be false
442
+ var filterMenuInFilterRow = thisLocal.props.filterDisplay === "row" && showFilterMenu;
443
+ var filterButtonInHeader = thisLocal.props.filterDisplay === "menu";
444
+ width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, filterMenuInFilterRow, childColumnProps.type, header, filterButtonInHeader);
359
445
  }
360
446
  var headerStyle = {};
361
447
  if (width !== undefined) {
362
448
  headerStyle = { width: width };
363
449
  }
364
450
  // *********** align ***********
365
- var align = "left"; // default
451
+ var align = undefined; // default undefined (left)
366
452
  // do buducna
367
453
  // if (childColumnProps.align !== undefined) {
368
454
  // align = childColumnProps.align;
@@ -377,25 +463,19 @@ var XFormDataTable2 = /** @class */ (function (_super) {
377
463
  align = "center";
378
464
  }
379
465
  // }
380
- // *********** style ***********
381
- var style = {};
382
- // TODO - pouzit className a nie style
383
- if (align === "center" || align === "right") {
384
- style = { textAlign: align };
385
- headerStyle = __assign(__assign({}, headerStyle), style); // headerStyle overrides style in TH cell
386
- }
387
- return react_1.default.createElement(column_1.Column, { field: field, header: header, filter: true, sortable: true, filterElement: filterElement, headerStyle: headerStyle, style: style, body: function (rowData) { return thisLocal.bodyTemplate(childColumnProps, rowData, xEntity); } });
466
+ return react_1.default.createElement(column_1.Column, { field: field, header: header, filter: true, sortable: true, filterElement: filterElement, showFilterMenu: showFilterMenu, showClearButton: showClearButton, headerStyle: headerStyle, align: align, body: function (rowData) { return thisLocal.bodyTemplate(childColumnProps, rowData, xEntity); } });
388
467
  });
389
468
  return (react_1.default.createElement("div", null,
390
469
  react_1.default.createElement("div", { className: "flex justify-content-center" },
391
470
  react_1.default.createElement("label", null, label)),
392
471
  react_1.default.createElement("div", { className: "flex justify-content-center" },
393
- react_1.default.createElement(datatable_1.DataTable, { ref: function (el) { return _this.dt = el; }, value: valueList, dataKey: this.dataKey, paginator: paginator, rows: rows, totalRecords: valueList.length, filters: this.state.filters, onFilter: this.onFilter, sortMode: "multiple", removableSort: true, selectionMode: "single", selection: this.state.selectedRow, onSelectionChange: this.onSelectionChange, className: "p-datatable-sm x-form-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, scrollable: this.props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
472
+ react_1.default.createElement(datatable_1.DataTable, { ref: function (el) { return _this.dt = el; }, value: valueList, dataKey: this.dataKey, paginator: paginator, rows: rows, totalRecords: valueList.length, filterDisplay: this.props.filterDisplay, filters: this.state.filters, onFilter: this.onFilter, sortMode: "multiple", removableSort: true, selectionMode: "single", selection: this.state.selectedRow, onSelectionChange: this.onSelectionChange, className: "p-datatable-sm x-form-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, scrollable: this.props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
394
473
  react_1.default.createElement("div", { className: "flex justify-content-center" },
395
474
  react_1.default.createElement(XButton_1.XButton, { label: "Add row", onClick: onClickAddRow }),
396
475
  react_1.default.createElement(XButton_1.XButton, { label: "Remove row", onClick: onClickRemoveRow }))));
397
476
  };
398
477
  XFormDataTable2.defaultProps = {
478
+ filterDisplay: "row",
399
479
  scrollable: true,
400
480
  scrollWidth: '100%',
401
481
  scrollHeight: '200vh',
@@ -405,24 +485,27 @@ var XFormDataTable2 = /** @class */ (function (_super) {
405
485
  return XFormDataTable2;
406
486
  }(react_1.Component));
407
487
  exports.XFormDataTable2 = XFormDataTable2;
408
- exports.XFormColumn = function (props) {
488
+ var XFormColumn = function (props) {
409
489
  // nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
410
490
  return (null);
411
491
  };
492
+ exports.XFormColumn = XFormColumn;
412
493
  exports.XFormColumn.defaultProps = {
413
494
  type: "inputSimple"
414
495
  };
415
- exports.XFormDropdownColumn = function (props) {
496
+ var XFormDropdownColumn = function (props) {
416
497
  // nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
417
498
  return (null);
418
499
  };
500
+ exports.XFormDropdownColumn = XFormDropdownColumn;
419
501
  exports.XFormDropdownColumn.defaultProps = {
420
502
  type: "dropdown"
421
503
  };
422
- exports.XFormSearchButtonColumn = function (props) {
504
+ var XFormSearchButtonColumn = function (props) {
423
505
  // nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
424
506
  return (null);
425
507
  };
508
+ exports.XFormSearchButtonColumn = XFormSearchButtonColumn;
426
509
  exports.XFormSearchButtonColumn.defaultProps = {
427
510
  type: "searchButton"
428
511
  };
@@ -7,8 +7,9 @@ exports.XFormFooter = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var XButton_1 = require("./XButton");
9
9
  // helper wrapper
10
- exports.XFormFooter = function (props) {
10
+ var XFormFooter = function (props) {
11
11
  return (react_1.default.createElement("div", { className: "flex justify-content-center" },
12
12
  react_1.default.createElement(XButton_1.XButton, { label: "Save", onClick: props.form.onClickSave }),
13
13
  react_1.default.createElement(XButton_1.XButton, { label: "Cancel", onClick: props.form.onClickCancel })));
14
14
  };
15
+ exports.XFormFooter = XFormFooter;
@@ -3,10 +3,12 @@ var __extends = (this && this.__extends) || (function () {
3
3
  var extendStatics = function (d, b) {
4
4
  extendStatics = Object.setPrototypeOf ||
5
5
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
7
  return extendStatics(d, b);
8
8
  };
9
9
  return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
10
12
  extendStatics(d, b);
11
13
  function __() { this.constructor = d; }
12
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -14,7 +16,11 @@ var __extends = (this && this.__extends) || (function () {
14
16
  })();
15
17
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
18
  if (k2 === undefined) k2 = k;
17
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
18
24
  }) : (function(o, m, k, k2) {
19
25
  if (k2 === undefined) k2 = k;
20
26
  o[k2] = m[k];
@@ -27,7 +33,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
27
33
  var __importStar = (this && this.__importStar) || function (mod) {
28
34
  if (mod && mod.__esModule) return mod;
29
35
  var result = {};
30
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
31
37
  __setModuleDefault(result, mod);
32
38
  return result;
33
39
  };
@@ -47,9 +53,14 @@ var __read = (this && this.__read) || function (o, n) {
47
53
  }
48
54
  return ar;
49
55
  };
50
- var __spread = (this && this.__spread) || function () {
51
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
52
- return ar;
56
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
57
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
58
+ if (ar || !(i in from)) {
59
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
60
+ ar[i] = from[i];
61
+ }
62
+ }
63
+ return to.concat(ar || Array.prototype.slice.call(from));
53
64
  };
54
65
  Object.defineProperty(exports, "__esModule", { value: true });
55
66
  exports.XFormNavigator3 = void 0;
@@ -99,7 +110,7 @@ var XFormNavigator3 = /** @class */ (function (_super) {
99
110
  };
100
111
  XFormNavigator3.prototype.render = function () {
101
112
  var _this = this;
102
- var formElements = this.props.rootFormElement !== null ? __spread([this.props.rootFormElement], this.state.formElements) : this.state.formElements;
113
+ var formElements = this.props.rootFormElement !== null ? __spreadArray([this.props.rootFormElement], __read(this.state.formElements), false) : this.state.formElements;
103
114
  var forms = formElements.map(function (formElement, index) {
104
115
  var displayed = (index === formElements.length - 1);
105
116
  // klonovanim elementu pridame atribut openForm={this.openForm} (nemusime tento atribut pridavat pri vytvarani elementu)
@@ -5,9 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.XHolder2 = exports.XHolder1 = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
- exports.XHolder1 = function (props) {
8
+ var XHolder1 = function (props) {
9
9
  return react_1.default.createElement("div", null, props.element);
10
10
  };
11
- exports.XHolder2 = function (props) {
11
+ exports.XHolder1 = XHolder1;
12
+ var XHolder2 = function (props) {
12
13
  return react_1.default.createElement("div", null, props.element);
13
14
  };
15
+ exports.XHolder2 = XHolder2;
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { XFormComponent, XFormComponentProps } from "./XFormComponent";
3
+ import { XField } from "../serverApi/XEntityMetadata";
4
+ export interface XInputProps extends XFormComponentProps {
5
+ field: string;
6
+ inputStyle?: React.CSSProperties;
7
+ }
8
+ export declare abstract class XInput<P extends XInputProps> extends XFormComponent<P> {
9
+ protected xField: XField;
10
+ protected constructor(props: P);
11
+ getField(): string;
12
+ isNotNull(): boolean;
13
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.XInput = void 0;
19
+ var XUtilsMetadata_1 = require("./XUtilsMetadata");
20
+ var XFormComponent_1 = require("./XFormComponent");
21
+ // spolocna nadtrieda pre jednoduche inputy (nie asociacne)
22
+ var XInput = /** @class */ (function (_super) {
23
+ __extends(XInput, _super);
24
+ function XInput(props) {
25
+ var _this = _super.call(this, props) || this;
26
+ _this.xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPathStr(props.form.getEntity(), props.field);
27
+ props.form.addField(props.field);
28
+ return _this;
29
+ }
30
+ XInput.prototype.getField = function () {
31
+ return this.props.field;
32
+ };
33
+ XInput.prototype.isNotNull = function () {
34
+ return !this.xField.isNullable;
35
+ };
36
+ return XInput;
37
+ }(XFormComponent_1.XFormComponent));
38
+ exports.XInput = XInput;
@@ -10,7 +10,7 @@ var XUtilsConversions_1 = require("./XUtilsConversions");
10
10
  var XUtilsMetadata_1 = require("./XUtilsMetadata");
11
11
  var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
12
12
  var XUtils_1 = require("./XUtils");
13
- exports.XInputDate = function (props) {
13
+ var XInputDate = function (props) {
14
14
  var _a;
15
15
  props.form.addField(props.field);
16
16
  var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPathStr(props.form.getEntity(), props.field);
@@ -51,5 +51,6 @@ exports.XInputDate = function (props) {
51
51
  }
52
52
  return (react_1.default.createElement("div", { className: "field grid" },
53
53
  react_1.default.createElement("label", { htmlFor: props.field, className: "col-fixed", style: { width: XUtils_1.XUtils.FIELD_LABEL_WIDTH } }, label),
54
- react_1.default.createElement(calendar_1.Calendar, { id: props.field, value: fieldValue, onChange: onValueChange, disabled: readOnly, showIcon: true, dateFormat: XUtilsConversions_1.dateFormatCalendar(), showTime: showTime, showSeconds: showTime, inputClassName: cssClassName, showOnFocus: false })));
54
+ react_1.default.createElement(calendar_1.Calendar, { id: props.field, value: fieldValue, onChange: onValueChange, disabled: readOnly, showIcon: true, dateFormat: (0, XUtilsConversions_1.dateFormatCalendar)(), showTime: showTime, showSeconds: showTime, inputClassName: cssClassName, showOnFocus: false })));
55
55
  };
56
+ exports.XInputDate = XInputDate;
@@ -8,7 +8,7 @@ var XUtilsConversions_1 = require("./XUtilsConversions");
8
8
  var calendar_1 = require("primereact/calendar");
9
9
  var react_1 = __importDefault(require("react"));
10
10
  var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
11
- exports.XInputDateDT = function (props) {
11
+ var XInputDateDT = function (props) {
12
12
  var showTime = (props.xField.type === 'datetime');
13
13
  var cssClassName = showTime ? 'x-input-datetime' : 'x-input-date';
14
14
  // ak mame path, field je vzdy readOnly
@@ -50,5 +50,6 @@ exports.XInputDateDT = function (props) {
50
50
  // TODO - nefunguje dobre pridavanie noveho riadku - su tam stare neupdatnute hodnoty - este to asi neopravili https://github.com/primefaces/primereact/issues/1277
51
51
  // test mame na TestovaciForm
52
52
  // appendTo={document.body} appenduje overlay panel na element body - eliminuje problem s overflow (pozri poznamku v XDropdownDTFilter)
53
- return (react_1.default.createElement(calendar_1.Calendar, { appendTo: document.body, id: props.field, value: fieldValue, onChange: function (e) { return onValueChange(props.field, props.rowData, e.value); }, disabled: readOnly, showIcon: true, dateFormat: XUtilsConversions_1.dateFormatCalendar(), showTime: showTime, showSeconds: showTime, inputClassName: cssClassName, showOnFocus: false }));
53
+ return (react_1.default.createElement(calendar_1.Calendar, { appendTo: document.body, id: props.field, value: fieldValue, onChange: function (e) { return onValueChange(props.field, props.rowData, e.value); }, disabled: readOnly, showIcon: true, dateFormat: (0, XUtilsConversions_1.dateFormatCalendar)(), showTime: showTime, showSeconds: showTime, inputClassName: cssClassName, showOnFocus: false }));
54
54
  };
55
+ exports.XInputDateDT = XInputDateDT;
@@ -9,7 +9,7 @@ var inputnumber_1 = require("primereact/inputnumber");
9
9
  var XUtilsMetadata_1 = require("./XUtilsMetadata");
10
10
  var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
11
11
  var XUtils_1 = require("./XUtils");
12
- exports.XInputDecimal = function (props) {
12
+ var XInputDecimal = function (props) {
13
13
  var _a, _b, _c;
14
14
  props.form.addField(props.field);
15
15
  var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPathStr(props.form.getEntity(), props.field);
@@ -58,3 +58,4 @@ exports.XInputDecimal = function (props) {
58
58
  react_1.default.createElement("label", { htmlFor: props.field, className: "col-fixed", style: labelStyle }, label),
59
59
  react_1.default.createElement(inputnumber_1.InputNumber, { id: props.field, value: fieldValue, onChange: onValueChange, disabled: readOnly, mode: "decimal", locale: "de-DE", useGrouping: useGrouping, minFractionDigits: fractionDigits, maxFractionDigits: fractionDigits, min: min, max: max, size: sizeInput, style: props.inputStyle })));
60
60
  };
61
+ exports.XInputDecimal = XInputDecimal;
@@ -8,7 +8,7 @@ var react_1 = __importDefault(require("react"));
8
8
  var inputnumber_1 = require("primereact/inputnumber");
9
9
  var XUtilsMetadata_1 = require("./XUtilsMetadata");
10
10
  var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
11
- exports.XInputDecimalDT = function (props) {
11
+ var XInputDecimalDT = function (props) {
12
12
  var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPathStr(props.entity, props.field);
13
13
  var _a = XUtilsMetadata_1.XUtilsMetadata.getParamsForInputNumber(xField), useGrouping = _a.useGrouping, fractionDigits = _a.fractionDigits, min = _a.min, max = _a.max;
14
14
  // ak mame path, field je vzdy readOnly
@@ -49,3 +49,4 @@ exports.XInputDecimalDT = function (props) {
49
49
  }
50
50
  return (react_1.default.createElement(inputnumber_1.InputNumber, { id: props.field, value: fieldValue, onChange: function (e) { return onValueChange(props.field, props.rowData, e.value); }, disabled: readOnly, mode: "decimal", locale: "de-DE", useGrouping: useGrouping, minFractionDigits: fractionDigits, maxFractionDigits: fractionDigits, min: min, max: max, className: "x-input-to-resize" }));
51
51
  };
52
+ exports.XInputDecimalDT = XInputDecimalDT;
@@ -1,16 +1,11 @@
1
- import React from "react";
2
- import { XFormComponent, XFormComponentProps } from "./XFormComponent";
3
- import { XField } from "../serverApi/XEntityMetadata";
4
- export interface XInputTextProps extends XFormComponentProps {
5
- field: string;
1
+ /// <reference types="react" />
2
+ import { XInput, XInputProps } from "./XInput";
3
+ export interface XInputTextProps extends XInputProps {
6
4
  size?: number;
7
- inputStyle?: React.CSSProperties;
8
5
  }
9
- export declare class XInputText extends XFormComponent<XInputTextProps> {
10
- protected xField: XField;
6
+ export declare class XInputText extends XInput<XInputTextProps> {
11
7
  constructor(props: XInputTextProps);
12
- getFieldForEdit(): string | undefined;
13
- checkNotNull(): boolean;
14
- getValueFromObject(): any;
8
+ getValue(): string;
9
+ onValueChange(e: any): void;
15
10
  render(): JSX.Element;
16
11
  }
@@ -3,10 +3,12 @@ var __extends = (this && this.__extends) || (function () {
3
3
  var extendStatics = function (d, b) {
4
4
  extendStatics = Object.setPrototypeOf ||
5
5
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
7
  return extendStatics(d, b);
8
8
  };
9
9
  return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
10
12
  extendStatics(d, b);
11
13
  function __() { this.constructor = d; }
12
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -29,68 +31,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
29
31
  Object.defineProperty(exports, "__esModule", { value: true });
30
32
  exports.XInputText = void 0;
31
33
  var react_1 = __importDefault(require("react"));
32
- var XUtilsMetadata_1 = require("./XUtilsMetadata");
33
- var XUtils_1 = require("./XUtils");
34
34
  var XUtilsConversions_1 = require("./XUtilsConversions");
35
- var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
36
35
  var inputtext_1 = require("primereact/inputtext");
37
- var XFormComponent_1 = require("./XFormComponent");
36
+ var XInput_1 = require("./XInput");
38
37
  var XInputText = /** @class */ (function (_super) {
39
38
  __extends(XInputText, _super);
40
39
  function XInputText(props) {
41
40
  var _this = _super.call(this, props) || this;
42
- _this.xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPathStr(props.form.getEntity(), props.field);
43
- props.form.addField(props.field);
41
+ _this.onValueChange = _this.onValueChange.bind(_this);
44
42
  return _this;
45
43
  }
46
- // TODO - prerobit - len field nech vracia
47
- XInputText.prototype.getFieldForEdit = function () {
48
- // TODO - zohladnit aj aktualny readOnly stav
49
- if (!XUtils_1.XUtils.isReadOnly(this.props.field, this.props.readOnly)) {
50
- return this.props.field;
51
- }
52
- return undefined;
53
- };
54
- XInputText.prototype.checkNotNull = function () {
55
- // TODO - zohladnit aj aktualny readOnly stav
56
- return !this.xField.isNullable && !XUtils_1.XUtils.isReadOnly(this.props.field, this.props.readOnly);
44
+ XInputText.prototype.getValue = function () {
45
+ // konvertovat null hodnotu na "" (vo funkcii stringAsUI) je dolezite aby sa prejavila zmena na null v modeli
46
+ var value = this.getValueFromObject();
47
+ return (0, XUtilsConversions_1.stringAsUI)(value);
57
48
  };
58
- XInputText.prototype.getValueFromObject = function () {
59
- var objectValue = null;
60
- var object = this.props.form.state.object;
61
- if (object !== null) {
62
- objectValue = XUtilsCommon_1.XUtilsCommon.getValueByPath(object, this.props.field);
63
- // pre istotu dame na null, null je standard
64
- if (objectValue === undefined) {
65
- objectValue = null;
66
- }
67
- }
68
- return objectValue;
49
+ XInputText.prototype.onValueChange = function (e) {
50
+ var value = (0, XUtilsConversions_1.stringFromUI)(e.target.value);
51
+ this.onValueChangeBase(value);
69
52
  };
70
53
  XInputText.prototype.render = function () {
71
- var _this = this;
72
- var _a, _b, _c;
73
- var props = this.props;
74
- var xField = this.xField;
75
- var label = (_a = props.label) !== null && _a !== void 0 ? _a : props.field;
76
- if (this.checkNotNull()) {
77
- label = XUtils_1.XUtils.markNotNull(label);
78
- }
79
- var readOnly = XUtils_1.XUtils.isReadOnly(props.field, props.readOnly);
80
- var size = (_b = props.size) !== null && _b !== void 0 ? _b : xField.length;
81
- var labelStyle = (_c = props.labelStyle) !== null && _c !== void 0 ? _c : { width: XUtils_1.XUtils.FIELD_LABEL_WIDTH };
82
- var onValueChange = function (e) {
83
- var value = XUtilsConversions_1.stringFromUI(e.target.value);
84
- var error = _this.validateOnChange(value);
85
- props.form.onFieldChange(props.field, value, error);
86
- };
87
- // konvertovat null hodnotu na "" (vo funkcii stringAsUI) je dolezite aby sa prejavila zmena na null v modeli
88
- var fieldValue = XUtilsConversions_1.stringAsUI(this.getValueFromObject());
54
+ var _a;
55
+ var size = (_a = this.props.size) !== null && _a !== void 0 ? _a : this.xField.length;
89
56
  // note: style overrides size (width of the input according to character count)
90
57
  return (react_1.default.createElement("div", { className: "field grid" },
91
- react_1.default.createElement("label", { htmlFor: props.field, className: "col-fixed", style: labelStyle }, label),
92
- react_1.default.createElement(inputtext_1.InputText, __assign({ id: props.field, value: fieldValue, onChange: onValueChange, readOnly: readOnly, maxLength: xField.length, size: size, style: props.inputStyle }, this.getClassNameTooltip()))));
58
+ react_1.default.createElement("label", { htmlFor: this.props.field, className: "col-fixed", style: this.getLabelStyle() }, this.getLabel()),
59
+ react_1.default.createElement(inputtext_1.InputText, __assign({ id: this.props.field, value: this.getValue(), onChange: this.onValueChange, readOnly: this.isReadOnly(), maxLength: this.xField.length, size: size, style: this.props.inputStyle }, this.getClassNameTooltip()))));
93
60
  };
94
61
  return XInputText;
95
- }(XFormComponent_1.XFormComponent));
62
+ }(XInput_1.XInput));
96
63
  exports.XInputText = XInputText;