@@ -8,11 +8,16 @@ import {ResourceAccordionHeader} from 'src/authorizations/components/redesigned/
88import { IndividualAccordionBody } from 'src/authorizations/components/redesigned/IndividualAccordionBody'
99import { AllAccordionBody } from './AllAccordionBody'
1010import { formatResources } from 'src/authorizations/utils/permissions'
11+ import FilterList from 'src/shared/components/FilterList'
1112
13+ // Types
14+ import { Resource } from 'src/client'
1215interface Props {
1316 permissions : any
17+ searchTerm : string
1418}
1519
20+ const Filter = FilterList < Resource > ( )
1621export class EditResourceAccordion extends Component < Props > {
1722 public render ( ) {
1823 const { permissions} = this . props
@@ -48,44 +53,83 @@ export class EditResourceAccordion extends Component<Props> {
4853 { ! isEmpty ( allResourceNames [ 1 ] ) && (
4954 < Accordion key = "Other Resources" expanded = { true } >
5055 < ResourceAccordionHeader resourceName = "Other Resources" />
51- { allResourceNames [ 1 ] . map ( resource => {
52- const resourceName =
53- resource . charAt ( 0 ) . toUpperCase ( ) + resource . slice ( 1 )
54-
55- return (
56- < AllAccordionBody
57- key = { resource }
58- resourceName = { resourceName }
59- permissions = { permissions [ resource ] }
60- disabled = { true }
61- />
62- )
63- } ) }
56+ { this . getOtherResourceAccordionBody ( allResourceNames ) }
6457 </ Accordion >
6558 ) }
6659 </ >
6760 )
6861 }
6962
63+ getOtherResourceAccordionBody = allResourceNames => {
64+ const { permissions, searchTerm} = this . props
65+ const resourcePermissions = [ ]
66+ allResourceNames [ 1 ] . forEach ( resource => {
67+ resourcePermissions . push ( { name : resource , perm : permissions [ resource ] } )
68+ } )
69+ return (
70+ < Filter
71+ list = { resourcePermissions }
72+ searchTerm = { searchTerm }
73+ searchKeys = { [ 'name' ] }
74+ >
75+ { filteredNames => (
76+ < AllAccordionBody
77+ resourceName = "All Resources"
78+ permissions = { filteredNames }
79+ disabled = { true }
80+ />
81+ ) }
82+ </ Filter >
83+ )
84+ }
85+
7086 getAccordionBody = ( resourceName , resource ) => {
71- const { permissions} = this . props
87+ const { permissions, searchTerm} = this . props
88+ const permissionNames = [ ]
89+
7290 if ( resourceName === 'Telegrafs' ) {
91+ for ( const [ , value ] of Object . entries (
92+ permissions [ resource ] . sublevelPermissions
93+ ) ) {
94+ permissionNames . push ( value )
95+ }
7396 return (
74- < IndividualAccordionBody
75- resourceName = { resource }
76- permissions = { permissions [ resource ] . sublevelPermissions }
77- title = "Individual Telegraf Configuration Names"
78- disabled = { true }
79- />
97+ < Filter
98+ list = { permissionNames }
99+ searchTerm = { searchTerm }
100+ searchKeys = { [ 'name' ] }
101+ >
102+ { filteredNames => (
103+ < IndividualAccordionBody
104+ resourceName = { resource }
105+ permissions = { filteredNames }
106+ title = "Individual Telegraf Configuration Names"
107+ disabled = { true }
108+ />
109+ ) }
110+ </ Filter >
80111 )
81112 } else if ( resourceName === 'Buckets' ) {
113+ for ( const [ , value ] of Object . entries (
114+ permissions [ resource ] . sublevelPermissions
115+ ) ) {
116+ permissionNames . push ( value )
117+ }
82118 return (
83- < IndividualAccordionBody
84- resourceName = { resource }
85- permissions = { permissions [ resource ] . sublevelPermissions }
86- title = "Individual Bucket Names"
87- disabled = { true }
88- />
119+ < Filter
120+ list = { permissionNames }
121+ searchTerm = { searchTerm }
122+ searchKeys = { [ 'name' ] }
123+ >
124+ { filteredNames => (
125+ < IndividualAccordionBody
126+ resourceName = { resource }
127+ permissions = { filteredNames }
128+ title = "Individual Bucket Names"
129+ disabled = { true }
130+ />
131+ ) }
132+ </ Filter >
89133 )
90134 }
91135 }
0 commit comments