@michalrakus/x-react-web-lib 0.25.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 (67) hide show
  1. package/LICENSE.md +21 -0
  2. package/XEnvVars.d.ts +3 -0
  3. package/XEnvVars.js +5 -0
  4. package/XInputTextarea.d.ts +3 -0
  5. package/XInputTextarea.js +5 -0
  6. package/gulpfile.js +2 -0
  7. package/lib/administration/XBrowseMetaForm.js +1 -1
  8. package/lib/administration/XUserBrowse.js +5 -4
  9. package/lib/administration/XUserForm.js +40 -28
  10. package/lib/components/SourceCodeLinkEntity.js +1 -1
  11. package/lib/components/XAutoComplete.d.ts +3 -3
  12. package/lib/components/XAutoComplete.js +16 -37
  13. package/lib/components/XAutoCompleteBase.d.ts +1 -1
  14. package/lib/components/XAutoCompleteBase.js +23 -22
  15. package/lib/components/XBrowse.js +7 -3
  16. package/lib/components/XChangePasswordForm.js +9 -5
  17. package/lib/components/XCheckbox.d.ts +8 -9
  18. package/lib/components/XCheckbox.js +38 -30
  19. package/lib/components/XDataTable.js +11 -7
  20. package/lib/components/XDropdown.d.ts +4 -3
  21. package/lib/components/XDropdown.js +21 -44
  22. package/lib/components/XDropdownDT.js +7 -3
  23. package/lib/components/XDropdownDTFilter.js +9 -5
  24. package/lib/components/XDropdownFormDTFilter.js +9 -5
  25. package/lib/components/XEditColumnDialog.js +9 -5
  26. package/lib/components/XEnvVars.d.ts +12 -0
  27. package/lib/components/XEnvVars.js +20 -0
  28. package/lib/components/XErrors.d.ts +1 -0
  29. package/lib/components/XExportRowsDialog.js +12 -6
  30. package/lib/components/XFieldSelector.js +8 -4
  31. package/lib/components/XFormBase.d.ts +1 -0
  32. package/lib/components/XFormBase.js +47 -21
  33. package/lib/components/XFormComponent.d.ts +10 -6
  34. package/lib/components/XFormComponent.js +60 -48
  35. package/lib/components/XFormDataTable2.d.ts +8 -3
  36. package/lib/components/XFormDataTable2.js +106 -28
  37. package/lib/components/XFormNavigator3.js +14 -6
  38. package/lib/components/XInput.d.ts +13 -0
  39. package/lib/components/XInput.js +38 -0
  40. package/lib/components/XInputDate.js +1 -1
  41. package/lib/components/XInputDateDT.js +1 -1
  42. package/lib/components/XInputText.d.ts +6 -11
  43. package/lib/components/XInputText.js +14 -49
  44. package/lib/components/XInputTextDT.js +2 -3
  45. package/lib/components/XInputTextarea.d.ts +18 -0
  46. package/lib/components/XInputTextarea.js +85 -0
  47. package/lib/components/XLazyDataTable.d.ts +3 -0
  48. package/lib/components/XLazyDataTable.js +162 -77
  49. package/lib/components/XLoginForm.js +9 -5
  50. package/lib/components/XResponseError.js +1 -1
  51. package/lib/components/XSearchButton.d.ts +2 -3
  52. package/lib/components/XSearchButton.js +12 -35
  53. package/lib/components/XSearchButtonDT.js +10 -6
  54. package/lib/components/XSearchButtonOld.js +10 -6
  55. package/lib/components/XToken.d.ts +4 -3
  56. package/lib/components/XUtils.d.ts +13 -4
  57. package/lib/components/XUtils.js +90 -15
  58. package/lib/components/XUtilsConversions.js +10 -2
  59. package/lib/components/XUtilsMetadata.d.ts +1 -1
  60. package/lib/components/XUtilsMetadata.js +20 -11
  61. package/lib/components/useXToken.js +1 -1
  62. package/lib/serverApi/ExportImportParam.d.ts +3 -3
  63. package/lib/serverApi/FindParam.d.ts +3 -13
  64. package/lib/serverApi/FindParam.js +14 -0
  65. package/lib/serverApi/XUser.d.ts +1 -0
  66. package/lib/serverApi/XUtilsCommon.js +2 -2
  67. package/package.json +34 -32
@@ -12,7 +12,11 @@ var __assign = (this && this.__assign) || function () {
12
12
  };
13
13
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
14
  if (k2 === undefined) k2 = k;
