DocsCloud UI BusinessTimeRangePicker

TimeRangePicker

A time range picker supporting both relative (e.g., “Last 15 minutes”) and absolute time ranges with a customizable quick selection menu.

Import

import { TimeRangePicker } from '@tidbcloud/uikit/biz'

Basic Usage

import { useState } from 'react'
import { TimeRangePicker } from '@tidbcloud/uikit/biz'
 
function Demo() {
  const [range, setRange] = useState(null)
 
  return <TimeRangePicker value={range} onChange={setRange} />
}

With Default Relative Range

import { useState } from 'react'
import { TimeRangePicker } from '@tidbcloud/uikit/biz'
 
function Demo() {
  const [range, setRange] = useState({
    type: 'relative',
    duration: 3600 // 1 hour in seconds
  })
 
  return <TimeRangePicker value={range} onChange={setRange} />
}

Absolute Time Range

import { useState } from 'react'
import { TimeRangePicker } from '@tidbcloud/uikit/biz'
 
function Demo() {
  const [range, setRange] = useState({
    type: 'absolute',
    start: new Date('2024-01-01T00:00:00'),
    end: new Date('2024-01-31T23:59:59')
  })
 
  return <TimeRangePicker value={range} onChange={setRange} />
}

Custom Quick Options

import { useState } from 'react'
import { TimeRangePicker } from '@tidbcloud/uikit/biz'
 
function Demo() {
  const [range, setRange] = useState(null)
 
  const quickOptions = [
    { label: 'Last 5 minutes', value: 300 },
    { label: 'Last 15 minutes', value: 900 },
    { label: 'Last 1 hour', value: 3600 },
    { label: 'Last 24 hours', value: 86400 },
    { label: 'Last 7 days', value: 604800 }
  ]
 
  return <TimeRangePicker value={range} onChange={setRange} quickOptions={quickOptions} />
}

With Max Duration

import { useState } from 'react'
import { TimeRangePicker } from '@tidbcloud/uikit/biz'
 
function Demo() {
  const [range, setRange] = useState(null)
 
  return (
    <TimeRangePicker
      value={range}
      onChange={setRange}
      maxDuration={86400 * 30} // Max 30 days
    />
  )
}

Clearable

import { useState } from 'react'
import { TimeRangePicker } from '@tidbcloud/uikit/biz'
 
function Demo() {
  const [range, setRange] = useState(null)
 
  return <TimeRangePicker value={range} onChange={setRange} clearable />
}

Hide Custom Picker

import { useState } from 'react'
import { TimeRangePicker } from '@tidbcloud/uikit/biz'
 
function Demo() {
  const [range, setRange] = useState(null)
 
  return <TimeRangePicker value={range} onChange={setRange} hideCustomPicker />
}

Props

PropTypeDefaultDescription
valueTimeRange-Selected time range
onChange(range: TimeRange) => void-Change handler
loadingboolean-Loading state
placeholderstring'Time Range'Button placeholder
badgePlaceholderstring'All'Badge placeholder
clearablebooleanfalseAllow clearing
formatRelative(range: RelativeTimeRange) => string-Custom relative format
formatAbsolute(range: AbsoluteTimeRange) => string-Custom absolute format
dropdownFooterReactNode-Dropdown footer content
minDateTimeDate-Minimum date/time
maxDateTimeDate-Maximum date/time
maxDurationnumber-Max duration in seconds
quickOptionsQuickOption[](default list)Quick selection options
hideCustomPickerbooleanfalseHide custom picker
timezoneOffsetnumber-Timezone offset
datePickerPropsDatePickerProps-Date picker props
sxSx-Style props

TimeRange Types

type RelativeTimeRange = {
  type: 'relative'
  duration: number // seconds
}
 
type AbsoluteTimeRange = {
  type: 'absolute'
  start: Date
  end: Date
}
 
type TimeRange = RelativeTimeRange | AbsoluteTimeRange