@michalrakus/x-react-web-lib 1.27.1 → 1.28.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.
@@ -689,7 +689,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
689
689
  }
690
690
  this.createDropdownItem(buttonItems);
691
691
  if (this.props.buttonsLayout === "buttons") {
692
- buttons = buttonItems.map(function (value) { return react_1.default.createElement(button_1.Button, { icon: value.icon, tooltip: value.tooltip, tooltipOptions: { position: 'top' }, onClick: function (e) { return value.command(e); }, className: 'x-dropdownbutton' + XUtils_1.XUtils.mobileCssSuffix() }); });
692
+ buttons = buttonItems.map(function (value, index) { return react_1.default.createElement(button_1.Button, { key: "button".concat(index), icon: value.icon, tooltip: value.tooltip, tooltipOptions: { position: 'top' }, onClick: function (e) { return value.command(e); }, className: 'x-dropdownbutton' + XUtils_1.XUtils.mobileCssSuffix() }); });
693
693
  }
694
694
  else {
695
695
  // buttonsLayout === "splitButton"
@@ -728,15 +728,15 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
728
728
  // <DobrovolnikForm id={this.formDialogObjectId} object={this.formDialogInitValuesForInsert} onSaveOrCancel={this.formDialogOnSaveOrCancel}/>
729
729
  // formgroup-inline lepi SplitButton na autocomplete a zarovna jeho vysku
730
730
  return (react_1.default.createElement("div", { className: "x-auto-complete-base", style: { width: this.props.width, maxWidth: this.props.maxWidth } },
731
- 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, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createTooltipOrErrorProps(error), { inputClassName: this.props.inputClassName, showEmptyMessage: true })),
731
+ react_1.default.createElement(autocomplete_1.AutoComplete, __assign({ key: "autoComplete", 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, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createTooltipOrErrorProps(error), { inputClassName: this.props.inputClassName, showEmptyMessage: true })),
732
732
  buttons,
733
733
  this.props.valueForm != undefined ?
734
- react_1.default.createElement(dialog_1.Dialog, { className: "x-dialog-without-header", visible: this.state.formDialogOpened, onHide: this.formDialogOnHide }, react_1.default.cloneElement(this.props.valueForm, {
734
+ react_1.default.createElement(dialog_1.Dialog, { key: "dialogForm", className: "x-dialog-without-header", visible: this.state.formDialogOpened, onHide: this.formDialogOnHide }, react_1.default.cloneElement(this.props.valueForm, {
735
735
  id: this.formDialogObjectId, initValues: this.formDialogInitValuesForInsert, onSaveOrCancel: this.formDialogOnSaveOrCancel
736
736
  } /*, this.props.valueForm.children*/))
737
737
  : undefined,
738
738
  this.props.searchBrowse != undefined && !readOnly ?
739
- react_1.default.createElement(dialog_1.Dialog, { 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*/))
739
+ react_1.default.createElement(dialog_1.Dialog, { key: "dialogBrowse", 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*/))
740
740
  : undefined));
741
741
  };
742
742
  XAutoCompleteBase.valueMoreSuggestions = "...";
@@ -42,7 +42,7 @@ export declare abstract class XFormBase extends Component<XFormProps> {
42
42
  * @deprecated - mal by sa pouzivat onTableFieldChange
43
43
  */
44
44
  onObjectDataChange(row?: any, onChange?: XTableFieldOnChange): void;
45
- setStateXForm(): void;
45
+ setStateXForm(callback?: () => void): void;
46
46
  onTableAddRow(assocField: string, newRow: any, dataKey?: string, selectedRow?: {}): void;
47
47
  static getNextRowId(rowList: any[], dataKey: string): number;
48
48
  onTableRemoveRow(assocField: string, row: {}): void;
@@ -199,7 +199,7 @@ var XFormBase = /** @class */ (function (_super) {
199
199
  case 5:
200
200
  this.preInitForm(object, operationType);
201
201
  //console.log("volany XFormBase.componentDidMount() - ideme setnut object");
202
- this.setState({ object: object } /*, () => console.log("volany XFormBase.componentDidMount() - callback setState")*/);
202
+ this.setState({ object: object } /*, () => console.log("************** volany XFormBase.componentDidMount() - callback setState")*/);
203
203
  return [2 /*return*/];
204
204
  }
205
205
  });
@@ -265,16 +265,15 @@ var XFormBase = /** @class */ (function (_super) {
265
265
  // TODO - assocObjectChange dorobit
266
266
  onChange({ object: object, tableRow: row, assocObjectChange: undefined });
267
267
  }
268
- // TODO - tu mozno treba setnut funkciu - koli moznej asynchronicite
269
268
  this.setState({ object: object });
270
269
  };
271
270
  // lepsi nazov ako onObjectDataChange
272
271
  // ak niekto zmenil this.state.object alebo this.state.errorMap, zmena sa prejavi vo formulari
273
272
  // pouzivame napr. po zavolani onChange na XInputText
274
- XFormBase.prototype.setStateXForm = function () {
273
+ // callback je zavolany, ked dobehne update formulara (mozme pouzit na dalsi update formulara, ktory potrebuje aby boli vsetky komponenty vytvorene)
274
+ XFormBase.prototype.setStateXForm = function (callback) {
275
275
  // TODO - je to ok ze object menime takto?
276
- // TODO - tu mozno treba setnut funkciu - koli moznej asynchronicite
277
- this.setState({ object: this.state.object, errorMap: this.state.errorMap });
276
+ this.setState({ object: this.state.object, errorMap: this.state.errorMap }, callback);
278
277
  };
279
278
  XFormBase.prototype.onTableAddRow = function (assocField, newRow, dataKey, selectedRow) {
280
279
  var object = this.getXObject();
@@ -367,15 +367,19 @@ var XUtilsCommon = /** @class */ (function () {
367
367
  XUtilsCommon.sqlMaxDateIfNull = function (sqlExp) {
368
368
  return "coalesce(".concat(sqlExp, ", '9999-12-31'::DATE)");
369
369
  };
370
+ // static today(): Date {
371
+ // const today = new Date();
372
+ // // vynulujeme casovu zlozku
373
+ // // poznamka: Date vzdy obsahuje aj casovu zlozku. Nase konverzne funkcie dateFromModel a dateFromUI pouzivaju konverziu new Date('YYYY-MM-DD')
374
+ // // a tato konverzia vytvara datum s GMT/UTC/Z casom 00:00:00 (stredoeuropsky 00:01:00 - akokeby sme zadavali new Date('YYYY-MM-DDT00:00:00Z'))
375
+ // //today.setHours(0, 0, 0, 0); // nastavi cas 00:00:00 v aktualnej timezone (stredoeuropsky 00:00:00, GMT 23:00:00)
376
+ // // - potom nam nefunguje porovnavanie s datumami vytvorenymi cez funkcie dateFromModel a dateFromUI
377
+ // today.setUTCHours(0, 0, 0, 0);
378
+ // return today;
379
+ // }
380
+ // oprava:
370
381
  XUtilsCommon.today = function () {
371
- var today = new Date();
372
- // vynulujeme casovu zlozku
373
- // poznamka: Date vzdy obsahuje aj casovu zlozku. Nase konverzne funkcie dateFromModel a dateFromUI pouzivaju konverziu new Date('YYYY-MM-DD')
374
- // a tato konverzia vytvara datum s GMT/UTC/Z casom 00:00:00 (stredoeuropsky 00:01:00 - akokeby sme zadavali new Date('YYYY-MM-DDT00:00:00Z'))
375
- //today.setHours(0, 0, 0, 0); // nastavi cas 00:00:00 v aktualnej timezone (stredoeuropsky 00:00:00, GMT 23:00:00)
376
- // - potom nam nefunguje porovnavanie s datumami vytvorenymi cez funkcie dateFromModel a dateFromUI
377
- today.setUTCHours(0, 0, 0, 0);
378
- return today;
382
+ return new Date((0, XUtilsConversions_1.dateAsYYYY_MM_DD)(new Date()));
379
383
  };
380
384
  // vrati true ak sa string sklada iba z cislic, moze mat + alebo - na zaciatku
381
385
  XUtilsCommon.isInt = function (stringValue) {
@@ -15,6 +15,7 @@ export declare enum XDateScale {
15
15
  export declare function dateFromModel(value: any): Date | null;
16
16
  export declare function dateFromUI(valueString: string, dateScale?: XDateScale): Date | null | undefined;
17
17
  export declare function dateAsUI(value: Date | null, dateScale?: XDateScale): string;
18
+ export declare function dateAsYYYY_MM_DD(date: Date): string;
18
19
  export declare function datetimeAsUI(value: Date | null): string;
19
20
  export declare function timeFromModel(value: any): Date | null;
20
21
  export declare function dateFormatUI(dateScale?: XDateScale): string;
@@ -27,7 +27,7 @@ var __read = (this && this.__read) || function (o, n) {
27
27
  return ar;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.convertValueBase = exports.convertValue = exports.convertObject = exports.AsUIType = exports.booleanAsUIText = exports.intervalAsUI = exports.intervalFromUI = exports.datetimeFormatUI = exports.dateFormatCalendar = exports.dateFormatUI = exports.timeFromModel = exports.datetimeAsUI = exports.dateAsUI = exports.dateFromUI = exports.dateFromModel = exports.XDateScale = exports.numberFromString = exports.numberFromModel = exports.numberAsUI = exports.intFromUI = exports.stringAsDB = exports.stringAsUI = exports.stringFromUI = void 0;
30
+ exports.convertValueBase = exports.convertValue = exports.convertObject = exports.AsUIType = exports.booleanAsUIText = exports.intervalAsUI = exports.intervalFromUI = exports.datetimeFormatUI = exports.dateFormatCalendar = exports.dateFormatUI = exports.timeFromModel = exports.datetimeAsUI = exports.dateAsYYYY_MM_DD = exports.dateAsUI = exports.dateFromUI = exports.dateFromModel = exports.XDateScale = exports.numberFromString = exports.numberFromModel = exports.numberAsUI = exports.intFromUI = exports.stringAsDB = exports.stringAsUI = exports.stringFromUI = void 0;
31
31
  var XUtilsCommon_1 = require("./XUtilsCommon");
32
32
  var XLocale_1 = require("../components/XLocale");
33
33
  var XUtilsMetadataCommon_1 = require("./XUtilsMetadataCommon");
@@ -215,6 +215,19 @@ function dateAsUI(value, dateScale) {
215
215
  }
216
216
  }
217
217
  exports.dateAsUI = dateAsUI;
218
+ // specialna funkcia - konvertuje Date na string YYYY-MM-DD
219
+ function dateAsYYYY_MM_DD(date) {
220
+ var monthStr = (date.getMonth() + 1).toString();
221
+ if (monthStr.length < 2) {
222
+ monthStr = "0" + monthStr;
223
+ }
224
+ var dayStr = date.getDate().toString();
225
+ if (dayStr.length < 2) {
226
+ dayStr = "0" + dayStr;
227
+ }
228
+ return "".concat(date.getFullYear(), "-").concat(monthStr, "-").concat(dayStr);
229
+ }
230
+ exports.dateAsYYYY_MM_DD = dateAsYYYY_MM_DD;
218
231
  function datetimeAsUI(value) {
219
232
  if (value !== null) {
220
233
  return (0, XUtilsCommon_1.dateFormat)(value, datetimeFormatUI());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michalrakus/x-react-web-lib",
3
- "version": "1.27.1",
3
+ "version": "1.28.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rimraf lib",