@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.
Files changed (2) hide show
  1. package/GenericDropdown.js +17 -7
  2. package/package.json +1 -1
@@ -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: data.slice(0, pageSize),
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: data.slice(skip, skip + take),
35
+ subsetData: filteredData.slice(skip, skip + take),
35
36
  skip,
36
37
  });
37
- }, [data]);
38
- return (_jsx(ComboBox, Object.assign({ data: state.subsetData, value: selectedItem, textField: textField, virtual: {
39
- pageSize: pageSize,
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: data.length,
51
+ total: filteredData.length,
42
52
  }, onPageChange: pageChange }, props)));
43
53
  }
44
54
  export default GenericDropdown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scheels-softdev/kendoreact-generics",
3
- "version": "4.0.17",
3
+ "version": "4.0.19",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "jest",