@michalrakus/x-react-web-lib 1.0.0 → 1.2.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 (98) hide show
  1. package/FindParam.d.ts +3 -0
  2. package/FindParam.js +5 -0
  3. package/LICENSE.md +21 -0
  4. package/XButtonIconNarrow.d.ts +3 -0
  5. package/XButtonIconNarrow.js +5 -0
  6. package/XButtonIconSmall.d.ts +3 -0
  7. package/XButtonIconSmall.js +5 -0
  8. package/XFieldChangeEvent.d.ts +3 -0
  9. package/XFieldChangeEvent.js +5 -0
  10. package/XInputTextarea.d.ts +3 -0
  11. package/XInputTextarea.js +5 -0
  12. package/gulpfile.js +5 -0
  13. package/lib/administration/XBrowseMetaBrowse.js +2 -1
  14. package/lib/administration/XBrowseMetaForm.js +4 -2
  15. package/lib/administration/XUserBrowse.js +3 -2
  16. package/lib/administration/XUserForm.js +5 -3
  17. package/lib/components/SearchTableParams.d.ts +8 -2
  18. package/lib/components/SourceCodeLinkEntity.js +3 -2
  19. package/lib/components/XAutoComplete.d.ts +10 -7
  20. package/lib/components/XAutoComplete.js +37 -41
  21. package/lib/components/XAutoCompleteBase.d.ts +8 -5
  22. package/lib/components/XAutoCompleteBase.js +86 -43
  23. package/lib/components/XAutoCompleteDT.d.ts +33 -0
  24. package/lib/components/XAutoCompleteDT.js +141 -0
  25. package/lib/components/XBrowse.js +11 -5
  26. package/lib/components/XButton.d.ts +3 -1
  27. package/lib/components/XButton.js +3 -2
  28. package/lib/components/XButtonIconNarrow.d.ts +10 -0
  29. package/lib/components/XButtonIconNarrow.js +25 -0
  30. package/lib/components/XButtonIconSmall.d.ts +3 -1
  31. package/lib/components/XButtonIconSmall.js +2 -1
  32. package/lib/components/XChangePasswordForm.js +12 -7
  33. package/lib/components/XCheckbox.d.ts +8 -10
  34. package/lib/components/XCheckbox.js +39 -31
  35. package/lib/components/XCheckboxDT.js +2 -1
  36. package/lib/components/XDataTable.js +16 -10
  37. package/lib/components/XDropdown.d.ts +7 -5
  38. package/lib/components/XDropdown.js +24 -45
  39. package/lib/components/XDropdownDT.js +10 -5
  40. package/lib/components/XDropdownDTFilter.js +12 -7
  41. package/lib/components/XDropdownFormDTFilter.js +12 -7
  42. package/lib/components/XEditColumnDialog.js +12 -7
  43. package/lib/components/XErrors.d.ts +1 -0
  44. package/lib/components/XExportRowsDialog.js +13 -8
  45. package/lib/components/XFieldChangeEvent.d.ts +11 -0
  46. package/lib/components/XFieldChangeEvent.js +2 -0
  47. package/lib/components/XFieldSelector.js +11 -6
  48. package/lib/components/XFormBase.d.ts +17 -8
  49. package/lib/components/XFormBase.js +127 -48
  50. package/lib/components/XFormBaseT.js +3 -1
  51. package/lib/components/XFormComponent.d.ts +19 -7
  52. package/lib/components/XFormComponent.js +89 -49
  53. package/lib/components/XFormComponentDT.d.ts +30 -0
  54. package/lib/components/XFormComponentDT.js +119 -0
  55. package/lib/components/XFormDataTable2.d.ts +53 -8
  56. package/lib/components/XFormDataTable2.js +270 -57
  57. package/lib/components/XFormFooter.js +2 -1
  58. package/lib/components/XFormNavigator3.js +18 -7
  59. package/lib/components/XHolders.js +4 -2
  60. package/lib/components/XInput.d.ts +13 -0
  61. package/lib/components/XInput.js +38 -0
  62. package/lib/components/XInputDT.d.ts +11 -0
  63. package/lib/components/XInputDT.js +37 -0
  64. package/lib/components/XInputDate.d.ts +2 -1
  65. package/lib/components/XInputDate.js +7 -4
  66. package/lib/components/XInputDateDT.js +3 -2
  67. package/lib/components/XInputDecimal.d.ts +9 -2
  68. package/lib/components/XInputDecimal.js +63 -45
  69. package/lib/components/XInputDecimalDT.d.ts +10 -8
  70. package/lib/components/XInputDecimalDT.js +59 -36
  71. package/lib/components/XInputText.d.ts +7 -11
  72. package/lib/components/XInputText.js +22 -49
  73. package/lib/components/XInputTextDT.js +4 -4
  74. package/lib/components/XInputTextarea.d.ts +18 -0
  75. package/lib/components/XInputTextarea.js +85 -0
  76. package/lib/components/XLazyDataTable.d.ts +8 -0
  77. package/lib/components/XLazyDataTable.js +187 -85
  78. package/lib/components/XLoginDialog.js +2 -1
  79. package/lib/components/XLoginForm.js +11 -6
  80. package/lib/components/XResponseError.js +4 -2
  81. package/lib/components/XSearchButton.d.ts +8 -7
  82. package/lib/components/XSearchButton.js +32 -51
  83. package/lib/components/XSearchButtonDT.js +15 -10
  84. package/lib/components/XSearchButtonOld.js +13 -8
  85. package/lib/components/XToOneAssocButton.js +2 -1
  86. package/lib/components/XUtils.d.ts +13 -1
  87. package/lib/components/XUtils.js +125 -5
  88. package/lib/components/XUtilsConversions.d.ts +1 -0
  89. package/lib/components/XUtilsConversions.js +24 -3
  90. package/lib/components/XUtilsMetadata.d.ts +4 -1
  91. package/lib/components/XUtilsMetadata.js +62 -14
  92. package/lib/components/useXToken.js +1 -1
  93. package/lib/serverApi/ExportImportParam.d.ts +3 -3
  94. package/lib/serverApi/FindParam.d.ts +12 -14
  95. package/lib/serverApi/FindParam.js +14 -0
  96. package/lib/serverApi/XUtilsCommon.d.ts +1 -0
  97. package/lib/serverApi/XUtilsCommon.js +6 -2
  98. package/package.json +24 -25
