-
Notifications
You must be signed in to change notification settings - Fork 10.8k
/
Copy pathitem.js
84 lines (76 loc) · 1.83 KB
/
item.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
* External dependencies
*/
import { createElement } from '@wordpress/element';
import { Button } from '@wordpress/components';
import CrossSmallIcon from 'gridicons/dist/cross-small';
import classnames from 'classnames';
/**
* Internal dependencies
*/
import SelectFilter from './select-filter';
import SearchFilter from './search-filter';
import NumberFilter from './number-filter';
import DateFilter from './date-filter';
import AttributeFilter from './attribute-filter';
const AdvancedFilterItem = ( props ) => {
const {
config,
currency,
filter: filterValue,
isEnglish,
onFilterChange,
query,
removeFilter,
} = props;
const { key } = filterValue;
let filterConfig = config.filters[ key ];
const { input, labels } = filterConfig;
const componentMap = {
Currency: NumberFilter,
Date: DateFilter,
Number: NumberFilter,
ProductAttribute: AttributeFilter,
Search: SearchFilter,
SelectControl: SelectFilter,
};
if ( ! componentMap.hasOwnProperty( input.component ) ) {
return;
}
if ( input.component === 'Currency' ) {
filterConfig = {
...filterConfig,
...{
input: {
type: 'currency',
component: 'Currency',
},
},
};
}
const FilterComponent = componentMap[ input.component ];
return (
<li className="woocommerce-filters-advanced__list-item">
<FilterComponent
className="woocommerce-filters-advanced__fieldset-item"
currency={ currency }
filter={ filterValue }
config={ filterConfig }
onFilterChange={ onFilterChange }
isEnglish={ isEnglish }
query={ query }
/>
<Button
className={ classnames(
'woocommerce-filters-advanced__line-item',
'woocommerce-filters-advanced__remove'
) }
label={ labels.remove }
onClick={ removeFilter }
>
<CrossSmallIcon />
</Button>
</li>
);
};
export default AdvancedFilterItem;