|
@@ -1,64 +1,32 @@
|
|
|
import styled from '@emotion/styled';
|
|
|
|
|
|
-import TimeRangeSelector from 'sentry/components/organizations/timeRangeSelector';
|
|
|
-import Panel from 'sentry/components/panels/panel';
|
|
|
+import {TimeRangeSelector} from 'sentry/components/timeRangeSelector';
|
|
|
import {t} from 'sentry/locale';
|
|
|
-import {space} from 'sentry/styles/space';
|
|
|
|
|
|
-type Props = React.ComponentProps<typeof TimeRangeSelector> & {className?: string};
|
|
|
+type PageTimeRangeSelectorProps = React.ComponentProps<typeof TimeRangeSelector>;
|
|
|
|
|
|
-function PageTimeRangeSelector({className, ...props}: Props) {
|
|
|
+function PageTimeRangeSelector(props: PageTimeRangeSelectorProps) {
|
|
|
return (
|
|
|
- <DropdownDate className={className}>
|
|
|
- <TimeRangeSelector
|
|
|
- key={`period:${props.relative}-start:${props.start}-end:${props.end}-utc:${props.utc}-defaultPeriod:${props.defaultPeriod}`}
|
|
|
- label={<DropdownLabel>{t('Date Range:')}</DropdownLabel>}
|
|
|
- detached
|
|
|
- {...props}
|
|
|
- />
|
|
|
- </DropdownDate>
|
|
|
+ <StyledTimeRangeSelector
|
|
|
+ key={`period:${props.relative}-start:${props.start}-end:${props.end}-utc:${props.utc}-defaultPeriod:${props.defaultPeriod}`}
|
|
|
+ triggerProps={{icon: null, prefix: t('Date Range')}}
|
|
|
+ // Use relative option labels (e.g. "Last 7 days") not keys ("7D")
|
|
|
+ triggerLabel={
|
|
|
+ props.relativeOptions && props.relative
|
|
|
+ ? props.relativeOptions[props.relative]
|
|
|
+ : null
|
|
|
+ }
|
|
|
+ menuWiderThanTrigger
|
|
|
+ {...props}
|
|
|
+ />
|
|
|
);
|
|
|
}
|
|
|
|
|
|
-const DropdownDate = styled(Panel)`
|
|
|
- padding: 0;
|
|
|
- margin: 0;
|
|
|
+const StyledTimeRangeSelector = styled(TimeRangeSelector)`
|
|
|
+ width: 100%;
|
|
|
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- height: ${p => p.theme.form.md.height}px;
|
|
|
- background: ${p => p.theme.background};
|
|
|
- border: 1px solid ${p => p.theme.border};
|
|
|
- border-radius: ${p => p.theme.borderRadius};
|
|
|
-
|
|
|
- font-size: ${p => p.theme.fontSizeMedium};
|
|
|
- color: ${p => p.theme.textColor};
|
|
|
-
|
|
|
- > div {
|
|
|
+ button[aria-haspopup='listbox'] {
|
|
|
width: 100%;
|
|
|
- align-self: stretch;
|
|
|
- }
|
|
|
- /* StyledItemHeader used to show selected value of TimeRangeSelector */
|
|
|
- > div > div:first-child > div {
|
|
|
- padding: 0 ${space(2)};
|
|
|
- }
|
|
|
- /* Menu that dropdowns from TimeRangeSelector */
|
|
|
- > div > div:last-child:not(:first-child) {
|
|
|
- /* Remove awkward 1px width difference on dropdown due to border */
|
|
|
- min-width: calc(100% + 2px);
|
|
|
- transform: translateX(-1px);
|
|
|
- right: auto;
|
|
|
- }
|
|
|
-`;
|
|
|
-
|
|
|
-const DropdownLabel = styled('span')`
|
|
|
- text-align: left;
|
|
|
- font-weight: 600;
|
|
|
- color: ${p => p.theme.textColor};
|
|
|
-
|
|
|
- > span:last-child {
|
|
|
- font-weight: 400;
|
|
|
}
|
|
|
`;
|
|
|
|