Skip to content

Commit 6146390

Browse files
committed
Demos: fix ts issues in FilterBuilder React demos
1 parent f59b03c commit 6146390

File tree

11 files changed

+44
-30
lines changed

11 files changed

+44
-30
lines changed

apps/demos/Demos/FilterBuilder/Customization/React/App.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import React, { useCallback, useState } from 'react';
2-
import FilterBuilder, { CustomOperation, type FilterBuilderTypes, ICustomOperationProps } from 'devextreme-react/filter-builder';
2+
3+
import FilterBuilder, { CustomOperation } from 'devextreme-react/filter-builder';
4+
import type { FilterBuilderTypes, ICustomOperationProps } from 'devextreme-react/filter-builder';
5+
36
import { filter, fields, groupOperations } from './data.ts';
47
import { formatValue } from './helpers.ts';
58
import { EditorComponent } from './EditorComponent.tsx';
@@ -12,19 +15,19 @@ function App() {
1215
const updateTexts = useCallback((e: FilterBuilderTypes.InitializedEvent) => {
1316
setFilterText(formatValue(e.component.option('value')));
1417
setDataSourceText(formatValue(e.component.getFilterExpression()));
15-
}, [setFilterText, setDataSourceText]);
18+
}, []);
1619

1720
const onValueChanged = useCallback((e: FilterBuilderTypes.ValueChangedEvent) => {
1821
setValue(e.value);
1922
updateTexts(e);
20-
}, [updateTexts, setValue]);
23+
}, [updateTexts]);
2124

2225
const calculateFilterExpression: ICustomOperationProps['calculateFilterExpression'] = useCallback((filterValue, field) => (
2326
filterValue?.length
2427
&& Array.prototype.concat
2528
.apply(
2629
[],
27-
filterValue.map((i) => [[field.dataField, '=', i], 'or']),
30+
filterValue.map((i: string) => [[field.dataField, '=', i], 'or']),
2831
)
2932
.slice(0, -1)
3033
), []);

apps/demos/Demos/FilterBuilder/Customization/React/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FilterBuilderTypes } from 'devextreme-react/filter-builder';
1+
import type { FilterBuilderTypes } from 'devextreme-react/filter-builder';
22

