MCPcopy
hub / github.com/simstudioai/sim / RangeCalendarView

Function RangeCalendarView

packages/emcn/src/components/calendar/calendar.tsx:349–469  ·  view source on GitHub ↗
({
  startDate,
  endDate,
  showTime = false,
  onRangeChange,
  onCancel,
  onClear,
  className,
}: CalendarRangeProps)

Source from the content-addressed store, hash-verified

347}
348
349function RangeCalendarView({
350 startDate,
351 endDate,
352 showTime = false,
353 onRangeChange,
354 onCancel,
355 onClear,
356 className,
357}: CalendarRangeProps) {
358 const seededStart = useMemo(() => parseDateValue(startDate), [startDate])
359 const { today, view, goToPrevMonth, goToNextMonth, cells } = useCalendarView(seededStart)
360
361 const [rangeStart, setRangeStart] = useState<Date | null>(seededStart)
362 const [rangeEnd, setRangeEnd] = useState<Date | null>(() => parseDateValue(endDate))
363 const [selectingEnd, setSelectingEnd] = useState(false)
364 const [startTime, setStartTime] = useState(() => extractTime(startDate, DEFAULT_RANGE_START_TIME))
365 const [endTime, setEndTime] = useState(() => extractTime(endDate, DEFAULT_RANGE_END_TIME))
366
367 const pickDay = (day: number) => {
368 const date = new Date(view.year, view.month, day)
369 if (!selectingEnd || !rangeStart) {
370 setRangeStart(date)
371 setRangeEnd(null)
372 setSelectingEnd(true)
373 return
374 }
375 if (date < rangeStart) {
376 setRangeEnd(rangeStart)
377 setRangeStart(date)
378 } else {
379 setRangeEnd(date)
380 }
381 setSelectingEnd(false)
382 }
383
384 const clear = () => {
385 setRangeStart(null)
386 setRangeEnd(null)
387 setSelectingEnd(false)
388 onClear?.()
389 }
390
391 const apply = () => {
392 if (!rangeStart) return
393 const bounds = buildRangeBounds(rangeStart, rangeEnd ?? rangeStart, {
394 showTime,
395 startTime,
396 endTime,
397 })
398 onRangeChange(bounds.start, bounds.end)
399 }
400
401 return (
402 <div className={cn('flex w-[256px] flex-col p-2', className)}>
403 <CalendarHeader
404 month={view.month}
405 year={view.year}
406 onPrev={goToPrevMonth}

Callers

nothing calls this directly

Calls 7

cnFunction · 0.90
useCalendarViewFunction · 0.85
extractTimeFunction · 0.85
isSameDayFunction · 0.85
isStrictlyWithinFunction · 0.85
pickDayFunction · 0.85
parseDateValueFunction · 0.70

Tested by

no test coverage detected