@scheels-softdev/kendoreact-generics 4.0.17 → 4.0.19
Sign up to get free protection for your applications and to get access to all the features.
- package/GenericDropdown.js +17 -7
- package/package.json +1 -1
package/GenericDropdown.js
CHANGED
@@ -14,8 +14,9 @@ import { useState, useMemo, useCallback } from "react";
|
|
14
14
|
import { ComboBox } from "@progress/kendo-react-dropdowns";
|
15
15
|
export function GenericDropdown(_a) {
|
16
16
|
var { data, textField, pageSize = 6 } = _a, props = __rest(_a, ["data", "textField", "pageSize"]);
|
17
|
+
const [filteredData, setFilteredData] = useState(data);
|
17
18
|
const [state, setState] = useState({
|
18
|
-
subsetData:
|
19
|
+
subsetData: filteredData.slice(0, pageSize),
|
19
20
|
skip: 0,
|
20
21
|
});
|
21
22
|
const selectedItem = useMemo(() => {
|
@@ -24,21 +25,30 @@ export function GenericDropdown(_a) {
|
|
24
25
|
return props.selectedData;
|
25
26
|
}
|
26
27
|
else if ("selectedId" in props && "idField" in props && props.selectedId !== undefined) {
|
27
|
-
return (_a = data.find((item) => item[props.idField] === String(props.selectedId))) !== null && _a !== void 0 ? _a : null;
|
28
|
+
return (_a = data.find((item) => String(item[props.idField]) === String(props.selectedId))) !== null && _a !== void 0 ? _a : null;
|
28
29
|
}
|
29
30
|
return null;
|
30
31
|
}, [props, data]);
|
31
32
|
const pageChange = useCallback((event) => {
|
32
33
|
const { skip, take } = event.page;
|
33
34
|
setState({
|
34
|
-
subsetData:
|
35
|
+
subsetData: filteredData.slice(skip, skip + take),
|
35
36
|
skip,
|
36
37
|
});
|
37
|
-
}, [
|
38
|
-
|
39
|
-
|
38
|
+
}, [filteredData]);
|
39
|
+
const handleFilter = useCallback((event) => {
|
40
|
+
const filterValue = event.filter.value;
|
41
|
+
const newData = data.filter((item) => item[textField].toString().toLowerCase().includes(filterValue.toLowerCase()));
|
42
|
+
setFilteredData(newData);
|
43
|
+
setState({
|
44
|
+
subsetData: newData.slice(0, pageSize),
|
45
|
+
skip: 0,
|
46
|
+
});
|
47
|
+
}, [data, textField, pageSize]);
|
48
|
+
return (_jsx(ComboBox, Object.assign({ data: state.subsetData, value: selectedItem, textField: textField, filterable: true, onFilterChange: handleFilter, virtual: {
|
49
|
+
pageSize,
|
40
50
|
skip: state.skip,
|
41
|
-
total:
|
51
|
+
total: filteredData.length,
|
42
52
|
}, onPageChange: pageChange }, props)));
|
43
53
|
}
|
44
54
|
export default GenericDropdown;
|