index.tsx77 lines · main
1import { Modal } from 'ui'
2
3import PolicyAllowedOperation from './PolicyAllowedOperation'
4import PolicyDefinition from './PolicyDefinition'
5import PolicyEditorFooter from './PolicyEditorFooter'
6import { PolicyName } from './PolicyName'
7import { PolicyRoles } from './PolicyRoles'
8
9interface PolicyEditorProps {
10 isNewPolicy: boolean
11 policyFormFields: any
12 onUpdatePolicyFormFields: (value: any) => void
13 onViewTemplates: () => void
14 onReviewPolicy: () => void
15}
16
17export const PolicyEditor = ({
18 isNewPolicy = true,
19 policyFormFields = {},
20 onUpdatePolicyFormFields = () => {},
21 onViewTemplates = () => {},
22 onReviewPolicy = () => {},
23}: PolicyEditorProps) => {
24 const operation = policyFormFields?.command ?? ''
25 const definition = policyFormFields?.definition ?? ''
26 const check = policyFormFields?.check ?? ''
27
28 // Filter out default public role (public if no roles selected)
29 const selectedRoles = (policyFormFields?.roles ?? []).filter((role: string) => role !== 'public')
30
31 return (
32 <div>
33 <Modal.Content>
34 <PolicyName
35 name={policyFormFields.name}
36 limit={63}
37 onUpdatePolicyName={(name) => onUpdatePolicyFormFields({ name })}
38 />
39 </Modal.Content>
40 <Modal.Separator />
41 {isNewPolicy && (
42 <>
43 <Modal.Content>
44 <PolicyAllowedOperation
45 operation={operation}
46 onSelectOperation={(command) => onUpdatePolicyFormFields({ command })}
47 />
48 </Modal.Content>
49 <Modal.Separator />
50 </>
51 )}
52 <Modal.Content>
53 <PolicyRoles
54 selectedRoles={selectedRoles}
55 onUpdateSelectedRoles={(roles) => onUpdatePolicyFormFields({ roles })}
56 />
57 </Modal.Content>
58 <Modal.Separator />
59 <Modal.Content>
60 <PolicyDefinition
61 operation={operation}
62 definition={definition}
63 check={check}
64 onUpdatePolicyUsing={(definition: string | undefined) =>
65 onUpdatePolicyFormFields({ definition })
66 }
67 onUpdatePolicyCheck={(check: string | undefined) => onUpdatePolicyFormFields({ check })}
68 />
69 </Modal.Content>
70 <PolicyEditorFooter
71 showTemplates={isNewPolicy}
72 onViewTemplates={onViewTemplates}
73 onReviewPolicy={onReviewPolicy}
74 />
75 </div>
76 )
77}