@michalrakus/x-react-web-lib 1.32.11 → 1.33.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.
|
@@ -53,6 +53,7 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
|
|
|
53
53
|
scrollHeight: string;
|
|
54
54
|
};
|
|
55
55
|
autoCompleteRef: any;
|
|
56
|
+
autoCompleteInputRef: any;
|
|
56
57
|
state: {
|
|
57
58
|
inputChanged: boolean;
|
|
58
59
|
inputValueState: string | undefined;
|
|
@@ -83,6 +84,7 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
|
|
|
83
84
|
onBlur(e: React.FocusEvent<HTMLInputElement>): void;
|
|
84
85
|
createErrorMessage(): string;
|
|
85
86
|
setFocusToInput(): void;
|
|
87
|
+
removeFocusFromInput(): void;
|
|
86
88
|
setObjectValue(object: any, objectChange: OperationType): void;
|
|
87
89
|
formDialogOnSaveOrCancel(object: any | null, objectChange: OperationType): void;
|
|
88
90
|
formDialogOnHide(): void;
|
|
@@ -135,6 +135,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
135
135
|
function XAutoCompleteBase(props) {
|
|
136
136
|
var _this = _super.call(this, props) || this;
|
|
137
137
|
_this.autoCompleteRef = react_1.default.createRef();
|
|
138
|
+
_this.autoCompleteInputRef = react_1.default.createRef();
|
|
138
139
|
_this.state = {
|
|
139
140
|
inputChanged: false,
|
|
140
141
|
inputValueState: undefined,
|
|
@@ -368,11 +369,19 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
368
369
|
}
|
|
369
370
|
};
|
|
370
371
|
XAutoCompleteBase.prototype.onSelect = function (e) {
|
|
372
|
+
var _this = this;
|
|
371
373
|
// nevolame this.setObjectValue ak uz bol zavolany z onBlur
|
|
372
374
|
if (!this.wasOnChangeCalled) {
|
|
373
375
|
// nedovolime vybrat specialny zaznam ...
|
|
374
376
|
if (!XAutoCompleteBase.isMoreSuggestions(e.value)) {
|
|
375
377
|
this.setObjectValue(e.value, XUtils_1.OperationType.None);
|
|
378
|
+
// ak sme na mobile, nechceme aby sa otvorila klavesnica mobilu, preto zavolame removeFocus
|
|
379
|
+
// pouzivame setTimeout, priame volanie nefungovalo
|
|
380
|
+
if (XUtils_1.XUtils.isMobile()) {
|
|
381
|
+
setTimeout(function () {
|
|
382
|
+
_this.removeFocusFromInput();
|
|
383
|
+
}, 0); // Delaying blur to allow PrimeReact to finish its focus logic
|
|
384
|
+
}
|
|
376
385
|
}
|
|
377
386
|
}
|
|
378
387
|
};
|
|
@@ -454,7 +463,11 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
454
463
|
}
|
|
455
464
|
*/
|
|
456
465
|
XAutoCompleteBase.prototype.setFocusToInput = function () {
|
|
457
|
-
this.autoCompleteRef.current.focus();
|
|
466
|
+
//this.autoCompleteRef.current.focus(); bolo toto kedysi
|
|
467
|
+
this.autoCompleteInputRef.current.focus();
|
|
468
|
+
};
|
|
469
|
+
XAutoCompleteBase.prototype.removeFocusFromInput = function () {
|
|
470
|
+
this.autoCompleteInputRef.current.blur();
|
|
458
471
|
};
|
|
459
472
|
XAutoCompleteBase.prototype.setObjectValue = function (object, objectChange) {
|
|
460
473
|
this.setState({ inputChanged: false, notValid: false });
|
|
@@ -727,7 +740,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
727
740
|
// Dialog pre konkretny form:
|
|
728
741
|
// <DobrovolnikForm id={this.formDialogObjectId} object={this.formDialogInitValuesForInsert} onSaveOrCancel={this.formDialogOnSaveOrCancel}/>
|
|
729
742
|
// formgroup-inline lepi SplitButton na autocomplete a zarovna jeho vysku
|
|
730
|
-
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, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createTooltipOrErrorProps(error), { inputClassName: this.props.inputClassName, showEmptyMessage: true }))], __read(buttons), false), [this.props.valueForm != undefined ?
|
|
743
|
+
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 ?
|
|
731
744
|
react_1.default.createElement(dialog_1.Dialog, { key: "dialog-form", className: "x-dialog-without-header", visible: this.state.formDialogOpened, onHide: this.formDialogOnHide }, react_1.default.cloneElement(this.props.valueForm, {
|
|
732
745
|
id: this.formDialogObjectId, initValues: this.formDialogInitValuesForInsert, onSaveOrCancel: this.formDialogOnSaveOrCancel
|
|
733
746
|
} /*, this.props.valueForm.children*/))
|
|
@@ -11,6 +11,7 @@ import { XFormComponentDT } from "./XFormComponentDT";
|
|
|
11
11
|
import { XErrorMap } from "./XErrors";
|
|
12
12
|
import { IconType } from "primereact/utils";
|
|
13
13
|
import { ButtonProps } from "primereact/button";
|
|
14
|
+
import { XSuggestionsLoadProp } from "./XAutoCompleteBase";
|
|
14
15
|
export interface XRowTechData {
|
|
15
16
|
xFormComponentDTList: Array<XFormComponentDT<any>>;
|
|
16
17
|
errorMap: XErrorMap;
|
|
@@ -113,14 +114,18 @@ export interface XFormDropdownColumnProps extends XFormColumnBaseProps {
|
|
|
113
114
|
}
|
|
114
115
|
export interface XFormAutoCompleteColumnProps extends XFormColumnBaseProps {
|
|
115
116
|
assocField: string;
|
|
116
|
-
displayField: string;
|
|
117
|
+
displayField: string | string[];
|
|
118
|
+
itemTemplate?: (suggestion: any, index: number, createStringValue: boolean, defaultValue: (suggestion: any) => string) => React.ReactNode;
|
|
117
119
|
searchBrowse?: JSX.Element;
|
|
118
120
|
assocForm?: JSX.Element;
|
|
119
121
|
addRowEnabled: boolean;
|
|
120
122
|
filter?: XTableFieldFilterProp;
|
|
121
123
|
sortField?: string | DataTableSortMeta[];
|
|
122
124
|
fields?: string[];
|
|
125
|
+
scrollHeight?: string;
|
|
123
126
|
suggestions?: any[];
|
|
127
|
+
suggestionsLoad?: XSuggestionsLoadProp;
|
|
128
|
+
lazyLoadMaxRows?: number;
|
|
124
129
|
}
|
|
125
130
|
export interface XFormSearchButtonColumnProps extends XFormColumnBaseProps {
|
|
126
131
|
assocField: string;
|
|
@@ -145,7 +145,10 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
145
145
|
}
|
|
146
146
|
else if (columnProps.type === "autoComplete") {
|
|
147
147
|
var columnPropsAutoComplete = columnProps;
|
|
148
|
-
|
|
148
|
+
// for simplicity we use here the first column (is used for filtering/sorting)
|
|
149
|
+
// TODO - all columns add in constructor (through method props.form.addField(...))
|
|
150
|
+
var displayField = Array.isArray(columnPropsAutoComplete.displayField) ? columnPropsAutoComplete.displayField[0] : columnPropsAutoComplete.displayField;
|
|
151
|
+
return columnPropsAutoComplete.assocField + '.' + displayField;
|
|
149
152
|
}
|
|
150
153
|
else if (columnProps.type === "searchButton") {
|
|
151
154
|
var columnPropsSearchButton = columnProps;
|
|
@@ -404,7 +407,7 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
404
407
|
}
|
|
405
408
|
else if (columnProps.type === "autoComplete") {
|
|
406
409
|
var columnPropsAutoComplete = columnProps;
|
|
407
|
-
body = react_1.default.createElement(XAutoCompleteDT_1.XAutoCompleteDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsAutoComplete.assocField, displayField: columnPropsAutoComplete.displayField, searchBrowse: columnPropsAutoComplete.searchBrowse, assocForm: columnPropsAutoComplete.assocForm, addRowEnabled: columnPropsAutoComplete.addRowEnabled, filter: columnPropsAutoComplete.filter, sortField: columnPropsAutoComplete.sortField, fields: columnPropsAutoComplete.fields, suggestions: columnPropsAutoComplete.suggestions, rowData: rowData, readOnly: readOnly });
|
|
410
|
+
body = react_1.default.createElement(XAutoCompleteDT_1.XAutoCompleteDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsAutoComplete.assocField, displayField: columnPropsAutoComplete.displayField, itemTemplate: columnPropsAutoComplete.itemTemplate, searchBrowse: columnPropsAutoComplete.searchBrowse, assocForm: columnPropsAutoComplete.assocForm, addRowEnabled: columnPropsAutoComplete.addRowEnabled, filter: columnPropsAutoComplete.filter, sortField: columnPropsAutoComplete.sortField, fields: columnPropsAutoComplete.fields, scrollHeight: columnPropsAutoComplete.scrollHeight, suggestions: columnPropsAutoComplete.suggestions, suggestionsLoad: columnPropsAutoComplete.suggestionsLoad, lazyLoadMaxRows: columnPropsAutoComplete.lazyLoadMaxRows, rowData: rowData, readOnly: readOnly });
|
|
408
411
|
}
|
|
409
412
|
else if (columnProps.type === "searchButton") {
|
|
410
413
|
var columnPropsSearchButton = columnProps;
|