@@ -24,63 +24,85 @@ interface OwnProps {
2424export 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}
0 commit comments