33
export const filter = [
44
['Category', 'anyof', ['Automation', 'Monitors']],

apps/demos/Demos/FilterBuilder/Customization/React/helpers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
const TAB_SIZE = 4;
22

3-
function prepareItem(item, spaces) {
3+
function prepareItem(item: any, spaces: number) {
44
return Array.isArray(item[0])
55
? formatValue(item, spaces + TAB_SIZE)
66
: JSON.stringify(item);
77
}
88

9-
export function formatValue(value, spaces = TAB_SIZE) {
9+
export function formatValue(value: any, spaces: number = TAB_SIZE) {
1010
if (value && Array.isArray(value[0])) {
1111
const formattedValue = value
12-
.map((item) => prepareItem(item, spaces))
12+
.map((item: any) => prepareItem(item, spaces))
1313
.join(`,${getLineBreak(spaces)}`);
1414

1515
return `[${getLineBreak(spaces)}${formattedValue}${getLineBreak(spaces - TAB_SIZE)}]`;

apps/demos/Demos/FilterBuilder/Customization/ReactJs/App.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,16 @@ function App() {
88
const [value, setValue] = useState(filter);
99
const [filterText, setFilterText] = useState('');
1010
const [dataSourceText, setDataSourceText] = useState('');
11-
const updateTexts = useCallback(
12-
(e) => {
13-
setFilterText(formatValue(e.component.option('value')));
14-
setDataSourceText(formatValue(e.component.getFilterExpression()));
15-
},
16-
[setFilterText, setDataSourceText],
17-
);
11+
const updateTexts = useCallback((e) => {
12+
setFilterText(formatValue(e.component.option('value')));
13+
setDataSourceText(formatValue(e.component.getFilterExpression()));
14+
}, []);
1815
const onValueChanged = useCallback(
1916
(e) => {
2017
setValue(e.value);
2118
updateTexts(e);
2219
},
23-
[updateTexts, setValue],
20+
[updateTexts],
2421
);
2522
const calculateFilterExpression = useCallback(
2623
(filterValue, field) =>

apps/demos/Demos/FilterBuilder/WithDataGrid/React/App.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import React, { useCallback, useState } from 'react';
2+
23
import FilterBuilder, { type FilterBuilderTypes } from 'devextreme-react/filter-builder';
34
import Button from 'devextreme-react/button';
45
import DataGrid from 'devextreme-react/data-grid';
6+
57
import { filter, fields, columns, products } from './data.ts';
68

79
const App = () => {
@@ -10,11 +12,11 @@ const App = () => {
1012

1113
const onValueChanged = useCallback((e: FilterBuilderTypes.ValueChangedEvent) => {
1214
setValue(e.value);
13-
}, [setValue]);
15+
}, []);
1416

1517
const buttonClick = useCallback(() => {
1618
setGridFilterValue(value);
17-
}, [value, setGridFilterValue]);
19+
}, [value]);
1820

1921
return (
2022
<div>

apps/demos/Demos/FilterBuilder/WithDataGrid/React/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DataType } from 'devextreme/common';
1+
import type { DataType } from 'devextreme/common';
22

33
interface Product {
44
Product_ID: number;

apps/demos/Demos/FilterBuilder/WithDataGrid/ReactJs/App.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,12 @@ import {
99
const App = () => {
1010
const [value, setValue] = useState(filter);
1111
const [gridFilterValue, setGridFilterValue] = useState(filter);
12-
const onValueChanged = useCallback(
13-
(e) => {
14-
setValue(e.value);
15-
},
16-
[setValue],
17-
);
12+
const onValueChanged = useCallback((e) => {
13+
setValue(e.value);
14+
}, []);
1815
const buttonClick = useCallback(() => {
1916
setGridFilterValue(value);
20-
}, [value, setGridFilterValue]);
17+
}, [value]);
2118
return (
2219
<div>
2320
<div className="filter-container">

apps/demos/Demos/FilterBuilder/WithList/React/App.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import React, { useCallback, useRef, useEffect } from 'react';
2+
23
import FilterBuilder from 'devextreme-react/filter-builder';
34
import Button from 'devextreme-react/button';
45
import List from 'devextreme-react/list';
56
import { DataSource } from 'devextreme-react/common/data';
7+
68
import { filter, fields, products } from './data.ts';
79
import CustomItem from './CustomItem.tsx';
810

apps/demos/Demos/FilterBuilder/WithList/React/CustomItem.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import React from 'react';
22

3+
import type { Product } from './data.ts';
4+
35
const currencyFormatter = new Intl.NumberFormat('en-US', {
46
style: 'currency',
57
currency: 'USD',
68
minimumFractionDigits: 0,
79
maximumFractionDigits: 0,
810
});
911

10-
export default function CustomItem(item) {
12+
export default function CustomItem(item: Product) {
1113
return (
1214
<div className="product">
1315
<img

apps/demos/Demos/FilterBuilder/WithList/React/data.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import { FilterBuilderTypes } from 'devextreme-react/filter-builder';
1+
import type { FilterBuilderTypes } from 'devextreme-react/filter-builder';
2+
3+
export interface Product {
4+
ID: number;
5+
Name: string;
6+
Price: number;
7+
Current_Inventory: number;
8+
Backorder: number;
9+
Manufacturing: number;
10+
Category: string;
11+
ImageSrc: string;
12+
}
213

314
export const filter = [
415
['Category', '=', 'Video Players'],
@@ -44,7 +55,7 @@ export const fields: FilterBuilderTypes.Field[] = [
4455
},
4556
];
4657

47-
export const products = [{
58+
export const products: Product[] = [{
4859
ID: 1,
4960
Name: 'HD Video Player',
5061
Price: 330,

0 commit comments

Comments
 (0)