@@ -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];
@@ -25,7 +29,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
25
29
  var __importStar = (this && this.__importStar) || function (mod) {
26
30
  if (mod && mod.__esModule) return mod;
27
31
  var result = {};
28
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
33
  __setModuleDefault(result, mod);
30
34
  return result;
31
35
  };
@@ -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,97 @@ 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");
110
- exports.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 = {};
117
- if (props.searchTableParams !== undefined && props.searchTableParams.filter !== undefined) {
118
- filtersInit[props.searchTableParams.displayField] = { value: props.searchTableParams.filter, matchMode: "startsWith" };
114
+ var api_1 = require("primereact/api");
115
+ var XLazyDataTable = function (props) {
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
+ initFilters[field] = createFilterItem(props.filterDisplay, { value: null, matchMode: filterMatchMode });
132
+ }
133
+ }
134
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
135
+ finally {
136
+ try {
137
+ if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
138
+ }
139
+ finally { if (e_1) throw e_1.error; }
140
+ }
141
+ return initFilters;
142
+ };
143
+ var getFilterMatchMode = function (xField) {
144
+ var filterMatchMode;
145
+ if (xField.type === "string") {
146
+ filterMatchMode = api_1.FilterMatchMode.STARTS_WITH;
147
+ }
148
+ // zatial vsetky ostatne EQUALS
149
+ else if (xField.type === "decimal" || xField.type === "number" || xField.type === "date" || xField.type === "datetime" || xField.type === "boolean") {
150
+ filterMatchMode = api_1.FilterMatchMode.EQUALS;
151
+ }
152
+ else {
153
+ throw "XField ".concat(xField.name, ": unknown xField.type = ").concat(xField.type);
154
+ }
155
+ return filterMatchMode;
156
+ };
157
+ var createFilterItem = function (filterDisplay, constraint) {
158
+ var filterItem;
159
+ if (filterDisplay === "menu") {
160
+ // DataTableOperatorFilterMetaData: operator + filter values
161
+ filterItem = {
162
+ operator: api_1.FilterOperator.OR,
163
+ constraints: [constraint]
164
+ };
165
+ }
166
+ else {
167
+ // props.filterDisplay === "row"
168
+ // DataTableFilterMetaData: filter value
169
+ filterItem = constraint;
170
+ }
171
+ return filterItem;
172
+ };
173
+ // premenne platne pre cely component (obdoba member premennych v class-e)
174
+ var dataTableEl = (0, react_1.useRef)(null);
175
+ var customFilter = props.customFilter;
176
+ var _a = __read((0, react_1.useState)({ rowList: [], totalRecords: 0 }), 2), value = _a[0], setValue = _a[1];
177
+ var _b = __read((0, react_1.useState)(false), 2), loading = _b[0], setLoading = _b[1];
178
+ var _c = __read((0, react_1.useState)(0), 2), first = _c[0], setFirst = _c[1];
179
+ var _d = __read((0, react_1.useState)(props.paginator ? props.rows : undefined), 2), rows = _d[0], setRows = _d[1];
180
+ var filtersInit = createInitFilters();
181
+ if (props.searchTableParams !== undefined) {
182
+ var displayFieldFilter = props.searchTableParams.displayFieldFilter;
183
+ if (displayFieldFilter !== undefined) {
184
+ filtersInit[displayFieldFilter.field] = createFilterItem(props.filterDisplay, displayFieldFilter.constraint);
185
+ }
186
+ // ak mame props.searchTableParams.customFilter, pridame ho
187
+ customFilter = XUtils_1.XUtils.filterAnd(customFilter, props.searchTableParams.customFilter);
119
188
  }
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)
189
+ 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)
190
+ var _f = __read((0, react_1.useState)(props.initSortField ? [{ field: props.initSortField, order: 1 }] : []), 2), multiSortMeta = _f[0], setMultiSortMeta = _f[1];
191
+ var _g = __read((0, react_1.useState)(null), 2), selectedRow = _g[0], setSelectedRow = _g[1];
192
+ var _h = __read((0, react_1.useState)(false), 2), dataLoaded = _h[0], setDataLoaded = _h[1]; // priznak kde si zapiseme, ci uz sme nacitali data
193
+ var _j = __read((0, react_1.useState)(false), 2), exportRowsDialogOpened = _j[0], setExportRowsDialogOpened = _j[1];
194
+ var _k = __read((0, react_1.useState)(), 2), exportRowsDialogRowCount = _k[0], setExportRowsDialogRowCount = _k[1]; // param pre dialog
195
+ 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
196
  // parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
