A Simple Chakra Datepicker based on Dayzed.
![Downloads](https://img.shields.io/npm/dm/chakra-dayzed-datepicker.svg)
Every individual component is using Chakra UI. So it should respect all Chakra UI Configs without problem.
The componenent itself has to use some date
library
Highly recommend just copy/paste the source code from /src
to customize however you want.
Install the dependency
npm i date-fns dayzed
npm i chakra-dayzed-datepicker
Basic usage
Single
const [date, setDate] = useState(new Date());
<SingleDatepicker
name="date-input"
date={date}
onDateChange={setDate}
/>
Range:
Note that this list will have one value during the selection process. Your system won't work if you try to control this directly as [startDate, endDate]
because we'll try to set selectedDates
to [intermediateSelection]
and the length of the resulting selectedDates
is meaningful to the datepicker.
const [selectedDates, setSelectedDates] = useState<Date[]>([new Date(), new Date()]);
<RangeDatepicker
selectedDates={selectedDates}
onDateChange={setSelectedDates}
/>
propsConfigs:
dateNavBtnProps
extends from ButtonProps
of Chakra-UI
This allows you to override the default behavior however your want as long as supported by Chakra-UI.
dayOfMonthBtnProps = {
defaultBtnProps,
isInRangeBtnProp,
selectedBtnProps,
todayBtnProps
}
dayOfMonthBtnProps
allows you to customzie date btn style based on the state.
Style precedence: default
< isInRange
< seleted
< today
.
Example:
propsConfigs={{
dateNavBtnProps: {
colorScheme: "blue",
variant: "outline"
},
dayOfMonthBtnProps: {
defaultBtnProps: {
borderColor: "red.300",
_hover: {
background: 'blue.400',
}
},
isInRangeBtnProps: {
color: "yellow",
},
selectedBtnProps: {
background: "blue.200",
color: "green",
},
todayBtnProps: {
background: "teal.400",
}
},
inputProps: {
size: "sm"
}
}}
other props:
Name | Type | Default value | Description |
---|
name | string | undefined | name attribute for <input /> element |
usePortal | boolean | undefined | to prevent parent styles from clipping or hiding content |
defaultIsOpen | boolean | undefined | open the date panel at the beginning |
For version < npm@0.1.6
:
dayOfMonthBtnProps
extends from ButtonProps
and has only selectedBg
support,
dayOfMonthBtnProps: {
borderColor: "red.300",
selectedBg: "blue.200",
_hover: {
bg: 'blue.400',
}
},