1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-04 00:18:01 +01:00
unleash.unleash/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewMetaData/FeatureOverviewMetaData.tsx
Tymoteusz Czech 23a874d051 Refactor: convert jsx files to typescript (#881)
* refactor: convert remaining js files to typescript

* refactor: conditionally render remove index

* refactor: dialog component to tsx

* refactor: migrate some files from jsx to tsx

* refactor: convert dropdown element to tsx

* refactor: feature toggle list to tsx

* refactor: update context name in use overrides

* refactor: variant overrides to tsx

refactor: remove unused strategy constraint file

* fix: tsx imports

* fix: update refectored components after rebase

* refactor: rename report list files to tsx

* fix: project health list types

* refactor: addon form - add types

* refactor: copy feature component types

* fix: projects toggle style after tsx refactor

* refactor: update ts types from openapi

* fix: ts refactor changes after review

* fix: header title prop

* fix: update after PR comments

* add test to useoverrides hook

* fix conditionally render time ago

* fix: toggle list empty tooltip

* fix: remove unused variable

* remove unused variable

* fix: remove faulty snapshot
2022-05-02 12:52:33 +02:00

95 lines
4.3 KiB
TypeScript

import { capitalize } from '@material-ui/core';
import classnames from 'classnames';
import { useParams } from 'react-router-dom';
import { Link } from 'react-router-dom';
import { useFeature } from 'hooks/api/getters/useFeature/useFeature';
import { getFeatureTypeIcons } from 'utils/getFeatureTypeIcons';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { useStyles } from './FeatureOverviewMetadata.styles';
import { Edit } from '@material-ui/icons';
import { IFeatureViewParams } from 'interfaces/params';
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
import { UPDATE_FEATURE } from 'component/providers/AccessProvider/permissions';
import useTags from 'hooks/api/getters/useTags/useTags';
import FeatureOverviewTags from './FeatureOverviewTags/FeatureOverviewTags';
const FeatureOverviewMetaData = () => {
const styles = useStyles();
const { projectId, featureId } = useParams<IFeatureViewParams>();
const { tags } = useTags(featureId);
const { feature } = useFeature(projectId, featureId);
const { project, description, type } = feature;
const IconComponent = getFeatureTypeIcons(type);
return (
<div className={classnames(styles.container)}>
<div className={styles.paddingContainerTop}>
<div className={styles.metaDataHeader} data-loading>
<IconComponent className={styles.headerIcon} />{' '}
<h2 className={styles.header}>
{capitalize(type || '')} toggle
</h2>
</div>
<div className={styles.body}>
<span className={styles.bodyItem} data-loading>
Project: {project}
</span>
<ConditionallyRender
// @ts-expect-error
condition={description}
show={
<span className={styles.bodyItem} data-loading>
<div>Description:</div>
<div className={styles.descriptionContainer}>
<p>{description}</p>
<PermissionIconButton
projectId={projectId}
permission={UPDATE_FEATURE}
component={Link}
to={`/projects/${projectId}/features/${featureId}/settings`}
>
<Edit
className={styles.editIcon}
titleAccess="Settings"
/>
</PermissionIconButton>
</div>
</span>
}
elseShow={
<span data-loading>
<div className={styles.descriptionContainer}>
No description.{' '}
<PermissionIconButton
projectId={projectId}
permission={UPDATE_FEATURE}
component={Link}
to={`/projects/${projectId}/features/${featureId}/settings`}
tooltip="Edit description"
>
<Edit className={styles.editIcon} />
</PermissionIconButton>
</div>
</span>
}
/>
</div>
</div>
<ConditionallyRender
condition={tags.length > 0}
show={
<div className={styles.paddingContainerBottom}>
<FeatureOverviewTags projectId={projectId} />
</div>
}
/>
</div>
);
};
export default FeatureOverviewMetaData;