From b983fca308230f907f8203d1d76d49a8d23baf6c Mon Sep 17 00:00:00 2001 From: Lionel Palacin Date: Tue, 24 Dec 2024 17:19:03 +0100 Subject: [PATCH 1/2] replace date picker with click ui component --- src/components/DatePicker.jsx | 92 ++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/src/components/DatePicker.jsx b/src/components/DatePicker.jsx index ee8ae1a..c2a0c32 100644 --- a/src/components/DatePicker.jsx +++ b/src/components/DatePicker.jsx @@ -1,15 +1,12 @@ 'use client'; -import DateRangePicker from '@gingerwizard/react-daterange-picker'; -import '@gingerwizard/react-daterange-picker/dist/DateRangePicker.css'; -import 'react-calendar/dist/Calendar.css'; -import './datepicker.css'; -import Image from 'next/image'; + +import { DatePicker as ClickHouseDatePicker } from '@clickhouse/click-ui'; import { usePathname, useRouter, useSearchParams } from 'next/navigation'; -import { Suspense } from 'react'; -import { parseDate} from '@/utils/utils'; +import { useState, useEffect } from 'react'; -function ClearLogo(clearable) { +function ClearLogo({ clearable, onClick }) { return ( +
+
); } @@ -37,48 +35,54 @@ export default function DatePicker({ dates }) { const searchParams = useSearchParams(); const pathname = usePathname(); const current = new URLSearchParams(searchParams.toString()); - const clearable = current.get('min_date') || current.get('max_date'); + const [isLoading, setIsLoading] = useState(true); + const [minDate, setMinDate] = useState(current.get('min_date')); + const [maxDate, setMaxDate] = useState(current.get('max_date')); - const onChange = (min_date, max_date) => { - if (min_date === undefined && max_date === undefined) { - current.delete('min_date'); - current.delete('max_date'); - router.push(`${pathname}?${current.toString()}`, { scroll: false }); - } - else if (parseDate(min_date, undefined) && parseDate(max_date, undefined)) { - min_date ? current.set('min_date', min_date) : current.delete('min_date'); - max_date ? current.set('max_date', max_date) : current.delete('max_date'); - router.push(`${pathname}?${current.toString()}`, { scroll: false }); + useEffect(() => { + if (dates) { + if (!current.get('min_date')) { + setMinDate(dates[0]); + } + if (!current.get('max_date')) { + setMaxDate(dates[1]); + } } - + setIsLoading(false); + }, []); + + const clearDates = () => { + console.log('clearing dates'); + current.delete('min_date'); + current.delete('max_date'); + router.push(`${pathname}?${current.toString()}`, { scroll: false }); + }; + + const formatDate = (dateString) => { + const date = new Date(decodeURIComponent(dateString)); + return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`; + }; + + const onSelectFromDates = (date) => { + const formattedDate = formatDate(date); + current.set('min_date', formattedDate) + router.push(`${pathname}?${current.toString()}`, { scroll: false }); }; - const onSelectDates = (values) => { - values - ? onChange( - `${values[0].getFullYear()}-${(values[0].getMonth() + 1).toString().padStart(2, '0')}-${values[0].getDate().toString().padStart(2, '0')}`, - `${values[1].getFullYear()}-${(values[1].getMonth() + 1).toString().padStart(2, '0')}-${values[1].getDate().toString().padStart(2, '0')}` - ) - : onChange(); + const onSelectToDates = (date) => { + const formattedDate = formatDate(date); + current.set('max_date', formattedDate) + router.push(`${pathname}?${current.toString()}`, { scroll: false }); }; + return ( -
- - - } - value={dates} - clearIcon={ClearLogo(clearable)} - /> - -
+ isLoading ?
: +
+ +

to

+ + +
); } From 775873e33f4c7795bb5612266b8556f1591a4123 Mon Sep 17 00:00:00 2001 From: Lionel Palacin Date: Tue, 24 Dec 2024 17:22:34 +0100 Subject: [PATCH 2/2] update click-ui version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 57e1c8e..0e140aa 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "@clickhouse/click-ui": "^0.0.168", + "@clickhouse/click-ui": "^0.0.180", "@clickhouse/client": "^0.2.1", "@clickhouse/client-web": "^0.2.1", "@gingerwizard/react-daterange-picker": "github:gingerwizard/react-daterange-picker",