From 2cd322af2107bd726f77f363cd26dd9bc58b91d9 Mon Sep 17 00:00:00 2001 From: Joel Date: Wed, 5 Nov 2025 14:13:38 +0800 Subject: [PATCH] fix: hanle select date ui --- .../[appId]/overview/chart-view.tsx | 12 +++---- .../[appId]/overview/time-range-picker.tsx | 36 +++++++++++++++++++ .../assets/vender/other/hourglass-shape.svg | 2 +- .../src/vender/other/HourglassShape.json | 2 +- web/app/components/base/select/index.tsx | 4 +-- 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx index 4e8857a9f9..d5430b03ad 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx @@ -40,13 +40,11 @@ export default function ChartView({ appId, headerRight }: IChartViewProps) {
{t('common.appMenus.overview')}
-
- -
+ {headerRight}
diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/time-range-picker.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/time-range-picker.tsx index 096a22b09a..e41277101b 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/time-range-picker.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/time-range-picker.tsx @@ -9,6 +9,8 @@ import { HourglassShape } from '@/app/components/base/icons/src/vender/other' import TimePicker from '@/app/components/base/date-and-time-picker/time-picker' import { noop } from 'lodash-es' import { useTranslation } from 'react-i18next' +import cn from '@/utils/classnames' +import { RiArrowDownSLine, RiCheckLine } from '@remixicon/react' const today = dayjs() @@ -25,6 +27,35 @@ const TimeRangePicker: FC = ({ }) => { const { t } = useTranslation() + const isCustom = false + + const renderRangeTrigger = useCallback((item: Item | null, isOpen: boolean) => { + // todo: custom i18n and last 30days i18n + return ( +
+
{isCustom ? 'Custom' : item?.name}
+ +
+ ) + }, [isCustom]) + + const renderOption = useCallback(({ item, selected }: { item: Item; selected: boolean }) => { + return ( + <> + {selected && ( + + + )} + {item.name} + + ) + }, []) + const handleSelectRange = useCallback((item: Item) => { const { name, value } = item let period: PeriodParams['query'] | null = null @@ -46,6 +77,11 @@ const TimeRangePicker: FC = ({ notClearable={true} onSelect={handleSelectRange} defaultValue={0} + wrapperClassName='h-8' + optionWrapClassName='w-[200px] translate-x-[-24px]' + renderTrigger={renderRangeTrigger} + optionClassName='flex items-center py-0 pl-7 pr-2 h-8' + renderOption={renderOption} /> - + diff --git a/web/app/components/base/icons/src/vender/other/HourglassShape.json b/web/app/components/base/icons/src/vender/other/HourglassShape.json index 4b007e2e9c..27f31bbe28 100644 --- a/web/app/components/base/icons/src/vender/other/HourglassShape.json +++ b/web/app/components/base/icons/src/vender/other/HourglassShape.json @@ -17,7 +17,7 @@ "attributes": { "d": "M8 14C8 11.7909 6.20914 10 4 10C1.79086 10 0 11.7909 0 14V0C8.05332e-08 2.20914 1.79086 4 4 4C6.20914 4 8 2.20914 8 0V14Z", "fill": "currentColor", - "fill-opacity": "0.25" + "fill-opacity": "1" }, "children": [] } diff --git a/web/app/components/base/select/index.tsx b/web/app/components/base/select/index.tsx index a1e8ac2724..f2ca32d660 100644 --- a/web/app/components/base/select/index.tsx +++ b/web/app/components/base/select/index.tsx @@ -31,7 +31,7 @@ export type Item = { export type ISelectProps = { className?: string wrapperClassName?: string - renderTrigger?: (value: Item | null) => React.JSX.Element | null + renderTrigger?: (value: Item | null, isOpen: boolean) => React.JSX.Element | null items?: Item[] defaultValue?: number | string disabled?: boolean @@ -216,7 +216,7 @@ const SimpleSelect: FC = ({ > {({ open }) => (
- {renderTrigger && {renderTrigger(selectedItem)}} + {renderTrigger && {renderTrigger(selectedItem, open)}} {!renderTrigger && ( { onOpenChange?.(open)