From 6fac320a050ef3d04bfd411ea4a9f5bdd9691d71 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Fri, 21 Feb 2025 17:14:28 +0530 Subject: [PATCH] chore: add month and year picker (#6656) --- packages/ui/package.json | 2 +- packages/ui/src/calendar.tsx | 117 +++++++++++-------- web/core/components/dropdowns/date-range.tsx | 2 +- web/core/components/dropdowns/date.tsx | 2 +- web/package.json | 2 +- yarn.lock | 50 ++++---- 6 files changed, 95 insertions(+), 80 deletions(-) diff --git a/packages/ui/package.json b/packages/ui/package.json index 7fb8668bb9b..dee65e02e0d 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -40,7 +40,7 @@ "lodash": "^4.17.21", "lucide-react": "^0.469.0", "react-color": "^2.19.3", - "react-day-picker": "8.10.1", + "react-day-picker": "9.5.0", "react-popper": "^2.3.0", "sonner": "^1.4.41", "tailwind-merge": "^2.0.0", diff --git a/packages/ui/src/calendar.tsx b/packages/ui/src/calendar.tsx index bb5b5177439..87a7859f75e 100644 --- a/packages/ui/src/calendar.tsx +++ b/packages/ui/src/calendar.tsx @@ -1,6 +1,6 @@ "use client"; -import { ChevronLeft, ChevronRight } from "lucide-react"; +import { ChevronLeft } from "lucide-react"; import * as React from "react"; import { DayPicker } from "react-day-picker"; @@ -8,50 +8,71 @@ import { cn } from "../helpers"; export type CalendarProps = React.ComponentProps; -function Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) { - return ( - .day-range-end)]:rounded-r-full [&:has(>.day-range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full" - : "[&:has([aria-selected])]:rounded-full [&:has([aria-selected])]:bg-custom-primary-100 [&:has([aria-selected])]:text-white" - ), - day: cn("h-10 w-10 p-0 font-normal aria-selected:opacity-100 rounded-full hover:bg-custom-primary-100/60"), - day_range_start: "day-range-start bg-custom-primary-100 text-white", - day_range_end: "day-range-end bg-custom-primary-100 text-white", - day_selected: "", - day_today: - "relative after:content-[''] after:absolute after:m-auto after:left-1/3 after:bottom-[6px] after:w-[6px] after:h-[6px] after:bg-custom-primary-100/50 after:rounded-full after:translate-x-1/2 after:translate-y-1/2", - day_outside: "day-outside", - day_disabled: "opacity-50 hover:!bg-transparent", - day_range_middle: "text-black", - day_hidden: "invisible", - ...classNames, - }} - components={{ - IconLeft: ({ className, ...props }) => , - IconRight: ({ className, ...props }) => , - }} - {...props} - /> - ); -} -Calendar.displayName = "Calendar"; - -export { Calendar }; +export const Calendar = ({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) => ( + .day-range-end)]:rounded-r-full [&:has(>.day-range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full" + // : "[&:has([aria-selected])]:rounded-full [&:has([aria-selected])]:bg-custom-primary-100 [&:has([aria-selected])]:text-white" + // ), + // // day_button: + // // "size-10 flex items-center justify-center overflow-hidden box-border m-0 border-2 border-transparent rounded-full", + // day: "size-10 p-0 font-normal aria-selected:opacity-100 rounded-full hover:bg-custom-primary-100/60", + // day_range_start: "day-range-start bg-custom-primary-100 text-white", + // day_range_end: "day-range-end bg-custom-primary-100 text-white", + // day_selected: "", + // day_today: + // "relative after:content-[''] after:absolute after:m-auto after:left-1/3 after:bottom-[6px] after:w-[6px] after:h-[6px] after:bg-custom-primary-100/50 after:rounded-full after:translate-x-1/2 after:translate-y-1/2", + // day_outside: "day-outside", + // day_disabled: "opacity-50 hover:!bg-transparent", + // day_range_middle: "text-black", + // day_hidden: "invisible", + // caption_dropdowns: "inline-flex bg-transparent", + // dropdown_root: "m-0 relative inline-flex items-center", + // dropdowns: "relative inline-flex items-center", + // dropdown: + // "appearance-none absolute z-[2] top-0 bottom-0 left-0 w-full m-0 p-0 opacity-0 border-none text-[1rem] cursor-pointer bg-transparent hover:bg-custom-background-80", + // months_dropdown: "capitalize", + // caption_label: + // "z-[1] inline-flex items-center gap-[0.25rem] m-0 py-0 px-[0.25rem] whitespace-nowrap border-2 border-transparent font-semibold bg-transparent rounded", + // ...classNames, + // }} + components={{ + Chevron: ({ className, ...props }) => ( + + ), + }} + {...props} + /> +); diff --git a/web/core/components/dropdowns/date-range.tsx b/web/core/components/dropdowns/date-range.tsx index bcca9c9d59b..0ead22d64b2 100644 --- a/web/core/components/dropdowns/date-range.tsx +++ b/web/core/components/dropdowns/date-range.tsx @@ -194,7 +194,7 @@ export const DateRangeDropdown: React.FC = (props) => { {isOpen && (
= (props) => {