Skip to content

Commit d351b80

Browse files
authored
feat: added filter to other resources (#2980)
* feat: added filter to other resources * chore: clean up * fix: assigned string type to resourceName * chore: clean up * chore: clean up
1 parent 7ba754a commit d351b80

File tree

2 files changed

+96
-60
lines changed

2 files changed

+96
-60
lines changed

src/authorizations/components/redesigned/AllAccordionBody.tsx

Lines changed: 68 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -24,63 +24,85 @@ interface OwnProps {
2424
export const AllAccordionBody: FC<OwnProps> = props => {
2525
const {resourceName, disabled, permissions} = props
2626

27-
const handleReadToggle = () => {
28-
const {onToggleAll, resourceName} = props
27+
const handleReadToggle = resourceName => {
28+
const {onToggleAll} = props
2929
onToggleAll(resourceName, 'read')
3030
}
31-
const handleWriteToggle = () => {
32-
const {onToggleAll, resourceName} = props
31+
const handleWriteToggle = resourceName => {
32+
const {onToggleAll} = props
3333
onToggleAll(resourceName, 'write')
3434
}
3535

3636
const handleFlexboxClick = (event: MouseEvent) => {
3737
event.stopPropagation()
3838
}
3939

40+
const readToggleStyle = {marginRight: '10px'}
41+
const writeToggleStyle = {marginRight: '0px'}
42+
43+
const AllResourceAccordionBody = (permission?, resourceName?) => (
44+
<FlexBox
45+
margin={ComponentSize.Small}
46+
justifyContent={JustifyContent.SpaceBetween}
47+
direction={FlexDirection.Row}
48+
stretchToFitWidth={true}
49+
alignItems={AlignItems.Center}
50+
>
51+
<FlexBox.Child basis={40} grow={8}>
52+
<InputLabel size={ComponentSize.Small}>{`All ${
53+
resourceName ? resourceName : props.resourceName
54+
}`}</InputLabel>
55+
</FlexBox.Child>
56+
<FlexBox.Child grow={1} onClick={handleFlexboxClick}>
57+
<Toggle
58+
id={resourceName ? resourceName : props.resourceName}
59+
type={InputToggleType.Checkbox}
60+
onChange={handleReadToggle}
61+
size={ComponentSize.ExtraSmall}
62+
checked={permission ? permission.perm.read : permissions.read}
63+
value={permission ? permission.name : props.resourceName}
64+
style={readToggleStyle}
65+
tabIndex={0}
66+
disabled={disabled}
67+
></Toggle>
68+
</FlexBox.Child>
69+
<FlexBox.Child grow={1} onClick={handleFlexboxClick}>
70+
<Toggle
71+
id={resourceName ? resourceName + 1 : props.resourceName + 1}
72+
type={InputToggleType.Checkbox}
73+
onChange={handleWriteToggle}
74+
size={ComponentSize.ExtraSmall}
75+
checked={permission ? permission.perm.write : permissions.write}
76+
value={permission ? permission.name : props.resourceName}
77+
style={writeToggleStyle}
78+
tabIndex={0}
79+
disabled={disabled}
80+
></Toggle>
81+
</FlexBox.Child>
82+
</FlexBox>
83+
)
84+
4085
return (
4186
<>
42-
<Accordion.AccordionBodyItem className="resource-accordion-body">
43-
<FlexBox
44-
margin={ComponentSize.Small}
45-
justifyContent={JustifyContent.SpaceBetween}
46-
direction={FlexDirection.Row}
47-
stretchToFitWidth={true}
48-
alignItems={AlignItems.Center}
49-
style={{textAlign: 'start'}}
50-
>
51-
<FlexBox.Child basis={40} grow={8}>
52-
<InputLabel
53-
size={ComponentSize.Small}
54-
>{`All ${resourceName}`}</InputLabel>
55-
</FlexBox.Child>
56-
<FlexBox.Child grow={1} onClick={handleFlexboxClick}>
57-
<Toggle
58-
id={resourceName}
59-
type={InputToggleType.Checkbox}
60-
onChange={handleReadToggle}
61-
size={ComponentSize.ExtraSmall}
62-
checked={permissions.read}
63-
value={permissions.read.toString()}
64-
style={{marginRight: '10px'}}
65-
tabIndex={0}
66-
disabled={disabled}
67-
></Toggle>
68-
</FlexBox.Child>
69-
<FlexBox.Child grow={1} onClick={handleFlexboxClick}>
70-
<Toggle
71-
id={resourceName + 1}
72-
type={InputToggleType.Checkbox}
73-
onChange={handleWriteToggle}
74-
size={ComponentSize.ExtraSmall}
75-
checked={permissions.write}
76-
value={permissions.write.toString()}
77-
style={{marginRight: '0px'}}
78-
tabIndex={0}
79-
disabled={disabled}
80-
></Toggle>
81-
</FlexBox.Child>
82-
</FlexBox>
83-
</Accordion.AccordionBodyItem>
87+
{resourceName === 'All Resources' ? (
88+
Object.keys(permissions).map(key => {
89+
const names = permissions[key].name
90+
const resourceName = names.charAt(0).toUpperCase() + names.slice(1)
91+
92+
return (
93+
<Accordion.AccordionBodyItem
94+
key={key}
95+
className="resource-accordion-body"
96+
>
97+
{AllResourceAccordionBody(permissions[key], resourceName)}
98+
</Accordion.AccordionBodyItem>
99+
)
100+
})
101+
) : (
102+
<Accordion.AccordionBodyItem className="resource-accordion-body">
103+
{AllResourceAccordionBody()}
104+
</Accordion.AccordionBodyItem>
105+
)}
84106
</>
85107
)
86108
}

src/authorizations/components/redesigned/ResourceAccordion.tsx

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,26 +67,39 @@ class ResourceAccordion extends Component<OwnProps> {
6767
disabled={false}
6868
/>
6969
{!permissions.otherResources.read && !permissions.otherResources.write
70-
? resources[1].map(resource => {
71-
const resourceName =
72-
resource.charAt(0).toUpperCase() + resource.slice(1)
73-
74-
return (
75-
<AllAccordionBody
76-
key={resource}
77-
resourceName={resourceName}
78-
permissions={permissions[resource]}
79-
onToggleAll={onToggleAll}
80-
disabled={false}
81-
/>
82-
)
83-
})
70+
? this.otherResourcesAccordionBody()
8471
: null}
8572
</Accordion>
8673
</>
8774
)
8875
}
8976

77+
otherResourcesAccordionBody = () => {
78+
const {onToggleAll, resources, permissions} = this.props
79+
const resourcePermissions = []
80+
81+
resources[1].forEach(resource => {
82+
resourcePermissions.push({name: resource, perm: permissions[resource]})
83+
})
84+
85+
return (
86+
<Filter
87+
list={resourcePermissions}
88+
searchTerm={this.props.searchTerm}
89+
searchKeys={['name']}
90+
>
91+
{filteredNames => (
92+
<AllAccordionBody
93+
resourceName="All Resources"
94+
permissions={filteredNames}
95+
onToggleAll={onToggleAll}
96+
disabled={false}
97+
/>
98+
)}
99+
</Filter>
100+
)
101+
}
102+
90103
getAccordionBody = (resourceName, resource) => {
91104
const {permissions, onIndividualToggle} = this.props
92105
const permissionNames = []
@@ -96,6 +109,7 @@ class ResourceAccordion extends Component<OwnProps> {
96109
)) {
97110
permissionNames.push(value)
98111
}
112+
99113
return (
100114
<Filter
101115
list={permissionNames}

0 commit comments

Comments
 (0)