128
- react_1.useEffect(function () {
197
+ (0, react_1.useEffect)(function () {
129
198
  // jednoduchy sposob - nepouzivame parameter props.displayed a priznak dataLoaded
130
199
  if (props.displayed === undefined) {
131
200
  loadData();
132
201
  //console.log("XLazyDataTable - data loaded (simple)");
133
202
  }
134
203
  }, []); // eslint-disable-line react-hooks/exhaustive-deps
135
- react_1.useEffect(function () {
204
+ (0, react_1.useEffect)(function () {
136
205
  // sposob pozivany pri XFormNavigator (potrebujeme refreshnut data pri navrate z formulara)
137
206
  if (props.displayed !== undefined) {
138
207
  if (props.displayed) {
@@ -150,12 +219,13 @@ exports.XLazyDataTable = function (props) {
150
219
  }
151
220
  }
152
221
  }); // eslint-disable-line react-hooks/exhaustive-deps
222
+ // TODO - preco je to tu? presunut dole ak sa da...
153
223
  var dataKey = props.dataKey !== undefined ? props.dataKey : XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity).idField;
154
224
  var onPage = function (event) { return __awaiter(void 0, void 0, void 0, function () {
155
225
  return __generator(this, function (_a) {
156
226
  //console.log("zavolany onPage");
157
227
  setFirst(event.first);
158
- loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: event.first, rows: rows, filters: filters, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() });
228
+ loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: event.first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() });
159
229
  return [2 /*return*/];
160
230
  });
161
231
  }); };
