import * as React from 'react';
import styled from '@emotion/styled';
import Feature from 'sentry/components/acl/feature';
import DropdownControl, {DropdownItem} from 'sentry/components/dropdownControl';
import Tooltip from 'sentry/components/tooltip';
import {t} from 'sentry/locale';
import {getSortLabel, IssueSortOptions, Query} from 'sentry/views/issueList/utils';
type Props = {
onSelect: (sort: string) => void;
query: string;
sort: string;
};
export function getSortTooltip(key: IssueSortOptions) {
switch (key) {
case IssueSortOptions.INBOX:
return t('When the issue was flagged for review.');
case IssueSortOptions.NEW:
return t('When the issue was first seen in the selected time period.');
case IssueSortOptions.PRIORITY:
return t('Issues trending upward recently.');
case IssueSortOptions.FREQ:
return t('Number of events in the time selected.');
case IssueSortOptions.USER:
return t('Number of users affected in the time selected.');
case IssueSortOptions.TREND:
return t('% change in event count over the time selected.');
case IssueSortOptions.DATE:
default:
return t('When the issue was last seen in the selected time period.');
}
}
const IssueListSortOptions = ({onSelect, sort, query}: Props) => {
const sortKey = sort || IssueSortOptions.DATE;
const getMenuItem = (key: IssueSortOptions): React.ReactNode => (
{getSortLabel(key)}
);
return (
{query === Query.FOR_REVIEW && getMenuItem(IssueSortOptions.INBOX)}
{getMenuItem(IssueSortOptions.DATE)}
{getMenuItem(IssueSortOptions.NEW)}
{getMenuItem(IssueSortOptions.PRIORITY)}
{getMenuItem(IssueSortOptions.FREQ)}
{getMenuItem(IssueSortOptions.USER)}
{getMenuItem(IssueSortOptions.TREND)}
);
};
export default IssueListSortOptions;
const StyledTooltip = styled(Tooltip)`
width: 100%;
`;
const StyledDropdownControl = styled(DropdownControl)`
z-index: ${p => p.theme.zIndex.issuesList.sortOptions};
button {
width: 100%;
}
@media (max-width: ${p => p.theme.breakpoints[2]}) {
order: 2;
}
`;