@featherk/composables 0.5.5 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(z,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("@vueuse/integrations/useFocusTrap")):typeof define=="function"&&define.amd?define(["exports","vue","@vueuse/integrations/useFocusTrap"],t):(z=typeof globalThis<"u"?globalThis:z||self,t(z.FeatherKComposables={},z.Vue,z.useFocusTrap))})(this,(function(z,t,ye){"use strict";const ge=e=>{const n=t.ref(null);let d=!1,P=null,F=null;const U=[],N=".k-table-row[data-grid-row-index] [tabindex]",p=()=>e?.value?.columns,g=l=>{const S=l.key||l.code;[" ","Spacebar","Space","Enter"].includes(S)&&(l.preventDefault(),l.stopPropagation(),n.value=l.target,l.target.click())},T=l=>{if(!n.value)return;if(l.code==="Escape"){l.preventDefault(),l.stopPropagation(),n.value&&n.value.focus();return}const S=Array.from(document.querySelectorAll(".k-animation-container .k-popup .k-column-menu .k-columnmenu-item-wrapper .k-columnmenu-item")),i=document.querySelector(".k-filter-menu-container");if(i){if(l.code==="Tab"){const u=[".k-filter-menu-container .k-dropdownlist[tabindex='0']",".k-filter-menu-container input.k-input-inner:not([tabindex='-1']):not([disabled])",".k-filter-menu-container button:not([tabindex='-1']):not([disabled])"],f=Array.from(i.querySelectorAll(u.join(",")));if(f.length===0)return;const A=f.findIndex($=>$===document.activeElement);let w;A===-1?w=0:l.shiftKey?w=(A-1+f.length)%f.length:w=(A+1)%f.length,l.preventDefault(),l.stopPropagation(),f[w]?.focus();return}}else if(l.code==="ArrowUp"||l.code==="ArrowDown"){l.preventDefault(),l.stopPropagation();const u=S.findIndex(A=>A===document.activeElement);let f=u;l.code==="ArrowUp"?f=u>0?u-1:S.length-1:l.code==="ArrowDown"&&(f=u<S.length-1?u+1:0),S[f]?.focus();return}l.code==="Tab"&&(l.preventDefault(),l.stopPropagation(),l.shiftKey?(n.value?.previousElementSibling).focus():(n.value?.nextElementSibling).focus())},b=()=>{P=new MutationObserver(l=>{l.forEach(S=>{S.addedNodes.forEach(i=>{if(i.nodeType===Node.ELEMENT_NODE){const u=i;if(u.classList.contains("k-animation-container")){const A=n.value;A&&(A.dataset.featherKSortable==="true"||t.nextTick(()=>{u.querySelectorAll(".k-columnmenu-item-wrapper").forEach(Y=>{Y.textContent?.toLowerCase().includes("sort")&&Y.remove()})})),u.addEventListener("keydown",T),t.nextTick(()=>{const w=()=>{const $=Array.from(u.querySelectorAll(".k-animation-container .k-popup .k-column-menu .k-columnmenu-item-wrapper .k-columnmenu-item"));if($.length===1)$[0].focus(),$[0].click(),w.attempts=0;else if($.length>1){w.attempts=0;return}else w.attempts===void 0&&(w.attempts=0),w.attempts++<3&&setTimeout(w,200)};w()})}u.querySelectorAll(".k-animation-container").forEach(A=>{A.addEventListener("keydown",T)})}}),S.removedNodes.forEach(i=>{if(i.nodeType===Node.ELEMENT_NODE){const u=i;u.classList.contains("k-animation-container")&&u.removeEventListener("keydown",T),u.querySelectorAll(".k-animation-container").forEach(A=>{A.removeEventListener("keydown",T)})}})})}),P.observe(document.body,{childList:!0,subtree:!0})},L=l=>{if(!l.type||!l)return;const S=l.target;if(S){if(l.code==="Escape"){const i=document.activeElement?.closest(".k-table-row[data-grid-row-index]");if(i){l.preventDefault(),l.stopPropagation();try{Array.from(e?.value.$el.querySelectorAll(".k-table-row[data-grid-row-index]")).forEach(f=>f.setAttribute("tabindex","-1"))}catch{}i.setAttribute("tabindex","0"),i.focus();return}}if(["ArrowDown","ArrowLeft","ArrowRight","ArrowUp","Enter","Space"].includes(l.code)){if(l.preventDefault(),S.classList.contains("k-grid-header-menu")&&S.classList.contains("k-grid-column-menu")){n.value=S;return}const i=S.closest(".k-table-row[data-grid-row-index]");if(i){if(["ArrowDown","ArrowUp"].includes(l.code)){const u=(A,w)=>{let $=w==="next"?A.nextElementSibling:A.previousElementSibling;for(;$;){const Y=$;try{if(Y.hasAttribute&&Y.classList.contains("k-table-row"))return Y}catch{}$=w==="next"?$.nextElementSibling:$.previousElementSibling}return null},f=l.code==="ArrowDown"?u(i,"next"):u(i,"previous");f&&(i.setAttribute("tabindex","-1"),f.setAttribute("tabindex","0"),f.focus());return}if(["ArrowLeft","ArrowRight"].includes(l.code)){l.preventDefault();const u=i.querySelectorAll(N);if(u.length===0)return;let f=Array.from(u).findIndex(A=>A===document.activeElement);if(f===-1&&document.activeElement===i){u[0].focus();return}l.code==="ArrowRight"?f=f===u.length-1?0:f+1:l.code==="ArrowLeft"&&(f=f===u.length-1?f-1:u.length-1),u[f].focus();return}}}}},E=()=>{t.nextTick(()=>{const l=e.value.$el.closest(".k-grid");l&&l.classList.add("fk-grid")})},x=()=>{if(!F)try{const l=()=>{try{const u=Array.from(e.value.$el.querySelectorAll(".k-table-row[data-grid-row-index]"));if(!u||u.length===0||u.filter(w=>w.getAttribute("tabindex")==="0").length===1)return;const A=u.find(w=>w===document.activeElement||w.contains(document.activeElement));if(u.forEach(w=>w.setAttribute("tabindex","-1")),A){A.setAttribute("tabindex","0");return}u[0].setAttribute("tabindex","0")}catch(u){console.error("ensureSingleTabindex error:",u)}},S=Array.from(e.value.$el.querySelectorAll(".k-table-row[data-grid-row-index]"));S.length>0&&S.forEach((u,f)=>{u.setAttribute("tabindex",f===0?"0":"-1")});const i=e.value.$el.querySelector(".k-table-tbody");i&&(F=new MutationObserver(()=>{l()}),F.observe(i,{childList:!0,subtree:!0}))}catch(l){console.error("Error setting up row navigation:",l)}},I=()=>{t.nextTick(()=>{const S=document.querySelectorAll(".k-grid-header .k-grid-header-menu.k-grid-column-menu");S&&S.forEach(i=>{i.setAttribute("role","button"),i.addEventListener("keydown",g)}),b(),h()})},O=()=>{const S=document.querySelectorAll(".k-grid-header .k-grid-header-menu.k-grid-column-menu");S&&S.forEach(i=>{i.removeEventListener("keydown",g)}),P&&(P.disconnect(),P=null),F&&(F.disconnect(),F=null),U.forEach(i=>i()),U.length=0},h=()=>{document.querySelectorAll(".k-grid-header .k-table-thead th").forEach((i,u)=>{const f=i.querySelector(".k-grid-header-menu.k-grid-column-menu");if(!f)return;const A=p();if(A&&A[u]){const o=A[u].field??"";i.setAttribute("data-feather-k-field",o),i.setAttribute("data-feather-k-filterable",A[u].filterable===!1?"false":"true"),i.setAttribute("data-feather-k-sortable",A[u].sortable===!1?"false":"true")}const w=i.dataset.featherKFilterable!=="false",$=i.dataset.featherKSortable!=="false";f.setAttribute("tabindex","-1"),w||$?i.style.cursor="pointer":i.style.cursor="default",w?(i.setAttribute("tabindex","0"),i.setAttribute("role","button"),i.setAttribute("aria-haspopup","menu")):(i.setAttribute("tabindex","0"),i.setAttribute("role","columnheader"),i.removeAttribute("aria-haspopup"));const Y=o=>{o.target?.closest(".k-column-resizer")||(n.value=i,f.click())},a=o=>{if(w)n.value=i,o.preventDefault(),o.stopPropagation(),Y(o);else if($){n.value=i;const c=new KeyboardEvent("keydown",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0});i.dispatchEvent(c)}};i.addEventListener("click",a),U.push(()=>{i.removeEventListener("click",a)});const v=o=>{if((o.code==="Enter"||o.code==="Space")&&(w||$)){if(n.value=i,n.value.focus(),w)o.preventDefault(),o.stopPropagation(),Y(o);else if($){const c=i.querySelector(".k-link");c&&c.click()}}};i.addEventListener("keydown",v,!0),U.push(()=>{i.removeEventListener("keydown",v,!0)})});const S=document.querySelector(".k-grid-header .k-table-thead");if(S){const i=u=>{const f=u.target.closest("th");f&&(u.code==="Enter"||u.code==="Space")&&f.dataset.featherKFilterable==="false"&&f.dataset.featherKSortable==="false"&&(u.preventDefault(),u.stopImmediatePropagation())};S.addEventListener("keydown",i,!0),U.push(()=>{S.removeEventListener("keydown",i,!0)})}},D=function(l,S){const i=l?.event.event.target,u=p();if(!i||!u)return;const f=i.classList.contains("k-link"),A=i.classList.contains("k-columnmenu-item"),w=u.find($=>$.field===l.event.field)?.sortable&&!0;if(!f){if(A&&!w){(l.event.sort&&void 0)?.filter(Y=>Y.field!==l.event.field);return}typeof S=="function"&&t.nextTick(()=>{n.value&&n.value.focus(),S(l)})}},q=()=>{if(!d)try{E(),x(),I(),d=!0}catch(l){console.error("initA11y failed:",l),O()}};return t.onBeforeUnmount(()=>{O()}),{activeFilterButton:n,handleGridKeyDown:L,handleSortChange:D,initA11y:q}};function he(e){const n=t.ref(""),d=t.ref(void 0),P=t.ref(!!e.debug),F=t.ref(e.dateFormat??"mm/dd/yyyy"),U=["ArrowUp","ArrowDown"],N=["ArrowLeft","ArrowRight"],p=t.computed(()=>(n.value??"").replace(/\D/g,"")),g=a=>a<=2?"mm":a<=5?"dd":p.value.length<=10?"yyyy":"mm",T=t.computed(()=>{const a=n.value&&n.value.substring(0,2).replace(/\D/g,"0")||"0";return parseInt(a).toString().padStart(2,"0")}),b=t.computed(()=>{const a=n.value&&n.value.substring(3,5).replace(/\D/g,"0")||"0";return parseInt(a).toString().padStart(2,"0")}),L=t.computed(()=>{const a=n.value&&n.value.substring(6,10).replace(/\D/g,"0")||"0";return parseInt(a).toString().padStart(4,"0")}),E=a=>{if(p.value.length===0){e.onChange({value:null,event:a});return}if(p.value.length<8){e.onChange({value:null,event:a});return}if((n.value??"").length===10&&p.value.length===8){const[v,o,c]=n.value.split("/"),m=parseInt(v),k=parseInt(o),M=parseInt(c);if(D(M,m,k)){const H=new Date(M,m-1,k);x(H)?e.onChange({value:H,event:a}):e.onChange({value:null,event:a})}else e.onChange({value:null,event:a})}},x=a=>{const v=e.minDate?.value??void 0,o=e.maxDate?.value??void 0;return!(v&&a<v||o&&a>o)},I=t.computed(()=>{if((n.value??"").length===10&&p.value.length===8){const[a,v,o]=(n.value??"").split("/"),c=parseInt(a),m=parseInt(v),k=parseInt(o);if(D(k,c,m))return new Date(k,c-1,m)}return null}),O=t.computed(()=>(n.value??"").length===10&&p.value.length===8),h=(a,v)=>new Date(a,v,0).getDate(),D=(a,v,o)=>v>=1&&v<=12&&a>=1900&&o>=1&&o<=h(a,v),q=a=>{n.value=a.value;const v=a.event?.target;d.value=v?.selectionStart??0,E(a)},l=a=>{d.value=a.target.selectionStart??0},S=(a,v,o)=>{const c=v?.selectionStart??d.value??0;d.value=c;let m=parseInt(T.value),k=parseInt(b.value),M=parseInt(L.value);if(!(p.value.length>=8)||!D(M,m,k)){const s=new Date;m=s.getMonth()+1,k=s.getDate(),M=s.getFullYear(),n.value=`${String(m).padStart(2,"0")}/${String(k).padStart(2,"0")}/${String(M)}`;const y=new Date(M,m-1,k);e.onChange({value:x(y)?y:null,event:o}),t.nextTick(()=>{requestAnimationFrame(()=>{const C=document.getElementById(e.id),R=d.value??0;C&&(C.focus(),C.setSelectionRange(R,R))})});return}const B=g(c);if(B==="mm")m=a==="ArrowUp"?m<12?m+1:1:m>1?m-1:12;else if(B==="dd"){const s=new Date(M,m,0).getDate();k=a==="ArrowUp"?k<s?k+1:1:k>1?k-1:s}else B==="yyyy"&&(M=a==="ArrowUp"?M+1:Math.max(1,M-1));n.value=`${String(m).padStart(2,"0")}/${String(k).padStart(2,"0")}/${String(M)}`;const[V,Q,J]=n.value.split("/"),r=new Date(parseInt(J),parseInt(V)-1,parseInt(Q));r.toString()!=="Invalid Date"&&parseInt(J)>=1e3?e.onChange({value:x(r)?r:null,event:o}):e.onChange({value:null,event:o}),t.nextTick(()=>{requestAnimationFrame(()=>{const s=document.getElementById(e.id),y=d.value??0;s&&(s.focus(),s.setSelectionRange(y,y))})})},i=a=>{if(a.code==="Space"||a.key===" "){e.onShowCalendar(a);return}if(U.includes(a.key)){a.preventDefault();const v=a.target;S(a.key,v,a)}},u=a=>{a.preventDefault();const v=a.deltaY<0?"ArrowUp":"ArrowDown";S(v,a.target,a)},f=a=>{const v=a.target;if(N.includes(a.key)){d.value=v?.selectionStart??0;return}U.includes(a.key)&&(a.preventDefault(),d.value=v?.selectionStart??0)};e.externalValue&&t.watch(e.externalValue,a=>{if(a){const v=new Date(a);if(v.toString()!=="Invalid Date"){const o=(v.getMonth()+1).toString().padStart(2,"0"),c=v.getDate().toString().padStart(2,"0"),m=v.getFullYear().toString();n.value=`${o}/${c}/${m}`;return}}},{immediate:!0});const A=t.computed(()=>[["Date",`${T.value} / ${b.value} / ${L.value}`],["Digits only",p.value],["min",e.minDate?.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"})??null],["max",e.maxDate?.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"})??null]]),w=t.computed(()=>{if(!O.value)return!0;const a=I.value;return a?x(a):!1}),$=t.computed(()=>{if(w.value)return"";if(O.value&&!I.value)return`Must be in ${F.value} format.`;const a=e.minDate?.value?e.minDate.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}):null,v=e.maxDate?.value?e.maxDate.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}):null;return a&&v?`Must be between ${a} and ${v}.`:a?`Must be on or after ${a}.`:v?`Must be on or before ${v}.`:""}),Y=()=>{t.nextTick(()=>{const a=document.getElementById(e.id);if(!a){console.warn(`ID (#${e.id}) not found for styling.`);return}const v=a.closest(".k-datepicker");if(v)v.classList.add("fk-datepicker");else{console.warn(`.k-datepicker parent not found for #${e.id} styling.`);return}})};return t.onMounted(()=>{Y()}),{raw:n,cursorPos:d,debugEnabled:P,debugLines:A,placeholder:F,isValid:w,validationMessage:$,digitsOnly:p,month:t.readonly(T),day:t.readonly(b),year:t.readonly(L),datePart:g,handleChange:q,handleKeyDown:i,handleWheel:u,handleKeyUp:f,handleClick:l}}function ve(e){const n=t.ref(""),d=t.ref(void 0),P=t.ref(!!e.debug),F=t.ref(!1),U=t.computed(()=>(n.value??"").replace(/\D/g,"")),N=(r,s)=>new Date(r,s,0).getDate(),p=(r,s,y)=>s>=1&&s<=12&&r>=1e3&&y>=1&&y<=N(r,s),g=r=>{if(!r)return null;const s=e.min??new Date(-864e13),y=e.max??new Date(864e13);return r<s||r>y?null:r},T=(r,s)=>e.allowReverse??!1?!0:r<=s,b=t.computed(()=>(n.value?.length??0)>=23&&U.value.length>=16),L=r=>{if((r??"").length<23||U.value.length<16)return{start:null,end:null};const s=r.substring(0,10),y=r.substring(13,23),[C,R,W]=s.split("/").map(X=>parseInt(X||"0",10)),[oe,ee,te]=y.split("/").map(X=>parseInt(X||"0",10)),ne=new Date(W,C-1,R),ae=new Date(te,oe-1,ee),ue=p(W,C,R)&&ne.toString()!=="Invalid Date",ce=p(te,oe,ee)&&ae.toString()!=="Invalid Date";return{start:ue?ne:null,end:ce?ae:null}},E=e.externalValid??t.ref(void 0),x=t.computed(()=>L(n.value)),I=t.computed(()=>{const r=g(x.value.start),s=g(x.value.end);return{start:r,end:s}}),O=t.computed(()=>{if(!b.value)return;const r=I.value.start,s=I.value.end;if(!r||!s)return;const y=R=>Date.UTC(R.getFullYear(),R.getMonth(),R.getDate()),C=Math.abs(y(s)-y(r));return Math.round(C/864e5)}),h=t.computed(()=>{const{start:r,end:s}=x.value;if(!b.value)return;if(!r||!s||!I.value.start||!I.value.end)return!1;const y=I.value.start,C=I.value.end;return!(!T(y,C)||typeof e.maxSpanDays=="number"&&O.value!==void 0&&O.value>e.maxSpanDays)}),D=t.computed(()=>{const{start:r,end:s}=x.value;if(!b.value)return"incomplete";if(!r||!s)return"invalid-date";if(!I.value.start||!I.value.end)return"out-of-bounds";const y=I.value.start,C=I.value.end;return T(y,C)?typeof e.maxSpanDays=="number"&&O.value!==void 0&&O.value>e.maxSpanDays?"span-exceeds-limit":"valid":"reversed-range"}),q=t.computed(()=>{switch(D.value){case"invalid-date":return"Enter valid start and end dates.";case"out-of-bounds":return"Must be within the allowed range.";case"reversed-range":return"Must be in sequential order.";case"span-exceeds-limit":return typeof e.maxSpanDays=="number"?`Exceeds maximum of ${e.maxSpanDays} days.`:"Exceeds maximum allowed span.";case"valid":default:return""}});t.watch(h,r=>{(e.manageValid??!0)&&(E.value=r)},{immediate:!0});const l=["ArrowUp","ArrowDown"],S=["ArrowLeft","ArrowRight"],i=(r,s)=>String(r).padStart(s,"0"),u=r=>`${i(r.getMonth()+1,2)}/${i(r.getDate(),2)}/${i(r.getFullYear(),4)}`,f=r=>r<=2?{side:"start",part:"mm"}:r<=5?{side:"start",part:(r<=3,"dd")}:r<=11?{side:"start",part:"yyyy"}:r<=15?{side:"end",part:"mm"}:r<=18?{side:"end",part:"dd"}:{side:"end",part:"yyyy"},A=(r,s,y)=>{const C=s?.selectionStart??d.value??0;d.value=C;const{start:R,end:W}=L(n.value);if(!R&&!W){const K=new Date,_=u(K);n.value=`${_} - ${_}`,e.onChange({value:{start:K,end:K},event:y}),t.nextTick(()=>{requestAnimationFrame(()=>{const j=document.getElementById(e.id),G=d.value??0;j&&(j.focus(),j.setSelectionRange(G,G))})});return}const oe=new Date,ee=f(C);let te=R?new Date(R):new Date(oe),ne=W?new Date(W):new Date(oe);const ae=(K,_)=>{if(_==="mm"){const j=K.getMonth()+1,G=r==="ArrowUp"?j<12?j+1:1:j>1?j-1:12;K.setMonth(G-1);const le=N(K.getFullYear(),G);K.getDate()>le&&K.setDate(le)}else if(_==="dd"){const j=N(K.getFullYear(),K.getMonth()+1),G=K.getDate(),le=r==="ArrowUp"?G<j?G+1:1:G>1?G-1:j;K.setDate(le)}else if(_==="yyyy"){const j=K.getFullYear();K.setFullYear(r==="ArrowUp"?j+1:Math.max(1,j-1));const G=N(K.getFullYear(),K.getMonth()+1);K.getDate()>G&&K.setDate(G)}};ee.side==="start"?ae(te,ee.part):ae(ne,ee.part);const ue=u(te),ce=u(ne);n.value=`${ue} - ${ce}`;const X=g(te),de=g(ne);X&&de&&T(X,de)?e.onChange({value:{start:X,end:de},event:y}):e.onChange({value:null,event:y}),t.nextTick(()=>{requestAnimationFrame(()=>{const K=document.getElementById(e.id),_=d.value??0;K&&(K.focus(),K.setSelectionRange(_,_))})})},w=r=>{const{start:s,end:y}=L(n.value);if(!s||!y){e.onChange({value:null,event:r});return}const C=g(s),R=g(y);if(!C||!R){e.onChange({value:null,event:r});return}if(!T(C,R)){e.onChange({value:null,event:r});return}e.onChange({value:{start:C,end:R},event:r})},$=r=>{n.value=r.value;const s=r.event?.target;d.value=s?.selectionStart??0,w(r)},Y=r=>{d.value=r.target.selectionStart??0},a=r=>{if(r.code==="Space"||r.key===" "){r.preventDefault(),e.onShowCalendar(r);return}if(l.includes(r.key)){r.preventDefault();const s=r.target;A(r.key,s,r)}},v=r=>{r.preventDefault();const s=r.deltaY<0?"ArrowUp":"ArrowDown";A(s,r.target,r)},o=r=>{if(S.includes(r.key)||l.includes(r.key)){r.preventDefault();const s=r.target;d.value=s?.selectionStart??0}};e.externalValue&&t.watch(e.externalValue,r=>{const s=r?.start??null,y=r?.end??null;if(s&&y){if(n.value=`${u(s)} - ${u(y)}`,e.isOpen?.value&&F.value&&e.onRequestClose){const C=typeof e.closeDelay=="number"?e.closeDelay:e.closeDelay?.value??0;setTimeout(()=>{e.onRequestClose?.(),F.value=!1},C)}return}},{immediate:!0});const c=t.computed(()=>n.value&&n.value.substring(0,2).replace(/\D/g,"0")||"0"),m=t.computed(()=>n.value&&n.value.substring(3,5).replace(/\D/g,"0")||"0"),k=t.computed(()=>n.value&&n.value.substring(6,10).replace(/\D/g,"0")||"0"),M=t.computed(()=>n.value&&n.value.substring(13,15).replace(/\D/g,"0")||"0"),H=t.computed(()=>n.value&&n.value.substring(16,18).replace(/\D/g,"0")||"0"),B=t.computed(()=>n.value&&n.value.substring(19,23).replace(/\D/g,"0")||"0"),V=t.computed(()=>{const{start:r,end:s}=L(n.value);return[{label:"Raw",value:n.value},{label:"Start",value:`${String(c.value).padStart(2,"0")} / ${String(m.value).padStart(2,"0")} / ${String(k.value).padStart(4,"0")}`},{label:"End",value:`${String(M.value).padStart(2,"0")} / ${String(H.value).padStart(2,"0")} / ${String(B.value).padStart(4,"0")}`},{label:"Digits only",value:U.value},{label:"Mask complete",value:`${b.value}`},{label:"Parsed",value:`${r?r.toDateString():"-"} | ${s?s.toDateString():"-"}`},{label:"Valid (managed)",value:`${E.value??"-"}`},{label:"Span (days)",value:`${O.value??"-"}`},{label:"Reason",value:`${D.value??"-"}`},{label:"Cursor in",value:`${d.value??"-"} (${(()=>{const y=d.value??0,C=f(y);return`${C.side}.${C.part}`})()})`}]}),Q=()=>{t.nextTick(()=>{const r=document.getElementById(e.id);if(!r){console.warn(`#${e.id} not found for styling.`);return}const s=r.closest("div");s?s.classList.add("fk-daterangepicker"):console.warn(`Parent div of #${e.id} not found for styling.`)})};t.onMounted(()=>{Q()});const J=()=>{t.nextTick(()=>{try{const r=Array.from(document.querySelectorAll(".k-animation-container"));if(!r.length)return;const y=[...r].reverse().find(W=>W.querySelector(".k-calendar"))?.querySelector(".k-calendar");if(!y)return;const C=y.querySelectorAll(".k-calendar-table");let R=!1;C.forEach(W=>{W.tabIndex===0&&(R?W.tabIndex=-1:R=!0)})}catch(r){console.warn(r)}})};return e.isOpen&&t.watch(e.isOpen,r=>{r&&setTimeout(()=>J(),0)},{immediate:!1}),{raw:n,cursorPos:d,debugEnabled:P,debugLines:V,digitsOnly:U,valid:E,validComputed:t.readonly(h),reason:t.readonly(D),validationMessage:t.readonly(q),spanDays:t.readonly(O),month1:t.readonly(c),day1:t.readonly(m),year1:t.readonly(k),month2:t.readonly(M),day2:t.readonly(H),year2:t.readonly(B),handleChange:$,handleKeyDown:a,handleWheel:v,handleKeyUp:o,handleClick:Y,onCalendarChange:()=>{F.value=!0}}}function Se(e){const n=t.ref(""),d=t.ref(void 0),P=t.ref(!!e.debug),F=t.ref(e.timeFormat??"hh:mm AM"),U=["ArrowUp","ArrowDown"],N=["ArrowLeft","ArrowRight"],p=t.computed(()=>(n.value??"").replace(/\D/g,"")),g={H:/[0-9]/,h:/[0-9]/,M:/[0-9]/,m:/[0-9]/,A:/[AaPp]/,a:/[Mm]/},T=o=>o<=2?"hh":o<=5?"mm":"ampm",b=t.computed(()=>{const o=n.value&&n.value.substring(0,2).replace(/\D/g,"0")||"0",c=parseInt(o);return Math.min(Math.max(c,0),23)}),L=t.computed(()=>{const o=n.value&&n.value.substring(3,5).replace(/\D/g,"0")||"0",c=parseInt(o);return Math.min(Math.max(c,0),59)}),E=t.computed(()=>(n.value?.substring(6,8)||"AM").toUpperCase().startsWith("P")?"PM":"AM"),x=t.computed(()=>/^(\d{2}):(\d{2})\s([AP]M)$/i.test(n.value??"")),I=(o,c,m)=>{let k=o%12;return k===0&&(k=12),`${String(k).padStart(2,"0")}:${String(c).padStart(2,"0")} ${m}`},O=o=>{const c=o.match(/^(\d{2}):(\d{2})\s([AP]M)$/i);if(!c)return null;const m=parseInt(c[1]),k=parseInt(c[2]),M=c[3].toUpperCase();if(m<1||m>12||k<0||k>59)return null;let H=m%12;M==="PM"&&(H+=12);const B=new Date;return B.setSeconds(0,0),B.setHours(H),B.setMinutes(k),B},h=o=>{if(p.value.length===0){e.onChange({value:null,event:o});return}if(!x.value){e.onChange({value:null,event:o});return}const c=O(n.value);c&&q(c)?e.onChange({value:c,event:o}):e.onChange({value:null,event:o})},D=o=>o.getHours()*60+o.getMinutes(),q=o=>{const c=e.minTime?.value??void 0,m=e.maxTime?.value??void 0,k=D(o);if(c){const M=D(c);if(k<M)return!1}if(m){const M=D(m);if(k>M)return!1}return!0},l=o=>{n.value=o.value;const c=o.event?.target;d.value=c?.selectionStart??0;try{const m=d.value??0;if(T(m)==="ampm"&&(n.value??"").length>=8){const k=n.value.charAt(6);/[Aa]/.test(k)?(n.value=`${n.value.slice(0,6)}AM${n.value.slice(8)}`,t.nextTick(()=>{requestAnimationFrame(()=>{const M=document.getElementById(e.id);M&&(M.focus(),M.setSelectionRange(8,8))})})):/[Pp]/.test(k)&&(n.value=`${n.value.slice(0,6)}PM${n.value.slice(8)}`,t.nextTick(()=>{requestAnimationFrame(()=>{const M=document.getElementById(e.id);M&&(M.focus(),M.setSelectionRange(8,8))})}))}}catch{}h(o)},S=o=>{d.value=o.target.selectionStart??0},i=(o,c,m)=>{const k=c?.selectionStart??d.value??0;d.value=k;const M=T(k),H=(n.value??"").match(/^(\d{2}):(\d{2})\s([AP]M)$/i);if(!H){if((n.value??"").length===0||p.value.length===0){const r=new Date,s=r.getHours(),y=s>=12?"PM":"AM";n.value=I(s,r.getMinutes(),y);const C=O(n.value);C&&q(C)?e.onChange({value:C,event:m}):e.onChange({value:null,event:m}),t.nextTick(()=>{requestAnimationFrame(()=>{const R=document.getElementById(e.id),W=d.value??0;R&&(R.focus(),R.setSelectionRange(W,W))})})}return}let B=parseInt(H[1]),V=parseInt(H[2]),Q=H[3].toUpperCase();if(M==="hh")o==="ArrowUp"?B=B<12?B+1:1:B=B>1?B-1:12;else if(M==="mm"){const r=e.minuteStepRef?.value??e.minuteStep??1;if(r===1)o==="ArrowUp"?V=V<59?V+1:0:V=V>0?V-1:59;else if(o==="ArrowUp"){const s=V%r;let y=s===0?V+r:V+(r-s);y>=60&&(y=0),V=y}else{const s=V%r;let y=s===0?V-r:V-s;y<0&&(y=60-r),V=y}}else M==="ampm"&&(Q=Q==="AM"?"PM":"AM");n.value=`${String(B).padStart(2,"0")}:${String(V).padStart(2,"0")} ${Q}`;const J=O(n.value);J&&q(J)?e.onChange({value:J,event:m}):e.onChange({value:null,event:m}),t.nextTick(()=>{requestAnimationFrame(()=>{const r=document.getElementById(e.id),s=d.value??0;r&&(r.focus(),r.setSelectionRange(s,s))})})},u=o=>{if(o.code==="Space"||o.key===" "){e.onShowPicker(o);return}if(U.includes(o.key)){o.preventDefault();const c=o.target;i(o.key,c,o)}},f=o=>{o.preventDefault();const c=o.deltaY<0?"ArrowUp":"ArrowDown";i(c,o.target,o)},A=o=>{const c=o.target;if(N.includes(o.key)){d.value=c?.selectionStart??0;return}U.includes(o.key)&&(o.preventDefault(),d.value=c?.selectionStart??0)};e.externalValue&&t.watch(e.externalValue,o=>{if(o){const c=new Date(o);if(c.toString()!=="Invalid Date"){const m=c.getHours(),k=m>=12?"PM":"AM";n.value=I(m,c.getMinutes(),k);return}}},{immediate:!0});const w=t.computed(()=>[["Time",n.value||"--:-- --"],["Hour (12h)",b.value],["Minute",L.value],["Period",E.value],["Digits only",p.value],["min",e.minTime?.value.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})??null],["max",e.maxTime?.value.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})??null]]),$=t.computed(()=>O(n.value)??null),Y=t.computed(()=>{if(!x.value)return!0;const o=$.value;return o?q(o):!1}),a=t.computed(()=>{if(Y.value)return"";if(x.value&&!$.value)return`Must be in ${F.value} format.`;const o={hour:"2-digit",minute:"2-digit"},c=e.minTime?.value?e.minTime.value.toLocaleTimeString("en-US",o):null,m=e.maxTime?.value?e.maxTime.value.toLocaleTimeString("en-US",o):null;return c&&m?`Must be between ${c} and ${m}.`:c?`Must be ${c} or later.`:m?`Must be ${m} or earlier.`:""}),v=()=>{t.nextTick(()=>{const o=document.getElementById(e.id);if(!o){console.warn(`#${e.id} not found for styling.`);return}const c=o.closest(".k-timepicker");c?c.classList.add("fk-timepicker"):console.warn(`.k-timepicker parent of #${e.id} not found for styling.`)})};return t.onMounted(()=>{v()}),{raw:n,rules:g,debugEnabled:P,debugLines:w,placeholder:F,isValid:Y,validationMessage:a,isComplete:x,inRangeTime:q,hour:t.readonly(b),minute:t.readonly(L),period:t.readonly(E),handleChange:l,handleKeyDown:u,handleKeyUp:A,handleClick:S,handleWheel:f}}function be(e){return t.getCurrentScope()?(t.onScopeDispose(e),!0):!1}const fe=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const we=Object.prototype.toString,ke=e=>we.call(e)==="[object Object]",Z=()=>{},De=Ae();function Ae(){var e,n;return fe&&((e=window?.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((n=window?.navigator)==null?void 0:n.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function ie(e){return Array.isArray(e)?e:[e]}function Ee(e,n,d){return t.watch(e,n,{...d,immediate:!0})}const me=fe?window:void 0;function re(e){var n;const d=t.toValue(e);return(n=d?.$el)!=null?n:d}function se(...e){const n=[],d=()=>{n.forEach(p=>p()),n.length=0},P=(p,g,T,b)=>(p.addEventListener(g,T,b),()=>p.removeEventListener(g,T,b)),F=t.computed(()=>{const p=ie(t.toValue(e[0])).filter(g=>g!=null);return p.every(g=>typeof g!="string")?p:void 0}),U=Ee(()=>{var p,g;return[(g=(p=F.value)==null?void 0:p.map(T=>re(T)))!=null?g:[me].filter(T=>T!=null),ie(t.toValue(F.value?e[1]:e[0])),ie(t.unref(F.value?e[2]:e[1])),t.toValue(F.value?e[3]:e[2])]},([p,g,T,b])=>{if(d(),!p?.length||!g?.length||!T?.length)return;const L=ke(b)?{...b}:b;n.push(...p.flatMap(E=>g.flatMap(x=>T.map(I=>P(E,x,I,L)))))},{flush:"post"}),N=()=>{U(),d()};return be(d),N}let pe=!1;function xe(e,n,d={}){const{window:P=me,ignore:F=[],capture:U=!0,detectIframe:N=!1,controls:p=!1}=d;if(!P)return p?{stop:Z,cancel:Z,trigger:Z}:Z;if(De&&!pe){pe=!0;const h={passive:!0};Array.from(P.document.body.children).forEach(D=>D.addEventListener("click",Z,h)),P.document.documentElement.addEventListener("click",Z,h)}let g=!0;const T=h=>t.toValue(F).some(D=>{if(typeof D=="string")return Array.from(P.document.querySelectorAll(D)).some(q=>q===h.target||h.composedPath().includes(q));{const q=re(D);return q&&(h.target===q||h.composedPath().includes(q))}});function b(h){const D=t.toValue(h);return D&&D.$.subTree.shapeFlag===16}function L(h,D){const q=t.toValue(h),l=q.$.subTree&&q.$.subTree.children;return l==null||!Array.isArray(l)?!1:l.some(S=>S.el===D.target||D.composedPath().includes(S.el))}const E=h=>{const D=re(e);if(h.target!=null&&!(!(D instanceof Element)&&b(e)&&L(e,h))&&!(!D||D===h.target||h.composedPath().includes(D))){if("detail"in h&&h.detail===0&&(g=!T(h)),!g){g=!0;return}n(h)}};let x=!1;const I=[se(P,"click",h=>{x||(x=!0,setTimeout(()=>{x=!1},0),E(h))},{passive:!0,capture:U}),se(P,"pointerdown",h=>{const D=re(e);g=!T(h)&&!!(D&&!h.composedPath().includes(D))},{passive:!0}),N&&se(P,"blur",h=>{setTimeout(()=>{var D;const q=re(e);((D=P.document.activeElement)==null?void 0:D.tagName)==="IFRAME"&&!q?.contains(P.document.activeElement)&&n(h)},0)},{passive:!0})].filter(Boolean),O=()=>I.forEach(h=>h());return p?{stop:O,cancel:()=>{g=!1},trigger:h=>{g=!0,E(h),g=!1}}:O}function Me(e){const n=t.shallowRef(null),d=[".k-animation-container .k-popup",".k-popup",".k-timepicker-popup",".k-menu-popup"],P=Array.isArray(e.popupSelector)?e.popupSelector:[e.popupSelector??d].flat(),F=b=>b?typeof e.initialFocus=="string"?b.querySelector(e.initialFocus)??b:typeof e.initialFocus=="function"?e.initialFocus(b)??b:b.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')??b:null,{activate:U,deactivate:N}=ye.useFocusTrap(n,{escapeDeactivates:!1,clickOutsideDeactivates:!1,fallbackFocus:()=>n.value,initialFocus:()=>F(n.value),...e.focusTrapOptions??{}});let p=null,g=t.ref(null);const T=()=>{if(e.resolvePopupEl)return e.resolvePopupEl();const b=(E,x)=>{const I=Array.from(E.querySelectorAll(x));if(!I.length)return null;const O=I.filter(h=>h.offsetParent!==null||h.getClientRects().length>0);return O[O.length-1]??I[I.length-1]??null},L=e.triggerEl?.value?.closest?.(".k-animation-container")??document.body;for(const E of P){const x=b(L,E);if(x)return x}for(const E of P){const x=b(document,E);if(x)return x}return null};return xe(n,b=>{g.value="outside",e.isOpen.value&&e.onRequestClose?.("outside",b)}),t.watch(()=>e.isOpen.value,b=>{b?(g.value=null,t.nextTick(()=>{const L=T();L&&(n.value=L,setTimeout(()=>U(),0),p||(p=E=>{E.key==="Escape"&&(g.value="escape",e.isOpen.value&&e.onRequestClose?.("escape",E))},document.addEventListener("keydown",p,!0)))})):(N(),p&&(document.removeEventListener("keydown",p,!0),p=null),n.value=null,g.value==="outside"&&t.nextTick(()=>{const L=()=>{const E=e.triggerEl?.value,x=E?.querySelector("input"),I=document.activeElement;I&&(I===x||E&&E.contains(I))&&(x??E)?.blur?.()};requestAnimationFrame(()=>setTimeout(L,0))}),e.returnFocusToTrigger!==!1&&g.value==="escape"&&e.triggerEl?.value&&(console.log("Returning focus to trigger element:",e.triggerEl.value),t.nextTick(()=>{const L=()=>{const E=e.triggerEl?.value;if(!E)return;(E.querySelector("input")??E)?.focus?.()};requestAnimationFrame(()=>setTimeout(L,0))})))}),{popupRef:n,activate:U,deactivate:N,lastCloseReason:t.readonly(g),setPopupEl:b=>n.value=b}}z.useGridA11y=ge,z.useMaskedDateInput=he,z.useMaskedDateRangeInput=ve,z.useMaskedTimeInput=Se,z.usePopupTrap=Me,Object.defineProperty(z,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(X,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("@vueuse/integrations/useFocusTrap")):typeof define=="function"&&define.amd?define(["exports","vue","@vueuse/integrations/useFocusTrap"],t):(X=typeof globalThis<"u"?globalThis:X||self,t(X.FeatherKComposables={},X.Vue,X.useFocusTrap))})(this,(function(X,t,we){"use strict";const ke=e=>{const n=t.ref(null);let m=!1,P=null,q=null;const Y=[],j=".k-table-row[data-grid-row-index] [tabindex]",g=()=>e?.value?.columns,w=l=>{const c=l.key||l.code;[" ","Spacebar","Space","Enter"].includes(c)&&(l.preventDefault(),l.stopPropagation(),n.value=l.target,l.target.click())},I=l=>{if(!n.value)return;if(l.code==="Escape"){l.preventDefault(),l.stopPropagation(),n.value&&n.value.focus();return}const c=Array.from(document.querySelectorAll(".k-animation-container .k-popup .k-column-menu .k-columnmenu-item-wrapper .k-columnmenu-item")),i=document.querySelector(".k-filter-menu-container");if(i){if(l.code==="Tab"){const s=[".k-filter-menu-container .k-dropdownlist[tabindex='0']",".k-filter-menu-container input.k-input-inner:not([tabindex='-1']):not([disabled])",".k-filter-menu-container button:not([tabindex='-1']):not([disabled])"],f=Array.from(i.querySelectorAll(s.join(",")));if(f.length===0)return;const A=f.findIndex($=>$===document.activeElement);let b;A===-1?b=0:l.shiftKey?b=(A-1+f.length)%f.length:b=(A+1)%f.length,l.preventDefault(),l.stopPropagation(),f[b]?.focus();return}}else if(l.code==="ArrowUp"||l.code==="ArrowDown"){l.preventDefault(),l.stopPropagation();const s=c.findIndex(A=>A===document.activeElement);let f=s;l.code==="ArrowUp"?f=s>0?s-1:c.length-1:l.code==="ArrowDown"&&(f=s<c.length-1?s+1:0),c[f]?.focus();return}l.code==="Tab"&&(l.preventDefault(),l.stopPropagation(),l.shiftKey?(n.value?.previousElementSibling).focus():(n.value?.nextElementSibling).focus())},S=()=>{P=new MutationObserver(l=>{l.forEach(c=>{c.addedNodes.forEach(i=>{if(i.nodeType===Node.ELEMENT_NODE){const s=i;if(s.classList.contains("k-animation-container")){const A=n.value;A&&(A.dataset.featherKSortable==="true"||t.nextTick(()=>{s.querySelectorAll(".k-columnmenu-item-wrapper").forEach(B=>{B.textContent?.toLowerCase().includes("sort")&&B.remove()})})),s.addEventListener("keydown",I),t.nextTick(()=>{const b=()=>{const $=Array.from(s.querySelectorAll(".k-animation-container .k-popup .k-column-menu .k-columnmenu-item-wrapper .k-columnmenu-item"));if($.length===1)$[0].focus(),$[0].click(),b.attempts=0;else if($.length>1){b.attempts=0;return}else b.attempts===void 0&&(b.attempts=0),b.attempts++<3&&setTimeout(b,200)};b()})}s.querySelectorAll(".k-animation-container").forEach(A=>{A.addEventListener("keydown",I)})}}),c.removedNodes.forEach(i=>{if(i.nodeType===Node.ELEMENT_NODE){const s=i;s.classList.contains("k-animation-container")&&s.removeEventListener("keydown",I),s.querySelectorAll(".k-animation-container").forEach(A=>{A.removeEventListener("keydown",I)})}})})}),P.observe(document.body,{childList:!0,subtree:!0})},L=l=>{if(!l.type||!l)return;const c=l.target;if(c){if(l.code==="Escape"){const i=document.activeElement?.closest(".k-table-row[data-grid-row-index]");if(i){l.preventDefault(),l.stopPropagation();try{Array.from(e?.value.$el.querySelectorAll(".k-table-row[data-grid-row-index]")).forEach(f=>f.setAttribute("tabindex","-1"))}catch{}i.setAttribute("tabindex","0"),i.focus();return}}if(["ArrowDown","ArrowLeft","ArrowRight","ArrowUp","Enter","Space"].includes(l.code)){if(l.preventDefault(),c.classList.contains("k-grid-header-menu")&&c.classList.contains("k-grid-column-menu")){n.value=c;return}const i=c.closest(".k-table-row[data-grid-row-index]");if(i){if(["ArrowDown","ArrowUp"].includes(l.code)){const s=(A,b)=>{let $=b==="next"?A.nextElementSibling:A.previousElementSibling;for(;$;){const B=$;try{if(B.hasAttribute&&B.classList.contains("k-table-row"))return B}catch{}$=b==="next"?$.nextElementSibling:$.previousElementSibling}return null},f=l.code==="ArrowDown"?s(i,"next"):s(i,"previous");f&&(i.setAttribute("tabindex","-1"),f.setAttribute("tabindex","0"),f.focus());return}if(["ArrowLeft","ArrowRight"].includes(l.code)){l.preventDefault();const s=i.querySelectorAll(j);if(s.length===0)return;let f=Array.from(s).findIndex(A=>A===document.activeElement);if(f===-1&&document.activeElement===i){s[0].focus();return}l.code==="ArrowRight"?f=f===s.length-1?0:f+1:l.code==="ArrowLeft"&&(f=f===s.length-1?f-1:s.length-1),s[f].focus();return}}}}},E=()=>{t.nextTick(()=>{const l=e.value.$el.closest(".k-grid");l&&l.classList.add("fk-grid")})},v=()=>{if(!q)try{const l=()=>{try{const s=Array.from(e.value.$el.querySelectorAll(".k-table-row[data-grid-row-index]"));if(!s||s.length===0||s.filter(b=>b.getAttribute("tabindex")==="0").length===1)return;const A=s.find(b=>b===document.activeElement||b.contains(document.activeElement));if(s.forEach(b=>b.setAttribute("tabindex","-1")),A){A.setAttribute("tabindex","0");return}s[0].setAttribute("tabindex","0")}catch(s){console.error("ensureSingleTabindex error:",s)}},c=Array.from(e.value.$el.querySelectorAll(".k-table-row[data-grid-row-index]"));c.length>0&&c.forEach((s,f)=>{s.setAttribute("tabindex",f===0?"0":"-1")});const i=e.value.$el.querySelector(".k-table-tbody");i&&(q=new MutationObserver(()=>{l()}),q.observe(i,{childList:!0,subtree:!0}))}catch(l){console.error("Error setting up row navigation:",l)}},C=()=>{t.nextTick(()=>{const c=document.querySelectorAll(".k-grid-header .k-grid-header-menu.k-grid-column-menu");c&&c.forEach(i=>{i.setAttribute("role","button"),i.addEventListener("keydown",w)}),S(),p()})},O=()=>{const c=document.querySelectorAll(".k-grid-header .k-grid-header-menu.k-grid-column-menu");c&&c.forEach(i=>{i.removeEventListener("keydown",w)}),P&&(P.disconnect(),P=null),q&&(q.disconnect(),q=null),Y.forEach(i=>i()),Y.length=0},p=()=>{document.querySelectorAll(".k-grid-header .k-table-thead th").forEach((i,s)=>{const f=i.querySelector(".k-grid-header-menu.k-grid-column-menu");if(!f)return;const A=g();if(A&&A[s]){const r=A[s].field??"";i.setAttribute("data-feather-k-field",r),i.setAttribute("data-feather-k-filterable",A[s].filterable===!1?"false":"true"),i.setAttribute("data-feather-k-sortable",A[s].sortable===!1?"false":"true")}const b=i.dataset.featherKFilterable!=="false",$=i.dataset.featherKSortable!=="false";f.setAttribute("tabindex","-1"),b||$?i.style.cursor="pointer":i.style.cursor="default",b?(i.setAttribute("tabindex","0"),i.setAttribute("role","button"),i.setAttribute("aria-haspopup","menu")):(i.setAttribute("tabindex","0"),i.setAttribute("role","columnheader"),i.removeAttribute("aria-haspopup"));const B=r=>{r.target?.closest(".k-column-resizer")||(n.value=i,f.click())},a=r=>{if(b)n.value=i,r.preventDefault(),r.stopPropagation(),B(r);else if($){n.value=i;const u=new KeyboardEvent("keydown",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:!0,cancelable:!0});i.dispatchEvent(u)}};i.addEventListener("click",a),Y.push(()=>{i.removeEventListener("click",a)});const h=r=>{if((r.code==="Enter"||r.code==="Space")&&(b||$)){if(n.value=i,n.value.focus(),b)r.preventDefault(),r.stopPropagation(),B(r);else if($){const u=i.querySelector(".k-link");u&&u.click()}}};i.addEventListener("keydown",h,!0),Y.push(()=>{i.removeEventListener("keydown",h,!0)})});const c=document.querySelector(".k-grid-header .k-table-thead");if(c){const i=s=>{const f=s.target.closest("th");f&&(s.code==="Enter"||s.code==="Space")&&f.dataset.featherKFilterable==="false"&&f.dataset.featherKSortable==="false"&&(s.preventDefault(),s.stopImmediatePropagation())};c.addEventListener("keydown",i,!0),Y.push(()=>{c.removeEventListener("keydown",i,!0)})}},k=function(l,c){const i=l?.event.event.target,s=g();if(!i||!s)return;const f=i.classList.contains("k-link"),A=i.classList.contains("k-columnmenu-item"),b=s.find($=>$.field===l.event.field)?.sortable&&!0;if(!f){if(A&&!b){(l.event.sort&&void 0)?.filter(B=>B.field!==l.event.field);return}typeof c=="function"&&t.nextTick(()=>{n.value&&n.value.focus(),c(l)})}},F=()=>{if(!m)try{E(),v(),C(),m=!0}catch(l){console.error("initA11y failed:",l),O()}};return t.onBeforeUnmount(()=>{O()}),{activeFilterButton:n,handleGridKeyDown:L,handleSortChange:k,initA11y:F}};function De(e){const n=t.ref(""),m=t.ref(void 0),P=t.ref(!!e.debug),q=t.ref(e.dateFormat??"mm/dd/yyyy"),Y=["ArrowUp","ArrowDown"],j=["ArrowLeft","ArrowRight"],g=t.computed(()=>(n.value??"").replace(/\D/g,"")),w=a=>a<=2?"mm":a<=5?"dd":g.value.length<=10?"yyyy":"mm",I=t.computed(()=>{const a=n.value&&n.value.substring(0,2).replace(/\D/g,"0")||"0";return parseInt(a).toString().padStart(2,"0")}),S=t.computed(()=>{const a=n.value&&n.value.substring(3,5).replace(/\D/g,"0")||"0";return parseInt(a).toString().padStart(2,"0")}),L=t.computed(()=>{const a=n.value&&n.value.substring(6,10).replace(/\D/g,"0")||"0";return parseInt(a).toString().padStart(4,"0")}),E=a=>{if(g.value.length===0){e.onChange({value:null,event:a});return}if(g.value.length<8){e.onChange({value:null,event:a});return}if((n.value??"").length===10&&g.value.length===8){const[h,r,u]=n.value.split("/"),y=parseInt(h),D=parseInt(r),M=parseInt(u);if(k(M,y,D)){const _=new Date(M,y-1,D);v(_)?e.onChange({value:_,event:a}):e.onChange({value:null,event:a})}else e.onChange({value:null,event:a})}},v=a=>{const h=e.minDate?.value??void 0,r=e.maxDate?.value??void 0;return!(h&&a<h||r&&a>r)},C=t.computed(()=>{if((n.value??"").length===10&&g.value.length===8){const[a,h,r]=(n.value??"").split("/"),u=parseInt(a),y=parseInt(h),D=parseInt(r);if(k(D,u,y))return new Date(D,u-1,y)}return null}),O=t.computed(()=>(n.value??"").length===10&&g.value.length===8),p=(a,h)=>new Date(a,h,0).getDate(),k=(a,h,r)=>h>=1&&h<=12&&a>=1900&&r>=1&&r<=p(a,h),F=a=>{n.value=a.value;const h=a.event?.target;m.value=h?.selectionStart??0,E(a)},l=a=>{m.value=a.target.selectionStart??0},c=(a,h,r)=>{const u=h?.selectionStart??m.value??0;m.value=u;let y=parseInt(I.value),D=parseInt(S.value),M=parseInt(L.value);if(!(g.value.length>=8)||!k(M,y,D)){const R=new Date;y=R.getMonth()+1,D=R.getDate(),M=R.getFullYear(),n.value=`${String(y).padStart(2,"0")}/${String(D).padStart(2,"0")}/${String(M)}`;const H=new Date(M,y-1,D);e.onChange({value:v(H)?H:null,event:r}),t.nextTick(()=>{requestAnimationFrame(()=>{const Z=document.getElementById(e.id),ne=m.value??0;Z&&(Z.focus(),Z.setSelectionRange(ne,ne))})});return}const N=w(u);if(N==="mm")y=a==="ArrowUp"?y<12?y+1:1:y>1?y-1:12;else if(N==="dd"){const R=new Date(M,y,0).getDate();D=a==="ArrowUp"?D<R?D+1:1:D>1?D-1:R}else N==="yyyy"&&(M=a==="ArrowUp"?M+1:Math.max(1,M-1));n.value=`${String(y).padStart(2,"0")}/${String(D).padStart(2,"0")}/${String(M)}`;const[V,te,Q]=n.value.split("/"),K=new Date(parseInt(Q),parseInt(V)-1,parseInt(te));K.toString()!=="Invalid Date"&&parseInt(Q)>=1e3?e.onChange({value:v(K)?K:null,event:r}):e.onChange({value:null,event:r}),t.nextTick(()=>{requestAnimationFrame(()=>{const R=document.getElementById(e.id),H=m.value??0;R&&(R.focus(),R.setSelectionRange(H,H))})})},i=a=>{if(a.code==="Space"||a.key===" "){e.onShowCalendar(a);return}if(Y.includes(a.key)){a.preventDefault();const h=a.target;c(a.key,h,a)}},s=a=>{a.preventDefault();const h=a.deltaY<0?"ArrowUp":"ArrowDown";c(h,a.target,a)},f=a=>{const h=a.target;if(j.includes(a.key)){m.value=h?.selectionStart??0;return}Y.includes(a.key)&&(a.preventDefault(),m.value=h?.selectionStart??0)};e.externalValue&&t.watch(e.externalValue,a=>{if(a){const h=new Date(a);if(h.toString()!=="Invalid Date"){const r=(h.getMonth()+1).toString().padStart(2,"0"),u=h.getDate().toString().padStart(2,"0"),y=h.getFullYear().toString();n.value=`${r}/${u}/${y}`;return}}},{immediate:!0});const A=t.computed(()=>[["Date",`${I.value} / ${S.value} / ${L.value}`],["Digits only",g.value],["min",e.minDate?.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"})??null],["max",e.maxDate?.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"})??null]]),b=t.computed(()=>{if(!O.value)return!0;const a=C.value;return a?v(a):!1}),$=t.computed(()=>{if(b.value)return"";if(O.value&&!C.value)return`Must be in ${q.value} format.`;const a=e.minDate?.value?e.minDate.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}):null,h=e.maxDate?.value?e.maxDate.value.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}):null;return a&&h?`Must be between ${a} and ${h}.`:a?`Must be on or after ${a}.`:h?`Must be on or before ${h}.`:""}),B=()=>{t.nextTick(()=>{const a=document.getElementById(e.id);if(!a){console.warn(`ID (#${e.id}) not found for styling.`);return}const h=a.closest(".k-datepicker");if(h)h.classList.add("fk-datepicker");else{console.warn(`.k-datepicker parent not found for #${e.id} styling.`);return}})};return t.onMounted(()=>{B()}),{raw:n,cursorPos:m,debugEnabled:P,debugLines:A,placeholder:q,isValid:b,validationMessage:$,digitsOnly:g,month:t.readonly(I),day:t.readonly(S),year:t.readonly(L),datePart:w,handleChange:F,handleKeyDown:i,handleWheel:s,handleKeyUp:f,handleClick:l}}function Ae(e){const n=t.ref(""),m=t.ref(void 0),P=t.ref(!!e.debug),q=t.ref(!1),j=365*(1440*60*1e3),g=new Date,w=new Date(g.getTime()-j),I=new Date(g.getTime()+j);e.min=e.min??w,e.max=e.max??I;const S=t.computed(()=>(n.value??"").replace(/\D/g,"")),L=(o,d)=>new Date(o,d,0).getDate(),E=(o,d,x)=>d>=1&&d<=12&&o>=1e3&&x>=1&&x<=L(o,d),v=o=>Date.UTC(o.getFullYear(),o.getMonth(),o.getDate()),C=o=>{if(!o)return null;const d=e.min,x=e.max,T=v(o);return T<v(d)||T>v(x)?null:o},O=(o,d)=>e.allowReverse??!1?!0:o<=d,p=t.computed(()=>(n.value?.length??0)>=23&&S.value.length>=16),k=o=>{if((o??"").length<23||S.value.length<16)return{start:null,end:null};const d=o.substring(0,10),x=o.substring(13,23),[T,W,J]=d.split("/").map(oe=>parseInt(oe||"0",10)),[ue,ae,le]=x.split("/").map(oe=>parseInt(oe||"0",10)),ie=new Date(J,T-1,W),ce=new Date(le,ue-1,ae),ye=E(J,T,W)&&ie.toString()!=="Invalid Date",ge=E(le,ue,ae)&&ce.toString()!=="Invalid Date";return{start:ye?ie:null,end:ge?ce:null}},F=e.externalValid??t.ref(void 0),l=t.computed(()=>k(n.value)),c=t.computed(()=>{const o=C(l.value.start),d=C(l.value.end);return{start:o,end:d}}),i=t.computed(()=>{if(!p.value)return;const o=c.value.start,d=c.value.end;if(!o||!d)return;const x=W=>Date.UTC(W.getFullYear(),W.getMonth(),W.getDate()),T=Math.abs(x(d)-x(o));return Math.round(T/864e5)}),s=t.computed(()=>{const{start:o,end:d}=l.value;if(!p.value)return;if(!o||!d||!c.value.start||!c.value.end)return!1;const x=c.value.start,T=c.value.end;return!(!O(x,T)||typeof e.maxSpanDays=="number"&&i.value!==void 0&&i.value>e.maxSpanDays)}),f=t.computed(()=>{const{start:o,end:d}=l.value;if(!p.value)return"incomplete";if(!o||!d)return"invalid-date";if(!c.value.start||!c.value.end)return"out-of-bounds";const x=c.value.start,T=c.value.end;return O(x,T)?typeof e.maxSpanDays=="number"&&i.value!==void 0&&i.value>e.maxSpanDays?"span-exceeds-limit":"valid":"reversed-range"}),A=t.computed(()=>{const{start:o,end:d}=l.value,{min:x,max:T}=e;switch(console.table({start:o,end:d,min:x,max:T}),f.value){case"incomplete":return"Required.";case"invalid-date":return"Enter valid start and end dates.";case"out-of-bounds":return o&&d&&(v(o)<v(x)||v(d)<v(x)||v(o)>v(T)||v(d)>v(T))?`Must be between ${x.toLocaleDateString("en-US")} and ${T.toLocaleDateString("en-US")}.`:"Must be within the allowed range.";case"reversed-range":return"Must be in sequential order.";case"span-exceeds-limit":return typeof e.maxSpanDays=="number"?`Exceeds maximum of ${e.maxSpanDays} days.`:"Exceeds maximum allowed span.";case"valid":default:return""}});t.watch(s,o=>{(e.manageValid??!0)&&(F.value=o)},{immediate:!0});const b=["ArrowUp","ArrowDown"],$=["ArrowLeft","ArrowRight"],B=(o,d)=>String(o).padStart(d,"0"),a=o=>`${B(o.getMonth()+1,2)}/${B(o.getDate(),2)}/${B(o.getFullYear(),4)}`,h=o=>o<=2?{side:"start",part:"mm"}:o<=5?{side:"start",part:(o<=3,"dd")}:o<=11?{side:"start",part:"yyyy"}:o<=15?{side:"end",part:"mm"}:o<=18?{side:"end",part:"dd"}:{side:"end",part:"yyyy"},r=(o,d,x)=>{const T=d?.selectionStart??m.value??0;m.value=T;const{start:W,end:J}=k(n.value);if(!W&&!J){const U=new Date,ee=a(U);n.value=`${ee} - ${ee}`,e.onChange({value:{start:U,end:U},event:x}),t.nextTick(()=>{requestAnimationFrame(()=>{const G=document.getElementById(e.id),z=m.value??0;G&&(G.focus(),G.setSelectionRange(z,z))})});return}const ue=new Date,ae=h(T);let le=W?new Date(W):new Date(ue),ie=J?new Date(J):new Date(ue);const ce=(U,ee)=>{if(ee==="mm"){const G=U.getMonth()+1,z=o==="ArrowUp"?G<12?G+1:1:G>1?G-1:12;U.setMonth(z-1);const fe=L(U.getFullYear(),z);U.getDate()>fe&&U.setDate(fe)}else if(ee==="dd"){const G=L(U.getFullYear(),U.getMonth()+1),z=U.getDate(),fe=o==="ArrowUp"?z<G?z+1:1:z>1?z-1:G;U.setDate(fe)}else if(ee==="yyyy"){const G=U.getFullYear();U.setFullYear(o==="ArrowUp"?G+1:Math.max(1,G-1));const z=L(U.getFullYear(),U.getMonth()+1);U.getDate()>z&&U.setDate(z)}};ae.side==="start"?ce(le,ae.part):ce(ie,ae.part);const ye=a(le),ge=a(ie);n.value=`${ye} - ${ge}`;const oe=C(le),he=C(ie);oe&&he&&O(oe,he)?e.onChange({value:{start:oe,end:he},event:x}):e.onChange({value:null,event:x}),t.nextTick(()=>{requestAnimationFrame(()=>{const U=document.getElementById(e.id),ee=m.value??0;U&&(U.focus(),U.setSelectionRange(ee,ee))})})},u=o=>{const{start:d,end:x}=k(n.value);if(!d||!x){e.onChange({value:null,event:o});return}const T=C(d),W=C(x);if(!T||!W){e.onChange({value:null,event:o});return}if(!O(T,W)){e.onChange({value:null,event:o});return}e.onChange({value:{start:T,end:W},event:o})},y=o=>{n.value=o.value;const d=o.event?.target;m.value=d?.selectionStart??0,u(o)},D=o=>{m.value=o.target.selectionStart??0},M=o=>{if(o.code==="Space"||o.key===" "){o.preventDefault(),e.onShowCalendar(o);return}if(o.key==="ArrowDown"&&o.altKey){o.preventDefault(),e.onShowCalendar(o);return}if(b.includes(o.key)){o.preventDefault();const d=o.target;r(o.key,d,o)}},_=o=>{o.preventDefault();const d=o.deltaY<0?"ArrowUp":"ArrowDown";r(d,o.target,o)},N=o=>{if($.includes(o.key)||b.includes(o.key)){o.preventDefault();const d=o.target;m.value=d?.selectionStart??0}};e.externalValue&&t.watch(e.externalValue,o=>{const d=o?.start??null,x=o?.end??null;if(d&&x){if(n.value=`${a(d)} - ${a(x)}`,e.isOpen?.value&&q.value&&e.onRequestClose){const T=typeof e.closeDelay=="number"?e.closeDelay:e.closeDelay?.value??0;setTimeout(()=>{e.onRequestClose?.(),q.value=!1},T)}return}},{immediate:!0});const V=t.computed(()=>n.value&&n.value.substring(0,2).replace(/\D/g,"0")||"0"),te=t.computed(()=>n.value&&n.value.substring(3,5).replace(/\D/g,"0")||"0"),Q=t.computed(()=>n.value&&n.value.substring(6,10).replace(/\D/g,"0")||"0"),K=t.computed(()=>n.value&&n.value.substring(13,15).replace(/\D/g,"0")||"0"),R=t.computed(()=>n.value&&n.value.substring(16,18).replace(/\D/g,"0")||"0"),H=t.computed(()=>n.value&&n.value.substring(19,23).replace(/\D/g,"0")||"0"),Z=t.computed(()=>{const{start:o,end:d}=k(n.value);return[{label:"Raw",value:n.value},{label:"Min Date",value:`${e.min?e.min.toDateString():"-"}`},{label:"Max Date",value:`${e.max?e.max.toDateString():"-"}`},{label:"Start",value:`${String(V.value).padStart(2,"0")} / ${String(te.value).padStart(2,"0")} / ${String(Q.value).padStart(4,"0")}`},{label:"End",value:`${String(K.value).padStart(2,"0")} / ${String(R.value).padStart(2,"0")} / ${String(H.value).padStart(4,"0")}`},{label:"Digits only",value:S.value},{label:"Mask complete",value:`${p.value}`},{label:"Parsed",value:`${o?o.toDateString():"-"} | ${d?d.toDateString():"-"}`},{label:"Valid (managed)",value:`${F.value??"-"}`},{label:"Span (days)",value:`${i.value??"-"}`},{label:"Reason",value:`${f.value??"-"}`},{label:"Cursor in",value:`${m.value??"-"} (${(()=>{const x=m.value??0,T=h(x);return`${T.side}.${T.part}`})()})`}]}),ne=()=>{t.nextTick(()=>{const o=document.getElementById(e.id);if(!o){console.warn(`#${e.id} not found for styling.`);return}const d=o.closest("div");d?d.classList.add("fk-daterangepicker"):console.warn(`Parent div of #${e.id} not found for styling.`)})};t.onMounted(()=>{ne()});const de=()=>{t.nextTick(()=>{try{const o=Array.from(document.querySelectorAll(".k-animation-container"));if(!o.length)return;const x=[...o].reverse().find(J=>J.querySelector(".k-calendar"))?.querySelector(".k-calendar");if(!x)return;const T=x.querySelectorAll(".k-calendar-table");let W=!1;T.forEach(J=>{J.tabIndex===0&&(W?J.tabIndex=-1:W=!0)})}catch(o){console.warn(o)}})};return e.isOpen&&t.watch(e.isOpen,o=>{o&&setTimeout(()=>de(),0)},{immediate:!1}),{raw:n,cursorPos:m,debugEnabled:P,debugLines:Z,digitsOnly:S,valid:F,validComputed:t.readonly(s),reason:t.readonly(f),validationMessage:t.readonly(A),spanDays:t.readonly(i),month1:t.readonly(V),day1:t.readonly(te),year1:t.readonly(Q),month2:t.readonly(K),day2:t.readonly(R),year2:t.readonly(H),handleChange:y,handleKeyDown:M,handleWheel:_,handleKeyUp:N,handleClick:D,onCalendarChange:()=>{q.value=!0}}}function Ee(e){const n=t.ref(""),m=t.ref(void 0),P=t.ref(!!e.debug),q=t.ref(e.timeFormat??"hh:mm AM"),Y=["ArrowUp","ArrowDown"],j=["ArrowLeft","ArrowRight"],g=t.computed(()=>(n.value??"").replace(/\D/g,"")),w={H:/[0-9]/,h:/[0-9]/,M:/[0-9]/,m:/[0-9]/,A:/[AaPp]/,a:/[Mm]/},I=r=>r<=2?"hh":r<=5?"mm":"ampm",S=t.computed(()=>{const r=n.value&&n.value.substring(0,2).replace(/\D/g,"0")||"0",u=parseInt(r);return Math.min(Math.max(u,0),23)}),L=t.computed(()=>{const r=n.value&&n.value.substring(3,5).replace(/\D/g,"0")||"0",u=parseInt(r);return Math.min(Math.max(u,0),59)}),E=t.computed(()=>(n.value?.substring(6,8)||"AM").toUpperCase().startsWith("P")?"PM":"AM"),v=t.computed(()=>/^(\d{2}):(\d{2})\s([AP]M)$/i.test(n.value??"")),C=(r,u,y)=>{let D=r%12;return D===0&&(D=12),`${String(D).padStart(2,"0")}:${String(u).padStart(2,"0")} ${y}`},O=r=>{const u=r.match(/^(\d{2}):(\d{2})\s([AP]M)$/i);if(!u)return null;const y=parseInt(u[1]),D=parseInt(u[2]),M=u[3].toUpperCase();if(y<1||y>12||D<0||D>59)return null;let _=y%12;M==="PM"&&(_+=12);const N=new Date;return N.setSeconds(0,0),N.setHours(_),N.setMinutes(D),N},p=r=>{if(g.value.length===0){e.onChange({value:null,event:r});return}if(!v.value){e.onChange({value:null,event:r});return}const u=O(n.value);u&&F(u)?e.onChange({value:u,event:r}):e.onChange({value:null,event:r})},k=r=>r.getHours()*60+r.getMinutes(),F=r=>{const u=e.minTime?.value??void 0,y=e.maxTime?.value??void 0,D=k(r);if(u){const M=k(u);if(D<M)return!1}if(y){const M=k(y);if(D>M)return!1}return!0},l=r=>{n.value=r.value;const u=r.event?.target;m.value=u?.selectionStart??0;try{const y=m.value??0;if(I(y)==="ampm"&&(n.value??"").length>=8){const D=n.value.charAt(6);/[Aa]/.test(D)?(n.value=`${n.value.slice(0,6)}AM${n.value.slice(8)}`,t.nextTick(()=>{requestAnimationFrame(()=>{const M=document.getElementById(e.id);M&&(M.focus(),M.setSelectionRange(8,8))})})):/[Pp]/.test(D)&&(n.value=`${n.value.slice(0,6)}PM${n.value.slice(8)}`,t.nextTick(()=>{requestAnimationFrame(()=>{const M=document.getElementById(e.id);M&&(M.focus(),M.setSelectionRange(8,8))})}))}}catch{}p(r)},c=r=>{m.value=r.target.selectionStart??0},i=(r,u,y)=>{const D=u?.selectionStart??m.value??0;m.value=D;const M=I(D),_=(n.value??"").match(/^(\d{2}):(\d{2})\s([AP]M)$/i);if(!_){if((n.value??"").length===0||g.value.length===0){const K=new Date,R=K.getHours(),H=R>=12?"PM":"AM";n.value=C(R,K.getMinutes(),H);const Z=O(n.value);Z&&F(Z)?e.onChange({value:Z,event:y}):e.onChange({value:null,event:y}),t.nextTick(()=>{requestAnimationFrame(()=>{const ne=document.getElementById(e.id),de=m.value??0;ne&&(ne.focus(),ne.setSelectionRange(de,de))})})}return}let N=parseInt(_[1]),V=parseInt(_[2]),te=_[3].toUpperCase();if(M==="hh")r==="ArrowUp"?N=N<12?N+1:1:N=N>1?N-1:12;else if(M==="mm"){const K=e.minuteStepRef?.value??e.minuteStep??1;if(K===1)r==="ArrowUp"?V=V<59?V+1:0:V=V>0?V-1:59;else if(r==="ArrowUp"){const R=V%K;let H=R===0?V+K:V+(K-R);H>=60&&(H=0),V=H}else{const R=V%K;let H=R===0?V-K:V-R;H<0&&(H=60-K),V=H}}else M==="ampm"&&(te=te==="AM"?"PM":"AM");n.value=`${String(N).padStart(2,"0")}:${String(V).padStart(2,"0")} ${te}`;const Q=O(n.value);Q&&F(Q)?e.onChange({value:Q,event:y}):e.onChange({value:null,event:y}),t.nextTick(()=>{requestAnimationFrame(()=>{const K=document.getElementById(e.id),R=m.value??0;K&&(K.focus(),K.setSelectionRange(R,R))})})},s=r=>{if(r.code==="Space"||r.key===" "){e.onShowPicker(r);return}if(Y.includes(r.key)){r.preventDefault();const u=r.target;i(r.key,u,r)}},f=r=>{r.preventDefault();const u=r.deltaY<0?"ArrowUp":"ArrowDown";i(u,r.target,r)},A=r=>{const u=r.target;if(j.includes(r.key)){m.value=u?.selectionStart??0;return}Y.includes(r.key)&&(r.preventDefault(),m.value=u?.selectionStart??0)};e.externalValue&&t.watch(e.externalValue,r=>{if(r){const u=new Date(r);if(u.toString()!=="Invalid Date"){const y=u.getHours(),D=y>=12?"PM":"AM";n.value=C(y,u.getMinutes(),D);return}}},{immediate:!0});const b=t.computed(()=>[["Time",n.value||"--:-- --"],["Hour (12h)",S.value],["Minute",L.value],["Period",E.value],["Digits only",g.value],["min",e.minTime?.value.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})??null],["max",e.maxTime?.value.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})??null]]),$=t.computed(()=>O(n.value)??null),B=t.computed(()=>{if(!v.value)return!0;const r=$.value;return r?F(r):!1}),a=t.computed(()=>{if(B.value)return"";if(v.value&&!$.value)return`Must be in ${q.value} format.`;const r={hour:"2-digit",minute:"2-digit"},u=e.minTime?.value?e.minTime.value.toLocaleTimeString("en-US",r):null,y=e.maxTime?.value?e.maxTime.value.toLocaleTimeString("en-US",r):null;return u&&y?`Must be between ${u} and ${y}.`:u?`Must be ${u} or later.`:y?`Must be ${y} or earlier.`:""}),h=()=>{t.nextTick(()=>{const r=document.getElementById(e.id);if(!r){console.warn(`#${e.id} not found for styling.`);return}const u=r.closest(".k-timepicker");u?u.classList.add("fk-timepicker"):console.warn(`.k-timepicker parent of #${e.id} not found for styling.`)})};return t.onMounted(()=>{h()}),{raw:n,rules:w,debugEnabled:P,debugLines:b,placeholder:q,isValid:B,validationMessage:a,isComplete:v,inRangeTime:F,hour:t.readonly(S),minute:t.readonly(L),period:t.readonly(E),handleChange:l,handleKeyDown:s,handleKeyUp:A,handleClick:c,handleWheel:f}}function xe(e){return t.getCurrentScope()?(t.onScopeDispose(e),!0):!1}const ve=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Me=Object.prototype.toString,Te=e=>Me.call(e)==="[object Object]",re=()=>{},Ie=Ce();function Ce(){var e,n;return ve&&((e=window?.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((n=window?.navigator)==null?void 0:n.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function me(e){return Array.isArray(e)?e:[e]}function $e(e,n,m){return t.watch(e,n,{...m,immediate:!0})}const Se=ve?window:void 0;function se(e){var n;const m=t.toValue(e);return(n=m?.$el)!=null?n:m}function pe(...e){const n=[],m=()=>{n.forEach(g=>g()),n.length=0},P=(g,w,I,S)=>(g.addEventListener(w,I,S),()=>g.removeEventListener(w,I,S)),q=t.computed(()=>{const g=me(t.toValue(e[0])).filter(w=>w!=null);return g.every(w=>typeof w!="string")?g:void 0}),Y=$e(()=>{var g,w;return[(w=(g=q.value)==null?void 0:g.map(I=>se(I)))!=null?w:[Se].filter(I=>I!=null),me(t.toValue(q.value?e[1]:e[0])),me(t.unref(q.value?e[2]:e[1])),t.toValue(q.value?e[3]:e[2])]},([g,w,I,S])=>{if(m(),!g?.length||!w?.length||!I?.length)return;const L=Te(S)?{...S}:S;n.push(...g.flatMap(E=>w.flatMap(v=>I.map(C=>P(E,v,C,L)))))},{flush:"post"}),j=()=>{Y(),m()};return xe(m),j}let be=!1;function Le(e,n,m={}){const{window:P=Se,ignore:q=[],capture:Y=!0,detectIframe:j=!1,controls:g=!1}=m;if(!P)return g?{stop:re,cancel:re,trigger:re}:re;if(Ie&&!be){be=!0;const p={passive:!0};Array.from(P.document.body.children).forEach(k=>k.addEventListener("click",re,p)),P.document.documentElement.addEventListener("click",re,p)}let w=!0;const I=p=>t.toValue(q).some(k=>{if(typeof k=="string")return Array.from(P.document.querySelectorAll(k)).some(F=>F===p.target||p.composedPath().includes(F));{const F=se(k);return F&&(p.target===F||p.composedPath().includes(F))}});function S(p){const k=t.toValue(p);return k&&k.$.subTree.shapeFlag===16}function L(p,k){const F=t.toValue(p),l=F.$.subTree&&F.$.subTree.children;return l==null||!Array.isArray(l)?!1:l.some(c=>c.el===k.target||k.composedPath().includes(c.el))}const E=p=>{const k=se(e);if(p.target!=null&&!(!(k instanceof Element)&&S(e)&&L(e,p))&&!(!k||k===p.target||p.composedPath().includes(k))){if("detail"in p&&p.detail===0&&(w=!I(p)),!w){w=!0;return}n(p)}};let v=!1;const C=[pe(P,"click",p=>{v||(v=!0,setTimeout(()=>{v=!1},0),E(p))},{passive:!0,capture:Y}),pe(P,"pointerdown",p=>{const k=se(e);w=!I(p)&&!!(k&&!p.composedPath().includes(k))},{passive:!0}),j&&pe(P,"blur",p=>{setTimeout(()=>{var k;const F=se(e);((k=P.document.activeElement)==null?void 0:k.tagName)==="IFRAME"&&!F?.contains(P.document.activeElement)&&n(p)},0)},{passive:!0})].filter(Boolean),O=()=>C.forEach(p=>p());return g?{stop:O,cancel:()=>{w=!1},trigger:p=>{w=!0,E(p),w=!1}}:O}function Pe(e){const n=t.shallowRef(null),m=[".k-animation-container .k-popup",".k-popup",".k-timepicker-popup",".k-menu-popup"],P=Array.isArray(e.popupSelector)?e.popupSelector:[e.popupSelector??m].flat(),q=S=>S?typeof e.initialFocus=="string"?S.querySelector(e.initialFocus)??S:typeof e.initialFocus=="function"?e.initialFocus(S)??S:S.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')??S:null,{activate:Y,deactivate:j}=we.useFocusTrap(n,{escapeDeactivates:!1,clickOutsideDeactivates:!1,fallbackFocus:()=>n.value,initialFocus:()=>q(n.value),...e.focusTrapOptions??{}});let g=null,w=t.ref(null);const I=()=>{if(e.resolvePopupEl)return e.resolvePopupEl();const S=(E,v)=>{const C=Array.from(E.querySelectorAll(v));if(!C.length)return null;const O=C.filter(p=>p.offsetParent!==null||p.getClientRects().length>0);return O[O.length-1]??C[C.length-1]??null},L=e.triggerEl?.value?.closest?.(".k-animation-container")??document.body;for(const E of P){const v=S(L,E);if(v)return v}for(const E of P){const v=S(document,E);if(v)return v}return null};return Le(n,S=>{w.value="outside",e.isOpen.value&&e.onRequestClose?.("outside",S)}),t.watch(()=>e.isOpen.value,S=>{S?(w.value=null,t.nextTick(()=>{const L=I();L&&(n.value=L,setTimeout(()=>Y(),0),g||(g=E=>{E.key==="Escape"&&(w.value="escape",e.isOpen.value&&e.onRequestClose?.("escape",E))},document.addEventListener("keydown",g,!0)))})):(j(),g&&(document.removeEventListener("keydown",g,!0),g=null),n.value=null,w.value==="outside"&&t.nextTick(()=>{const L=()=>{const E=e.triggerEl?.value,v=E?.querySelector("input"),C=document.activeElement;C&&(C===v||E&&E.contains(C))&&(v??E)?.blur?.()};requestAnimationFrame(()=>setTimeout(L,0))}),e.returnFocusToTrigger!==!1&&w.value==="escape"&&e.triggerEl?.value&&(console.log("Returning focus to trigger element:",e.triggerEl.value),t.nextTick(()=>{const L=()=>{const E=e.triggerEl?.value;if(!E)return;(E.querySelector("input")??E)?.focus?.()};requestAnimationFrame(()=>setTimeout(L,0))})))}),{popupRef:n,activate:Y,deactivate:j,lastCloseReason:t.readonly(w),setPopupEl:S=>n.value=S}}X.useGridA11y=ke,X.useMaskedDateInput=De,X.useMaskedDateRangeInput=Ae,X.useMaskedTimeInput=Ee,X.usePopupTrap=Pe,Object.defineProperty(X,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@featherk/composables",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "main": "dist/featherk-composables.umd.js",
5
5
  "module": "dist/featherk-composables.es.js",
6
6
  "types": "dist/index.d.ts",