UNPKG

jb-date-input

Version:
51 lines (50 loc) 2.47 kB
import { useEvent } from "jb-core/react"; import { RefObject } from "react"; import type {JBDateInputWebComponent, JBDateInputEventType} from 'jb-date-input'; export type EventProps = { /** * when component loaded, in most cases component is already loaded before react mount so you dont need this but if you load web-component dynamically with lazy load it will be called after react mount */ onLoad?: (e: JBDateInputEventType<CustomEvent>) => void, /** * when all property set and ready to use, in most cases component is already loaded before react mount so you dont need this but if you load web-component dynamically with lazy load it will be called after react mount */ onInit?: (e: JBDateInputEventType<CustomEvent>) => void, /** * when value changed to invalid value */ onInvalid?: (e: JBDateInputEventType<CustomEvent>) => void, /** * base on standard js `change` event so it only called on blur. use onInput to get every keyStroke */ onChange?: (e: JBDateInputEventType<Event>) => void, onInput?: (e: JBDateInputEventType<InputEvent>) => void, onBeforeInput?: (e: JBDateInputEventType<InputEvent>) => void, onKeyUp?: (e: JBDateInputEventType<KeyboardEvent>) => void, onKeyPress?: (e: JBDateInputEventType<KeyboardEvent>) => void, onKeyDown?: (e: JBDateInputEventType<KeyboardEvent>) => void, /* * when user select the date in picker */ onSelect?: (e: JBDateInputEventType<CustomEvent>) => void, /** * when user press enter button */ onEnter?: (e: JBDateInputEventType<CustomEvent>) => void, onFocus?: (e: JBDateInputEventType<FocusEvent>) => void, onBlur?: (e: JBDateInputEventType<FocusEvent>) => void, } export function useEvents(element:RefObject<JBDateInputWebComponent>,props:EventProps){ useEvent(element, 'load', props.onLoad, true); useEvent(element, 'init', props.onInit, true); useEvent(element, 'invalid', props.onInvalid, true); useEvent(element, 'change', props.onChange, true); useEvent(element, 'beforeinput', props.onBeforeInput, false); useEvent(element, 'input', props.onInput, true); useEvent(element, 'keyup', props.onKeyUp, true); useEvent(element, 'keydown', props.onKeyDown, false); useEvent(element, 'keypress', props.onKeyPress, true); useEvent(element, 'select', props.onSelect, true); useEvent(element, 'focus', props.onFocus, true); useEvent(element, 'blur', props.onBlur, true); }