@@ -169,14 +239,14 @@ exports.XLazyDataTable = function (props) {
169
239
  //console.log("zavolany onSort - this.state.multiSortMeta = " + JSON.stringify(multiSortMeta));
170
240
  //console.log("zavolany onSort - event.multiSortMeta = " + JSON.stringify(event.multiSortMeta));
171
241
  setMultiSortMeta(event.multiSortMeta);
172
- loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, multiSortMeta: event.multiSortMeta, entity: props.entity, fields: getFields() });
242
+ loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: event.multiSortMeta, entity: props.entity, fields: getFields() });
173
243
  };
174
244
  var onClickFilter = function () {
175
245
  //console.log("zavolany onClickFilter");
176
246
  loadData();
177
247
  };
178
248
  var loadData = function () {
179
- loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() });
249
+ loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() });
180
250
  };
181
251
  var loadDataBase = function (findParam) { return __awaiter(void 0, void 0, void 0, function () {
182
252
  var findResult;
@@ -210,43 +280,43 @@ exports.XLazyDataTable = function (props) {
210
280
  var getFields = function () {
211
281
  // krasne zobrazi cely objekt!
212
282
  //console.log(dataTableEl.current);
213
- var e_1, _a;
283
+ var e_2, _a;
214
284
  var fields = [];
215
285
  var columns = dataTableEl.current.props.children;
216
286
  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;
287
+ for (var columns_2 = __values(columns), columns_2_1 = columns_2.next(); !columns_2_1.done; columns_2_1 = columns_2.next()) {
288
+ var column = columns_2_1.value;
219
289
  fields.push(column.props.field);
220
290
  }
221
291
  }
222
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
292
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
223
293
  finally {
224
294
  try {
225
- if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
295
+ if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
226
296
  }
227
- finally { if (e_1) throw e_1.error; }
297
+ finally { if (e_2) throw e_2.error; }
228
298
  }
229
299
  return fields;
230
300
  };
231
301
  var getHeaders = function () {
232
302
  // krasne zobrazi cely objekt!
233
303
  //console.log(dataTableEl.current);
234
- var e_2, _a;
304
+ var e_3, _a;
235
305
  var headers = [];
236
306
  var columns = dataTableEl.current.props.children;
237
307
  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;
308
+ for (var columns_3 = __values(columns), columns_3_1 = columns_3.next(); !columns_3_1.done; columns_3_1 = columns_3.next()) {
309
+ var column = columns_3_1.value;
240
310
  // pozor! headers tahame z primereact DataTable a napr. pri editacii nemusi byt v atribute header string
241
311
  headers.push(column.props.header);
242
312
  }
243
313
  }
244
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
314
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
245
315
  finally {
246
316
  try {
247
- if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
317
+ if (columns_3_1 && !columns_3_1.done && (_a = columns_3.return)) _a.call(columns_3);
248
318
  }
249
- finally { if (e_2) throw e_2.error; }
319
+ finally { if (e_3) throw e_3.error; }
250
320
  }
251
321
  return headers;
252
322
  };
@@ -283,7 +353,7 @@ exports.XLazyDataTable = function (props) {
283
353
  }
284
354
  };
285
355
  var onClickRemoveRow = function () { return __awaiter(void 0, void 0, void 0, function () {
286
- var reread, e_3, e_4;
356
+ var reread, e_4, e_5;
287
357
  return __generator(this, function (_a) {
288
358
  switch (_a.label) {
289
359
  case 0:
@@ -298,12 +368,15 @@ exports.XLazyDataTable = function (props) {
298
368
  reread = _a.sent();
299
369
  return [3 /*break*/, 4];
300
370
  case 3:
301
- e_3 = _a.sent();
302
- XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_3);
371
+ e_4 = _a.sent();
372
+ XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_4);
303
373
  return [3 /*break*/, 4];
304
374
  case 4:
305
375
  if (reread) {
306
376
  loadData();
377
+ if (props.onRemoveRow) {
378
+ props.onRemoveRow(selectedRow, XUtils_1.OperationType.Remove);
379
+ }
307
380
  }
308
381
  return [3 /*break*/, 10];
309
382
  case 5:
@@ -318,11 +391,14 @@ exports.XLazyDataTable = function (props) {
318
391
  _a.sent();
319
392
  return [3 /*break*/, 9];
320
393
  case 8:
321
- e_4 = _a.sent();
322
- XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_4);
394
+ e_5 = _a.sent();
395
+ XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_5);
323
396
  return [3 /*break*/, 9];
324
397
  case 9:
325
398
  loadData();
399
+ if (props.onRemoveRow) {
400
+ props.onRemoveRow(selectedRow, XUtils_1.OperationType.Remove);
401
+ }
326
402
  _a.label = 10;
327
403
  case 10: return [3 /*break*/, 12];
328
404
  case 11:
@@ -337,7 +413,7 @@ exports.XLazyDataTable = function (props) {
337
413
  return __generator(this, function (_a) {
338
414
  switch (_a.label) {
339
415
  case 0:
340
- findParam = { resultType: FindParam_1.ResultType.OnlyRowCount, first: first, rows: rows, filters: filtersAfterFiltering, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() };
416
+ findParam = { resultType: FindParam_1.ResultType.OnlyRowCount, first: first, rows: rows, filters: filtersAfterFiltering, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() };
341
417
  return [4 /*yield*/, findByFilter(findParam)];
342
418
  case 1:
343
419
  findResult = _a.sent();
@@ -349,7 +425,7 @@ exports.XLazyDataTable = function (props) {
349
425
  });
350
426
  }); };
351
427
  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;
428
+ var path, exportParam, response, e_6, fileExt, fileName, respBlob, url, a;
353
429
  return __generator(this, function (_a) {
354
430
  switch (_a.label) {
355
431
  case 0:
@@ -371,12 +447,12 @@ exports.XLazyDataTable = function (props) {
371
447
  response = _a.sent();
372
448
  return [3 /*break*/, 4];
373
449
  case 3:
374
- e_5 = _a.sent();
375
- XUtils_1.XUtils.showErrorMessage("Export failed.", e_5);
450
+ e_6 = _a.sent();
451
+ XUtils_1.XUtils.showErrorMessage("Export failed.", e_6);
376
452
  return [2 /*return*/];
377
453
  case 4:
378
454
  fileExt = exportType;
379
- fileName = props.entity + "." + fileExt;
455
+ fileName = "".concat(props.entity, ".").concat(fileExt);
380
456
  return [4 /*yield*/, response.blob()];
381
457
  case 5:
382
458
  respBlob = _a.sent();
@@ -400,15 +476,18 @@ exports.XLazyDataTable = function (props) {
400
476
  console.log("Nie je vyselectovany ziaden zaznam.");
401
477
  }
402
478
  };
479
+ // ****** checkbox vo filtri ********
480
+ // pouziva sa len pre simple filtrovanie (filterDisplay="row")
403
481
  var onCheckboxFilterChange = function (field, checkboxValue) {
404
482
  // TODO - treba vyklonovat?
405
483
  var filtersCloned = __assign({}, filters);
406
484
  if (checkboxValue !== null) {
407
- filtersCloned[field] = { value: checkboxValue ? "1" : "0", matchMode: "equals" };
485
+ filtersCloned[field] = { value: checkboxValue ? "1" : "0", matchMode: api_1.FilterMatchMode.EQUALS };
408
486
  }
409
487
  else {
410
488
  // pouzivatel zrusil hodnotu vo filtri (vybral prazdny stav v checkboxe), zrusime polozku z filtra
411
- delete filtersCloned[field];
489
+ //delete filtersCloned[field];
490
+ filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
412
491
  }
413
492
  setFilters(filtersCloned);
414
493
  };
@@ -425,15 +504,18 @@ exports.XLazyDataTable = function (props) {
425
504
  }
426
505
  return checkboxValue;
427
506
  };
507
+ // ****** dropdown vo filtri ********
508
+ // pouziva sa len pre simple filtrovanie (filterDisplay="row")
428
509
  var onDropdownFilterChange = function (field, displayValue) {
429
510
  // TODO - treba vyklonovat?
430
511
  var filtersCloned = __assign({}, filters);
431
512
  if (displayValue !== XUtils_1.XUtils.dropdownEmptyOptionValue) {
432
- filtersCloned[field] = { value: displayValue, matchMode: "equals" };
513
+ filtersCloned[field] = { value: displayValue, matchMode: api_1.FilterMatchMode.EQUALS };
433
514
  }
434
515
  else {
435
516
  // pouzivatel zrusil hodnotu vo filtri (vybral prazdny riadok), zrusime polozku z filtra
436
- delete filtersCloned[field];
517
+ //delete filtersCloned[field];
518
+ filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
437
519
  }
438
520
  setFilters(filtersCloned);
439
521
  };
@@ -441,7 +523,9 @@ exports.XLazyDataTable = function (props) {
441
523
  var dropdownValue = XUtils_1.XUtils.dropdownEmptyOptionValue;
442
524
  var filterValue = filters[field];
443
525
  if (filterValue !== undefined && filterValue !== null) {
444
- dropdownValue = filterValue.value;
526
+ if (filterValue.value !== null) {
527
+ dropdownValue = filterValue.value;
528
+ }
445
529
  }
446
530
  return dropdownValue;
447
531
  };
@@ -457,7 +541,7 @@ exports.XLazyDataTable = function (props) {
457
541
  else if (typeof rowDataValue === 'number') {
458
542
  numberValue = rowDataValue;
459
543
  }
460
- bodyValue = XUtilsConversions_1.numberAsUI(numberValue, xField.scale);
544
+ bodyValue = (0, XUtilsConversions_1.numberAsUI)(numberValue, xField.scale);
461
545
  }
462
546
  else if (xField.type === "date") {
463
547
  // tuto zatial hack, mal by prist Date
@@ -468,7 +552,7 @@ exports.XLazyDataTable = function (props) {
468
552
  else if (typeof rowDataValue === 'object' && rowDataValue instanceof Date) {
469
553
  dateValue = rowDataValue;
470
554
  }
471
- bodyValue = XUtilsConversions_1.dateAsUI(dateValue);
555
+ bodyValue = (0, XUtilsConversions_1.dateAsUI)(dateValue);
472
556
  }
473
557
  else if (xField.type === "datetime") {
474
558
  // tuto zatial hack, mal by prist Date
@@ -479,7 +563,7 @@ exports.XLazyDataTable = function (props) {
479
563
  else if (typeof rowDataValue === 'object' && rowDataValue instanceof Date) {
480
564
  dateValue = rowDataValue;
481
565
  }
482
- bodyValue = XUtilsConversions_1.datetimeAsUI(dateValue);
566
+ bodyValue = (0, XUtilsConversions_1.datetimeAsUI)(dateValue);
483
567
  }
484
568
  else if (xField.type === "boolean") {
485
569
  // TODO - efektivnejsie by bolo renderovat len prislusne ikonky
@@ -487,8 +571,7 @@ exports.XLazyDataTable = function (props) {
487
571
  }
488
572
  return bodyValue;
489
573
  };
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)
574
+ // ak mame scrollWidth/scrollHeight = viewport (default), vyratame scrollWidth/scrollHeight tak aby tabulka "sadla" do okna (viewport-u)
492
575
  var scrollWidth = undefined; // vypnute horizontalne scrollovanie
493
576
  var scrollHeight = undefined; // vypnute vertikalne scrollovanie
494
577
  if (props.scrollable) {
@@ -513,17 +596,20 @@ exports.XLazyDataTable = function (props) {
513
596
  if (props.searchTableParams === undefined) {
514
597
  // sme v standardnom formulari
515
598
  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
599
+ // experimentalne zistena vyska header/footer
600
+ // 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);)
601
+ // (treba odratat vysku paginatora a formFooterHeight (lebo tie sa odratavaju nizsie))
602
+ headerFooterHeight = XUtils_1.XUtils.toPX0('10.89rem');
517
603
  }
518
604
  else {
519
605
  // sme v dialogu
520
606
  if (XUtils_1.XUtils.isMobile()) {
521
607
  viewHeight = '98vh'; // .p-dialog pre mobil ma max-height: 98%
522
- headerFooterHeight = XUtils_1.XUtils.toPX0('17.60rem'); // rucne zratane
608
+ headerFooterHeight = XUtils_1.XUtils.toPX0('12.03rem'); // rucne zratane
523
609
  }
524
610
  else {
525
611
  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)
612
+ headerFooterHeight = XUtils_1.XUtils.toPX0('13.03rem'); // rucne zratane (desktop ma vecsi margin dole na dialogu)
527
613
  }
528
614
  }
529
615
  // pridame vysku paging-u, ak treba
@@ -534,7 +620,7 @@ exports.XLazyDataTable = function (props) {
534
620
  if (props.formFooterHeight !== undefined) {
535
621
  headerFooterHeight += XUtils_1.XUtils.toPX0(XUtils_1.XUtils.processGridBreakpoints(props.formFooterHeight));
536
622
  }
537
- scrollHeight = "calc(" + viewHeight + " - " + headerFooterHeight + "px)";
623
+ scrollHeight = "calc(".concat(viewHeight, " - ").concat(headerFooterHeight, "px)");
538
624
  }
539
625
  }
540
626
  }
@@ -545,13 +631,14 @@ exports.XLazyDataTable = function (props) {
545
631
  if (props.shrinkWidth) {
546
632
  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
633
  }
548
- var tableStyle;
634
+ // pri prechode z Primereact 6.x na 9.x sa tableLayout zmenil z fixed na auto a nefungovalo nastavenie sirok stlpcov - docasne teda takto
635
+ var tableStyle = { tableLayout: 'fixed' };
549
636
  if (props.width !== undefined) {
550
637
  var width = props.width;
551
638
  if (!isNaN(Number(width))) { // if width is number
552
639
  width = width + 'rem';
553
640
  }
554
- tableStyle = { width: width };
641
+ tableStyle = __assign(__assign({}, tableStyle), { width: width });
555
642
  }
556
643
  // check
557
644
  if ((props.editMode === true || props.editMode === false) && props.editModeHandlers === undefined) {
@@ -606,6 +693,22 @@ exports.XLazyDataTable = function (props) {
606
693
  var dropdownValue = getDropdownFilterValue(childColumn.props.field);
607
694
  filterElement = react_1.default.createElement(XDropdownDTFilter_1.XDropdownDTFilter, { entity: props.entity, path: childColumn.props.field, value: dropdownValue, onValueChange: onDropdownFilterChange });
608
695
  }
696
+ // *********** showFilterMenu ***********
697
+ var showFilterMenu;
698
+ if (childColumn.props.showFilterMenu !== undefined) {
699
+ showFilterMenu = childColumn.props.showFilterMenu;
700
+ }
701
+ else {
702
+ showFilterMenu = true; // default
703
+ if (props.filterDisplay === "row") {
704
+ if (xField.type === "boolean" || childColumn.props.dropdownInFilter) {
705
+ showFilterMenu = false;
706
+ }
707
+ }
708
+ }
709
+ // *********** showClearButton ***********
710
+ // pre filterDisplay = "row" nechceme clear button, chceme setrit miesto
711
+ var showClearButton = props.filterDisplay === "menu";
609
712
  // *********** body ***********
610
713
  // TODO - mozno by bolo dobre vytvarat body pre kazdy field, nech je to vsetko konzistentne
611
714
  var body;
@@ -615,14 +718,17 @@ exports.XLazyDataTable = function (props) {
615
718
  // *********** width/headerStyle ***********
616
719
  var width = XUtils_1.XUtils.processPropWidth(childColumn.props.width);
617
720
  if (width === undefined || width === "default") {
618
- width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, undefined, headerLabel);
721
+ // TODO - if filter not used at all, then buttons flags should be false
722
+ var filterMenuInFilterRow = props.filterDisplay === "row" && showFilterMenu;
723
+ var filterButtonInHeader = props.filterDisplay === "menu";
724
+ width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, filterMenuInFilterRow, undefined, headerLabel, true, filterButtonInHeader);
619
725
  }
620
726
  var headerStyle = {};
621
727
  if (width !== undefined) {
622
728
  headerStyle = { width: width };
623
729
  }
624
730
  // *********** align ***********
625
- var align = "left"; // default
731
+ var align = undefined; // default undefined (left)
626
732
  if (childColumn.props.align !== undefined && childColumn.props.align !== null) {
627
733
  align = childColumn.props.align;
628
734
  }
@@ -635,20 +741,13 @@ exports.XLazyDataTable = function (props) {
635
741
  align = "center";
636
742
  }
637
743
  }
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 });
744
+ 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
745
  });
647
746
  return (react_1.default.createElement("div", null,
648
747
  react_1.default.createElement("div", { className: "flex justify-content-center" },
649
748
  react_1.default.createElement(XButton_1.XButton, { label: "Filter", onClick: onClickFilter })),
650
749
  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)),
750
+ 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
751
  react_1.default.createElement("div", { className: "flex justify-content-center" },
653
752
  props.onAddRow !== undefined ? react_1.default.createElement(XButton_1.XButton, { label: "Add row", onClick: onClickAddRow }) : null,
654
753
  props.onEdit !== undefined ? react_1.default.createElement(XButton_1.XButton, { label: "Edit", onClick: onClickEdit }) : null,
@@ -658,16 +757,19 @@ exports.XLazyDataTable = function (props) {
658
757
  props.searchTableParams !== undefined ? react_1.default.createElement(XButton_1.XButton, { label: "Choose", onClick: onClickChoose }) : null,
659
758
  exportRows ? react_1.default.createElement(XExportRowsDialog_1.XExportRowsDialog, { dialogOpened: exportRowsDialogOpened, rowCount: exportRowsDialogRowCount, onHideDialog: exportRowsDialogOnHide }) : null)));
660
759
  };
760
+ exports.XLazyDataTable = XLazyDataTable;
661
761
  exports.XLazyDataTable.defaultProps = {
662
762
  paginator: true,
663
763
  rows: 10,
764
+ filterDisplay: "row",
664
765
  scrollable: true,
665
766
  scrollWidth: 'viewport',
666
767
  scrollHeight: 'viewport',
667
768
  shrinkWidth: true
668
769
  };
669
770
  // TODO - XLazyColumn neni idealny nazov, lepsi je XColumn (ale zatial nechame XLazyColumn)
670
- exports.XLazyColumn = function (props) {
771
+ var XLazyColumn = function (props) {
671
772
  // nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
672
773
  return (null);
673
774
  };
775
+ exports.XLazyColumn = XLazyColumn;
@@ -7,7 +7,7 @@ exports.XLoginDialog = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var dialog_1 = require("primereact/dialog");
9
9
  var XLoginForm_1 = require("./XLoginForm");
10
- exports.XLoginDialog = function (props) {
10
+ var XLoginDialog = function (props) {
11
11
  // bez tejto metody by pri opetovnom otvoreni dialogu ponechal povodne hodnoty
12
12
  var onShow = function () {
13
13
  };
@@ -18,3 +18,4 @@ exports.XLoginDialog = function (props) {
18
18
  return (react_1.default.createElement(dialog_1.Dialog, { visible: props.dialogOpened, onShow: onShow, onHide: function () { return props.onHideDialog(false); } },
19
19
  react_1.default.createElement(XLoginForm_1.XLoginForm, { setXToken: props.setXToken, onLogin: onLogin, customUserService: props.customUserService })));
20
20
  };
21
+ exports.XLoginDialog = XLoginDialog;
@@ -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];
@@ -14,7 +18,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
18
  var __importStar = (this && this.__importStar) || function (mod) {
15
19
  if (mod && mod.__esModule) return mod;
16
20
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
22
  __setModuleDefault(result, mod);
19
23
  return result;
20
24
  };
@@ -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]) {
@@ -77,9 +81,9 @@ var react_1 = __importStar(require("react"));
77
81
  var password_1 = require("primereact/password");
78
82
  var button_1 = require("primereact/button");
79
83
  var XUtils_1 = require("./XUtils");
80
- exports.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];
84
+ var XLoginForm = function (props) {
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) {
@@ -121,3 +125,4 @@ exports.XLoginForm = function (props) {
121
125
  react_1.default.createElement(password_1.Password, { id: "password", value: password, onChange: function (e) { return setPassword(e.target.value); }, feedback: false, maxLength: 64 })),
122
126
  react_1.default.createElement(button_1.Button, { label: "Log in", onClick: onClickLogIn })));
123
127
  };
128
+ exports.XLoginForm = XLoginForm;