@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.
- package/LICENSE.md +21 -0
- package/XEnvVars.d.ts +3 -0
- package/XEnvVars.js +5 -0
- package/XInputTextarea.d.ts +3 -0
- package/XInputTextarea.js +5 -0
- package/gulpfile.js +2 -0
- package/lib/administration/XBrowseMetaForm.js +1 -1
- package/lib/administration/XUserBrowse.js +5 -4
- package/lib/administration/XUserForm.js +40 -28
- package/lib/components/SourceCodeLinkEntity.js +1 -1
- package/lib/components/XAutoComplete.d.ts +3 -3
- package/lib/components/XAutoComplete.js +16 -37
- package/lib/components/XAutoCompleteBase.d.ts +1 -1
- package/lib/components/XAutoCompleteBase.js +23 -22
- package/lib/components/XBrowse.js +7 -3
- package/lib/components/XChangePasswordForm.js +9 -5
- package/lib/components/XCheckbox.d.ts +8 -9
- package/lib/components/XCheckbox.js +38 -30
- package/lib/components/XDataTable.js +11 -7
- package/lib/components/XDropdown.d.ts +4 -3
- package/lib/components/XDropdown.js +21 -44
- package/lib/components/XDropdownDT.js +7 -3
- package/lib/components/XDropdownDTFilter.js +9 -5
- package/lib/components/XDropdownFormDTFilter.js +9 -5
- package/lib/components/XEditColumnDialog.js +9 -5
- package/lib/components/XEnvVars.d.ts +12 -0
- package/lib/components/XEnvVars.js +20 -0
- package/lib/components/XErrors.d.ts +1 -0
- package/lib/components/XExportRowsDialog.js +12 -6
- package/lib/components/XFieldSelector.js +8 -4
- package/lib/components/XFormBase.d.ts +1 -0
- package/lib/components/XFormBase.js +47 -21
- package/lib/components/XFormComponent.d.ts +10 -6
- package/lib/components/XFormComponent.js +60 -48
- package/lib/components/XFormDataTable2.d.ts +8 -3
- package/lib/components/XFormDataTable2.js +106 -28
- package/lib/components/XFormNavigator3.js +14 -6
- package/lib/components/XInput.d.ts +13 -0
- package/lib/components/XInput.js +38 -0
- package/lib/components/XInputDate.js +1 -1
- package/lib/components/XInputDateDT.js +1 -1
- package/lib/components/XInputText.d.ts +6 -11
- package/lib/components/XInputText.js +14 -49
- package/lib/components/XInputTextDT.js +2 -3
- package/lib/components/XInputTextarea.d.ts +18 -0
- package/lib/components/XInputTextarea.js +85 -0
- package/lib/components/XLazyDataTable.d.ts +3 -0
- package/lib/components/XLazyDataTable.js +162 -77
- package/lib/components/XLoginForm.js +9 -5
- package/lib/components/XResponseError.js +1 -1
- package/lib/components/XSearchButton.d.ts +2 -3
- package/lib/components/XSearchButton.js +12 -35
- package/lib/components/XSearchButtonDT.js +10 -6
- package/lib/components/XSearchButtonOld.js +10 -6
- package/lib/components/XToken.d.ts +4 -3
- package/lib/components/XUtils.d.ts +13 -4
- package/lib/components/XUtils.js +90 -15
- package/lib/components/XUtilsConversions.js +10 -2
- package/lib/components/XUtilsMetadata.d.ts +1 -1
- package/lib/components/XUtilsMetadata.js +20 -11
- package/lib/components/useXToken.js +1 -1
- package/lib/serverApi/ExportImportParam.d.ts +3 -3
- package/lib/serverApi/FindParam.d.ts +3 -13
- package/lib/serverApi/FindParam.js +14 -0
- package/lib/serverApi/XUser.d.ts +1 -0
- package/lib/serverApi/XUtilsCommon.js +2 -2
- 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.
|
|
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
|
-
|
|
112
|
-
var
|
|
113
|
-
var
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
|
274
|
+
var e_2, _a;
|
|
214
275
|
var fields = [];
|
|
215
276
|
var columns = dataTableEl.current.props.children;
|
|
216
277
|
try {
|
|
217
|
-
for (var
|
|
218
|
-
var column =
|
|
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 (
|
|
283
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
223
284
|
finally {
|
|
224
285
|
try {
|
|
225
|
-
if (
|
|
286
|
+
if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
|
|
226
287
|
}
|
|
227
|
-
finally { if (
|
|
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
|
|
295
|
+
var e_3, _a;
|
|
235
296
|
var headers = [];
|
|
236
297
|
var columns = dataTableEl.current.props.children;
|
|
237
298
|
try {
|
|
238
|
-
for (var
|
|
239
|
-
var column =
|
|
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 (
|
|
305
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
245
306
|
finally {
|
|
246
307
|
try {
|
|
247
|
-
if (
|
|
308
|
+
if (columns_3_1 && !columns_3_1.done && (_a = columns_3.return)) _a.call(columns_3);
|
|
248
309
|
}
|
|
249
|
-
finally { if (
|
|
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,
|
|
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
|
-
|
|
302
|
-
XUtils_1.XUtils.showErrorMessage("Remove row failed.",
|
|
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
|
-
|
|
322
|
-
XUtils_1.XUtils.showErrorMessage("Remove row failed.",
|
|
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,
|
|
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
|
-
|
|
375
|
-
XUtils_1.XUtils.showErrorMessage("Export failed.",
|
|
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
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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('
|
|
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('
|
|
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("
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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 \""
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
getValueFromObject(): any;
|
|
21
|
+
getField(): string;
|
|
22
|
+
isNotNull(): boolean;
|
|
24
23
|
render(): JSX.Element;
|
|
25
24
|
}
|