From 080eb34d579ccd8ab3cdd15899b22acb5561fb52 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 25 Aug 2023 16:05:02 -0700 Subject: [PATCH] Update date filter buttons. --- package.json | 2 +- src/components/input/WebsiteDateFilter.js | 34 +++++++++---------- .../input/WebsiteDateFilter.module.css | 11 ++++++ src/components/layout/AppLayout.module.css | 2 +- src/components/metrics/FilterTags.js | 3 +- src/components/metrics/FilterTags.module.css | 12 ++++--- .../pages/websites/WebsiteDetailsPage.js | 4 +-- .../pages/websites/WebsiteMetricsBar.js | 4 +-- 8 files changed, 43 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 1ff1730d..64e09463 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "umami", - "version": "2.5.0", + "version": "2.6.0", "description": "A simple, fast, privacy-focused alternative to Google Analytics.", "author": "Mike Cao ", "license": "MIT", diff --git a/src/components/input/WebsiteDateFilter.js b/src/components/input/WebsiteDateFilter.js index 5ab19e60..a8403db6 100644 --- a/src/components/input/WebsiteDateFilter.js +++ b/src/components/input/WebsiteDateFilter.js @@ -8,7 +8,6 @@ import styles from './WebsiteDateFilter.module.css'; export function WebsiteDateFilter({ websiteId }) { const [dateRange, setDateRange] = useDateRange(websiteId); const { value, startDate, endDate, selectedUnit } = dateRange; - const isFutureDate = value !== 'all' && isAfter(incrementDateRange(dateRange, -1).startDate, new Date()); @@ -21,7 +20,21 @@ export function WebsiteDateFilter({ websiteId }) { }; return ( - <> + + {value !== 'all' && ( + + + + + )} - {value !== 'all' && ( - - - - - - )} - + ); } diff --git a/src/components/input/WebsiteDateFilter.module.css b/src/components/input/WebsiteDateFilter.module.css index 13234c55..986f5c17 100644 --- a/src/components/input/WebsiteDateFilter.module.css +++ b/src/components/input/WebsiteDateFilter.module.css @@ -1,3 +1,14 @@ .dropdown { min-width: 200px; } + +.buttons button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.buttons button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-left: 1px solid var(--base400) !important; +} diff --git a/src/components/layout/AppLayout.module.css b/src/components/layout/AppLayout.module.css index be51f83c..bcce963f 100644 --- a/src/components/layout/AppLayout.module.css +++ b/src/components/layout/AppLayout.module.css @@ -10,7 +10,7 @@ width: 100vw; grid-column: 1; grid-row: 1 / 2; - z-index: 1; + z-index: var(--z-index-popup); } .body { diff --git a/src/components/metrics/FilterTags.js b/src/components/metrics/FilterTags.js index 30857a6b..cb88a7db 100644 --- a/src/components/metrics/FilterTags.js +++ b/src/components/metrics/FilterTags.js @@ -1,8 +1,8 @@ import { safeDecodeURI } from 'next-basics'; import { Button, Icon, Icons, Text } from 'react-basics'; import usePageQuery from 'components/hooks/usePageQuery'; -import styles from './FilterTags.module.css'; import useMessages from 'components/hooks/useMessages'; +import styles from './FilterTags.module.css'; export function FilterTags({ params }) { const { formatMessage, labels } = useMessages(); @@ -26,6 +26,7 @@ export function FilterTags({ params }) { return (
+
{formatMessage(labels.filters)}
{Object.keys(params).map(key => { if (!params[key]) { return null; diff --git a/src/components/metrics/FilterTags.module.css b/src/components/metrics/FilterTags.module.css index 1c8458ac..c228dc4e 100644 --- a/src/components/metrics/FilterTags.module.css +++ b/src/components/metrics/FilterTags.module.css @@ -4,19 +4,23 @@ gap: 10px; } +.label { + font-weight: 700; +} + .tag { display: flex; flex-direction: row; align-items: center; gap: 10px; font-size: var(--font-size-sm); - border: 1px solid var(--base600); + border: 1px solid var(--blue400); border-radius: var(--border-radius); - line-height: 30px; - padding: 0 8px; + padding: 8px 16px; cursor: pointer; + background: var(--blue100); } .tag:hover { - background: var(--base75); + background: var(--blue200); } diff --git a/src/components/pages/websites/WebsiteDetailsPage.js b/src/components/pages/websites/WebsiteDetailsPage.js index c5ac4775..222d94d9 100644 --- a/src/components/pages/websites/WebsiteDetailsPage.js +++ b/src/components/pages/websites/WebsiteDetailsPage.js @@ -22,12 +22,12 @@ export default function WebsiteDetailsPage({ websiteId }) { return ( - - + + {!website && } {website && ( <> diff --git a/src/components/pages/websites/WebsiteMetricsBar.js b/src/components/pages/websites/WebsiteMetricsBar.js index 41ae859f..0d1a20f0 100644 --- a/src/components/pages/websites/WebsiteMetricsBar.js +++ b/src/components/pages/websites/WebsiteMetricsBar.js @@ -10,7 +10,7 @@ import { formatShortTime } from 'lib/format'; import { Button, Column, Icon, Icons, Popup, PopupTrigger, Row } from 'react-basics'; import styles from './WebsiteMetricsBar.module.css'; -export function WebsiteMetricsBar({ websiteId, showFilter = true, sticky }) { +export function WebsiteMetricsBar({ websiteId, showFilter = true, showRefresh = true, sticky }) { const { formatMessage, labels } = useMessages(); const { get, useQuery } = useApi(); @@ -161,8 +161,8 @@ export function WebsiteMetricsBar({ websiteId, showFilter = true, sticky }) {
{showFilter && } + {showRefresh && } -