15
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
16
20
  }) : (function(o, m, k, k2) {
17
21
  if (k2 === undefined) k2 = k;
18
22
  o[k2] = m[k];
@@ -44,7 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
44
48
  function verb(n) { return function (v) { return step([n, v]); }; }
45
49
  function step(op) {
46
50
  if (f) throw new TypeError("Generator is already executing.");
47
- while (_) try {
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
48
52
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
53
  if (y = 0, t) op = [op[0] & 2, t.value];
50
54
  switch (op[0]) {
@@ -65,6 +69,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
65
69
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
70
  }
67
71
  };
72
+ var __values = (this && this.__values) || function(o) {
73
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
74
+ if (m) return m.call(o);
75
+ if (o && typeof o.length === "number") return {
76
+ next: function () {
77
+ if (o && i >= o.length) o = void 0;
78
+ return { value: o && o[i++], done: !o };
79
+ }
80
+ };
81
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
82
+ };
68
83
  var __read = (this && this.__read) || function (o, n) {
69
84
  var m = typeof Symbol === "function" && o[Symbol.iterator];
70
85
  if (!m) return o;
@@ -81,17 +96,6 @@ var __read = (this && this.__read) || function (o, n) {
81
96
  }
82
97
  return ar;
83
98
  };
84
- var __values = (this && this.__values) || function(o) {
85
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
86
- if (m) return m.call(o);
87
- if (o && typeof o.length === "number") return {
88
- next: function () {
89
- if (o && i >= o.length) o = void 0;
90
- return { value: o && o[i++], done: !o };
91
- }
92
- };
93
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
94
- };
95
99
  Object.defineProperty(exports, "__esModule", { value: true });
96
100
  exports.XLazyColumn = exports.XLazyDataTable = void 0;
97
101
  var react_1 = __importStar(require("react"));
@@ -107,32 +111,88 @@ var XButtonIconSmall_1 = require("./XButtonIconSmall");
107
111
  var tristatecheckbox_1 = require("primereact/tristatecheckbox");
108
112
  var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
109
113
  var XExportRowsDialog_1 = require("./XExportRowsDialog");
114
+ var api_1 = require("primereact/api");
110
115
  var XLazyDataTable = function (props) {
111
- var dataTableEl = react_1.useRef(null);
112
- var _a = __read(react_1.useState({ rowList: [], totalRecords: 0 }), 2), value = _a[0], setValue = _a[1];
113
- var _b = __read(react_1.useState(false), 2), loading = _b[0], setLoading = _b[1];
114
- var _c = __read(react_1.useState(0), 2), first = _c[0], setFirst = _c[1];
115
- var _d = __read(react_1.useState(props.paginator ? props.rows : undefined), 2), rows = _d[0], setRows = _d[1];
116
- var filtersInit = {};
116
+ // must be here, is used in createInitFilters()
117
+ var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity);
118
+ var createInitFilters = function () {
119
+ var e_1, _a;
120
+ var initFilters = {};
121
+ //let columns = dataTableEl.current.props.children; - does not work
122
+ var columns = props.children;
123
+ try {
124
+ for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
125
+ var column = columns_1_1.value;
126
+ var xLazyColumn = column; // nevedel som to krajsie...
127
+ var field = xLazyColumn.props.field;
128
+ var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
129
+ // TODO column.props.dropdownInFilter - pre "menu" by bolo fajn mat zoznam "enumov"
130
+ var filterMatchMode = getFilterMatchMode(xField);
131
+ var filterItem = void 0;
132
+ if (props.filterDisplay === "menu") {
133
+ // DataTableOperatorFilterMetaData: operator + filter values
134
+ filterItem = {
135
+ operator: api_1.FilterOperator.OR,
136
+ constraints: [{ value: null, matchMode: filterMatchMode }]
137
+ };
138
+ }
139
+ else {
140
+ // props.filterDisplay === "row"
141
+ // DataTableFilterMetaData: filter value
142
+ filterItem = { value: null, matchMode: filterMatchMode };
143
+ }
144
+ initFilters[field] = filterItem;
145
+ }
146
+ }
147
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
148
+ finally {
149
+ try {
150
+ if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
151
+ }
152
+ finally { if (e_1) throw e_1.error; }
153
+ }
154
+ return initFilters;
155
+ };
156
+ var getFilterMatchMode = function (xField) {
157
+ var filterMatchMode;
158
+ if (xField.type === "string") {
159
+ filterMatchMode = api_1.FilterMatchMode.STARTS_WITH;
160
+ }
161
+ // zatial vsetky ostatne EQUALS
162
+ else if (xField.type === "decimal" || xField.type === "number" || xField.type === "date" || xField.type === "datetime" || xField.type === "boolean") {
163
+ filterMatchMode = api_1.FilterMatchMode.EQUALS;
164
+ }
165
+ else {
166
+ throw "XField ".concat(xField.name, ": unknown xField.type = ").concat(xField.type);
167
+ }
168
+ return filterMatchMode;
169
+ };
170
+ var dataTableEl = (0, react_1.useRef)(null);
171
+ var _a = __read((0, react_1.useState)({ rowList: [], totalRecords: 0 }), 2), value = _a[0], setValue = _a[1];
172
+ var _b = __read((0, react_1.useState)(false), 2), loading = _b[0], setLoading = _b[1];
173
+ var _c = __read((0, react_1.useState)(0), 2), first = _c[0], setFirst = _c[1];
174
+ var _d = __read((0, react_1.useState)(props.paginator ? props.rows : undefined), 2), rows = _d[0], setRows = _d[1];
175
+ var filtersInit = createInitFilters();
117
176
  if (props.searchTableParams !== undefined && props.searchTableParams.filter !== undefined) {
177
+ // TODO - zohladnit "menu" filtrovanie
118
178
  filtersInit[props.searchTableParams.displayField] = { value: props.searchTableParams.filter, matchMode: "startsWith" };
119
179
  }
120
- var _e = __read(react_1.useState(filtersInit), 2), filters = _e[0], setFilters = _e[1]; // filtrovanie na "controlled manner" (moze sa sem nainicializovat nejaka hodnota)
121
- var _f = __read(react_1.useState([]), 2), multiSortMeta = _f[0], setMultiSortMeta = _f[1];
122
- var _g = __read(react_1.useState(null), 2), selectedRow = _g[0], setSelectedRow = _g[1];
123
- var _h = __read(react_1.useState(false), 2), dataLoaded = _h[0], setDataLoaded = _h[1]; // priznak kde si zapiseme, ci uz sme nacitali data
124
- var _j = __read(react_1.useState(false), 2), exportRowsDialogOpened = _j[0], setExportRowsDialogOpened = _j[1];
125
- var _k = __read(react_1.useState(), 2), exportRowsDialogRowCount = _k[0], setExportRowsDialogRowCount = _k[1]; // param pre dialog
126
- var _l = __read(react_1.useState(filtersInit), 2), filtersAfterFiltering = _l[0], setFiltersAfterFiltering = _l[1]; // sem si odkladame stav filtra po kliknuti na button Filter (chceme exportovat presne to co vidno vyfiltrovane)
180
+ var _e = __read((0, react_1.useState)(filtersInit), 2), filters = _e[0], setFilters = _e[1]; // filtrovanie na "controlled manner" (moze sa sem nainicializovat nejaka hodnota)
181
+ var _f = __read((0, react_1.useState)([]), 2), multiSortMeta = _f[0], setMultiSortMeta = _f[1];
182
+ var _g = __read((0, react_1.useState)(null), 2), selectedRow = _g[0], setSelectedRow = _g[1];
183
+ var _h = __read((0, react_1.useState)(false), 2), dataLoaded = _h[0], setDataLoaded = _h[1]; // priznak kde si zapiseme, ci uz sme nacitali data
184
+ var _j = __read((0, react_1.useState)(false), 2), exportRowsDialogOpened = _j[0], setExportRowsDialogOpened = _j[1];
185
+ var _k = __read((0, react_1.useState)(), 2), exportRowsDialogRowCount = _k[0], setExportRowsDialogRowCount = _k[1]; // param pre dialog
186
+ var _l = __read((0, react_1.useState)(filtersInit), 2), filtersAfterFiltering = _l[0], setFiltersAfterFiltering = _l[1]; // sem si odkladame stav filtra po kliknuti na button Filter (chceme exportovat presne to co vidno vyfiltrovane)
127
187
  // parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
128
- react_1.useEffect(function () {
188
+ (0, react_1.useEffect)(function () {
129
189
  // jednoduchy sposob - nepouzivame parameter props.displayed a priznak dataLoaded
130
190
  if (props.displayed === undefined) {
131
191
  loadData();
132
192
  //console.log("XLazyDataTable - data loaded (simple)");
133
193
  }
134
194
  }, []); // eslint-disable-line react-hooks/exhaustive-deps
135
- react_1.useEffect(function () {
195
+ (0, react_1.useEffect)(function () {
136
196
  // sposob pozivany pri XFormNavigator (potrebujeme refreshnut data pri navrate z formulara)
137
197
  if (props.displayed !== undefined) {
138
198
  if (props.displayed) {
@@ -150,6 +210,7 @@ var XLazyDataTable = function (props) {
150
210
  }
151
211
  }
152
212
  }); // eslint-disable-line react-hooks/exhaustive-deps
213
+ // TODO - preco je to tu? presunut dole ak sa da...
153
214
  var dataKey = props.dataKey !== undefined ? props.dataKey : XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity).idField;
154
215
  var onPage = function (event) { return __awaiter(void 0, void 0, void 0, function () {
155
216
  return __generator(this, function (_a) {
@@ -210,43 +271,43 @@ var XLazyDataTable = function (props) {
210
271
  var getFields = function () {
211
272
  // krasne zobrazi cely objekt!
212
273
  //console.log(dataTableEl.current);
213
- var e_1, _a;
274
+ var e_2, _a;
214
275
  var fields = [];
215
276
  var columns = dataTableEl.current.props.children;
216
277
  try {
217
- for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
218
- var column = columns_1_1.value;
278
+ for (var columns_2 = __values(columns), columns_2_1 = columns_2.next(); !columns_2_1.done; columns_2_1 = columns_2.next()) {
279
+ var column = columns_2_1.value;
219
280
  fields.push(column.props.field);
220
281
  }
221
282
  }
222
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
283
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
223
284
  finally {
224
285
  try {
225
- if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
286
+ if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
226
287
  }
227
- finally { if (e_1) throw e_1.error; }
288
+ finally { if (e_2) throw e_2.error; }
228
289
  }
229
290
  return fields;
230
291
  };
231
292
  var getHeaders = function () {
232
293
  // krasne zobrazi cely objekt!
233
294
  //console.log(dataTableEl.current);
234
- var e_2, _a;
295
+ var e_3, _a;
235
296
  var headers = [];
236
297
  var columns = dataTableEl.current.props.children;
237
298
  try {
238
- for (var columns_2 = __values(columns), columns_2_1 = columns_2.next(); !columns_2_1.done; columns_2_1 = columns_2.next()) {
239
- var column = columns_2_1.value;
299
+ for (var columns_3 = __values(columns), columns_3_1 = columns_3.next(); !columns_3_1.done; columns_3_1 = columns_3.next()) {
300
+ var column = columns_3_1.value;
240
301
  // pozor! headers tahame z primereact DataTable a napr. pri editacii nemusi byt v atribute header string
241
302
  headers.push(column.props.header);
242
303
  }
243
304
  }
244
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
305
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
245
306
  finally {
246
307
  try {
247
- if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
308
+ if (columns_3_1 && !columns_3_1.done && (_a = columns_3.return)) _a.call(columns_3);
248
309
  }
249
- finally { if (e_2) throw e_2.error; }
310
+ finally { if (e_3) throw e_3.error; }
250
311
  }
251
312
  return headers;
252
313
  };
@@ -283,7 +344,7 @@ var XLazyDataTable = function (props) {
283
344
  }
284
345
  };
285
346
  var onClickRemoveRow = function () { return __awaiter(void 0, void 0, void 0, function () {
286
- var reread, e_3, e_4;
347
+ var reread, e_4, e_5;
287
348
  return __generator(this, function (_a) {
288
349
  switch (_a.label) {
289
350
  case 0:
@@ -298,8 +359,8 @@ var XLazyDataTable = function (props) {
298
359
  reread = _a.sent();
299
360
  return [3 /*break*/, 4];
300
361
  case 3:
301
- e_3 = _a.sent();
302
- XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_3);
362
+ e_4 = _a.sent();
363
+ XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_4);
303
364
  return [3 /*break*/, 4];
304
365
  case 4:
305
366
  if (reread) {
@@ -318,8 +379,8 @@ var XLazyDataTable = function (props) {
318
379
  _a.sent();
319
380
  return [3 /*break*/, 9];
320
381
  case 8:
321
- e_4 = _a.sent();
322
- XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_4);
382
+ e_5 = _a.sent();
383
+ XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_5);
323
384
  return [3 /*break*/, 9];
324
385
  case 9:
325
386
  loadData();
@@ -349,7 +410,7 @@ var XLazyDataTable = function (props) {
349
410
  });
350
411
  }); };
351
412
  var exportRowsDialogOnHide = function (ok, exportType, csvParam) { return __awaiter(void 0, void 0, void 0, function () {
352
- var path, exportParam, response, e_5, fileExt, fileName, respBlob, url, a;
413
+ var path, exportParam, response, e_6, fileExt, fileName, respBlob, url, a;
353
414
  return __generator(this, function (_a) {
354
415
  switch (_a.label) {
355
416
  case 0:
@@ -371,12 +432,12 @@ var XLazyDataTable = function (props) {
371
432
  response = _a.sent();
372
433
  return [3 /*break*/, 4];
373
434
  case 3:
374
- e_5 = _a.sent();
375
- XUtils_1.XUtils.showErrorMessage("Export failed.", e_5);
435
+ e_6 = _a.sent();
436
+ XUtils_1.XUtils.showErrorMessage("Export failed.", e_6);
376
437
  return [2 /*return*/];
377
438
  case 4:
378
439
  fileExt = exportType;
379
- fileName = props.entity + "." + fileExt;
440
+ fileName = "".concat(props.entity, ".").concat(fileExt);
380
441
  return [4 /*yield*/, response.blob()];
381
442
  case 5:
382
443
  respBlob = _a.sent();
@@ -400,15 +461,18 @@ var XLazyDataTable = function (props) {
400
461
  console.log("Nie je vyselectovany ziaden zaznam.");
401
462
  }
402
463
  };
464
+ // ****** checkbox vo filtri ********
465
+ // pouziva sa len pre simple filtrovanie (filterDisplay="row")
403
466
  var onCheckboxFilterChange = function (field, checkboxValue) {
404
467
  // TODO - treba vyklonovat?
405
468
  var filtersCloned = __assign({}, filters);
406
469
  if (checkboxValue !== null) {
407
- filtersCloned[field] = { value: checkboxValue ? "1" : "0", matchMode: "equals" };
470
+ filtersCloned[field] = { value: checkboxValue ? "1" : "0", matchMode: api_1.FilterMatchMode.EQUALS };
408
471
  }
409
472
  else {
410
473
  // pouzivatel zrusil hodnotu vo filtri (vybral prazdny stav v checkboxe), zrusime polozku z filtra
411
- delete filtersCloned[field];
474
+ //delete filtersCloned[field];
475
+ filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
412
476
  }
413
477
  setFilters(filtersCloned);
414
478
  };
@@ -425,15 +489,18 @@ var XLazyDataTable = function (props) {
425
489
  }
426
490
  return checkboxValue;
427
491
  };
492
+ // ****** dropdown vo filtri ********
493
+ // pouziva sa len pre simple filtrovanie (filterDisplay="row")
428
494
  var onDropdownFilterChange = function (field, displayValue) {
429
495
  // TODO - treba vyklonovat?
430
496
  var filtersCloned = __assign({}, filters);
431
497
  if (displayValue !== XUtils_1.XUtils.dropdownEmptyOptionValue) {
432
- filtersCloned[field] = { value: displayValue, matchMode: "equals" };
498
+ filtersCloned[field] = { value: displayValue, matchMode: api_1.FilterMatchMode.EQUALS };
433
499
  }
434
500
  else {
435
501
  // pouzivatel zrusil hodnotu vo filtri (vybral prazdny riadok), zrusime polozku z filtra
436
- delete filtersCloned[field];
502
+ //delete filtersCloned[field];
503
+ filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
437
504
  }
438
505
  setFilters(filtersCloned);
439
506
  };
@@ -441,7 +508,9 @@ var XLazyDataTable = function (props) {
441
508
  var dropdownValue = XUtils_1.XUtils.dropdownEmptyOptionValue;
442
509
  var filterValue = filters[field];
443
510
  if (filterValue !== undefined && filterValue !== null) {
444
- dropdownValue = filterValue.value;
511
+ if (filterValue.value !== null) {
512
+ dropdownValue = filterValue.value;
513
+ }
445
514
  }
446
515
  return dropdownValue;
447
516
  };
@@ -457,7 +526,7 @@ var XLazyDataTable = function (props) {
457
526
  else if (typeof rowDataValue === 'number') {
458
527
  numberValue = rowDataValue;
459
528
  }
460
- bodyValue = XUtilsConversions_1.numberAsUI(numberValue, xField.scale);
529
+ bodyValue = (0, XUtilsConversions_1.numberAsUI)(numberValue, xField.scale);
461
530
  }
462
531
  else if (xField.type === "date") {
463
532
  // tuto zatial hack, mal by prist Date
@@ -468,7 +537,7 @@ var XLazyDataTable = function (props) {
468
537
  else if (typeof rowDataValue === 'object' && rowDataValue instanceof Date) {
469
538
  dateValue = rowDataValue;
470
539
  }
471
- bodyValue = XUtilsConversions_1.dateAsUI(dateValue);
540
+ bodyValue = (0, XUtilsConversions_1.dateAsUI)(dateValue);
472
541
  }
473
542
  else if (xField.type === "datetime") {
474
543
  // tuto zatial hack, mal by prist Date
@@ -479,7 +548,7 @@ var XLazyDataTable = function (props) {
479
548
  else if (typeof rowDataValue === 'object' && rowDataValue instanceof Date) {
480
549
  dateValue = rowDataValue;
481
550
  }
482
- bodyValue = XUtilsConversions_1.datetimeAsUI(dateValue);
551
+ bodyValue = (0, XUtilsConversions_1.datetimeAsUI)(dateValue);
483
552
  }
484
553
  else if (xField.type === "boolean") {
485
554
  // TODO - efektivnejsie by bolo renderovat len prislusne ikonky
@@ -487,8 +556,7 @@ var XLazyDataTable = function (props) {
487
556
  }
488
557
  return bodyValue;
489
558
  };
490
- var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity);
491
- // ak mame scrollWidth/scrollHeight = viewport (default), vyratame scrollWidth/scrollHeight tak aby tabulka "sadla" okna (viewport-u)
559
+ // ak mame scrollWidth/scrollHeight = viewport (default), vyratame scrollWidth/scrollHeight tak aby tabulka "sadla" do okna (viewport-u)
492
560
  var scrollWidth = undefined; // vypnute horizontalne scrollovanie
493
561
  var scrollHeight = undefined; // vypnute vertikalne scrollovanie
494
562
  if (props.scrollable) {
@@ -513,17 +581,20 @@ var XLazyDataTable = function (props) {
513
581
  if (props.searchTableParams === undefined) {
514
582
  // sme v standardnom formulari
515
583
  viewHeight = '100vh';
516
- headerFooterHeight = XUtils_1.XUtils.toPX0('20.89rem') - XUtils_1.XUtils.toPX0('4.43rem'); // experimentalne zistena vyska header/footer (body - table body) bez formFooterHeight
584
+ // experimentalne zistena vyska header/footer
585
+ // da sa vyratat ako vysku body (celej stranky) - vyska div-u ktory sa scrolluje (div na ktorom je style="max-height: calc(100vh - 266.42px);)
586
+ // (treba odratat vysku paginatora a formFooterHeight (lebo tie sa odratavaju nizsie))
587
+ headerFooterHeight = XUtils_1.XUtils.toPX0('10.89rem');
517
588
  }
518
589
  else {
519
590
  // sme v dialogu
520
591
  if (XUtils_1.XUtils.isMobile()) {
521
592
  viewHeight = '98vh'; // .p-dialog pre mobil ma max-height: 98%
522
- headerFooterHeight = XUtils_1.XUtils.toPX0('17.60rem'); // rucne zratane
593
+ headerFooterHeight = XUtils_1.XUtils.toPX0('12.03rem'); // rucne zratane
523
594
  }
524
595
  else {
525
596
  viewHeight = '90vh'; // .p-dialog pre desktop ma max-height: 90%
526
- headerFooterHeight = XUtils_1.XUtils.toPX0('18.60rem'); // rucne zratane (desktop ma vecsi margin dole na dialogu)
597
+ headerFooterHeight = XUtils_1.XUtils.toPX0('13.03rem'); // rucne zratane (desktop ma vecsi margin dole na dialogu)
527
598
  }
528
599
  }
529
600
  // pridame vysku paging-u, ak treba
@@ -534,7 +605,7 @@ var XLazyDataTable = function (props) {
534
605
  if (props.formFooterHeight !== undefined) {
535
606
  headerFooterHeight += XUtils_1.XUtils.toPX0(XUtils_1.XUtils.processGridBreakpoints(props.formFooterHeight));
536
607
  }
537
- scrollHeight = "calc(" + viewHeight + " - " + headerFooterHeight + "px)";
608
+ scrollHeight = "calc(".concat(viewHeight, " - ").concat(headerFooterHeight, "px)");
538
609
  }
539
610
  }
540
611
  }
@@ -545,13 +616,14 @@ var XLazyDataTable = function (props) {
545
616
  if (props.shrinkWidth) {
546
617
  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
547
618
  }
548
- var tableStyle;
619
+ // pri prechode z Primereact 6.x na 9.x sa tableLayout zmenil z fixed na auto a nefungovalo nastavenie sirok stlpcov - docasne teda takto
620
+ var tableStyle = { tableLayout: 'fixed' };
549
621
  if (props.width !== undefined) {
550
622
  var width = props.width;
551
623
  if (!isNaN(Number(width))) { // if width is number
552
624
  width = width + 'rem';
553
625
  }
554
- tableStyle = { width: width };
626
+ tableStyle = __assign(__assign({}, tableStyle), { width: width });
555
627
  }
556
628
  // check
557
629
  if ((props.editMode === true || props.editMode === false) && props.editModeHandlers === undefined) {
@@ -606,6 +678,22 @@ var XLazyDataTable = function (props) {
606
678
  var dropdownValue = getDropdownFilterValue(childColumn.props.field);
607
679
  filterElement = react_1.default.createElement(XDropdownDTFilter_1.XDropdownDTFilter, { entity: props.entity, path: childColumn.props.field, value: dropdownValue, onValueChange: onDropdownFilterChange });
608
680
  }
681
+ // *********** showFilterMenu ***********
682
+ var showFilterMenu;
683
+ if (childColumn.props.showFilterMenu !== undefined) {
684
+ showFilterMenu = childColumn.props.showFilterMenu;
685
+ }
686
+ else {
687
+ showFilterMenu = true; // default
688
+ if (props.filterDisplay === "row") {
689
+ if (xField.type === "boolean" || childColumn.props.dropdownInFilter) {
690
+ showFilterMenu = false;
691
+ }
692
+ }
693
+ }
694
+ // *********** showClearButton ***********
695
+ // pre filterDisplay = "row" nechceme clear button, chceme setrit miesto
696
+ var showClearButton = props.filterDisplay === "menu";
609
697
  // *********** body ***********
610
698
  // TODO - mozno by bolo dobre vytvarat body pre kazdy field, nech je to vsetko konzistentne
611
699
  var body;
@@ -615,14 +703,17 @@ var XLazyDataTable = function (props) {
615
703
  // *********** width/headerStyle ***********
616
704
  var width = XUtils_1.XUtils.processPropWidth(childColumn.props.width);
617
705
  if (width === undefined || width === "default") {
618
- width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, undefined, headerLabel);
706
+ // TODO - if filter not used at all, then buttons flags should be false
707
+ var filterMenuInFilterRow = props.filterDisplay === "row" && showFilterMenu;
708
+ var filterButtonInHeader = props.filterDisplay === "menu";
709
+ width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, filterMenuInFilterRow, undefined, headerLabel, filterButtonInHeader);
619
710
  }
620
- var headerStyle;
711
+ var headerStyle = {};
621
712
  if (width !== undefined) {
622
713
  headerStyle = { width: width };
623
714
  }
624
715
  // *********** align ***********
625
- var align = "left"; // default
716
+ var align = undefined; // default undefined (left)
626
717
  if (childColumn.props.align !== undefined && childColumn.props.align !== null) {
627
718
  align = childColumn.props.align;
628
719
  }
@@ -635,20 +726,13 @@ var XLazyDataTable = function (props) {
635
726
  align = "center";
636
727
  }
637
728
  }
638
- // *********** style ***********
639
- var style;
640
- // TODO - pouzit className a nie style
641
- if (align === "center" || align === "right") {
642
- style = { 'textAlign': align };
643
- headerStyle = __assign(__assign({}, headerStyle), style); // headerStyle overrides style in TH cell
644
- }
645
- return react_1.default.createElement(column_1.Column, { field: childColumn.props.field, header: header, filter: true, sortable: true, filterElement: filterElement, body: body, headerStyle: headerStyle, style: style });
729
+ return react_1.default.createElement(column_1.Column, { field: childColumn.props.field, header: header, filter: true, sortable: true, filterElement: filterElement, showFilterMenu: showFilterMenu, showClearButton: showClearButton, body: body, headerStyle: headerStyle, align: align });
646
730
  });
647
731
  return (react_1.default.createElement("div", null,
648
732
  react_1.default.createElement("div", { className: "flex justify-content-center" },
649
733
  react_1.default.createElement(XButton_1.XButton, { label: "Filter", onClick: onClickFilter })),
650
734
  react_1.default.createElement("div", { className: "flex justify-content-center" },
651
- react_1.default.createElement(datatable_1.DataTable, { value: value.rowList, dataKey: dataKey, paginator: props.paginator, rows: rows, totalRecords: value.totalRecords, lazy: true, first: first, onPage: onPage, loading: loading, filters: filters, onFilter: onFilter, sortMode: "multiple", removableSort: true, multiSortMeta: multiSortMeta, onSort: onSort, selectionMode: "single", selection: selectedRow, onSelectionChange: onSelectionChange, onRowDoubleClick: onRowDoubleClick, ref: dataTableEl, className: "p-datatable-sm x-lazy-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, paginatorLeft: paginatorLeft, paginatorRight: paginatorRight, scrollable: props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
735
+ react_1.default.createElement(datatable_1.DataTable, { value: value.rowList, dataKey: dataKey, paginator: props.paginator, rows: rows, totalRecords: value.totalRecords, lazy: true, first: first, onPage: onPage, loading: loading, filterDisplay: props.filterDisplay, filters: filters, onFilter: onFilter, sortMode: "multiple", removableSort: true, multiSortMeta: multiSortMeta, onSort: onSort, selectionMode: "single", selection: selectedRow, onSelectionChange: onSelectionChange, onRowDoubleClick: onRowDoubleClick, ref: dataTableEl, className: "p-datatable-sm x-lazy-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, paginatorLeft: paginatorLeft, paginatorRight: paginatorRight, scrollable: props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
652
736
  react_1.default.createElement("div", { className: "flex justify-content-center" },
653
737
  props.onAddRow !== undefined ? react_1.default.createElement(XButton_1.XButton, { label: "Add row", onClick: onClickAddRow }) : null,
654
738
  props.onEdit !== undefined ? react_1.default.createElement(XButton_1.XButton, { label: "Edit", onClick: onClickEdit }) : null,
@@ -662,6 +746,7 @@ exports.XLazyDataTable = XLazyDataTable;
662
746
  exports.XLazyDataTable.defaultProps = {
663
747
  paginator: true,
664
748
  rows: 10,
749
+ filterDisplay: "row",
665
750
  scrollable: true,
666
751
  scrollWidth: 'viewport',
667
752
  scrollHeight: 'viewport',
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -33,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
33
37
  function verb(n) { return function (v) { return step([n, v]); }; }
34
38
  function step(op) {
35
39
  if (f) throw new TypeError("Generator is already executing.");
36
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
37
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
38
42
  if (y = 0, t) op = [op[0] & 2, t.value];
39
43
  switch (op[0]) {
@@ -78,8 +82,8 @@ var password_1 = require("primereact/password");
78
82
  var button_1 = require("primereact/button");
79
83
  var XUtils_1 = require("./XUtils");
80
84
  var XLoginForm = function (props) {
81
- var _a = __read(react_1.useState(""), 2), username = _a[0], setUsername = _a[1];
82
- var _b = __read(react_1.useState(""), 2), password = _b[0], setPassword = _b[1];
85
+ var _a = __read((0, react_1.useState)(""), 2), username = _a[0], setUsername = _a[1];
86
+ var _b = __read((0, react_1.useState)(""), 2), password = _b[0], setPassword = _b[1];
83
87
  var onClickLogIn = function () { return __awaiter(void 0, void 0, void 0, function () {
84
88
  var xUserAuthenticationRequest, xUserAuthenticationResponse, customUser;
85
89
  return __generator(this, function (_a) {
@@ -98,7 +102,7 @@ var XLoginForm = function (props) {
98
102
  _a.label = 3;
99
103
  case 3:
100
104
  // zatial si ulozime len username/password (koli http basic autentifikacii)
101
- props.setXToken({ username: username, password: password, customUser: customUser });
105
+ props.setXToken({ username: username, password: password, xUser: customUser });
102
106
  // metoda pouzivana v XLoginDialog
103
107
  if (props.onLogin) {
104
108
  props.onLogin();
@@ -20,7 +20,7 @@ var XResponseError = /** @class */ (function (_super) {
20
20
  __extends(XResponseError, _super);
21
21
  function XResponseError(path, status, statusText, body) {
22
22
  var _newTarget = this.constructor;
23
- var _this = _super.call(this, "Http request \"" + path + "\" failed. Status: " + status + ", status text: " + statusText) || this;
23
+ var _this = _super.call(this, "Http request \"".concat(path, "\" failed. Status: ").concat(status, ", status text: ").concat(statusText)) || this;
24
24
  // see: typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html
25
25
  Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain
26
26
  _this.name = XResponseError.name; // stack traces display correctly now
@@ -18,8 +18,7 @@ export declare class XSearchButton extends XFormComponent<XSearchButtonProps> {
18
18
  dialogOpened: boolean;
19
19
  };
20
20
  constructor(props: XSearchButtonProps);
21
- getFieldForEdit(): string | undefined;
22
- checkNotNull(): boolean;
23
- getValueFromObject(): any;
21
+ getField(): string;
22
+ isNotNull(): boolean;
24
23
  render(): JSX.Element;
25
24
  }