File tree Expand file tree Collapse file tree 6 files changed +2632
-3982
lines changed Expand file tree Collapse file tree 6 files changed +2632
-3982
lines changed Original file line number Diff line number Diff line change
1
+ React Components Structure
2
+ --------------------------
3
+
4
+ FilterBar
5
+ -> FilterList
6
+ -> FilterListOption
7
+ -> ApplyFiltersButton
8
+ -> ClearFiltersButton
9
+ -> SaveFiltersButton
10
+ -> SavedSearchesList
11
+ -> ConfigurationButton *
12
+ -> ExportResultsButton *
13
+ -> BatchActionsList
14
+ -> FilterDisplay
15
+ -> FilterGroup
16
+ -> FilterItem
17
+ -> FilterButton
18
+ -> FilterButton
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change @@ -18,10 +18,6 @@ export class FilterBar extends React.Component {
18
18
< div >
19
19
< div >
20
20
< div className = "btn-group margin-bottom-sm" >
21
- < FilterList
22
- disabledFilters = { this . context . filterBarStore . getDisabled ( ) }
23
- />
24
-
25
21
< ApplyFiltersButton
26
22
filterBarActor = { this . context . filterBarActor }
27
23
/>
Original file line number Diff line number Diff line change
1
+ import { FilterListOption } from "../FilterList/FilterListOption.react" ;
2
+ export class FilterButton extends React . Component {
3
+ constructor ( props ) {
4
+ super ( props ) ;
5
+
6
+ this . state = { filters : props . disabledFilters } ;
7
+ }
8
+
9
+ componentDidMount ( ) {
10
+ this . context . filterBarStore . addChangeListener ( this . onChange . bind ( this ) ) ;
11
+ }
12
+
13
+ onChange ( ) {
14
+ this . setState ( this . getStateFromStores ( ) ) ;
15
+ }
16
+
17
+ getStateFromStores ( ) {
18
+ return {
19
+ filters : this . context . filterBarStore . getDisabled ( )
20
+ } ;
21
+ }
22
+
23
+ render ( ) {
24
+ var optionKey = "" ;
25
+ var filterOptions = Object . keys ( this . state . filters ) . map ( function ( filterUid ) {
26
+ optionKey = "option-" + filterUid ;
27
+ return (
28
+ < FilterListOption
29
+ filterUid = { filterUid }
30
+ key = { optionKey }
31
+ label = { this . state . filters [ filterUid ] . label }
32
+ />
33
+ ) ;
34
+ } , this ) ;
35
+ return (
36
+ < div className = 'btn-group' >
37
+ < button className = 'btn btn-default dropdown-toggle' data-toggle = 'dropdown' type = 'button' >
38
+ < span > { this . props . title } </ span >
39
+ < i className = 'icon icon-add' > </ i >
40
+ </ button >
41
+ < div className = 'dropdown-menu' role = 'menu' >
42
+ < ul className = 'filter-options' >
43
+ { filterOptions }
44
+ </ ul >
45
+ </ div >
46
+ </ div >
47
+ )
48
+ }
49
+ }
50
+
51
+ FilterButton . contextTypes = {
52
+ filterBarActor : React . PropTypes . object ,
53
+ filterBarStore : React . PropTypes . object
54
+ } ;
55
+
56
+ FilterButton . propTypes = {
57
+ disabledFilters : React . PropTypes . object . isRequired
58
+ } ;
Original file line number Diff line number Diff line change 1
1
import { FilterInput } from "./FilterInput.react" ;
2
-
2
+ import { FilterButton } from "./FilterButton.react" ;
3
+ import { FilterGroup } from "./FilterGroup.react" ;
4
+ import { FilterList } from "../FilterList/FilterList.react" ;
3
5
export class FilterDisplay extends React . Component {
4
6
constructor ( props ) {
5
7
super ( props ) ;
@@ -41,29 +43,35 @@ export class FilterDisplay extends React.Component {
41
43
}
42
44
43
45
render ( ) {
44
- var filters = Object . keys ( this . state . filters ) . map ( function ( filterUid ) {
45
- var filter = this . state . filters [ filterUid ] ;
46
-
46
+ var button = (
47
+ < FilterButton
48
+ disabledFilters = { this . context . filterBarStore . getDisabled ( ) }
49
+ title = "OR"
50
+ />
51
+ )
52
+ var filters = Object . keys ( this . state . filters ) . map ( function ( filterUID ) {
47
53
return (
48
- < FilterInput
49
- filterUid = { filterUid }
50
- key = { filterUid }
51
- label = { filter . label }
52
- type = { filter . type }
53
- value = { filter . value }
54
- operator = { filter . operator }
54
+ < FilterGroup
55
+ filters = { this . state . filters }
55
56
/>
56
57
) ;
57
58
} , this ) ;
58
59
59
60
if ( filters . length === 0 ) {
60
- filters = ( < div > No Filters Enabled!</ div > ) ;
61
+ filters = (
62
+ < FilterButton
63
+ disabledFilters = { this . context . filterBarStore . getDisabled ( ) }
64
+ title = "ADD FILTER"
65
+ />
66
+ ) ;
67
+ button = "" ;
61
68
}
62
69
63
70
return (
64
71
< div className = "navbar filterbar" >
65
72
< div className = "panel panel-default" >
66
- { filters }
73
+ < div > { filters } </ div >
74
+ < div > { button } </ div >
67
75
</ div >
68
76
</ div >
69
77
) ;
Original file line number Diff line number Diff line change
1
+ import { FilterInput } from "./FilterInput.react"
2
+ import { FilterButton } from "./FilterButton.react"
3
+
4
+ export class FilterGroup extends React . Component {
5
+ constructor ( props ) {
6
+ super ( props ) ;
7
+
8
+ this . state = { filters : props . filters } ;
9
+ }
10
+
11
+ addFilter ( ) {
12
+ alert ( "Add Filter" ) ;
13
+ }
14
+
15
+ render ( ) {
16
+ var button = (
17
+ < FilterButton
18
+ disabledFilters = { this . context . filterBarStore . getDisabled ( ) }
19
+ title = "ADD"
20
+ />
21
+ )
22
+ var filters = Object . keys ( this . state . filters ) . map ( function ( filterUid ) {
23
+ var filter = this . state . filters [ filterUid ] ;
24
+
25
+ return (
26
+ < div >
27
+ < FilterInput
28
+ filterUid = { filterUid }
29
+ key = { filterUid }
30
+ label = { filter . label }
31
+ type = { filter . type }
32
+ value = { filter . value }
33
+ operator = { filter . operator }
34
+ />
35
+ </ div >
36
+ ) ;
37
+ } , this ) ;
38
+
39
+ return (
40
+ < div >
41
+ { filters }
42
+ < div >
43
+ { button }
44
+ </ div >
45
+ </ div >
46
+ )
47
+ }
48
+ }
49
+
50
+ FilterGroup . contextTypes = {
51
+ filterBarActor : React . PropTypes . object ,
52
+ filterBarStore : React . PropTypes . object
53
+ } ;
You can’t perform that action at this time.
0 commit comments