@michalrakus/x-react-web-lib 0.24.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/XEnvVars.d.ts +3 -0
  2. package/XEnvVars.js +5 -0
  3. package/gulpfile.js +1 -0
  4. package/lib/administration/XBrowseMetaBrowse.js +1 -2
  5. package/lib/administration/XBrowseMetaForm.js +10 -11
  6. package/lib/administration/XUserBrowse.js +5 -5
  7. package/lib/administration/XUserForm.js +39 -29
  8. package/lib/components/SourceCodeLinkEntity.js +1 -2
  9. package/lib/components/XAutoComplete.js +1 -3
  10. package/lib/components/XAutoCompleteBase.js +6 -9
  11. package/lib/components/XBrowse.js +2 -4
  12. package/lib/components/XButton.js +1 -2
  13. package/lib/components/XButtonIconSmall.js +1 -2
  14. package/lib/components/XChangePasswordForm.js +2 -3
  15. package/lib/components/XCheckbox.d.ts +1 -0
  16. package/lib/components/XCheckbox.js +4 -4
  17. package/lib/components/XCheckboxDT.js +1 -2
  18. package/lib/components/XDataTable.js +3 -5
  19. package/lib/components/XDropdown.js +3 -4
  20. package/lib/components/XDropdownDT.js +2 -3
  21. package/lib/components/XDropdownDTFilter.js +2 -3
  22. package/lib/components/XDropdownFormDTFilter.js +2 -3
  23. package/lib/components/XEditColumnDialog.js +2 -3
  24. package/lib/components/XEnvVars.d.ts +12 -0
  25. package/lib/components/XEnvVars.js +20 -0
  26. package/lib/components/XExportRowsDialog.js +11 -9
  27. package/lib/components/XFieldSelector.js +2 -3
  28. package/lib/components/XFormBase.js +1 -3
  29. package/lib/components/XFormBaseT.js +1 -3
  30. package/lib/components/XFormComponent.js +1 -3
  31. package/lib/components/XFormDataTable2.js +16 -17
  32. package/lib/components/XFormFooter.js +1 -2
  33. package/lib/components/XFormNavigator3.js +21 -11
  34. package/lib/components/XHolders.js +2 -4
  35. package/lib/components/XInputDate.js +1 -2
  36. package/lib/components/XInputDateDT.js +1 -2
  37. package/lib/components/XInputDecimal.js +1 -2
  38. package/lib/components/XInputDecimalDT.js +1 -2
  39. package/lib/components/XInputText.js +1 -3
  40. package/lib/components/XInputTextDT.js +1 -2
  41. package/lib/components/XLazyDataTable.d.ts +8 -3
  42. package/lib/components/XLazyDataTable.js +62 -33
  43. package/lib/components/XLoginDialog.js +1 -2
  44. package/lib/components/XLoginForm.js +4 -5
  45. package/lib/components/XResponseError.js +1 -3
  46. package/lib/components/XSearchButton.js +1 -3
  47. package/lib/components/XSearchButtonDT.js +2 -3
  48. package/lib/components/XSearchButtonOld.js +2 -3
  49. package/lib/components/XToOneAssocButton.js +1 -2
  50. package/lib/components/XToken.d.ts +4 -3
  51. package/lib/components/XUtils.d.ts +10 -3
  52. package/lib/components/XUtils.js +61 -13
  53. package/lib/serverApi/XUser.d.ts +1 -0
  54. package/package.json +14 -11
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
14
  var __importStar = (this && this.__importStar) || function (mod) {
15
15
  if (mod && mod.__esModule) return mod;
16
16
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
@@ -77,7 +77,7 @@ var react_1 = __importStar(require("react"));
77
77
  var password_1 = require("primereact/password");
78
78
  var button_1 = require("primereact/button");
79
79
  var XUtils_1 = require("./XUtils");
80
- var XLoginForm = function (props) {
80
+ exports.XLoginForm = function (props) {
81
81
  var _a = __read(react_1.useState(""), 2), username = _a[0], setUsername = _a[1];
82
82
  var _b = __read(react_1.useState(""), 2), password = _b[0], setPassword = _b[1];
83
83
  var onClickLogIn = function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -98,7 +98,7 @@ var XLoginForm = function (props) {
98
98
  _a.label = 3;
99
99
  case 3:
100
100
  // zatial si ulozime len username/password (koli http basic autentifikacii)
101
- props.setXToken({ username: username, password: password, customUser: customUser });
101
+ props.setXToken({ username: username, password: password, xUser: customUser });
102
102
  // metoda pouzivana v XLoginDialog
103
103
  if (props.onLogin) {
104
104
  props.onLogin();
@@ -111,7 +111,7 @@ var XLoginForm = function (props) {
111
111
  }
112
112
  });
113
113
  }); };
