feat: add onSelect callback to SingleDatePicker and integrate with WeekPicker
This commit is contained in:
parent
a7e7cbe3fa
commit
92f22d1331
|
@ -4,14 +4,20 @@ import './app.scss'
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
|
|
||||||
|
function onSelect(value) {
|
||||||
|
alert(`You select ${value.year}-${value.month}-${value.day}`)
|
||||||
|
}
|
||||||
|
|
||||||
return (<div className='app'>
|
return (<div className='app'>
|
||||||
<div className="border">
|
<div className="border">
|
||||||
<WeekPicker value={{
|
<WeekPicker
|
||||||
year: 2025,
|
value={{
|
||||||
month: 1,
|
year: 2025,
|
||||||
day: 1
|
month: 1,
|
||||||
}} />
|
day: 1
|
||||||
|
}}
|
||||||
|
onSelect={onSelect}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>)
|
</div>)
|
||||||
}
|
}
|
|
@ -5,6 +5,11 @@ import { getCalendarDates, getL10Weekday } from '../utils'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
value?: Date | { year: number, month: number, day: number }
|
value?: Date | { year: number, month: number, day: number }
|
||||||
|
onSelect?: (date: {
|
||||||
|
year: number,
|
||||||
|
month: number,
|
||||||
|
day: number
|
||||||
|
}) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,8 +21,10 @@ interface Props {
|
||||||
* @param {Date | { year: number, month: number, day: number }} props.value - Control the selected
|
* @param {Date | { year: number, month: number, day: number }} props.value - Control the selected
|
||||||
* date programmatically, including situations like provide a default value or control the selected
|
* date programmatically, including situations like provide a default value or control the selected
|
||||||
* date by parent component.
|
* date by parent component.
|
||||||
|
* @param {(date: { year: number, month: number, day: number }) => void} props.onSelect - A callback
|
||||||
|
* function that will be called when a date is selected inside the panel.
|
||||||
*/
|
*/
|
||||||
export default ({ value }: Props) => {
|
export default ({ value, onSelect }: Props) => {
|
||||||
const [currentMonth, setCurrentMonth] = useState(new Date().getMonth())
|
const [currentMonth, setCurrentMonth] = useState(new Date().getMonth())
|
||||||
const [currentYear, setCurrentYear] = useState(new Date().getFullYear())
|
const [currentYear, setCurrentYear] = useState(new Date().getFullYear())
|
||||||
const [selectedDate, setSelectedDate] = useState(new Date())
|
const [selectedDate, setSelectedDate] = useState(new Date())
|
||||||
|
@ -39,6 +46,11 @@ export default ({ value }: Props) => {
|
||||||
|
|
||||||
function selectDate(date: Date) {
|
function selectDate(date: Date) {
|
||||||
setSelectedDate(date)
|
setSelectedDate(date)
|
||||||
|
onSelect?.({
|
||||||
|
year: date.getFullYear(),
|
||||||
|
month: date.getMonth() + 1,
|
||||||
|
day: date.getDate()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function skipToLastMonth() {
|
function skipToLastMonth() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user