@michalrakus/x-react-web-lib 1.35.1 → 1.35.2
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/lib/components/XAutoCompleteBase.js +13 -3
- package/lib/components/XFormBase.d.ts +1 -0
- package/lib/components/XFormBase.js +14 -4
- package/lib/components/XFormDialog.d.ts +3 -2
- package/lib/components/XFormDialog.js +7 -5
- package/lib/components/XFormNavigator3.d.ts +3 -0
- package/lib/components/XFormNavigator3.js +3 -0
- package/lib/components/XLazyDataTable/XLazyDataTable.d.ts +11 -3
- package/lib/components/XLazyDataTable/XLazyDataTable.js +56 -37
- package/lib/components/XUtils.d.ts +6 -0
- package/lib/components/XUtils.js +14 -0
- package/package.json +1 -1
|
@@ -531,7 +531,12 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
531
531
|
if (_this.state.inputChanged) {
|
|
532
532
|
initValues[_this.getFirstField()] = _this.state.inputValueState;
|
|
533
533
|
}
|
|
534
|
-
var formDialogState = {
|
|
534
|
+
var formDialogState = {
|
|
535
|
+
opened: true,
|
|
536
|
+
id: undefined,
|
|
537
|
+
initValues: initValues,
|
|
538
|
+
onSaveOrCancel: _this.formDialogOnSaveOrCancel
|
|
539
|
+
};
|
|
535
540
|
_this.setState({ formDialogState: formDialogState });
|
|
536
541
|
}
|
|
537
542
|
}
|
|
@@ -608,7 +613,12 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
608
613
|
if (this.props.idField === undefined) {
|
|
609
614
|
throw "XAutoCompleteBase: property valueForm is defined but property idField is also needed for form editation.";
|
|
610
615
|
}
|
|
611
|
-
var formDialogState = {
|
|
616
|
+
var formDialogState = {
|
|
617
|
+
opened: true,
|
|
618
|
+
id: this.props.value[this.props.idField],
|
|
619
|
+
initValues: undefined,
|
|
620
|
+
onSaveOrCancel: this.formDialogOnSaveOrCancel
|
|
621
|
+
};
|
|
612
622
|
this.setState({ formDialogState: formDialogState });
|
|
613
623
|
};
|
|
614
624
|
// vracia objekt (ak inputChanged === false) alebo string (ak inputChanged === true)
|
|
@@ -735,7 +745,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
735
745
|
}
|
|
736
746
|
// formgroup-inline lepi SplitButton na autocomplete a zarovna jeho vysku
|
|
737
747
|
return (react_1.default.createElement.apply(react_1.default, __spreadArray(__spreadArray(["div", { className: "x-auto-complete-base", style: { width: this.props.width, maxWidth: this.props.maxWidth } }, react_1.default.createElement(autocomplete_1.AutoComplete, __assign({ value: inputValue, suggestions: this.state.filteredSuggestions, completeMethod: this.completeMethod, itemTemplate: this.itemTemplate, onChange: this.onChange, onSelect: this.onSelect, onBlur: this.onBlur, minLength: this.props.minLength, scrollHeight: this.props.scrollHeight, ref: this.autoCompleteRef, inputRef: this.autoCompleteInputRef, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createTooltipOrErrorProps(error), { inputClassName: this.props.inputClassName, showEmptyMessage: true }))], __read(buttons), false), [this.props.valueForm != undefined ?
|
|
738
|
-
react_1.default.createElement(XFormDialog_1.XFormDialog, { key: "dialog-form", dialogState: this.state.formDialogState, form: this.props.valueForm
|
|
748
|
+
react_1.default.createElement(XFormDialog_1.XFormDialog, { key: "dialog-form", dialogState: this.state.formDialogState, form: this.props.valueForm })
|
|
739
749
|
: undefined, this.props.searchBrowse != undefined && !readOnly ?
|
|
740
750
|
react_1.default.createElement(dialog_1.Dialog, { key: "dialog-browse", className: "x-dialog-without-header", visible: this.state.searchDialogOpened, onHide: this.searchDialogOnHide }, react_1.default.cloneElement(this.props.searchBrowse, { searchBrowseParams: this.createSearchBrowseParams() } /*, props.searchBrowse.children*/))
|
|
741
751
|
: undefined], false)));
|
|
@@ -61,6 +61,7 @@ export declare abstract class XFormBase extends Component<XFormProps> {
|
|
|
61
61
|
formReadOnlyBase(field: string): boolean;
|
|
62
62
|
onClickSave(): Promise<void>;
|
|
63
63
|
onClickCancel(): void;
|
|
64
|
+
openFormNull(): void;
|
|
64
65
|
validateSave(): Promise<boolean>;
|
|
65
66
|
validateForm(): Promise<XErrorMap>;
|
|
66
67
|
fieldValidation(): XErrorMap;
|
|
@@ -449,7 +449,7 @@ var XFormBase = /** @class */ (function (_super) {
|
|
|
449
449
|
this.props.onSaveOrCancel(object, isAddRow ? XUtils_1.OperationType.Insert : XUtils_1.OperationType.Update);
|
|
450
450
|
}
|
|
451
451
|
else {
|
|
452
|
-
this.
|
|
452
|
+
this.openFormNull();
|
|
453
453
|
}
|
|
454
454
|
return [2 /*return*/];
|
|
455
455
|
}
|
|
@@ -461,11 +461,21 @@ var XFormBase = /** @class */ (function (_super) {
|
|
|
461
461
|
this.props.onSaveOrCancel(null, XUtils_1.OperationType.None); // formular je zobrazeny v dialogu
|
|
462
462
|
}
|
|
463
463
|
else {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
464
|
+
this.openFormNull();
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
XFormBase.prototype.openFormNull = function () {
|
|
468
|
+
// deprecated functionality used when XFormNavigator (deprecated) used
|
|
469
|
+
// standardny rezim
|
|
470
|
+
// openForm pridavame automaticky v XFormNavigator pri renderovani komponentu
|
|
471
|
+
// null - vrati sa do predchadzajuceho formularu, z ktoreho bol otvoreny
|
|
472
|
+
if (typeof this.props.openForm === 'function') {
|
|
467
473
|
this.props.openForm(null);
|
|
468
474
|
}
|
|
475
|
+
else {
|
|
476
|
+
// warning
|
|
477
|
+
console.log("Form has no onSaveOrCancel method declared.");
|
|
478
|
+
}
|
|
469
479
|
};
|
|
470
480
|
XFormBase.prototype.validateSave = function () {
|
|
471
481
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -4,9 +4,10 @@ export interface XFormDialogState {
|
|
|
4
4
|
opened: boolean;
|
|
5
5
|
id?: number;
|
|
6
6
|
initValues?: object;
|
|
7
|
+
onSaveOrCancel?: XOnSaveOrCancelProp;
|
|
8
|
+
form?: JSX.Element;
|
|
7
9
|
}
|
|
8
10
|
export declare const XFormDialog: (props: {
|
|
9
11
|
dialogState: XFormDialogState;
|
|
10
|
-
form
|
|
11
|
-
onSaveOrCancel: XOnSaveOrCancelProp;
|
|
12
|
+
form?: JSX.Element | undefined;
|
|
12
13
|
}) => React.JSX.Element;
|
|
@@ -8,13 +8,15 @@ var react_1 = __importDefault(require("react"));
|
|
|
8
8
|
var dialog_1 = require("primereact/dialog");
|
|
9
9
|
var XUtils_1 = require("./XUtils");
|
|
10
10
|
var XFormDialog = function (props) {
|
|
11
|
+
var _a;
|
|
11
12
|
var onHide = function () {
|
|
12
|
-
if (props.onSaveOrCancel) {
|
|
13
|
-
props.onSaveOrCancel(null, XUtils_1.OperationType.None);
|
|
13
|
+
if (props.dialogState.onSaveOrCancel) {
|
|
14
|
+
props.dialogState.onSaveOrCancel(null, XUtils_1.OperationType.None);
|
|
14
15
|
}
|
|
15
16
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
var form = (_a = props.dialogState.form) !== null && _a !== void 0 ? _a : props.form;
|
|
18
|
+
return (react_1.default.createElement(dialog_1.Dialog, { key: "dialog-form", className: "x-dialog-without-header", visible: props.dialogState.opened, onHide: onHide }, form ? react_1.default.cloneElement(form, {
|
|
19
|
+
id: props.dialogState.id, initValues: props.dialogState.initValues, onSaveOrCancel: props.dialogState.onSaveOrCancel
|
|
20
|
+
} /*, props.form.children*/) : null));
|
|
19
21
|
};
|
|
20
22
|
exports.XFormDialog = XFormDialog;
|
|
@@ -2,6 +2,9 @@ import React, { Component } from "react";
|
|
|
2
2
|
export interface XFormNavigator3Props {
|
|
3
3
|
rootFormElement?: JSX.Element;
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated use opening form in dialogs instead
|
|
7
|
+
*/
|
|
5
8
|
export declare class XFormNavigator3 extends Component<XFormNavigator3Props> {
|
|
6
9
|
state: {
|
|
7
10
|
formElements: JSX.Element[];
|
|
@@ -65,6 +65,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
65
65
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
66
|
exports.XFormNavigator3 = void 0;
|
|
67
67
|
var react_1 = __importStar(require("react"));
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated use opening form in dialogs instead
|
|
70
|
+
*/
|
|
68
71
|
var XFormNavigator3 = /** @class */ (function (_super) {
|
|
69
72
|
__extends(XFormNavigator3, _super);
|
|
70
73
|
function XFormNavigator3(props) {
|
|
@@ -10,6 +10,8 @@ import { ButtonProps } from "primereact/button";
|
|
|
10
10
|
import { XtDocTemplate } from "../../modules/docTemplates/xt-doc-template";
|
|
11
11
|
export type XBetweenFilterProp = "row" | "column" | undefined;
|
|
12
12
|
export type XMultilineRenderType = "singleLine" | "fewLines" | "allLines";
|
|
13
|
+
export type XOpenFormForInsert = (initValues?: object, onSaveOrCancel?: XOnSaveOrCancelProp, form?: JSX.Element) => void;
|
|
14
|
+
export type XOpenFormForUpdate = (id: number, onSaveOrCancel?: XOnSaveOrCancelProp, form?: JSX.Element) => void;
|
|
13
15
|
export interface XAppButtonForRow {
|
|
14
16
|
key?: string;
|
|
15
17
|
icon?: IconType<ButtonProps>;
|
|
@@ -31,6 +33,9 @@ export interface XEditModeHandlers {
|
|
|
31
33
|
onMoveColumnLeft: (field: string) => void;
|
|
32
34
|
onMoveColumnRight: (field: string) => void;
|
|
33
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated was used to send props displayed and openForm to *Browse when using XFormNavigator (deprecated)
|
|
38
|
+
*/
|
|
34
39
|
export interface XBrowseProps {
|
|
35
40
|
displayed?: boolean;
|
|
36
41
|
openForm?: (newFormElement: JSX.Element | null) => void;
|
|
@@ -73,8 +78,8 @@ export interface XLazyDataTableProps {
|
|
|
73
78
|
shrinkWidth?: boolean;
|
|
74
79
|
onResetTable?: () => void;
|
|
75
80
|
editForm?: JSX.Element;
|
|
76
|
-
onAddRow?: ((filters: DataTableFilterMeta) => void) | false;
|
|
77
|
-
onEdit?: ((selectedRow: any) => void) | false;
|
|
81
|
+
onAddRow?: ((filters: DataTableFilterMeta, openFormForInsert: XOpenFormForInsert) => void) | false;
|
|
82
|
+
onEdit?: ((selectedRow: any, openFormForUpdate: XOpenFormForUpdate) => void) | false;
|
|
78
83
|
removeRow?: ((selectedRow: any) => Promise<boolean>) | boolean;
|
|
79
84
|
onRemoveRow?: XOnSaveOrCancelProp;
|
|
80
85
|
docTemplates?: true | ((entity: string) => Promise<XtDocTemplate[]>);
|
|
@@ -94,10 +99,13 @@ export interface XLazyDataTableProps {
|
|
|
94
99
|
searchBrowseParams?: XSearchBrowseParams;
|
|
95
100
|
width?: string;
|
|
96
101
|
rowClassName?: (data: any) => object | string | undefined;
|
|
97
|
-
dataLoadedState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];
|
|
98
102
|
exportFieldsToDuplicateValues?: string[];
|
|
99
103
|
editMode?: boolean;
|
|
100
104
|
editModeHandlers?: XEditModeHandlers;
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated was used to reread data after save/cancel of the form when using XFormNavigator (deprecated),
|
|
107
|
+
* now method reread() is exposed and supposed to be called in onSaveOrCancel of the form
|
|
108
|
+
*/
|
|
101
109
|
displayed?: boolean;
|
|
102
110
|
children: ReactChild[];
|
|
103
111
|
}
|
|
@@ -161,12 +161,12 @@ var XStateKeySuffix;
|
|
|
161
161
|
XStateKeySuffix["multilineSwitchValue"] = "multiline-switch-value";
|
|
162
162
|
})(XStateKeySuffix = exports.XStateKeySuffix || (exports.XStateKeySuffix = {}));
|
|
163
163
|
exports.XLazyDataTable = (0, react_1.forwardRef)(function (_a, ref) {
|
|
164
|
-
var _b
|
|
165
|
-
var
|
|
166
|
-
|
|
167
|
-
scrollHeight =
|
|
168
|
-
|
|
169
|
-
shrinkWidth =
|
|
164
|
+
var _b;
|
|
165
|
+
var _c = _a.paginator, paginator = _c === void 0 ? true : _c, _d = _a.rows, rows = _d === void 0 ? 30 : _d, _e = _a.filterDisplay, filterDisplay = _e === void 0 ? "row" : _e, _f = _a.autoFilter, autoFilter = _f === void 0 ? false : _f, _g = _a.showFilterButtons, showFilterButtons = _g === void 0 ? true : _g, _h = _a.fullTextSearch, fullTextSearch = _h === void 0 ? true : _h, _j = _a.multilineSwitch, multilineSwitch = _j === void 0 ? false : _j, _k = _a.multilineSwitchInitValue, multilineSwitchInitValue = _k === void 0 ? "allLines" : _k, _l = _a.multilineSwitchFewLinesCount, multilineSwitchFewLinesCount = _l === void 0 ? 2 : _l, _m = _a.scrollable, scrollable = _m === void 0 ? true : _m, _o = _a.scrollWidth, scrollWidth = _o === void 0 ? 'viewport' : _o, // nastavi sirku tabulky na (100vw - nieco) (ak bude obsah sirsi, zapne horizontalny scrollbar)
|
|
166
|
+
_p = _a.scrollHeight, // nastavi sirku tabulky na (100vw - nieco) (ak bude obsah sirsi, zapne horizontalny scrollbar)
|
|
167
|
+
scrollHeight = _p === void 0 ? 'viewport' : _p, // nastavi vysku tabulky na (100vh - nieco) (ak bude obsah vecsi, zapne vertikalny scrollbar)
|
|
168
|
+
_q = _a.shrinkWidth, // nastavi vysku tabulky na (100vh - nieco) (ak bude obsah vecsi, zapne vertikalny scrollbar)
|
|
169
|
+
shrinkWidth = _q === void 0 ? true : _q, propsRest = __rest(_a, ["paginator", "rows", "filterDisplay", "autoFilter", "showFilterButtons", "fullTextSearch", "multilineSwitch", "multilineSwitchInitValue", "multilineSwitchFewLinesCount", "scrollable", "scrollWidth", "scrollHeight", "shrinkWidth"]);
|
|
170
170
|
var props = __assign({ paginator: paginator, rows: rows, filterDisplay: filterDisplay, autoFilter: autoFilter, showFilterButtons: showFilterButtons, fullTextSearch: fullTextSearch, multilineSwitch: multilineSwitch, multilineSwitchInitValue: multilineSwitchInitValue, multilineSwitchFewLinesCount: multilineSwitchFewLinesCount, scrollable: scrollable, scrollWidth: scrollWidth, scrollHeight: scrollHeight, shrinkWidth: shrinkWidth }, propsRest);
|
|
171
171
|
// must be here, is used in createFiltersInit()
|
|
172
172
|
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity);
|
|
@@ -338,12 +338,12 @@ exports.XLazyDataTable = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
338
338
|
// ak mame fieldSet stlpce (stlpce ktore maju zadany fieldSetId a zobrazuju hodnoty podla fieldSet-u),
|
|
339
339
|
// tak sem nacitame mapy umoznujuce ziskanie labelov zakliknutych field-ov
|
|
340
340
|
// poznamka: uz by sa zislo mat vytvorene objekty (instancie) pre stlpce a do nich zapisovat pripadny XFieldSetMap, filter (teraz je vo "filters")
|
|
341
|
-
var
|
|
342
|
-
var
|
|
343
|
-
var
|
|
344
|
-
var
|
|
345
|
-
var
|
|
346
|
-
var
|
|
341
|
+
var _r = __read((0, react_1.useState)({}), 2), xFieldSetMaps = _r[0], setXFieldSetMaps = _r[1];
|
|
342
|
+
var _s = __read((0, react_1.useState)({ rowList: [], totalRecords: 0, aggregateValues: [] }), 2), value = _s[0], setValue = _s[1];
|
|
343
|
+
var _t = __read((0, react_1.useState)(undefined), 2), expandedRows = _t[0], setExpandedRows = _t[1];
|
|
344
|
+
var _u = __read((0, react_1.useState)(false), 2), loading = _u[0], setLoading = _u[1];
|
|
345
|
+
var _v = __read((0, useXStateSession_1.useXStateSession)(getStateKey(XStateKeySuffix.pagingFirst), 0), 2), first = _v[0], setFirst = _v[1];
|
|
346
|
+
var _w = __read((0, react_1.useState)(props.paginator ? props.rows : undefined), 2), rowsLocal = _w[0], setRowsLocal = _w[1];
|
|
347
347
|
// "filters" have special initialState function different from that used in useXStateSession
|
|
348
348
|
var filtersInitialStateFunction = function () {
|
|
349
349
|
var filtersInit = XUtils_1.XUtils.getValueFromStorage(getStateKey(XStateKeySuffix.filters), null);
|
|
@@ -357,20 +357,23 @@ exports.XLazyDataTable = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
357
357
|
}
|
|
358
358
|
return filtersInit;
|
|
359
359
|
};
|
|
360
|
-
var
|
|
360
|
+
var _x = __read((0, useXStateSessionBase_1.useXStateSessionBase)(getStateKey(XStateKeySuffix.filters), filtersInitialStateFunction), 2), filters = _x[0], setFilters = _x[1]; // filtrovanie na "controlled manner" (moze sa sem nainicializovat nejaka hodnota)
|
|
361
361
|
var initFtsInputValue = props.fullTextSearch ? createInitFtsInputValue() : undefined;
|
|
362
|
-
var
|
|
363
|
-
var
|
|
364
|
-
var
|
|
365
|
-
var
|
|
366
|
-
var
|
|
367
|
-
|
|
368
|
-
|
|
362
|
+
var _y = __read((0, useXStateSession_1.useXStateSession)(getStateKey(XStateKeySuffix.ftsInputValue), initFtsInputValue), 2), ftsInputValue = _y[0], setFtsInputValue = _y[1];
|
|
363
|
+
var _z = __read((0, useXStateSession_1.useXStateSession)(getStateKey(XStateKeySuffix.optionalCustomFilter), undefined), 2), optionalCustomFilter = _z[0], setOptionalCustomFilter = _z[1];
|
|
364
|
+
var _0 = __read((_b = props.multilineSwitchValue) !== null && _b !== void 0 ? _b : (0, useXStateSession_1.useXStateSession)(getStateKey(XStateKeySuffix.multilineSwitchValue), props.multilineSwitchInitValue), 2), multilineSwitchValue = _0[0], setMultilineSwitchValue = _0[1];
|
|
365
|
+
var _1 = __read((0, useXStateSession_1.useXStateSession)(getStateKey(XStateKeySuffix.multiSortMeta), XUtilsCommon_1.XUtilsCommon.createMultiSortMeta(props.sortField)), 2), multiSortMeta = _1[0], setMultiSortMeta = _1[1];
|
|
366
|
+
var _2 = __read((0, useXStateSession_1.useXStateSession)(getStateKey(XStateKeySuffix.selectedRow), null), 2), selectedRow = _2[0], setSelectedRow = _2[1];
|
|
367
|
+
/**
|
|
368
|
+
* @deprecated was used to reread data after save/cancel of the form when using XFormNavigator (deprecated)
|
|
369
|
+
*/
|
|
370
|
+
var _3 = __read((0, react_1.useState)(false), 2), dataLoaded = _3[0], setDataLoaded = _3[1]; // priznak kde si zapiseme, ci uz sme nacitali data
|
|
371
|
+
var _4 = __read((0, react_1.useState)({ dialogOpened: false }), 2), exportRowsDialogState = _4[0], setExportRowsDialogState = _4[1];
|
|
369
372
|
//const [exportRowsDialogRowCount, setExportRowsDialogRowCount] = useState<number>(); // param pre dialog
|
|
370
|
-
var
|
|
371
|
-
var
|
|
372
|
-
var
|
|
373
|
-
var
|
|
373
|
+
var _5 = __read((0, react_1.useState)(filters), 2), filtersAfterFiltering = _5[0], setFiltersAfterFiltering = _5[1]; // sem si odkladame stav filtra po kliknuti na button Filter (chceme exportovat presne to co vidno vyfiltrovane)
|
|
374
|
+
var _6 = __read((0, react_1.useState)(ftsInputValue), 2), ftsInputValueAfterFiltering = _6[0], setFtsInputValueAfterFiltering = _6[1]; // tak isto ako filtersAfterFiltering
|
|
375
|
+
var _7 = __read((0, react_1.useState)(optionalCustomFilter), 2), optionalCustomFilterAfterFiltering = _7[0], setOptionalCustomFilterAfterFiltering = _7[1]; // tak isto ako filtersAfterFiltering
|
|
376
|
+
var _8 = __read((0, react_1.useState)({ opened: false }), 2), formDialogState = _8[0], setFormDialogState = _8[1];
|
|
374
377
|
// parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
|
|
375
378
|
(0, react_1.useEffect)(function () {
|
|
376
379
|
// jednoduchy sposob - nepouzivame parameter props.displayed a priznak dataLoaded
|
|
@@ -761,16 +764,24 @@ exports.XLazyDataTable = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
761
764
|
var onClickAddRow = function () {
|
|
762
765
|
//console.log("zavolany onClickAddRow");
|
|
763
766
|
if (typeof props.onAddRow === 'function') {
|
|
764
|
-
props.onAddRow(filters);
|
|
767
|
+
props.onAddRow(filters, openFormForInsert);
|
|
765
768
|
}
|
|
766
769
|
else if (props.editForm !== undefined && props.onAddRow !== false) {
|
|
767
|
-
|
|
768
|
-
opened: true,
|
|
769
|
-
id: undefined,
|
|
770
|
-
initValues: {}
|
|
771
|
-
});
|
|
770
|
+
openFormForInsert();
|
|
772
771
|
}
|
|
773
772
|
};
|
|
773
|
+
var openFormForInsert = function (initValues, onSaveOrCancel, form) {
|
|
774
|
+
if (props.editForm === undefined && form === undefined) {
|
|
775
|
+
throw "No form declared. XLazyDataTable.editForm is undefined and also form in call of the method openFormForInsert is undefined.";
|
|
776
|
+
}
|
|
777
|
+
setFormDialogState({
|
|
778
|
+
opened: true,
|
|
779
|
+
id: undefined,
|
|
780
|
+
initValues: initValues,
|
|
781
|
+
onSaveOrCancel: onSaveOrCancel !== null && onSaveOrCancel !== void 0 ? onSaveOrCancel : editRowOnSaveOrCancel,
|
|
782
|
+
form: form !== null && form !== void 0 ? form : props.editForm
|
|
783
|
+
});
|
|
784
|
+
};
|
|
774
785
|
var onClickEditRow = function () {
|
|
775
786
|
//console.log("zavolany onClickEditRow");
|
|
776
787
|
if (selectedRow !== null) {
|
|
@@ -782,16 +793,24 @@ exports.XLazyDataTable = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
782
793
|
};
|
|
783
794
|
var editRow = function (row) {
|
|
784
795
|
if (typeof props.onEdit === 'function') {
|
|
785
|
-
props.onEdit(row);
|
|
796
|
+
props.onEdit(row, openFormForUpdate);
|
|
786
797
|
}
|
|
787
798
|
else if (props.editForm !== undefined && props.onEdit !== false) {
|
|
788
|
-
|
|
789
|
-
opened: true,
|
|
790
|
-
id: row[dataKey],
|
|
791
|
-
initValues: undefined
|
|
792
|
-
});
|
|
799
|
+
openFormForUpdate(row[dataKey]);
|
|
793
800
|
}
|
|
794
801
|
};
|
|
802
|
+
var openFormForUpdate = function (id, onSaveOrCancel, form) {
|
|
803
|
+
if (props.editForm === undefined && form === undefined) {
|
|
804
|
+
throw "No form declared. XLazyDataTable.editForm is undefined and also form in call of the method openFormForUpdate is undefined.";
|
|
805
|
+
}
|
|
806
|
+
setFormDialogState({
|
|
807
|
+
opened: true,
|
|
808
|
+
id: id,
|
|
809
|
+
initValues: undefined,
|
|
810
|
+
onSaveOrCancel: onSaveOrCancel !== null && onSaveOrCancel !== void 0 ? onSaveOrCancel : editRowOnSaveOrCancel,
|
|
811
|
+
form: form !== null && form !== void 0 ? form : props.editForm
|
|
812
|
+
});
|
|
813
|
+
};
|
|
795
814
|
var editRowOnSaveOrCancel = function (object, objectChange) {
|
|
796
815
|
if (object !== null) {
|
|
797
816
|
// save was pressed, reread from DB
|
|
@@ -1453,7 +1472,7 @@ exports.XLazyDataTable = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
1453
1472
|
props.appButtonsForRow && props.searchBrowseParams === undefined ? props.appButtonsForRow.map(function (xAppButton) { return react_1.default.createElement(XButton_1.XButton, { key: xAppButton.key, icon: xAppButton.icon, label: xAppButton.label, onClick: function () { return onClickAppButtonForRow(xAppButton.onClick); }, style: xAppButton.style }); }) : null,
|
|
1454
1473
|
props.appButtons && props.searchBrowseParams === undefined,
|
|
1455
1474
|
props.searchBrowseParams !== undefined ? react_1.default.createElement(XButton_1.XButton, { key: "choose", label: (0, XLocale_1.xLocaleOption)('chooseRow'), onClick: onClickChoose }) : null,
|
|
1456
|
-
props.editForm != undefined ? react_1.default.createElement(XFormDialog_1.XFormDialog, { key: "formDialog", dialogState: formDialogState
|
|
1475
|
+
props.editForm != undefined ? react_1.default.createElement(XFormDialog_1.XFormDialog, { key: "formDialog", dialogState: formDialogState }) : null,
|
|
1457
1476
|
exportRows ? react_1.default.createElement(XExportRowsDialog_1.XExportRowsDialog, { key: "exportRowsDialog", dialogState: exportRowsDialogState, hideDialog: function () { return setExportRowsDialogState({ dialogOpened: false }); } }) : null),
|
|
1458
1477
|
hasContentTypeHtml() ? react_1.default.createElement(editor_1.Editor, { style: { display: 'none' }, showHeader: false }) : null /* we want to import css if needed (<style type="text/css" data-primereact-style-id="editor">) */));
|
|
1459
1478
|
});
|
|
@@ -8,6 +8,8 @@ import { DataTableSortMeta } from "primereact/datatable";
|
|
|
8
8
|
import { XObject } from "./XObject";
|
|
9
9
|
import { XTableFieldReadOnlyProp } from "./XFormDataTable2";
|
|
10
10
|
import { SelectItem } from "primereact/selectitem";
|
|
11
|
+
import { XLazyDataTableRef } from "./XLazyDataTable/XLazyDataTable";
|
|
12
|
+
import { XOnSaveOrCancelProp } from "./XFormBase";
|
|
11
13
|
export declare enum OperationType {
|
|
12
14
|
None = 0,
|
|
13
15
|
Insert = 1,
|
|
@@ -117,4 +119,8 @@ export declare class XUtils {
|
|
|
117
119
|
static isLocalhost(): boolean;
|
|
118
120
|
static isNewVersion(): Promise<boolean>;
|
|
119
121
|
static reload(): void;
|
|
122
|
+
/**
|
|
123
|
+
* @deprecated returns onSaveOrCancel method used when opening form from browse when using XFormNavigator (deprecated)
|
|
124
|
+
*/
|
|
125
|
+
static onSaveOrCancelNavigator(openForm: (newFormElement: JSX.Element | null) => void, xLazyDataTableRef: React.RefObject<XLazyDataTableRef>): XOnSaveOrCancelProp;
|
|
120
126
|
}
|
package/lib/components/XUtils.js
CHANGED
|
@@ -868,6 +868,20 @@ var XUtils = /** @class */ (function () {
|
|
|
868
868
|
// warning - if user has typed some data in form, the data will be lost
|
|
869
869
|
window.location.reload();
|
|
870
870
|
};
|
|
871
|
+
/**
|
|
872
|
+
* @deprecated returns onSaveOrCancel method used when opening form from browse when using XFormNavigator (deprecated)
|
|
873
|
+
*/
|
|
874
|
+
XUtils.onSaveOrCancelNavigator = function (openForm, xLazyDataTableRef) {
|
|
875
|
+
return function (object, objectChange) {
|
|
876
|
+
var _a;
|
|
877
|
+
// close form and display the previous form (it should be browse)
|
|
878
|
+
openForm(null);
|
|
879
|
+
if (object !== null) {
|
|
880
|
+
// save was pressed, reread from DB
|
|
881
|
+
(_a = xLazyDataTableRef.current) === null || _a === void 0 ? void 0 : _a.reread();
|
|
882
|
+
}
|
|
883
|
+
};
|
|
884
|
+
};
|
|
871
885
|
XUtils.dropdownEmptyOptionValue = " ";
|
|
872
886
|
XUtils.xBackendUrl = undefined;
|
|
873
887
|
// nacachovany XToken - na rozlicnych miestach potrebujeme vediet uzivatela
|