jb-date-input
Version:
jalali date input web component
51 lines (50 loc) • 2.47 kB
text/typescript
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);
}