PluginProbe ʕ •ᴥ•ʔ
Starter Sites & Templates by Neve / 1.4.1
Starter Sites & Templates by Neve v1.4.1
1.4.1 1.4.0 1.3.0 1.2.29 1.2.28 1.2.6 1.2.7 1.2.8 1.2.9 trunk 1.0.10 1.0.11 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.27 1.1.28 1.1.29 1.1.3 1.1.30 1.1.31 1.1.32 1.1.33 1.1.34 1.1.35 1.1.36 1.1.37 1.1.38 1.1.39 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.3 1.2.4 1.2.5
templates-patterns-collection / beaver / src / components / filters.js
templates-patterns-collection / beaver / src / components Last commit date
content.js 5 years ago export.js 5 years ago filters.js 5 years ago header.js 1 year ago list-item.js 5 years ago pagination.js 5 years ago preview.js 1 year ago templates-content.js 5 years ago
filters.js
110 lines
1 import classnames from 'classnames';
2 import { alignJustify, closeSmall, grid, search } from '@wordpress/icons';
3 import { Button, Icon } from '@wordpress/components';
4 import { ENTER } from '@wordpress/keycodes';
5
6 const sortByOptions = {
7 date: window.tiTpc.library.filters.sortLabels.date,
8 template_name: window.tiTpc.library.filters.sortLabels.name,
9 modified: window.tiTpc.library.filters.sortLabels.modified,
10 };
11
12 const Filters = ( {
13 layout,
14 sortingOrder,
15 setLayout,
16 searchQuery,
17 onSearch,
18 setSearchQuery,
19 setSortingOrder,
20 changeOrder,
21 isSearch,
22 } ) => {
23 return (
24 <div className="filters">
25 <div className="display-sorting">
26 <div className="sorting-label">
27 { window.tiTpc.library.filters.sortLabel }
28 </div>
29
30 <div className="sorting-filter">
31 { Object.keys( sortByOptions ).map( ( i ) => (
32 <Button
33 key={ i }
34 className={ classnames( {
35 'is-selected': i === sortingOrder.orderby,
36 'is-asc': 'ASC' === sortingOrder.order,
37 } ) }
38 onClick={ () => {
39 const order = {
40 order: 'DESC',
41 orderby: i,
42 };
43
44 if ( i === sortingOrder.orderby ) {
45 if ( 'DESC' === sortingOrder.order ) {
46 order.order = 'ASC';
47 }
48 }
49 setSortingOrder( {
50 ...order,
51 } );
52 changeOrder( {
53 ...order,
54 } );
55 } }
56 >
57 { sortByOptions[ i ] }
58 </Button>
59 ) ) }
60 </div>
61 </div>
62
63 <div className="view-filters">
64 <div className="search-filters">
65 <input
66 placeholder={ window.tiTpc.library.filters.searchLabel }
67 className="filter-search"
68 value={ searchQuery }
69 onChange={ ( e ) => setSearchQuery( e.target.value ) }
70 onKeyDown={ ( e ) => {
71 if ( e.keyCode === ENTER ) {
72 onSearch();
73 }
74 } }
75 />
76
77 { isSearch ? (
78 <Button
79 label={ window.tiTpc.library.filters.clearSearch }
80 icon={ closeSmall }
81 onClick={ () => {
82 setSearchQuery( '' );
83 onSearch( '' );
84 } }
85 />
86 ) : (
87 <Icon icon={ search } />
88 ) }
89 </div>
90
91 <Button
92 label={ window.tiTpc.library.filters.sortLabels.list }
93 icon={ alignJustify }
94 onClick={ () => setLayout( 'list' ) }
95 isPressed={ 'list' === layout }
96 />
97
98 <Button
99 label={ window.tiTpc.library.filters.sortLabels.grid }
100 icon={ grid }
101 onClick={ () => setLayout( 'grid' ) }
102 isPressed={ 'grid' === layout }
103 />
104 </div>
105 </div>
106 );
107 };
108
109 export default Filters;
110