projectSettingsLayout.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import React from 'react';
  2. import {RouteComponentProps} from 'react-router';
  3. import {Organization} from 'app/types';
  4. import withOrganization from 'app/utils/withOrganization';
  5. import ProjectContext from 'app/views/projects/projectContext';
  6. import SettingsLayout from 'app/views/settings/components/settingsLayout';
  7. import ProjectSettingsNavigation from 'app/views/settings/project/projectSettingsNavigation';
  8. type Props = {
  9. organization: Organization;
  10. children: React.ReactNode;
  11. } & RouteComponentProps<{orgId: string; projectId: string}, {}>;
  12. function ProjectSettingsLayout({params, organization, children, ...props}: Props) {
  13. const {orgId, projectId} = params;
  14. return (
  15. <ProjectContext orgId={orgId} projectId={projectId}>
  16. <SettingsLayout
  17. params={params}
  18. {...props}
  19. renderNavigation={() => <ProjectSettingsNavigation organization={organization} />}
  20. >
  21. {children && React.isValidElement(children)
  22. ? React.cloneElement(children, {
  23. organization,
  24. })
  25. : children}
  26. </SettingsLayout>
  27. </ProjectContext>
  28. );
  29. }
  30. export default withOrganization(ProjectSettingsLayout);