@@ -4,11 +4,19 @@ import { injectIntl, FormattedMessage } from 'react-intl';
44import { Field } from 'redux-form' ;
55
66import { CheckboxField } from '../Fields' ;
7- import Icon from '../../icons' ;
8- import Button from '../../widgets/TheButton' ;
7+ import Icon , { SquareIcon } from '../../icons' ;
8+ import Button , { TheButtonGroup } from '../../widgets/TheButton' ;
99import { getGroupCanonicalLocalizedName } from '../../../helpers/localizedData.js' ;
1010
11- const AssignmentFormGroupsList = ( { groups, groupsAccessor, isOpen, toggleOpenState, intl : { locale } } ) => (
11+ const AssignmentFormGroupsList = ( {
12+ groups,
13+ groupsAccessor,
14+ isOpen,
15+ toggleOpenState,
16+ selectAllGroupsHandler,
17+ clearAllGroupsHandler,
18+ intl : { locale } ,
19+ } ) => (
1220 < >
1321 { groups . map ( ( group , i ) => (
1422 < Field
@@ -20,21 +28,35 @@ const AssignmentFormGroupsList = ({ groups, groupsAccessor, isOpen, toggleOpenSt
2028 ) ) }
2129
2230 < div className = "text-center" >
23- { toggleOpenState !== null && (
24- < Button size = "xs" variant = "primary" onClick = { toggleOpenState } >
25- { isOpen ? (
26- < span >
27- < Icon icon = "minus-square" gapRight = { 2 } />
28- < FormattedMessage id = "app.multiAssignForm.showMyGroups" defaultMessage = "Show My Groups Only" />
29- </ span >
30- ) : (
31- < span >
32- < Icon icon = "plus-square" gapRight = { 2 } />
33- < FormattedMessage id = "app.multiAssignForm.showAllGroups" defaultMessage = "Show All Groups" />
34- </ span >
35- ) }
36- </ Button >
37- ) }
31+ < TheButtonGroup >
32+ { Boolean ( selectAllGroupsHandler ) && (
33+ < Button onClick = { selectAllGroupsHandler } variant = "primary" size = "sm" >
34+ < SquareIcon checked gapRight = { 2 } />
35+ < FormattedMessage id = "generic.selectAll" defaultMessage = "Select All" />
36+ </ Button >
37+ ) }
38+ { Boolean ( clearAllGroupsHandler ) && (
39+ < Button onClick = { clearAllGroupsHandler } variant = "primary" size = "sm" >
40+ < SquareIcon gapRight = { 2 } />
41+ < FormattedMessage id = "generic.clearAll" defaultMessage = "Clear All" />
42+ </ Button >
43+ ) }
44+ { toggleOpenState !== null && (
45+ < Button size = "sm" variant = "secondary" onClick = { toggleOpenState } >
46+ { isOpen ? (
47+ < span >
48+ < Icon icon = "minus-square" gapRight = { 2 } />
49+ < FormattedMessage id = "app.multiAssignForm.showMyGroups" defaultMessage = "Show My Groups Only" />
50+ </ span >
51+ ) : (
52+ < span >
53+ < Icon icon = "plus-square" gapRight = { 2 } />
54+ < FormattedMessage id = "app.multiAssignForm.showAllGroups" defaultMessage = "Show All Groups" />
55+ </ span >
56+ ) }
57+ </ Button >
58+ ) }
59+ </ TheButtonGroup >
3860 </ div >
3961 < hr />
4062 </ >
@@ -45,6 +67,8 @@ AssignmentFormGroupsList.propTypes = {
4567 groupsAccessor : PropTypes . func . isRequired ,
4668 isOpen : PropTypes . bool . isRequired ,
4769 toggleOpenState : PropTypes . func ,
70+ selectAllGroupsHandler : PropTypes . func ,
71+ clearAllGroupsHandler : PropTypes . func ,
4872 intl : PropTypes . object . isRequired ,
4973} ;
5074
0 commit comments