From cf18bf54585bce4b033916f1f3881d41e3fb8394 Mon Sep 17 00:00:00 2001 From: Mukul Bansal Date: Wed, 30 Oct 2024 09:32:46 +0530 Subject: [PATCH] feat: add close icon in date picker and date range picker calendar affects: @medly-components/core, @medly-components/forms --- .../components/Calendar/Calendar.styled.tsx | 2 + .../src/components/Calendar/Calendar.test.tsx | 16 + .../core/src/components/Calendar/Calendar.tsx | 11 +- .../__snapshots__/Calendar.test.tsx.snap | 452 +-- .../core/src/components/Calendar/types.ts | 1 + .../src/components/DatePicker/DatePicker.tsx | 1 + .../__snapshots__/DatePicker.test.tsx.snap | 2928 ++++++++++------- .../DateRangeCalendar.styled.tsx | 2 + .../DateRangeCalendar/DateRangeCalendar.tsx | 12 +- .../Month/Styled/Month.styled.tsx | 4 +- .../DateRangeCalendar/types.ts | 1 + .../DateRangePicker/DateRangePicker.test.tsx | 11 + .../DateRangePicker/DateRangePicker.tsx | 1 + .../DateRangePicker.test.tsx.snap | 116 +- 14 files changed, 2059 insertions(+), 1499 deletions(-) diff --git a/packages/core/src/components/Calendar/Calendar.styled.tsx b/packages/core/src/components/Calendar/Calendar.styled.tsx index c6a6bde3d..3291d068e 100644 --- a/packages/core/src/components/Calendar/Calendar.styled.tsx +++ b/packages/core/src/components/Calendar/Calendar.styled.tsx @@ -33,6 +33,8 @@ export const MonthNavigation = styled.button.attrs({ type: 'button' })<{ disable } `; export const Header = styled.div` + padding: 0 0.8rem; + box-sizing: border-box; width: 100%; display: flex; align-items: center; diff --git a/packages/core/src/components/Calendar/Calendar.test.tsx b/packages/core/src/components/Calendar/Calendar.test.tsx index f4068eff9..3a825a6aa 100644 --- a/packages/core/src/components/Calendar/Calendar.test.tsx +++ b/packages/core/src/components/Calendar/Calendar.test.tsx @@ -203,4 +203,20 @@ describe('Calendar Component', () => { expect(month).toEqual('Dec'); expect(year).toEqual('2021'); }); + + it('should call onClose on click on close icon', () => { + const onClose = jest.fn(); + render( + + ); + fireEvent.click(screen.getByTitle('test-calendar-close-icon')); + expect(onClose).toHaveBeenCalled(); + }); }); diff --git a/packages/core/src/components/Calendar/Calendar.tsx b/packages/core/src/components/Calendar/Calendar.tsx index b0cc351b8..c4bb763c9 100644 --- a/packages/core/src/components/Calendar/Calendar.tsx +++ b/packages/core/src/components/Calendar/Calendar.tsx @@ -1,4 +1,4 @@ -import { KeyboardArrowLeftIcon, KeyboardArrowRightIcon } from '@medly-components/icons'; +import { CloseIcon, KeyboardArrowLeftIcon, KeyboardArrowRightIcon } from '@medly-components/icons'; import { WithStyle } from '@medly-components/utils'; import { endOfDay } from 'date-fns'; import type { FC } from 'react'; @@ -12,7 +12,7 @@ import { getCalendarDates, getMonthAndYearFromDate, getNextMonthAndYear, getPrev import { CalendarProps } from './types'; const Component: FC = memo( - ({ date, onChange, minSelectableDate, maxSelectableDate, isErrorPresent, defaultMonth = 0, defaultYear, ...restProps }) => { + ({ date, onChange, onClose, minSelectableDate, maxSelectableDate, isErrorPresent, defaultMonth = 0, defaultYear, ...restProps }) => { const today = new Date(), ref = useRef(null), defaultDate = defaultYear ? new Date(defaultYear, defaultMonth, 1) : null, @@ -78,6 +78,13 @@ const Component: FC = memo( > + { + onClose?.(); + setCalenderVisibility(false); + }} + /> diff --git a/packages/core/src/components/Calendar/__snapshots__/Calendar.test.tsx.snap b/packages/core/src/components/Calendar/__snapshots__/Calendar.test.tsx.snap index e88aa5f91..26a8a5095 100644 --- a/packages/core/src/components/Calendar/__snapshots__/Calendar.test.tsx.snap +++ b/packages/core/src/components/Calendar/__snapshots__/Calendar.test.tsx.snap @@ -31,6 +31,21 @@ exports[`Calendar Component should render given date 1`] = ` fill: #607890; } +.c11 { + overflow: visible; + font-size: 2.4rem; + -webkit-transition: all 100ms linear; + transition: all 100ms linear; + cursor: pointer; +} + +.c11 * { + fill-opacity: 1; + -webkit-transition: all 100ms linear; + transition: all 100ms linear; + fill: #607890; +} + .c6 { margin: 0; color: inherit; @@ -45,7 +60,7 @@ exports[`Calendar Component should render given date 1`] = ` display: inline-block; } -.c12 { +.c13 { margin: 0; color: inherit; font-size: 1.4rem; @@ -59,7 +74,7 @@ exports[`Calendar Component should render given date 1`] = ` display: inline-block; } -.c15 { +.c16 { margin: 0; color: inherit; font-size: 1.4rem; @@ -123,6 +138,8 @@ exports[`Calendar Component should render given date 1`] = ` } .c1 { + padding: 0 0.8rem; + box-sizing: border-box; width: 100%; display: -webkit-box; display: -webkit-flex; @@ -138,13 +155,13 @@ exports[`Calendar Component should render given date 1`] = ` justify-content: space-between; } -.c11 { +.c12 { display: grid; grid-template-columns: repeat(7,4rem); grid-auto-rows: auto; } -.c14 { +.c15 { background-color: transparent; border: 0.2rem solid transparent; -webkit-text-decoration: none; @@ -175,20 +192,20 @@ exports[`Calendar Component should render given date 1`] = ` align-items: center; } -.c14:focus { +.c15:focus { outline: none; } -.c14:disabled { +.c15:disabled { cursor: not-allowed; color: #b0bcc8; } -.c14:hover { +.c15:hover { background-color: #eff2f4; } -.c16 { +.c17 { background-color: transparent; border: 0.2rem solid transparent; -webkit-text-decoration: none; @@ -218,29 +235,29 @@ exports[`Calendar Component should render given date 1`] = ` align-items: center; } -.c16:focus { +.c17:focus { outline: none; } -.c16:disabled { +.c17:disabled { cursor: not-allowed; } -.c16:hover { +.c17:hover { background-color: #eff2f4; } -.c16 span { +.c17 span { font-weight: bold; } -.c16, -.c16:hover { +.c17, +.c17:hover { background-color: #3872D2; color: #ffffff; } -.c17 { +.c18 { background-color: transparent; border: 0.2rem solid transparent; -webkit-text-decoration: none; @@ -270,16 +287,16 @@ exports[`Calendar Component should render given date 1`] = ` align-items: center; } -.c17:focus { +.c18:focus { outline: none; } -.c17:disabled { +.c18:disabled { cursor: not-allowed; color: #b0bcc8; } -.c17:hover { +.c18:hover { background-color: #eff2f4; } @@ -473,7 +490,7 @@ exports[`Calendar Component should render given date 1`] = ` padding: 0 0 0 1rem; } -.c13 { +.c14 { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; @@ -605,426 +622,441 @@ exports[`Calendar Component should render given date 1`] = ` /> + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
S M T W T F S + + +
+ + +