@michalrakus/x-react-web-lib 1.34.0 → 1.35.1

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 (38) hide show
  1. package/XDocTemplateButton.d.ts +3 -0
  2. package/XDocTemplateButton.js +5 -0
  3. package/gulpfile.js +3 -0
  4. package/lib/administration/x-enum-enum.d.ts +12 -0
  5. package/lib/administration/x-enum-enum.js +2 -0
  6. package/lib/administration/x-enum.d.ts +10 -0
  7. package/lib/administration/x-enum.js +2 -0
  8. package/lib/components/XAutoComplete.d.ts +1 -0
  9. package/lib/components/XAutoComplete.js +1 -1
  10. package/lib/components/XAutoCompleteBase.d.ts +4 -4
  11. package/lib/components/XAutoCompleteBase.js +17 -24
  12. package/lib/components/XAutoCompleteDT.d.ts +1 -0
  13. package/lib/components/XAutoCompleteDT.js +1 -1
  14. package/lib/components/XFormDialog.d.ts +12 -0
  15. package/lib/components/XFormDialog.js +20 -0
  16. package/lib/components/XFormFooter.d.ts +4 -0
  17. package/lib/components/XFormFooter.js +20 -1
  18. package/lib/components/XInputFileList.js +6 -27
  19. package/lib/components/XLazyDataTable/XExportRowsDialog.js +37 -59
  20. package/lib/components/XLazyDataTable/XLazyDataTable.d.ts +33 -36
  21. package/lib/components/XLazyDataTable/XLazyDataTable.js +206 -144
  22. package/lib/components/XUtils.d.ts +1 -0
  23. package/lib/components/XUtils.js +21 -8
  24. package/lib/modules/docTemplates/XDocTemplateButton.d.ts +7 -0
  25. package/lib/modules/docTemplates/XDocTemplateButton.js +150 -0
  26. package/lib/modules/docTemplates/xt-doc-template-field-to-join.d.ts +6 -0
  27. package/lib/modules/docTemplates/xt-doc-template-field-to-join.js +2 -0
  28. package/lib/modules/docTemplates/xt-doc-template.d.ts +18 -0
  29. package/lib/modules/docTemplates/xt-doc-template.js +2 -0
  30. package/lib/modules/files/x-file.d.ts +8 -0
  31. package/lib/modules/files/x-file.js +2 -0
  32. package/lib/serverApi/FindParam.d.ts +2 -1
  33. package/lib/serverApi/FindParam.js +1 -0
  34. package/lib/serverApi/x-lib-api.d.ts +6 -0
  35. package/lib/serverApi/x-lib-api.js +0 -1
  36. package/package.json +1 -1
  37. package/xt-doc-template.d.ts +3 -0
  38. package/xt-doc-template.js +5 -0
@@ -81,6 +81,7 @@ var ExportImportParam_1 = require("../serverApi/ExportImportParam");
81
81
  var XResponseError_1 = require("./XResponseError");
82
82
  var FindParam_1 = require("../serverApi/FindParam");
83
83
  var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
84
+ var XLocale_1 = require("./XLocale");
84
85
  var OperationType;
