UNPKG

jb-date-input

Version:
2 lines 4.4 kB
import e,{forwardRef as r,useCallback as t,useEffect as n,useImperativeHandle as a,useRef as u,useState as o}from"react";import{emptyInputValueString as i,getFixedCaretPos as l,handleBeforeInput as c}from"jb-date-input";function s(e,r,a,u=!1){let o=t(r=>{e.current&&"function"==typeof a&&a(r)},[e,a]);n(()=>{let t=e.current;return t&&t.addEventListener(r,o,{passive:u,capture:!1}),function(){t&&t.removeEventListener(r,o,{passive:u,capture:!1})}},[e,r,a,u])}function d(e){let[r,t]=o(i),a=u(null);n(()=>{a.current&&setTimeout(()=>{e.ref.current.setSelectionRange(a.current.selectionStart,a.current.selectionEnd),a.current=null},0)},[r,a.current]);let d=()=>{if(null===a.current){let t=l({inputValue:r,selectionStart:e.ref.current.selectionStart});null!=t&&t!==e.ref.current.selectionStart&&e.ref.current.setSelectionRange(t,t)}};return s(e.ref,"beforeinput",function(n){a.current=c({dateInputType:e.dateInputType,selection:{start:e.ref.current.selectionStart,end:e.ref.current.selectionEnd},value:r,showPersianNumber:e.showPersianNumber,event:{inputType:n.inputType,data:n.data}}),n.preventDefault(),t(a.current.value),e.ref.current.setSelectionRange(a.current.selectionStart,a.current.selectionEnd)}),{value:r,setValue:t,onFocus:()=>{d()},onClick:()=>{d()},onChange:()=>{}}}let p=r((r,t)=>{let o=u(null);a(t,()=>o?o.current:{},[o]);let i=u([]);return n(()=>{r.format&&(r.format!==o.current?.valueFormat&&o.current?.setAttribute("format",r.format),i.current.length>0&&(i.current.forEach(e=>{e()}),i.current=[]))},[r.format]),n(()=>{r.max&&(r.format&&r.format!==o.current?.valueFormat?i.current.push(()=>{r.max&&o.current?.setMaxDate(r.max)}):o.current?.setMaxDate(r.max))},[r.max]),n(()=>{r.name?o?.current?.setAttribute("name",r.name||""):o?.current?.removeAttribute("name")},[r.name]),n(()=>{r.min&&(r.format&&r.format!==o.current?.valueFormat?i.current.push(()=>{r.min&&o.current?.setMinDate(r.min)}):o.current?.setMinDate(r.min))},[r.min]),n(()=>{o.current&&r.value&&(o.current.value=r.value)},[r.value]),n(()=>{o.current&&o.current.setAttribute("message",r.message||"")},[r.message]),n(()=>{o.current&&Array.isArray(r.jalaliMonthList)&&o.current.setMonthList("JALALI",r.jalaliMonthList)},[r.jalaliMonthList]),n(()=>{o.current&&Array.isArray(r.gregorianMonthList)&&o.current.setMonthList("GREGORIAN",r.gregorianMonthList)},[r.gregorianMonthList]),n(()=>{o.current&&void 0!==r.placeholder&&(o.current.placeholder=r.placeholder)},[r.placeholder]),n(()=>{o.current&&void 0!==r.overflowHandler&&(o.current.elements.popover.overflowHandler=r.overflowHandler)},[r.overflowHandler]),n(()=>{o.current&&void 0!==r.overflowRef&&(o.current.elements.popover.overflowDom=r.overflowRef.current)},[r.overflowRef]),n(()=>{o.current&&"string"==typeof r.style&&o.current.setAttribute("style",r.style)},[r.style]),n(()=>{o.current&&Array.isArray(r.validationList)&&(o.current.validation.list=r.validationList)},[r.validationList]),n(()=>{o.current&&r.direction&&o.current.setAttribute("direction",r.direction)},[r.direction]),n(()=>{o.current&&(r.required?o.current.required=!0:o.current.required=!1)},[r.required,o.current]),n(()=>{"object"==typeof r.calendarDefaultDateView&&r.calendarDefaultDateView.year&&r.calendarDefaultDateView.month&&o.current?.setCalendarDefaultDateView(r.calendarDefaultDateView.year,r.calendarDefaultDateView.month,r.calendarDefaultDateView.dateType)},[r.calendarDefaultDateView]),n(()=>{r.showPersianNumber?o.current?.setAttribute("show-persian-number","true"):o.current?.removeAttribute("show-persian-number")},[r.showPersianNumber]),n(()=>{"boolean"==typeof r.disabled&&o?.current?.setAttribute("disabled",`${r.disabled}`)},[r.disabled]),n(()=>{r.error?o?.current?.setAttribute("error",r.error):o?.current?.removeAttribute("error")},[r.error]),s(o,"load",r.onLoad,!0),s(o,"init",r.onInit,!0),s(o,"invalid",r.onInvalid,!0),s(o,"change",r.onChange,!0),s(o,"beforeinput",r.onBeforeInput,!1),s(o,"input",r.onInput,!0),s(o,"keyup",r.onKeyUp,!0),s(o,"keydown",r.onKeyDown,!1),s(o,"keypress",r.onKeyPress,!0),s(o,"select",r.onSelect,!0),s(o,"focus",r.onFocus,!0),s(o,"blur",r.onBlur,!0),e.createElement("jb-date-input",{class:r.className?r.className:"",label:r.label,"value-type":r.valueType?r.valueType:"GREGORIAN",ref:o,"input-type":r.inputType?r.inputType:"JALALI"},r.children)});p.displayName="JBDateInput";export{p as JBDateInput,d as useJBDateInput}; //# sourceMappingURL=JBDateInput.js.map