1.0.0 • Published 2 years ago

numeric-timestring v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

numeric-timestring

React hook and component to handle time strings in a single input

General

numeric-timestring is a package that handles time string input in a single input instead of having to spread values, e.g. minutes, seconds, between multiple inputs.

useTimestring

The useTimestring handles the value of a input and makes sure input values are valid time strings, and formats the value if needed. It accepts two arguments initialTimeString: string, which initializes the value to a valid time string and type: TimeType which sets the format of the value.

Autoformatting delimeters

The hook knows when delimeters should be added. If the current state of value is 12 and then a 3 is added, i.e. onChange('123') is called then the state of value is set to 12:3. The same goes for 12:345 => 12:34:5 when using hours and 12:345 => 12:34.5 when using milliseconds, and 12:34:567 => 12:34:56.7 when using both.

The hook returns the following values, to be passed to an input:

  • value: string The value to be displayed in the input.
  • time: Time An object that holds the values of the relevant time elements as numbers: hours, minutes, seconds, milliseconds.
  • onChange: (newString: string) => void: Function that formats and/or validates changes to the input.
  • onBlur: () => void: Function to be called when changes to the input are finished

Example

const { value, onChange, onBlur } = useTimestring('00:00');

return <input value={value} onChange={(e) => onChange(e.target.value)} onBlur={onBlur} />;

ResizableInput

A simple input component that grows with the width of the given string.

TimeType

There are 4 available time types:

TimeTypeFormatConstraints
Defaultmm:ssmm <= 59, ss <= 59
WithHourshh:mm:sshh <= 23, mm <= 59, ss <= 59
WithMsmm:ss.xxxmm <= 59, ss <= 59, xxx <= 999
WithHoursAndMshh:mm:ss.xxxhh <= 23, mm <= 59, ss <= 59, xxx <= 999

Time

Attributes
type : TimeType.DefaultWithHoursWithMsWithHoursAndMs
hours---number---number
minutesnumbernumbernumbernumber
secondsnumbernumbernumbernumber
milliseconds------numbernumber