Skip to content

Commit

Permalink
refactor(range-calendar): create separate folder
Browse files Browse the repository at this point in the history
  • Loading branch information
matheusps committed Dec 5, 2023
1 parent 7b20853 commit 39706c0
Show file tree
Hide file tree
Showing 14 changed files with 87 additions and 30 deletions.
2 changes: 1 addition & 1 deletion packages/date/src/calendar/calendar-cell.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import React, { useRef } from 'react'
import { useCalendarCell } from '@react-aria/calendar'
import { IconButton } from '@vtex/shoreline-components'
import type { CalendarDate } from '@internationalized/date'

import './calendar-cell.css'
import { isRangeCalendar, useCalendarContext } from './calendar-provider'
import type { CalendarDate } from '../utils'
import { isSameDay } from '../utils'

/**
Expand Down
7 changes: 7 additions & 0 deletions packages/date/src/calendar/calendar-header.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@layer sl-components {
[data-sl-calendar-header] {
display: flex;
align-items: center;
justify-content: space-between;
}
}
17 changes: 17 additions & 0 deletions packages/date/src/calendar/calendar-header.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { ReactNode } from 'react'
import React from 'react'

import './calendar-header.css'

/**
* Header of the calendar
*/
export function CalendarHeader(props: CalendarHeaderProps) {
const { children } = props

return <div data-sl-calendar-header>{children}</div>
}

export interface CalendarHeaderProps {
children?: ReactNode
}
6 changes: 6 additions & 0 deletions packages/date/src/calendar/calendar-title.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
@layer sl-components {
[data-sl-calendar-title] {
font: var(--sl-text-display-4-font);
letter-spacing: var(--sl-text-display-4-letter-spacing);
}
}
17 changes: 17 additions & 0 deletions packages/date/src/calendar/calendar-title.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { ReactNode } from 'react'
import React from 'react'

import './calendar-title.css'

/**
* Title of the calendar
*/
export function CalendarTitle(props: CalendarTitleProps) {
const { children } = props

return <h2 data-sl-calendar-title>{children}</h2>
}

export interface CalendarTitleProps {
children?: ReactNode
}
11 changes: 0 additions & 11 deletions packages/date/src/calendar/calendar.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,4 @@
grid-template-rows: repeat(3, auto);
gap: var(--sl-space-gap);
}

[data-sl-calendar-header] {
display: flex;
align-items: center;
justify-content: space-between;
}

[data-sl-calendar-title] {
font: var(--sl-text-display-4-font);
letter-spacing: var(--sl-text-display-4-letter-spacing);
}
}
12 changes: 7 additions & 5 deletions packages/date/src/calendar/calendar.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import React, { useMemo } from 'react'
import type { AriaCalendarProps } from '@react-aria/calendar'
import { useCalendar } from '@react-aria/calendar'
import { createCalendar, type CalendarDate } from '@internationalized/date'
import { useLocale, IconButton } from '@vtex/shoreline-components'
import { IconCaretLeft, IconCaretRight } from '@vtex/shoreline-icons'
import { Store } from '@vtex/shoreline-store'
import { useCalendarState } from '@react-stately/calendar'

import { CalendarGrid } from './calendar-grid'
import { CalendarProvider } from './calendar-provider'

import { CalendarHeader } from './calendar-header'
import { CalendarTitle } from './calendar-title'
import type { CalendarDate } from '../utils'
import { createCalendar } from '../utils'
import './calendar.css'

