JSPM

react-video-timelines-slider-v18

1.1.8
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q19261F
  • License MIT

Time Slider component for React

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-video-timelines-slider-v18) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    react-video-timelines-slider

    This project is forked from react-timeline-range-slider by lizashkod and it adds more functionality and security updates. The additional functionality includes support for tooltips, tooltip format, enabling-disabling tooltip and hiding timeline error if gap is selected.

    Live demo

    codesandbox-demo

    Installation-steps

     npm i react-video-timelines-slider

    Props

    Prop Type Default Description
    timelineInterval array [startOfToday(), endOfToday()] Interval to display
    selectedInterval array [new Date(), addHours(new Date(), 1)] Selected interval inside the timeline
    disabledIntervals array [] Array of disabled intervals inside the timeline
    containerClassName string ClassName of the wrapping container
    step number 1800000 Number of milliseconds between steps (the default value is 30 minutes)
    ticksNumber number 48 Number of steps on the timeline (the default value is 30 minutes). Note that this is just a hint and actual tick might vary slightly
    error bool false Is the selected interval is not valid
    mode int/function 3 The interaction mode. Value of 1 will allow handles to cross each other. Value of 2 will keep the sliders from crossing and separated by a step. Value of 3 will make the handles pushable and keep them a step apart. ADVANCED: You can also supply a function that will be passed the current values and the incoming update. Your function should return what the state should be set as.
    formatTick function ms => format(new Date(ms), 'HH:mm') Function that determines the format in which the date will be displayed
    formatTooltip function ms => format(new Date(ms), 'HH:mm:ss') Function that determines the format in which the tooltip will be displayed
    showTooltip bool true enable-disable the tooltip
    tooltipTag string "Value:" Tag to appear before tooltip text
    showTimelineError bool false Turn timeline red if range with gap is selected
    onUpdateCallback function
    onChangeCallback function
    import React from 'react'  
    import { endOfToday, set } from 'date-fns' 
    import TimeRange from 'react-video-timelines-slider'  
    
    const now = new Date()
    const getTodayAtSpecificHour = (hour = 12) =>
        set(now, { hours: hour, minutes: 0, seconds: 0, milliseconds: 0 })
    
    const selectedStart = getTodayAtSpecificHour()
    const selectedEnd = getTodayAtSpecificHour(14)
    
    const startTime = getTodayAtSpecificHour(7)
    const endTime = endOfToday()
    
    const disabledIntervals = [
      { start: getTodayAtSpecificHour(16), end: getTodayAtSpecificHour(17) },
      { start: getTodayAtSpecificHour(7), end: getTodayAtSpecificHour(12) },
      { start: getTodayAtSpecificHour(20), end: getTodayAtSpecificHour(24) }
    ]
    
    class App extends React.Component {  
      state = {  
        error: false,  
        selectedInterval: [selectedStart, selectedEnd],  
      }
        
      errorHandler = ({ error }) => this.setState({ error })  
    
      onChangeCallback = selectedInterval => this.setState({ selectedInterval })  
    
      render() {  
        const { selectedInterval, error } = this.state  
          return (  
            <TimeRange
              error={error}  
              ticksNumber={20}  
              step={1}
              selectedInterval={selectedInterval}  
              timelineInterval={[startTime, endTime]}  
              onUpdateCallback={this.errorHandler}  
              onChangeCallback={this.onChangeCallback}
              disabledIntervals={disabledIntervals} 
              formatTick={(ms) => format(new Date(ms), 'HH:mm:ss')} 
              formatTooltip={(ms) => format(new Date(ms), 'HH:mm:ss.SSS')}
              showTooltip={true}
              showTimelineError={false}
            />
          )  
      }  
    }  
    
    export default App