114
- return (react_1.default.createElement("div", null,
114
+ return (react_1.default.createElement("div", { className: "flex flex-column align-items-center" },
115
115
  react_1.default.createElement("h2", null, "Please log in"),
116
116
  react_1.default.createElement("div", { className: "field grid" },
117
117
  react_1.default.createElement("label", { htmlFor: "userName", className: "col-fixed", style: { width: '10.5rem' } }, "Username"),
@@ -121,4 +121,3 @@ var XLoginForm = function (props) {
121
121
  react_1.default.createElement(password_1.Password, { id: "password", value: password, onChange: function (e) { return setPassword(e.target.value); }, feedback: false, maxLength: 64 })),
122
122
  react_1.default.createElement(button_1.Button, { label: "Log in", onClick: onClickLogIn })));
123
123
  };
124
- exports.XLoginForm = XLoginForm;
@@ -3,12 +3,10 @@ var __extends = (this && this.__extends) || (function () {
3
3
  var extendStatics = function (d, b) {
4
4
  extendStatics = Object.setPrototypeOf ||
5
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]; };
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
7
  return extendStatics(d, b);
8
8
  };
9
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
10
  extendStatics(d, b);
13
11
  function __() { this.constructor = d; }
14
12
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -3,12 +3,10 @@ var __extends = (this && this.__extends) || (function () {
3
3
  var extendStatics = function (d, b) {
4
4
  extendStatics = Object.setPrototypeOf ||
5
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]; };
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
7
  return extendStatics(d, b);
8
8
  };
9
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
10
  extendStatics(d, b);
13
11
  function __() { this.constructor = d; }
14
12
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
14
  var __importStar = (this && this.__importStar) || function (mod) {
15
15
  if (mod && mod.__esModule) return mod;
16
16
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
@@ -78,7 +78,7 @@ var inputtext_1 = require("primereact/inputtext");
78
78
  var button_1 = require("primereact/button");
79
79
  var dialog_1 = require("primereact/dialog");
80
80
  var XUtilsMetadata_1 = require("./XUtilsMetadata");
81
- var XSearchButtonDT = function (props) {
81
+ exports.XSearchButtonDT = function (props) {
82
82
  var inputTextEl = react_1.useRef(null);
83
83
  var _a = __read(react_1.useState(false), 2), inputChanged = _a[0], setInputChanged = _a[1]; // priznak, ci uzivatel typovanim zmenil hodnotu v inpute
84
84
  var _b = __read(react_1.useState(null), 2), inputValueState = _b[0], setInputValueState = _b[1]; // pouzivane, len ak inputChanged === true, je tu zapisana zmenena hodnota v inpute
@@ -181,4 +181,3 @@ var XSearchButtonDT = function (props) {
181
181
  react_1.default.createElement(button_1.Button, { label: "...", onClick: onClickSearch })),
182
182
  react_1.default.createElement(dialog_1.Dialog, { visible: dialogOpened, onHide: onHide }, react_1.default.cloneElement(props.searchTable, { searchTableParams: { onChoose: onChoose, displayField: props.displayField, filter: (inputChanged ? inputValueState : undefined) } }, props.searchTable.children))));
183
183
  };
184
- exports.XSearchButtonDT = XSearchButtonDT;
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
14
  var __importStar = (this && this.__importStar) || function (mod) {
15
15
  if (mod && mod.__esModule) return mod;
16
16
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
@@ -78,7 +78,7 @@ var button_1 = require("primereact/button");
78
78
  var XUtils_1 = require("./XUtils");
79
79
  var dialog_1 = require("primereact/dialog");
80
80
  var XUtilsMetadata_1 = require("./XUtilsMetadata");
81
- var XSearchButtonOld = function (props) {
81
+ exports.XSearchButtonOld = function (props) {
82
82
  var _a, _b, _c;
83
83
  props.form.addField(props.assocField + '.' + props.displayField);
84
84
  var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity());
@@ -205,4 +205,3 @@ var XSearchButtonOld = function (props) {
205
205
  react_1.default.createElement(button_1.Button, { label: "...", onClick: onClickSearch }),
206
206
  react_1.default.createElement(dialog_1.Dialog, { visible: dialogOpened, onHide: onHide }, react_1.default.cloneElement(props.searchTable, { searchTableParams: { onChoose: onChoose, displayField: props.displayField, filter: (inputChanged ? inputValueState : undefined) } }, props.searchTable.children))));
207
207
  };
208
- exports.XSearchButtonOld = XSearchButtonOld;
@@ -8,7 +8,7 @@ var react_1 = __importDefault(require("react"));
8
8
  var button_1 = require("primereact/button");
9
9
  var XUtilsMetadata_1 = require("./XUtilsMetadata");
10
10
  var XUtils_1 = require("./XUtils");
11
- var XToOneAssocButton = function (props) {
11
+ exports.XToOneAssocButton = function (props) {
12
12
  // mozno lepsie by bolo sem dat xEntityAssoc.idField ale postaci aj *FAKE*
13
13
  props.form.addField(props.assocField + '.*FAKE*');
14
14
  var label = props.label !== undefined ? props.label : props.assocField;
@@ -27,4 +27,3 @@ var XToOneAssocButton = function (props) {
27
27
  react_1.default.createElement("label", { htmlFor: props.assocField, className: "col-fixed", style: { width: XUtils_1.XUtils.FIELD_LABEL_WIDTH } }, label),
28
28
  react_1.default.createElement(button_1.Button, { label: label, onClick: onClickButton, disabled: assocObject === null })));
29
29
  };
30
- exports.XToOneAssocButton = XToOneAssocButton;
@@ -1,5 +1,6 @@
1
1
  export interface XToken {
2
- username: string;
3
- password: string;
4
- customUser?: any;
2
+ username?: string;
3
+ password?: string;
4
+ accessToken?: string;
5
+ xUser?: any;
5
6
  }
@@ -1,6 +1,7 @@
1
1
  import { XToken } from "./XToken";
2
2
  import { CsvDecimalFormat, CsvSeparator, ExportType } from "../serverApi/ExportImportParam";
3
3
  import React from "react";
4
+ import { XEnvVar } from "./XEnvVars";
4
5
  export declare enum OperationType {
5
6
  None = 0,
6
7
  Insert = 1,
@@ -9,7 +10,7 @@ export declare enum OperationType {
9
10
  }
10
11
  export declare class XUtils {
11
12
  static dropdownEmptyOptionValue: string;
12
- static xServerUrl: string | null;
13
+ static xBackendUrl: string | undefined;
13
14
  static xToken: XToken | null;
14
15
  static xTokenPublic: XToken;
15
16
  private static appFormMap;
@@ -37,13 +38,19 @@ export declare class XUtils {
37
38
  static post(path: string, value: any): Promise<Response>;
38
39
  static fetchBasicJson(path: string, value: any, usePublicToken?: boolean | XToken): Promise<Response>;
39
40
  static fetchFile(path: string, jsonFieldValue: any, fileToPost: any): Promise<any>;
41
+ static fetchBasicAuthBasic(path: string, headers: any, body: any, usePublicToken?: boolean | XToken): Promise<Response>;
40
42
  static fetchBasic(path: string, headers: any, body: any, usePublicToken?: boolean | XToken): Promise<Response>;
41
43
  static fetchById(entity: string, fields: string[], id: number): Promise<any>;
42
44
  static setXToken(xToken: XToken | null): void;
43
45
  static getXToken(): XToken | null;
44
46
  static getUsername(): string | undefined;
45
- static getXServerUrl(): string;
46
- static setXServerUrl(xServerUrl: string): void;
47
+ static getXBackendUrl(): string;
48
+ static setXBackendUrl(xBackendUrl: string | undefined): void;
49
+ /**
50
+ * returns value of environment variable from configuration file .env
51
+ * @param envVar
52
+ */
53
+ static getEnvVarValue(envVarEnum: XEnvVar): string;
47
54
  static removeRow(entity: string, row: any): Promise<void>;
48
55
  static arrayMoveElement(array: any[], position: number, offset: number): void;
49
56
  static isReadOnly(path: string, readOnlyInit?: boolean): boolean;
@@ -90,7 +90,7 @@ var XUtils = /** @class */ (function () {
90
90
  function XUtils() {
91
91
  }
92
92
  XUtils.demo = function () {
93
- return XUtils.getXServerUrl().indexOf('x-demo-server') !== -1;
93
+ return XUtils.getXBackendUrl().indexOf('x-demo-server') !== -1;
94
94
  };
95
95
  XUtils.isMobile = function () {
96
96
  // extra small displays (podla https://www.w3schools.com/howto/howto_css_media_query_breakpoints.asp)
@@ -306,7 +306,8 @@ var XUtils = /** @class */ (function () {
306
306
  });
307
307
  });
308
308
  };
309
- XUtils.fetchBasic = function (path, headers, body, usePublicToken) {
309
+ // nepouzivana stara Basic autentifikacia
310
+ XUtils.fetchBasicAuthBasic = function (path, headers, body, usePublicToken) {
310
311
  return __awaiter(this, void 0, void 0, function () {
311
312
  var xToken, response, responseBody;
312
313
  return __generator(this, function (_a) {
@@ -325,7 +326,43 @@ var XUtils = /** @class */ (function () {
325
326
  }
326
327
  }
327
328
  headers = __assign(__assign({}, headers), { 'Authorization': "Basic " + Buffer.from(xToken.username + ':' + xToken.password).toString('base64') });
328
- return [4 /*yield*/, fetch(XUtils.getXServerUrl() + path, {
329
+ return [4 /*yield*/, fetch(XUtils.getXBackendUrl() + path, {
330
+ method: 'POST',
331
+ headers: headers,
332
+ body: body
333
+ })];
334
+ case 1:
335
+ response = _a.sent();
336
+ if (!!response.ok) return [3 /*break*/, 3];
337
+ return [4 /*yield*/, response.json()];
338
+ case 2:
339
+ responseBody = _a.sent();
340
+ throw new XResponseError_1.XResponseError(path, response.status, response.statusText, responseBody);
341
+ case 3: return [2 /*return*/, response];
342
+ }
343
+ });
344
+ });
345
+ };
346
+ XUtils.fetchBasic = function (path, headers, body, usePublicToken) {
347
+ return __awaiter(this, void 0, void 0, function () {
348
+ var xToken, response, responseBody;
349
+ return __generator(this, function (_a) {
350
+ switch (_a.label) {
351
+ case 0:
352
+ if (typeof usePublicToken === 'object') {
353
+ xToken = usePublicToken;
354
+ }
355
+ else if (usePublicToken) {
356
+ xToken = XUtils.xTokenPublic; // public token vzdy
357
+ }
358
+ else {
359
+ xToken = XUtils.getXToken();
360
+ if (xToken === null) {
361
+ xToken = XUtils.xTokenPublic; // ak nikto nie je prihlaseny, posleme public token
362
+ }
363
+ }
364
+ headers = __assign(__assign({}, headers), { 'Authorization': "Bearer " + xToken.accessToken });
365
+ return [4 /*yield*/, fetch(XUtils.getXBackendUrl() + path, {
329
366
  method: 'POST',
330
367
  headers: headers,
331
368
  body: body
@@ -352,17 +389,28 @@ var XUtils = /** @class */ (function () {
352
389
  return XUtils.xToken;
353
390
  };
354
391
  XUtils.getUsername = function () {
355
- var _a;
356
- return (_a = XUtils.getXToken()) === null || _a === void 0 ? void 0 : _a.username;
392
+ var _a, _b;
393
+ return (_b = (_a = XUtils.getXToken()) === null || _a === void 0 ? void 0 : _a.xUser) === null || _b === void 0 ? void 0 : _b.username;
357
394
  };
358
- XUtils.getXServerUrl = function () {
359
- if (XUtils.xServerUrl === null) {
360
- throw "XUtils.xServerUrl is null";
395
+ XUtils.getXBackendUrl = function () {
396
+ if (XUtils.xBackendUrl === undefined) {
397
+ throw "XUtils.xBackendUrl is undefined";
361
398
  }
362
- return XUtils.xServerUrl;
363
- };
364
- XUtils.setXServerUrl = function (xServerUrl) {
365
- XUtils.xServerUrl = xServerUrl;
399
+ return XUtils.xBackendUrl;
400
+ };
401
+ XUtils.setXBackendUrl = function (xBackendUrl) {
402
+ XUtils.xBackendUrl = xBackendUrl;
403
+ };
404
+ /**
405
+ * returns value of environment variable from configuration file .env
406
+ * @param envVar
407
+ */
408
+ XUtils.getEnvVarValue = function (envVarEnum) {
409
+ var value = process.env[envVarEnum];
410
+ if (value === undefined) {
411
+ throw "Environment variable " + envVarEnum + " - value not found. Check configuration file .env*";
412
+ }
413
+ return value;
366
414
  };
367
415
  // funkcionalita ktoru by bolo dobre dat do servisov
368
416
  XUtils.removeRow = function (entity, row) {
@@ -434,7 +482,7 @@ var XUtils = /** @class */ (function () {
434
482
  return value;
435
483
  };
436
484
  XUtils.dropdownEmptyOptionValue = " ";
437
- XUtils.xServerUrl = null;
485
+ XUtils.xBackendUrl = undefined;
438
486
  // nacachovany XToken - na rozlicnych miestach potrebujeme vediet uzivatela
439
487
  XUtils.xToken = null;
440
488
  // token pouzivany pre public stranky (napr. XLoginForm), meno/heslo natvrdo (lepsie ako nic)
@@ -3,4 +3,5 @@ export interface XUser {
3
3
  username: string;
4
4
  password: string;
5
5
  name: string;
6
+ enabled: boolean;
6
7
  }
package/package.json CHANGED
@@ -1,18 +1,21 @@
1
1
  {
2
2
  "name": "@michalrakus/x-react-web-lib",
3
- "version": "0.24.0",
3
+ "version": "1.0.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rimraf lib",
7
7
  "compile": "tsc",
8
8
  "generateApi": "gulp generateApi",
9
- "build": "npm run clean && npm run compile && npm run generateApi",
10
- "linkDemo": "npm link && npm link ../DemoReactWebApp/node_modules/react",
11
- "linkDemoRouter": "npm link && npm link ../demo-router-web-app/node_modules/react",
12
- "linkKvm": "npm link && npm link ../kvm-web-app/node_modules/react",
13
- "linkKvmNext": "npm link && npm link ../kvm-next-web-app/node_modules/react",
9
+ "build": "pnpm run clean && pnpm run compile && pnpm run generateApi",
10
+ "linkDemo": "pnpm link && pnpm link ../DemoReactWebApp/node_modules/react",
11
+ "linkDemoRouter": "pnpm link && pnpm link ../demo-router-web-app/node_modules/react",
12
+ "linkKvm": "pnpm link && pnpm link ../kvm-web-app/node_modules/react",
13
+ "linkKvmNext": "pnpm link && pnpm link ../kvm-next-web-app/node_modules/react",
14
14
  "test": "echo \"Error: no test specified\" && exit 1",
15
- "prepublishOnly": "npm run build"
15
+ "prepublishOnly": "pnpm run build",
16
+ "buildAndPack": "pnpm run build && pnpm pack",
17
+ "bp": "pnpm run buildAndPack",
18
+ "preinstall": "npx only-allow pnpm"
16
19
  },
17
20
  "author": "Michal Rakus",
18
21
  "license": "ISC",
@@ -30,9 +33,9 @@
30
33
  "@types/react-transition-group": "^4.2.4",
31
34
  "axios": "^0.19.0",
32
35
  "classnames": "^2.2.6",
33
- "primeflex": "3.0.1",
34
- "primeicons": "^4.1.0",
35
- "primereact": "latest",
36
+ "primeflex": "^3.3.0",
37
+ "primeicons": "^6.0.1",
38
+ "primereact": "6.0.2",
36
39
  "lodash": "^4.17.21",
37
40
  "react": "^17.0.1",
38
41
  "react-dom": "^17.0.1",
@@ -40,7 +43,7 @@
40
43
  "react-transition-group": "^4.4.1",
41
44
  "gulp": "^4.0.2",
42
45
  "rimraf": "^3.0.2",
43
- "typescript": "^4.2.4",
46
+ "typescript": "^3.2.1",
44
47
  "dateformat": "^4.4.1"
45
48
  },
46
49
  "files": [