@michalrakus/x-react-web-lib 1.18.0 → 1.20.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/XEditor.d.ts +3 -0
- package/XEditor.js +5 -0
- package/XEditorBase.d.ts +3 -0
- package/XEditorBase.js +5 -0
- package/XExportRowsDialog.d.ts +1 -1
- package/XExportRowsDialog.js +1 -1
- package/XHtmlRenderer.d.ts +3 -0
- package/XHtmlRenderer.js +5 -0
- package/XLazyDataTable.d.ts +1 -1
- package/XLazyDataTable.js +1 -1
- package/XMultilineRenderer.d.ts +3 -0
- package/XMultilineRenderer.js +5 -0
- package/gulpfile.js +7 -2
- package/lib/administration/XBrowseMetaBrowse.d.ts +1 -1
- package/lib/administration/XBrowseMetaBrowse.js +1 -1
- package/lib/administration/XUserBrowse.d.ts +1 -1
- package/lib/administration/XUserBrowse.js +1 -1
- package/lib/components/XAutoComplete.d.ts +11 -9
- package/lib/components/XAutoComplete.js +7 -78
- package/lib/components/XAutoCompleteBase.d.ts +42 -7
- package/lib/components/XAutoCompleteBase.js +342 -45
- package/lib/components/XAutoCompleteDT.d.ts +14 -8
- package/lib/components/XAutoCompleteDT.js +3 -69
- package/lib/components/XEditBrowse.js +1 -1
- package/lib/components/XEditor.d.ts +15 -0
- package/lib/components/XEditor.js +64 -0
- package/lib/components/XEditorBase.d.ts +9 -0
- package/lib/components/XEditorBase.js +91 -0
- package/lib/components/XFormBase.d.ts +1 -0
- package/lib/components/XFormBase.js +19 -4
- package/lib/components/XFormDataTable2.js +1 -1
- package/lib/components/XInputTextareaBase.js +3 -4
- package/lib/components/{XExportRowsDialog.d.ts → XLazyDataTable/XExportRowsDialog.d.ts} +1 -1
- package/lib/components/{XExportRowsDialog.js → XLazyDataTable/XExportRowsDialog.js} +5 -5
- package/lib/components/XLazyDataTable/XHtmlRenderer.d.ts +7 -0
- package/lib/components/XLazyDataTable/XHtmlRenderer.js +78 -0
- package/lib/components/{XLazyDataTable.d.ts → XLazyDataTable/XLazyDataTable.d.ts} +20 -8
- package/lib/components/{XLazyDataTable.js → XLazyDataTable/XLazyDataTable.js} +62 -36
- package/lib/components/XLazyDataTable/XMultilineRenderer.d.ts +8 -0
- package/lib/components/XLazyDataTable/XMultilineRenderer.js +80 -0
- package/lib/components/XLazyDataTable/XMultilineSwitch.d.ts +7 -0
- package/lib/components/XLazyDataTable/XMultilineSwitch.js +20 -0
- package/lib/components/XSearchBrowseParams.d.ts +2 -2
- package/lib/components/XSearchButton.js +2 -2
- package/lib/components/XSearchButtonDT.js +2 -2
- package/lib/components/XUtils.d.ts +4 -0
- package/lib/components/XUtils.js +51 -11
- package/lib/components/XUtilsMetadata.d.ts +1 -1
- package/lib/serverApi/FindParam.d.ts +12 -2
- package/lib/serverApi/FindParam.js +3 -2
- package/lib/serverApi/XUtilsCommon.d.ts +2 -0
- package/lib/serverApi/XUtilsCommon.js +37 -1
- package/lib/serverApi/XUtilsMetadataCommon.d.ts +1 -0
- package/lib/serverApi/XUtilsMetadataCommon.js +16 -0
- package/lib/serverApi/x-lib-api.d.ts +6 -0
- package/lib/serverApi/x-lib-api.js +3 -0
- package/package.json +2 -1
|
@@ -14,42 +14,6 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
-
function step(op) {
|
|
31
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
-
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;
|
|
34
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
-
switch (op[0]) {
|
|
36
|
-
case 0: case 1: t = op; break;
|
|
37
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
-
default:
|
|
41
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
-
if (t[2]) _.ops.pop();
|
|
46
|
-
_.trys.pop(); continue;
|
|
47
|
-
}
|
|
48
|
-
op = body.call(thisArg, _);
|
|
49
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
17
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
54
18
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
19
|
};
|
|
@@ -57,7 +21,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
57
21
|
exports.XAutoCompleteDT = void 0;
|
|
58
22
|
var react_1 = __importDefault(require("react"));
|
|
59
23
|
var XFormComponentDT_1 = require("./XFormComponentDT");
|
|
60
|
-
var XUtils_1 = require("./XUtils");
|
|
61
24
|
var XAutoCompleteBase_1 = require("./XAutoCompleteBase");
|
|
62
25
|
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
63
26
|
var XAutoCompleteDT = /** @class */ (function (_super) {
|
|
@@ -66,33 +29,12 @@ var XAutoCompleteDT = /** @class */ (function (_super) {
|
|
|
66
29
|
var _this = _super.call(this, props) || this;
|
|
67
30
|
_this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity), props.assocField);
|
|
68
31
|
_this.errorInBase = undefined;
|
|
69
|
-
_this.state = {
|
|
70
|
-
suggestions: []
|
|
71
|
-
};
|
|
72
32
|
_this.onChangeAutoCompleteBase = _this.onChangeAutoCompleteBase.bind(_this);
|
|
73
33
|
_this.onErrorChangeAutoCompleteBase = _this.onErrorChangeAutoCompleteBase.bind(_this);
|
|
74
34
|
return _this;
|
|
75
35
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
};
|
|
79
|
-
XAutoCompleteDT.prototype.readAndSetSuggestions = function () {
|
|
80
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
81
|
-
var suggestions;
|
|
82
|
-
return __generator(this, function (_a) {
|
|
83
|
-
switch (_a.label) {
|
|
84
|
-
case 0:
|
|
85
|
-
if (!(this.props.suggestions === undefined)) return [3 /*break*/, 2];
|
|
86
|
-
return [4 /*yield*/, XUtils_1.XUtils.fetchRows(this.xAssoc.entityName, this.getFilterBase(this.props.filter), this.props.displayField)];
|
|
87
|
-
case 1:
|
|
88
|
-
suggestions = _a.sent();
|
|
89
|
-
this.setState({ suggestions: suggestions });
|
|
90
|
-
_a.label = 2;
|
|
91
|
-
case 2: return [2 /*return*/];
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
};
|
|
36
|
+
// componentDidMount() {
|
|
37
|
+
// }
|
|
96
38
|
XAutoCompleteDT.prototype.getField = function () {
|
|
97
39
|
return this.props.assocField;
|
|
98
40
|
};
|
|
@@ -105,13 +47,6 @@ var XAutoCompleteDT = /** @class */ (function (_super) {
|
|
|
105
47
|
};
|
|
106
48
|
XAutoCompleteDT.prototype.onChangeAutoCompleteBase = function (object, objectChange) {
|
|
107
49
|
this.onValueChangeBase(object, this.props.onChange, objectChange);
|
|
108
|
-
if (objectChange !== XUtils_1.OperationType.None) {
|
|
109
|
-
// zmenil sa zaznam dobrovolnika v DB
|
|
110
|
-
// zatial len refreshneme z DB
|
|
111
|
-
// ak by bol reqest pomaly, mozme pri inserte (nove id) / update (existujuce id) upravit zoznam a usetrime tym request do DB
|
|
112
|
-
// ak bol delete (dobrovolnik === null), treba urobit refresh do DB (alebo si poslat id-cko zmazaneho zaznamu)
|
|
113
|
-
this.readAndSetSuggestions();
|
|
114
|
-
}
|
|
115
50
|
};
|
|
116
51
|
XAutoCompleteDT.prototype.onErrorChangeAutoCompleteBase = function (error) {
|
|
117
52
|
this.errorInBase = error; // odlozime si error
|
|
@@ -128,13 +63,12 @@ var XAutoCompleteDT = /** @class */ (function (_super) {
|
|
|
128
63
|
};
|
|
129
64
|
XAutoCompleteDT.prototype.render = function () {
|
|
130
65
|
var _this = this;
|
|
131
|
-
var _a;
|
|
132
66
|
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.xAssoc.entityName);
|
|
133
67
|
//const xDisplayField = XUtilsMetadataCommon.getXFieldByPath(xEntityAssoc, this.props.displayField);
|
|
134
68
|
// TODO - size
|
|
135
69
|
//const size = this.props.size ?? xDisplayField.length;
|
|
136
70
|
// div className="col" nam zabezpeci aby XAutoCompleteBase nezaberal celu dlzku grid-u (ma nastaveny width=100% vdaka "formgroup-inline")
|
|
137
|
-
return (react_1.default.createElement(XAutoCompleteBase_1.XAutoCompleteBase, { value: this.getValue(),
|
|
71
|
+
return (react_1.default.createElement(XAutoCompleteBase_1.XAutoCompleteBase, { value: this.getValue(), onChange: this.onChangeAutoCompleteBase, field: this.props.displayField, itemTemplate: this.props.itemTemplate, searchBrowse: this.props.searchBrowse, valueForm: this.props.assocForm, idField: xEntityAssoc.idField, readOnly: this.isReadOnly(), error: this.getError(), onErrorChange: this.onErrorChangeAutoCompleteBase, suggestions: this.props.suggestions, suggestionsLoad: this.props.suggestionsLoad, lazyLoadMaxRows: this.props.lazyLoadMaxRows, splitQueryValue: this.props.splitQueryValue, minLength: this.props.minLength, scrollHeight: this.props.scrollHeight, suggestionsQuery: { entity: this.xAssoc.entityName, filter: function () { return _this.getFilterBase(_this.props.filter); }, sortField: this.props.sortField, fields: this.props.fields }, inputClassName: this.props.inputClassName }));
|
|
138
72
|
};
|
|
139
73
|
return XAutoCompleteDT;
|
|
140
74
|
}(XFormComponentDT_1.XFormComponentDT));
|
|
@@ -108,7 +108,7 @@ var XEditColumnDialog_1 = require("./XEditColumnDialog");
|
|
|
108
108
|
var _ = __importStar(require("lodash"));
|
|
109
109
|
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
110
110
|
var XUtils_1 = require("./XUtils");
|
|
111
|
-
var XLazyDataTable_1 = require("./XLazyDataTable");
|
|
111
|
+
var XLazyDataTable_1 = require("./XLazyDataTable/XLazyDataTable");
|
|
112
112
|
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
113
113
|
// TODO - pouzit extends XEditBrowseBase, ako je tomu pri CarForm?
|
|
114
114
|
var XEditBrowse = /** @class */ (function (_super) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { XInput, XInputProps } from "./XInput";
|
|
3
|
+
export interface XEditorProps extends XInputProps<string> {
|
|
4
|
+
labelOnTop: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class XEditor extends XInput<string, XEditorProps> {
|
|
7
|
+
static defaultProps: {
|
|
8
|
+
labelOnTop: boolean;
|
|
9
|
+
};
|
|
10
|
+
constructor(props: XEditorProps);
|
|
11
|
+
getValue(): string | null;
|
|
12
|
+
onValueChange(value: string | null): void;
|
|
13
|
+
getLabelStyle(): React.CSSProperties;
|
|
14
|
+
render(): JSX.Element;
|
|
15
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.XEditor = void 0;
|
|
22
|
+
var react_1 = __importDefault(require("react"));
|
|
23
|
+
var XInput_1 = require("./XInput");
|
|
24
|
+
var XUtils_1 = require("./XUtils");
|
|
25
|
+
var XEditorBase_1 = require("./XEditorBase");
|
|
26
|
+
var XEditor = /** @class */ (function (_super) {
|
|
27
|
+
__extends(XEditor, _super);
|
|
28
|
+
function XEditor(props) {
|
|
29
|
+
var _this = _super.call(this, props) || this;
|
|
30
|
+
_this.onValueChange = _this.onValueChange.bind(_this);
|
|
31
|
+
return _this;
|
|
32
|
+
}
|
|
33
|
+
XEditor.prototype.getValue = function () {
|
|
34
|
+
return this.getValueFromObject();
|
|
35
|
+
};
|
|
36
|
+
XEditor.prototype.onValueChange = function (value) {
|
|
37
|
+
this.onValueChangeBase(value, this.props.onChange);
|
|
38
|
+
};
|
|
39
|
+
XEditor.prototype.getLabelStyle = function () {
|
|
40
|
+
var _a;
|
|
41
|
+
return this.props.labelOnTop ? ((_a = this.props.labelStyle) !== null && _a !== void 0 ? _a : {}) : _super.prototype.getLabelStyle.call(this);
|
|
42
|
+
};
|
|
43
|
+
XEditor.prototype.render = function () {
|
|
44
|
+
// TODO - neni to otestovane
|
|
45
|
+
var _a;
|
|
46
|
+
var style = (_a = this.props.inputStyle) !== null && _a !== void 0 ? _a : {};
|
|
47
|
+
// defaultne pridame width:100%
|
|
48
|
+
// ak nemame labelOnTop=true, musime odratat sirku labelu, inac sa label dostane nad input (koli flex-wrap: wrap)
|
|
49
|
+
var widthValue = this.props.labelOnTop ? '100%' : "calc(100% - ".concat(XUtils_1.XUtils.FIELD_LABEL_WIDTH, ")");
|
|
50
|
+
XUtils_1.XUtils.addCssPropIfNotExists(style, { width: widthValue });
|
|
51
|
+
// x-editor-label-on-top - nastavuje orientation: column, aby boli label a XEditorBase pod sebou (robene podla XInputTextarea)
|
|
52
|
+
// XEditorBase renderujeme az ked mame nacitany object, lebo inac sa nam nenastavi spravna velkost (hodnota nie je k dispozicii pri prvom renderingu) (robene podla XInputTextarea)
|
|
53
|
+
return (react_1.default.createElement("div", { className: !this.props.labelOnTop ? 'field grid' : 'field grid x-editor-label-on-top' },
|
|
54
|
+
react_1.default.createElement("label", { htmlFor: this.props.field, className: !this.props.labelOnTop ? 'col-fixed' : undefined, style: this.getLabelStyle() }, this.getLabel()),
|
|
55
|
+
this.props.form.state.object ?
|
|
56
|
+
react_1.default.createElement(XEditorBase_1.XEditorBase, { id: this.props.field, value: this.getValue(), onChange: this.onValueChange, readOnly: this.isReadOnly(), style: style, error: this.getError() })
|
|
57
|
+
: null));
|
|
58
|
+
};
|
|
59
|
+
XEditor.defaultProps = {
|
|
60
|
+
labelOnTop: false
|
|
61
|
+
};
|
|
62
|
+
return XEditor;
|
|
63
|
+
}(XInput_1.XInput));
|
|
64
|
+
exports.XEditor = XEditor;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare const XEditorBase: (props: {
|
|
3
|
+
id?: string | undefined;
|
|
4
|
+
value: string | null;
|
|
5
|
+
onChange: (value: string | null) => void;
|
|
6
|
+
readOnly?: boolean | undefined;
|
|
7
|
+
error?: string | undefined;
|
|
8
|
+
style?: React.CSSProperties | undefined;
|
|
9
|
+
}) => JSX.Element;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = 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);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
37
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
|
+
if (!m) return o;
|
|
39
|
+
var i = m.call(o), r, ar = [], e;
|
|
40
|
+
try {
|
|
41
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
42
|
+
}
|
|
43
|
+
catch (error) { e = { error: error }; }
|
|
44
|
+
finally {
|
|
45
|
+
try {
|
|
46
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
47
|
+
}
|
|
48
|
+
finally { if (e) throw e.error; }
|
|
49
|
+
}
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.XEditorBase = void 0;
|
|
54
|
+
var react_1 = __importStar(require("react"));
|
|
55
|
+
var XUtils_1 = require("./XUtils");
|
|
56
|
+
var editor_1 = require("primereact/editor");
|
|
57
|
+
// koli optimalizacii - typovany text si zapisuje do svojej stavovej premennej a onChange zavola az z onBlur
|
|
58
|
+
// pri velkych formularoch je totiz volanie zmeny stavu this.setState({object: this.state.object, errorMap: this.state.errorMap}); pomale
|
|
59
|
+
var XEditorBase = function (props) {
|
|
60
|
+
// true, ak uzivatel typuje hodnotu
|
|
61
|
+
// false, ak bol zavolany onBlur
|
|
62
|
+
var _a = __read((0, react_1.useState)(false), 2), editorValueChanged = _a[0], setEditorValueChanged = _a[1];
|
|
63
|
+
// pouzivane, len ak editorValueChanged === true, je tu zapisana zmenena hodnota v editore
|
|
64
|
+
var _b = __read((0, react_1.useState)(null), 2), editorValue = _b[0], setEditorValue = _b[1];
|
|
65
|
+
var onTextChange = function (e) {
|
|
66
|
+
setEditorValueChanged(true);
|
|
67
|
+
setEditorValue(e.htmlValue);
|
|
68
|
+
};
|
|
69
|
+
var onBlur = function (e) {
|
|
70
|
+
// optimalizacia - onChange volame len ak editorValueChanged === true
|
|
71
|
+
if (editorValueChanged) {
|
|
72
|
+
// TODO - bude vzdy onBlur volany az potom co bude setnuta editorValue? lebo ak nie tak treba hodnotu vytiahnut z "e"
|
|
73
|
+
//const htmlValue: string | null = e.target.??;
|
|
74
|
+
props.onChange(editorValue);
|
|
75
|
+
setEditorValueChanged(false);
|
|
76
|
+
setEditorValue(null); // pre poriadok
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
var getValue = function () {
|
|
80
|
+
var htmlValue;
|
|
81
|
+
if (editorValueChanged) {
|
|
82
|
+
htmlValue = editorValue;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
htmlValue = props.value;
|
|
86
|
+
}
|
|
87
|
+
return htmlValue !== null ? htmlValue : undefined; // value v Editor nechce null, chce undefined
|
|
88
|
+
};
|
|
89
|
+
return (react_1.default.createElement(editor_1.Editor, __assign({ id: props.id, value: getValue(), onTextChange: onTextChange, onBlur: onBlur, readOnly: props.readOnly, style: props.style }, XUtils_1.XUtils.createErrorProps(props.error))));
|
|
90
|
+
};
|
|
91
|
+
exports.XEditorBase = XEditorBase;
|
|
@@ -62,6 +62,7 @@ export declare abstract class XFormBase extends Component<XFormProps> {
|
|
|
62
62
|
static saveErrorsIntoXRowTechData(row: any, xErrors: XErrors): void;
|
|
63
63
|
formReadOnly(object: XObject, field: string): boolean;
|
|
64
64
|
createNewObject(): XObject;
|
|
65
|
+
createNewObjectAsync(): Promise<XObject>;
|
|
65
66
|
preInitForm(object: XObject, operationType: OperationType.Insert | OperationType.Update): void;
|
|
66
67
|
validate(object: XObject): Promise<XErrors>;
|
|
67
68
|
preSave(object: XObject): void;
|
|
@@ -180,17 +180,23 @@ var XFormBase = /** @class */ (function (_super) {
|
|
|
180
180
|
}
|
|
181
181
|
finally { if (e_1) throw e_1.error; }
|
|
182
182
|
}
|
|
183
|
-
return [3 /*break*/,
|
|
183
|
+
return [3 /*break*/, 5];
|
|
184
184
|
case 2:
|
|
185
185
|
// add new row
|
|
186
186
|
object = this.createNewObject();
|
|
187
|
+
if (!(Object.keys(object).length === 0)) return [3 /*break*/, 4];
|
|
188
|
+
return [4 /*yield*/, this.createNewObjectAsync()];
|
|
189
|
+
case 3:
|
|
190
|
+
object = _d.sent();
|
|
191
|
+
_d.label = 4;
|
|
192
|
+
case 4:
|
|
187
193
|
// pridame pripadne "init values", ktore pridu cez prop object (pouziva sa napr. pri insertovani cez XAutoComplete na predplnenie hodnoty)
|
|
188
194
|
if (this.props.initValues !== undefined) {
|
|
189
|
-
object = __assign(__assign({}, object), this.props.initValues); // values from this.props.
|
|
195
|
+
object = __assign(__assign({}, object), this.props.initValues); // values from this.props.initValues will override values from object (if key is the same)
|
|
190
196
|
}
|
|
191
197
|
operationType = XUtils_1.OperationType.Insert;
|
|
192
|
-
_d.label =
|
|
193
|
-
case
|
|
198
|
+
_d.label = 5;
|
|
199
|
+
case 5:
|
|
194
200
|
this.preInitForm(object, operationType);
|
|
195
201
|
//console.log("volany XFormBase.componentDidMount() - ideme setnut object");
|
|
196
202
|
this.setState({ object: object } /*, () => console.log("volany XFormBase.componentDidMount() - callback setState")*/);
|
|
@@ -618,6 +624,15 @@ var XFormBase = /** @class */ (function (_super) {
|
|
|
618
624
|
XFormBase.prototype.createNewObject = function () {
|
|
619
625
|
return {};
|
|
620
626
|
};
|
|
627
|
+
// this method can be overriden in subclass if needed (to set some default values for insert)
|
|
628
|
+
// if createNewObject() returns empty object {}, then createNewObjectAsync() is called
|
|
629
|
+
XFormBase.prototype.createNewObjectAsync = function () {
|
|
630
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
631
|
+
return __generator(this, function (_a) {
|
|
632
|
+
return [2 /*return*/, {}];
|
|
633
|
+
});
|
|
634
|
+
});
|
|
635
|
+
};
|
|
621
636
|
// this method can be overriden in subclass if needed (to modify/save object after read from DB and before set into the form)
|
|
622
637
|
XFormBase.prototype.preInitForm = function (object, operationType) {
|
|
623
638
|
};
|
|
@@ -541,7 +541,7 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
541
541
|
}
|
|
542
542
|
var filterDisplay = this.props.filterDisplay !== "none" ? this.props.filterDisplay : undefined;
|
|
543
543
|
// default sortovanie - ak mame insert tak nesortujeme (drzime poradie v akom user zaznam vytvoril), ak mame update tak podla id zosortujeme (nech je to zobrazene vzdy rovnako)
|
|
544
|
-
var sortField = (
|
|
544
|
+
var sortField = (_a = this.props.sortField) !== null && _a !== void 0 ? _a : (this.props.form.isAddRow() ? undefined : xEntity.idField);
|
|
545
545
|
var label = this.props.label !== undefined ? this.props.label : this.props.assocField;
|
|
546
546
|
var readOnly = this.isReadOnly();
|
|
547
547
|
// v bloku function (child) nejde pouzit priamo this, thisLocal uz ide pouzit
|
|
@@ -58,18 +58,17 @@ var inputtextarea_1 = require("primereact/inputtextarea");
|
|
|
58
58
|
// koli optimalizacii - typovany text si zapisuje do svojej stavovej premennej a onChange zavola az z onBlur
|
|
59
59
|
// pri velkych formularoch je totiz volanie zmeny stavu this.setState({object: this.state.object, errorMap: this.state.errorMap}); pomale
|
|
60
60
|
var XInputTextareaBase = function (props) {
|
|
61
|
-
// true, ak uzivatel typuje hodnotu
|
|
62
|
-
// false, ak
|
|
61
|
+
// true, ak uzivatel typuje hodnotu
|
|
62
|
+
// false, ak bol zavolany onBlur
|
|
63
63
|
var _a = __read((0, react_1.useState)(false), 2), inputChanged = _a[0], setInputChanged = _a[1];
|
|
64
64
|
// pouzivane, len ak inputChanged === true, je tu zapisana zmenena hodnota v inpute
|
|
65
65
|
var _b = __read((0, react_1.useState)(undefined), 2), inputValueState = _b[0], setInputValueState = _b[1];
|
|
66
66
|
var onChange = function (e) {
|
|
67
|
-
// conversion to IPostgresInterval will be done in onBlur
|
|
68
67
|
setInputChanged(true);
|
|
69
68
|
setInputValueState(e.target.value);
|
|
70
69
|
};
|
|
71
70
|
var onBlur = function (e) {
|
|
72
|
-
// optimalizacia -
|
|
71
|
+
// optimalizacia - onChange volame len ak inputChanged === true
|
|
73
72
|
if (inputChanged) {
|
|
74
73
|
var value = (0, XUtilsConversions_1.stringFromUI)(e.target.value);
|
|
75
74
|
props.onChange(value);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { ExportType, LazyDataTableQueryParam } from "
|
|
2
|
+
import { ExportType, LazyDataTableQueryParam } from "../../serverApi/ExportImportParam";
|
|
3
3
|
export interface XExportParams {
|
|
4
4
|
path: string;
|
|
5
5
|
queryParam: LazyDataTableQueryParam | any;
|
|
@@ -76,16 +76,16 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
76
76
|
};
|
|
77
77
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
78
78
|
exports.XExportRowsDialog = void 0;
|
|
79
|
-
var ExportImportParam_1 = require("
|
|
79
|
+
var ExportImportParam_1 = require("../../serverApi/ExportImportParam");
|
|
80
80
|
var react_1 = __importStar(require("react"));
|
|
81
81
|
var dialog_1 = require("primereact/dialog");
|
|
82
82
|
var inputtext_1 = require("primereact/inputtext");
|
|
83
83
|
var dropdown_1 = require("primereact/dropdown");
|
|
84
84
|
var checkbox_1 = require("primereact/checkbox");
|
|
85
|
-
var XButton_1 = require("
|
|
86
|
-
var XUtils_1 = require("
|
|
87
|
-
var XUtilsConversions_1 = require("
|
|
88
|
-
var XLocale_1 = require("
|
|
85
|
+
var XButton_1 = require("../XButton");
|
|
86
|
+
var XUtils_1 = require("../XUtils");
|
|
87
|
+
var XUtilsConversions_1 = require("../../serverApi/XUtilsConversions");
|
|
88
|
+
var XLocale_1 = require("../XLocale");
|
|
89
89
|
var XExportRowsDialog = function (props) {
|
|
90
90
|
var _a, _b;
|
|
91
91
|
var _c = __read((0, react_1.useState)(ExportImportParam_1.ExportType.Csv), 2), exportType = _c[0], setExportType = _c[1];
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = 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);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
26
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
27
|
+
if (!m) return o;
|
|
28
|
+
var i = m.call(o), r, ar = [], e;
|
|
29
|
+
try {
|
|
30
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
31
|
+
}
|
|
32
|
+
catch (error) { e = { error: error }; }
|
|
33
|
+
finally {
|
|
34
|
+
try {
|
|
35
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
36
|
+
}
|
|
37
|
+
finally { if (e) throw e.error; }
|
|
38
|
+
}
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.XHtmlRenderer = void 0;
|
|
43
|
+
var react_1 = __importStar(require("react"));
|
|
44
|
+
var button_1 = require("primereact/button");
|
|
45
|
+
var XHtmlRenderer = function (props) {
|
|
46
|
+
var _a;
|
|
47
|
+
// used only for props.renderType === "fewLines"
|
|
48
|
+
var _b = __read((0, react_1.useState)(false), 2), showAllLines = _b[0], setShowAllLines = _b[1];
|
|
49
|
+
var className;
|
|
50
|
+
var htmlValue = (_a = props.htmlValue) !== null && _a !== void 0 ? _a : "";
|
|
51
|
+
var buttonExpandCollapse = null;
|
|
52
|
+
if (props.renderType === "singleLine") {
|
|
53
|
+
className = "x-html-content-single-line";
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// "fewLines" or "allLines"
|
|
57
|
+
className = "x-html-content";
|
|
58
|
+
if (props.renderType === "fewLines" && htmlValue) {
|
|
59
|
+
var parser = new DOMParser();
|
|
60
|
+
var xmlDoc = parser.parseFromString(htmlValue, "text/html");
|
|
61
|
+
var pElemList = xmlDoc.getElementsByTagName("p");
|
|
62
|
+
if (pElemList.length > props.fewLinesCount) {
|
|
63
|
+
if (!showAllLines) {
|
|
64
|
+
htmlValue = "";
|
|
65
|
+
for (var i = 0; i < props.fewLinesCount; i++) {
|
|
66
|
+
htmlValue += pElemList[i].outerHTML; // naspet do <p>line 1</p>
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// pridame button na koniec posledneho riadku
|
|
70
|
+
buttonExpandCollapse = react_1.default.createElement(button_1.Button, { icon: showAllLines ? "pi pi-angle-double-left" : "pi pi-angle-double-right", onClick: function () { return setShowAllLines(!showAllLines); }, className: "x-button-multiline-expand-collapse", style: { marginLeft: '0rem' } });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return (react_1.default.createElement("div", { className: "p-editor-content ql-snow" },
|
|
75
|
+
react_1.default.createElement("div", { className: "ql-editor " + className, dangerouslySetInnerHTML: { __html: htmlValue } }),
|
|
76
|
+
buttonExpandCollapse));
|
|
77
|
+
};
|
|
78
|
+
exports.XHtmlRenderer = XHtmlRenderer;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React, { ReactChild } from 'react';
|
|
2
|
-
import { DataTableFilterMeta, DataTableFilterMetaData, DataTableOperatorFilterMetaData } from 'primereact/datatable';
|
|
2
|
+
import { DataTableFilterMeta, DataTableFilterMetaData, DataTableOperatorFilterMetaData, DataTableSortMeta } from 'primereact/datatable';
|
|
3
3
|
import { ColumnBodyOptions, ColumnFilterElementTemplateOptions } from 'primereact/column';
|
|
4
|
-
import { XViewStatusOrBoolean } from "
|
|
5
|
-
import { XSearchBrowseParams } from "
|
|
6
|
-
import { XAggregateType, XCustomFilter } from "
|
|
7
|
-
import { XOnSaveOrCancelProp } from "
|
|
4
|
+
import { XViewStatusOrBoolean } from "../XUtils";
|
|
5
|
+
import { XSearchBrowseParams } from "../XSearchBrowseParams";
|
|
6
|
+
import { XAggregateType, XCustomFilter } from "../../serverApi/FindParam";
|
|
7
|
+
import { XOnSaveOrCancelProp } from "../XFormBase";
|
|
8
8
|
import { IconType } from "primereact/utils";
|
|
9
9
|
import { ButtonProps } from "primereact/button";
|
|
10
10
|
export type XBetweenFilterProp = "row" | "column" | undefined;
|
|
11
|
+
export type XMultilineRenderType = "singleLine" | "fewLines" | "allLines";
|
|
11
12
|
export interface XAppButtonForRow {
|
|
12
13
|
key?: string;
|
|
13
14
|
icon?: IconType<ButtonProps>;
|
|
@@ -51,11 +52,15 @@ export interface XLazyDataTableProps {
|
|
|
51
52
|
appButtons?: any;
|
|
52
53
|
filters?: DataTableFilterMeta;
|
|
53
54
|
customFilter?: XCustomFilter;
|
|
54
|
-
sortField?: string;
|
|
55
|
+
sortField?: string | DataTableSortMeta[];
|
|
55
56
|
fullTextSearch: boolean | string[];
|
|
56
|
-
|
|
57
|
+
fields?: string[];
|
|
58
|
+
multilineSwitch: boolean;
|
|
59
|
+
multilineSwitchInitValue: XMultilineRenderType;
|
|
60
|
+
multilineSwitchFewLinesCount: number;
|
|
57
61
|
searchBrowseParams?: XSearchBrowseParams;
|
|
58
62
|
width?: string;
|
|
63
|
+
rowClassName?: (data: any) => object | string | undefined;
|
|
59
64
|
dataLoadedState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];
|
|
60
65
|
editMode?: boolean;
|
|
61
66
|
editModeHandlers?: XEditModeHandlers;
|
|
@@ -69,7 +74,9 @@ export declare const XLazyDataTable: {
|
|
|
69
74
|
rows: number;
|
|
70
75
|
filterDisplay: string;
|
|
71
76
|
fullTextSearch: boolean;
|
|
72
|
-
|
|
77
|
+
multilineSwitch: boolean;
|
|
78
|
+
multilineSwitchInitValue: string;
|
|
79
|
+
multilineSwitchFewLinesCount: number;
|
|
73
80
|
scrollable: boolean;
|
|
74
81
|
scrollWidth: string;
|
|
75
82
|
scrollHeight: string;
|
|
@@ -84,6 +91,7 @@ export type XFilterElementParams = {
|
|
|
84
91
|
options: ColumnFilterElementTemplateOptions;
|
|
85
92
|
};
|
|
86
93
|
export type XFilterElementProp = (params: XFilterElementParams) => React.ReactNode;
|
|
94
|
+
export type XContentType = "multiline" | "html" | undefined;
|
|
87
95
|
export interface XLazyColumnProps {
|
|
88
96
|
field: string;
|
|
89
97
|
header?: any;
|
|
@@ -94,11 +102,15 @@ export interface XLazyColumnProps {
|
|
|
94
102
|
showFilterMenu?: boolean;
|
|
95
103
|
betweenFilter?: XBetweenFilterProp | "noBetween";
|
|
96
104
|
width?: string;
|
|
105
|
+
contentType?: XContentType;
|
|
97
106
|
aggregateType?: XAggregateType;
|
|
98
107
|
columnViewStatus: XViewStatusOrBoolean;
|
|
99
108
|
filterElement?: XFilterElementProp;
|
|
100
109
|
body?: React.ReactNode | ((data: any, options: ColumnBodyOptions) => React.ReactNode);
|
|
101
110
|
}
|
|
111
|
+
export type XLazyColumnType = {
|
|
112
|
+
props: XLazyColumnProps;
|
|
113
|
+
};
|
|
102
114
|
export declare const XLazyColumn: {
|
|
103
115
|
(props: XLazyColumnProps): null;
|
|
104
116
|
defaultProps: {
|