/**
Expand All @@ -33,7 +35,7 @@ export function Calendar(props: CalendarProps) {
return (
<CalendarProvider store={store}>
<div data-sl-calendar {...calendarProps}>
<div data-sl-calendar-header>
<CalendarHeader>
<IconButton
label={prevButtonProps['aria-label']}
variant="tertiary"
Expand All @@ -43,7 +45,7 @@ export function Calendar(props: CalendarProps) {
>
<IconCaretLeft />
</IconButton>
<h2 data-sl-calendar-title>{title}</h2>
<CalendarTitle>{title}</CalendarTitle>
<IconButton
label={nextButtonProps['aria-label']}
variant="tertiary"
Expand All @@ -53,7 +55,7 @@ export function Calendar(props: CalendarProps) {
>
<IconCaretRight />
</IconButton>
</div>
</CalendarHeader>
<CalendarGrid />
</div>
</CalendarProvider>
Expand Down
6 changes: 5 additions & 1 deletion packages/date/src/calendar/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
export * from './calendar'
export * from './range-calendar'
export * from './calendar-cell'
export * from './calendar-grid'
export * from './calendar-header'
export * from './calendar-provider'
export * from './calendar-title'
1 change: 1 addition & 0 deletions packages/date/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/* PLOP_INJECT_EXPORT */
export * from './range-calendar'
export * from './calendar'
export * from './date-field'
export * from './date-segment'
Expand Down
1 change: 1 addition & 0 deletions packages/date/src/range-calendar/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './range-calendar'
8 changes: 8 additions & 0 deletions packages/date/src/range-calendar/range-calendar.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@layer sl-components {
[data-sl-range-calendar] {
width: fit-content;
display: grid;
grid-template-rows: repeat(3, auto);
gap: var(--sl-space-gap);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,22 @@ import React, { useMemo, useRef } from 'react'
import type { AriaRangeCalendarProps } from '@react-aria/calendar'
import { useRangeCalendar } from '@react-aria/calendar'
import { useRangeCalendarState } from '@react-stately/calendar'
import { createCalendar, type CalendarDate } from '@internationalized/date'
import { useLocale, IconButton } from '@vtex/shoreline-components'
import { IconCaretLeft, IconCaretRight } from '@vtex/shoreline-icons'
import { Store } from '@vtex/shoreline-store'

import { CalendarGrid } from './calendar-grid'
import { CalendarProvider } from './calendar-provider'

import './calendar.css'
import { CalendarGrid } from '../calendar/calendar-grid'
import { CalendarProvider } from '../calendar/calendar-provider'
import { CalendarHeader } from '../calendar/calendar-header'
import { CalendarTitle } from '../calendar/calendar-title'
import type { CalendarDate } from '../utils'
import { createCalendar } from '../utils'
import './range-calendar.css'

/**
* Allow users to select a date
* Allow users to select a date range
* @example
* <Calendar />
* <RangeCalendar />
*/
export function RangeCalendar(props: RangeCalendarProps) {
const locale = useLocale()
Expand All @@ -33,8 +35,8 @@ export function RangeCalendar(props: RangeCalendarProps) {

return (
<CalendarProvider store={store}>
<div ref={ref} data-sl-calendar {...calendarProps}>
<div data-sl-calendar-header>
<div ref={ref} data-sl-range-calendar {...calendarProps}>
<CalendarHeader>
<IconButton
label={prevButtonProps['aria-label']}
variant="tertiary"
Expand All @@ -44,7 +46,7 @@ export function RangeCalendar(props: RangeCalendarProps) {
>
<IconCaretLeft />
</IconButton>
<h2 data-sl-calendar-title>{title}</h2>
<CalendarTitle>{title}</CalendarTitle>
<IconButton
label={nextButtonProps['aria-label']}
variant="tertiary"
Expand All @@ -54,7 +56,7 @@ export function RangeCalendar(props: RangeCalendarProps) {
>
<IconCaretRight />
</IconButton>
</div>
</CalendarHeader>
<CalendarGrid />
</div>
</CalendarProvider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ export function Controlled() {
<>
<p>Start Date: {value.start.toString()}</p>
<p>End Date: {value.end.toString()}</p>

<RangeCalendar value={value} onChange={setValue} />
</>
)
Expand Down
4 changes: 4 additions & 0 deletions packages/date/src/utils/date.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { CalendarDate } from '@internationalized/date'
import {
parseDate,
parseZonedDateTime,
Expand All @@ -8,8 +9,10 @@ import {
isSameDay,
isSameMonth,
isSameYear,
createCalendar,
} from '@internationalized/date'

export type { CalendarDate }
export {
parseDate,
parseZonedDateTime,
Expand All @@ -20,4 +23,5 @@ export {
isSameDay,
isSameMonth,
isSameYear,
createCalendar,
}

0 comments on commit 39706c0

Please sign in to comment.