85
86
  (function (OperationType) {
86
87
  OperationType[OperationType["None"] = 0] = "None";
@@ -104,7 +105,9 @@ var XUtils = /** @class */ (function () {
104
105
  // extra small displays (podla https://www.w3schools.com/howto/howto_css_media_query_breakpoints.asp)
105
106
  // mozno tu treba dat (window.screen.width * window.devicePixelRatio)
106
107
  // bolo 600 ($sm = 576 (primeflex)) - len ak bol mobil na vysku, 768 ma byt aj pre mobil na sirku
107
- return typeof window !== 'undefined' && window.screen.availWidth < 768; // $sm = 576 (primeflex)
108
+ //return typeof window !== 'undefined' && window.screen.availWidth < 768; // $sm = 576 (primeflex)
109
+ // blblo mi window.screen.availWidth (vracalo 1920 v mobile mode v browseri)
110
+ return XUtils.getViewWidth() < 768;
108
111
  };
109
112
  XUtils.mobileCssSuffix = function () {
110
113
  return XUtils.isMobile() ? '-mobile' : '';
@@ -169,7 +172,9 @@ var XUtils = /** @class */ (function () {
169
172
  var breakpointsToFind;
170
173
  var availWidth;
171
174
  if (typeof window !== 'undefined') {
172
- availWidth = window.screen.availWidth; // pouzivame availWidth, nie width, availWidth odratava napr. taskbar
175
+ //availWidth = window.screen.availWidth; // pouzivame availWidth, nie width, availWidth odratava napr. taskbar
176
+ // blblo mi window.screen.availWidth (vracalo 1920 v mobile mode v browseri) - mozno by tu malo byt window.outerWidth
177
+ availWidth = XUtils.getViewWidth();
173
178
  if (availWidth < 576) {
174
179
  breakpointsToFind = ['xs:'];
175
180
  }
@@ -335,7 +340,17 @@ var XUtils = /** @class */ (function () {
335
340
  };
336
341
  XUtils.openExcelReport = function (apiPath, requestPayload, fileName) {
337
342
  return __awaiter(this, void 0, void 0, function () {
338
- var response, e_5, fileNameExt, respBlob, url, a;
343
+ return __generator(this, function (_a) {
344
+ return [2 /*return*/, XUtils.downloadFile(apiPath, requestPayload, "".concat(fileName !== null && fileName !== void 0 ? fileName : apiPath, ".xlsx"))];
345
+ });
346
+ });
347
+ };
348
+ // general method for file download
349
+ // returns true if the download finished successfully (often we don´t need this info)
350
+ // it would be nice if the fileName could be taken also from backend, from the service call
351
+ XUtils.downloadFile = function (apiPath, requestPayload, fileName) {
352
+ return __awaiter(this, void 0, void 0, function () {
353
+ var response, e_5, respBlob, url, a;
339
354
  return __generator(this, function (_a) {
340
355
  switch (_a.label) {
341
356
  case 0:
@@ -346,17 +361,15 @@ var XUtils = /** @class */ (function () {
346
361
  return [3 /*break*/, 3];
347
362
  case 2:
348
363
  e_5 = _a.sent();
349
- XUtils.showErrorMessage("Nepodarilo sa vytvori\u0165/stiahnu\u0165 xlsx s\u00FAbor.", e_5); // dalsie info (apiPath, payload) by mali byt v "e"
364
+ XUtils.showErrorMessage((0, XLocale_1.xLocaleOption)('fileDownloadFailed'), e_5); // next info (apiPath, payload) should be in "e"
350
365
  return [2 /*return*/, false];
351
- case 3:
352
- fileNameExt = "".concat(fileName !== null && fileName !== void 0 ? fileName : apiPath, ".xlsx");
353
- return [4 /*yield*/, response.blob()];
366
+ case 3: return [4 /*yield*/, response.blob()];
354
367
  case 4:
355
368
  respBlob = _a.sent();
356
369
  url = window.URL.createObjectURL(respBlob);
357
370
  a = document.createElement('a');
358
371
  a.href = url;
359
- a.download = fileNameExt;
372
+ a.download = fileName;
360
373
  a.click();
361
374
  return [2 /*return*/, true];
362
375
  }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { XtDocTemplate } from "./xt-doc-template";
3
+ export declare const XDocTemplateButton: (props: {
4
+ entity: string;
5
+ rowId: number | undefined;
6
+ docTemplates?: ((entity: string) => Promise<XtDocTemplate[]>) | undefined;
7
+ }) => React.JSX.Element | null;
@@ -0,0 +1,150 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ var __read = (this && this.__read) || function (o, n) {
62
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
63
+ if (!m) return o;
64
+ var i = m.call(o), r, ar = [], e;
65
+ try {
66
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
67
+ }
68
+ catch (error) { e = { error: error }; }
69
+ finally {
70
+ try {
71
+ if (r && !r.done && (m = i["return"])) m.call(i);
72
+ }
73
+ finally { if (e) throw e.error; }
74
+ }
75
+ return ar;
76
+ };
77
+ Object.defineProperty(exports, "__esModule", { value: true });
78
+ exports.XDocTemplateButton = void 0;
79
+ var react_1 = __importStar(require("react"));
80
+ var button_1 = require("primereact/button");
81
+ var splitbutton_1 = require("primereact/splitbutton");
82
+ var XUtils_1 = require("../../components/XUtils");
83
+ var XUtilsCommon_1 = require("../../serverApi/XUtilsCommon");
84
+ var XLocale_1 = require("../../components/XLocale");
85
+ var XDocTemplateButton = function (props) {
86
+ var _a = __read((0, react_1.useState)([]), 2), docTemplateList = _a[0], setDocTemplateList = _a[1];
87
+ // parameter [] - works like componentDidMount
88
+ (0, react_1.useEffect)(function () {
89
+ loadDocTemplates();
90
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
91
+ var loadDocTemplates = function () { return __awaiter(void 0, void 0, void 0, function () {
92
+ var docTemplateListLocal;
93
+ return __generator(this, function (_a) {
94
+ switch (_a.label) {
95
+ case 0:
96
+ if (!props.docTemplates) return [3 /*break*/, 2];
97
+ return [4 /*yield*/, props.docTemplates(props.entity)];
98
+ case 1:
99
+ docTemplateListLocal = _a.sent();
100
+ return [3 /*break*/, 4];
101
+ case 2: return [4 /*yield*/, XUtils_1.XUtils.fetchRows('XtDocTemplate', XUtilsCommon_1.XUtilsCommon.createCustomFilter("[entity] = '".concat(props.entity, "' AND [availableInForms] = TRUE")), "label", ["templateXFile.name"])];
102
+ case 3:
103
+ // default
104
+ docTemplateListLocal = _a.sent();
105
+ _a.label = 4;
106
+ case 4:
107
+ setDocTemplateList(docTemplateListLocal);
108
+ return [2 /*return*/];
109
+ }
110
+ });
111
+ }); };
112
+ var onClickButton = function (xtDocTemplate) { return __awaiter(void 0, void 0, void 0, function () {
113
+ var xtRunDocTemplateRequest;
114
+ var _a;
115
+ return __generator(this, function (_b) {
116
+ // in XLazyDataTable if no row is selected
117
+ if (!props.rowId) {
118
+ alert((0, XLocale_1.xLocaleOption)('pleaseSelectRow'));
119
+ return [2 /*return*/];
120
+ }
121
+ xtRunDocTemplateRequest = { xtDocTemplateId: xtDocTemplate.id, rowId: props.rowId, xUser: (_a = XUtils_1.XUtils.getXToken()) === null || _a === void 0 ? void 0 : _a.xUser };
122
+ // TODO - pridat id-cko do nazvu? alebo na XtDocTemplate vytvorit nejaky atribut pre nazov suboru vo forme Klient-{klient.meno}-{klient.priezvisko}.xlsx
123
+ // ale to by chcelo vytvorit ten nazov v service (po tom co bude nacitany row) a nejako ho dostat sem
124
+ XUtils_1.XUtils.downloadFile('xt-run-doc-template', xtRunDocTemplateRequest, xtDocTemplate.templateXFile.name);
125
+ return [2 /*return*/];
126
+ });
127
+ }); };
128
+ if (docTemplateList.length === 0) {
129
+ return null;
130
+ }
131
+ else if (docTemplateList.length === 1) {
132
+ // simple button
133
+ var docTemplate_1 = docTemplateList[0];
134
+ return (react_1.default.createElement(button_1.Button, { icon: "pi pi-file-export", label: docTemplate_1.label, onClick: function () { return onClickButton(docTemplate_1); }, className: "m-1" }));
135
+ }
136
+ else {
137
+ // split button
138
+ var docTemplate0_1 = docTemplateList[0];
139
+ var items = [];
140
+ var _loop_1 = function (index) {
141
+ var docTemplate = docTemplateList[index];
142
+ items.push({ icon: "pi pi-file-export", label: docTemplate.label, command: function () { return onClickButton(docTemplate); } });
143
+ };
144
+ for (var index = 1; index < docTemplateList.length; index++) {
145
+ _loop_1(index);
146
+ }
147
+ return (react_1.default.createElement(splitbutton_1.SplitButton, { icon: "pi pi-file-export", label: docTemplate0_1.label, onClick: function () { return onClickButton(docTemplate0_1); }, model: items, className: "m-1" }));
148
+ }
149
+ };
150
+ exports.XDocTemplateButton = XDocTemplateButton;
@@ -0,0 +1,6 @@
1
+ import { XtDocTemplate } from "./xt-doc-template";
2
+ export interface XtDocTemplateFieldToJoin {
3
+ id: number;
4
+ xtDocTemplate: XtDocTemplate;
5
+ field: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ import { XtDocTemplateFieldToJoin } from "./xt-doc-template-field-to-join";
2
+ import { XUser } from "../../serverApi/XUser";
3
+ import { XFile } from "../files/x-file";
4
+ import { XEnum } from "../../administration/x-enum";
5
+ export interface XtDocTemplate {
6
+ id: number;
7
+ label: string;
8
+ comment: string | null;
9
+ entity: string;
10
+ xtDocTemplateFieldToJoinList: XtDocTemplateFieldToJoin[];
11
+ templateId: string | null;
12
+ templateType: XEnum;
13
+ templateXFile: XFile;
14
+ availableInForms: boolean;
15
+ modifDate: Date | null;
16
+ modifXUser: XUser | null;
17
+ version: number;
18
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export interface XFile {
2
+ id: number;
3
+ name: string;
4
+ size: number;
5
+ pathName: string;
6
+ modifDate: Date;
7
+ modifXUser: number;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -14,7 +14,8 @@ export interface XCustomFilterItem {
14
14
  }
15
15
  export type XCustomFilter = XCustomFilterItem | XCustomFilterItem[];
16
16
  export declare enum XFilterMatchMode {
17
- X_AUTO_COMPLETE = "xAutoComplete"
17
+ X_AUTO_COMPLETE = "xAutoComplete",
18
+ X_FILTER_ELEMENT = "xFilterElement"
18
19
  }
19
20
  export interface XDataTableFilterMetaData extends DataTableFilterMetaData {
20
21
  customFilterItems?: XCustomFilterItem[];
@@ -12,6 +12,7 @@ var ResultType;
12
12
  var XFilterMatchMode;
13
13
  (function (XFilterMatchMode) {
14
14
  XFilterMatchMode["X_AUTO_COMPLETE"] = "xAutoComplete";
15
+ XFilterMatchMode["X_FILTER_ELEMENT"] = "xFilterElement"; // custom filter element (defined in filterElement property)
15
16
  })(XFilterMatchMode = exports.XFilterMatchMode || (exports.XFilterMatchMode = {}));
16
17
  var XAggregateFunction;
17
18
  (function (XAggregateFunction) {
@@ -1,6 +1,12 @@
1
+ import { XUser } from "./XUser";
1
2
  export interface XGetSequenceValueRequest {
2
3
  name: string;
3
4
  }
4
5
  export interface XGetSequenceValueResponse {
5
6
  value: number;
6
7
  }
8
+ export interface XtRunDocTemplateRequest {
9
+ xtDocTemplateId: number;
10
+ rowId: number;
11
+ xUser?: XUser;
12
+ }
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
- // misc api used in lib
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michalrakus/x-react-web-lib",
3
- "version": "1.34.0",
3
+ "version": "1.35.1",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rimraf lib",
@@ -0,0 +1,3 @@
1
+ // generated by gulp
2
+
3
+ export * from './lib/modules/docTemplates/xt-doc-template';
@@ -0,0 +1,5 @@
1
+ // generated by gulp
2
+
3
+ 'use strict';
4
+
5
+ module.exports = require('./lib/modules/docTemplates/xt-doc-template.js');