import { useContext } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { Link } from 'react-router-dom';
import { Button, IconButton, List, ListItem, Tooltip } from '@material-ui/core';
import useMediaQuery from '@material-ui/core/useMediaQuery';
import { Add } from '@material-ui/icons';
import FeatureToggleListItem from './FeatureToggleListItem';
import SearchField from '../../common/SearchField/SearchField';
import FeatureToggleListActions from './FeatureToggleListActions';
import ConditionallyRender from '../../common/ConditionallyRender/ConditionallyRender';
import PageContent from '../../common/PageContent/PageContent';
import HeaderTitle from '../../common/HeaderTitle';
import loadingFeatures from './loadingFeatures';
import { CREATE_FEATURE } from '../../providers/AccessProvider/permissions';
import AccessContext from '../../../contexts/AccessContext';
import { useStyles } from './styles';
import ListPlaceholder from '../../common/ListPlaceholder/ListPlaceholder';
import { getCreateTogglePath } from '../../../utils/route-path-helpers';
import { NAVIGATE_TO_CREATE_FEATURE } from '../../../testIds';
import { resolveFilteredProjectId } from '../../../hooks/useFeaturesFilter';
const FeatureToggleList = ({
features,
revive,
archive,
loading,
flags,
filter,
setFilter,
sort,
setSort,
}) => {
const { hasAccess } = useContext(AccessContext);
const styles = useStyles();
const smallScreen = useMediaQuery('(max-width:800px)');
const mobileView = useMediaQuery('(max-width:600px)');
const setFilterQuery = v => {
const query = v && typeof v === 'string' ? v.trim() : '';
setFilter(prev => ({ ...prev, query }));
};
const resolvedProjectId = resolveFilteredProjectId(filter);
const createURL = getCreateTogglePath(resolvedProjectId, flags.E);
const renderFeatures = () => {
features.forEach(e => {
e.reviveName = e.name;
});
if (loading) {
return loadingFeatures.map(feature => (
));
}
return (
0}
show={features.map(feature => (
))}
elseShow={
No archived features.
}
elseShow={
}
/>
}
/>
);
};
const headerTitle = archive ? 'Archived Features' : 'Features';
return (
Archive}
/>
}
/>
}
elseShow={
}
/>
}
/>
}
/>
}
>
{renderFeatures()}
);
};
FeatureToggleList.propTypes = {
features: PropTypes.array.isRequired,
revive: PropTypes.func,
loading: PropTypes.bool,
archive: PropTypes.bool,
flags: PropTypes.object,
filter: PropTypes.object.isRequired,
setFilter: PropTypes.func.isRequired,
sort: PropTypes.object.isRequired,
setSort: PropTypes.func.isRequired,
};
export default FeatureToggleList;