Files
nademitex_user/dist/assets/AppSelect-aTK4DygI.js
T
2026-10-01 20:51:37 +03:30

1 line
5.1 KiB
JavaScript

import{A as e,At as t,E as n,F as r,K as i,M as a,Nt as o,Pt as s,U as c,c as l,d as u,f as d,i as f,l as p,nt as m,o as h,t as g,u as _,v}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as y,s as b,u as x}from"./BasicIcon-ba1FsUKx.js";import{t as S}from"./dist-Bc4P4ngC.js";import{c as C}from"./format-C72AoJ2H.js";function w(e){return C(e).toLowerCase().replace(/ي/g,`ی`).replace(/ك/g,`ک`).normalize(`NFKC`).trim()}function T(e,t){let n=w(t);return!n||w(e).includes(n)}function E(e,t){let n=t.trim();return n?e.filter(e=>T(e.label,n)):e}function D(e,t){if(!e)return;let n=e.querySelectorAll(`[data-select-option]`);(t===`first`?n[0]:n[n.length-1])?.focus()}function O(e,t){let n=e.closest(`[data-select-menu]`);if(!n)return;let r=[...n.querySelectorAll(`[data-select-option]`)],i=r.indexOf(e);i<0||r[i+t]?.focus()}var k={key:0,class:`form-label`},A=[`aria-label`,`aria-expanded`,`disabled`],ee=[`aria-label`],j={key:0,class:`app-select__search`,role:`presentation`},M=[`placeholder`],N={key:1,class:`app-select__empty`,role:`presentation`},P=[`aria-selected`,`onClick`,`onKeydown`],F={class:`app-select__option-label`},I={key:0,class:`app-select__check`,viewBox:`0 0 24 24`,width:`16`,height:`16`,"aria-hidden":`true`},L={key:1,class:`input-error-text`},R={key:2,class:`form-hint`},z=g(v({__name:`AppSelect`,props:{modelValue:{},options:{},label:{},placeholder:{default:`انتخاب کنید`},hint:{},error:{},ariaLabel:{default:`انتخاب`},block:{type:Boolean,default:!0},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`جستجو…`},disabled:{type:Boolean,default:!1}},emits:[`update:modelValue`],setup(g,{emit:v}){let C=g,w=v,T=m(!1),z=m(``),B=m(null),V=m(null),H=m(null),U=m({});S(B,()=>{T.value=!1,z.value=``},{ignore:[V]});let W=l(()=>C.options.find(e=>e.value===C.modelValue)),G=l(()=>W.value?.label??C.placeholder),K=l(()=>!W.value),q=l(()=>E(C.options,z.value));function J(e){e.key===`ArrowDown`?(e.preventDefault(),D(V.value,`first`)):e.key===`ArrowUp`&&(e.preventDefault(),D(V.value,`last`))}function Y(e,t){let n=e.currentTarget;e.key===`ArrowDown`?(e.preventDefault(),O(n,1)):e.key===`ArrowUp`?(e.preventDefault(),O(n,-1)):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),$(t))}function X(){let e=B.value;if(!e)return;let t=e.getBoundingClientRect(),n=Math.min(320,window.innerHeight*.5),r=window.innerHeight-t.bottom-6,i=t.top-6,a=r<Math.min(160,n)&&i>r,o=Math.max(120,Math.min(n,a?i:r));U.value={position:`fixed`,left:`${Math.max(8,Math.min(t.left,window.innerWidth-Math.max(t.width,220)-8))}px`,width:`${Math.max(t.width,220)}px`,zIndex:`1280`,maxHeight:`${o}px`,...a?{top:`auto`,bottom:`${window.innerHeight-t.top+6}px`}:{top:`${t.bottom+6}px`,bottom:`auto`}}}function Z(e){e?(window.addEventListener(`resize`,X),window.addEventListener(`scroll`,X,!0)):(window.removeEventListener(`resize`,X),window.removeEventListener(`scroll`,X,!0))}async function Q(){C.disabled||(T.value=!T.value,T.value&&(z.value=``,await n(),X(),C.searchable&&(await n(),H.value?.focus())))}function $(e){w(`update:modelValue`,e),T.value=!1,z.value=``}return c(T,e=>{Z(e),e&&n(()=>X())}),e(()=>{Z(!1)}),(e,n)=>(a(),d(`div`,{ref_key:`rootRef`,ref:B,class:t([`form-group app-select`,{"app-select--open":T.value,"app-select--block":g.block,"app-select--disabled":g.disabled}])},[g.label?(a(),d(`label`,k,s(g.label),1)):u(``,!0),p(`button`,{type:`button`,class:t([`app-select__trigger`,{"app-select__trigger--error":g.error,"is-open":T.value}]),"aria-label":g.ariaLabel,"aria-expanded":T.value,"aria-haspopup":`listbox`,disabled:g.disabled,onClick:Q},[p(`span`,{class:t([`app-select__value`,{"app-select__value--placeholder":K.value}])},s(G.value),3),n[3]||=p(`span`,{class:`app-select__chevron`,"aria-hidden":`true`},[p(`svg`,{viewBox:`0 0 12 12`,width:`12`,height:`12`},[p(`path`,{d:`M2.5 4.5 6 8l3.5-3.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})])],-1)],10,A),(a(),_(h,{to:`body`},[T.value?(a(),d(`ul`,{key:0,ref_key:`menuRef`,ref:V,class:`app-select__menu`,"data-select-menu":``,role:`listbox`,"aria-label":g.ariaLabel,style:o(U.value)},[g.searchable?(a(),d(`li`,j,[i(p(`input`,{ref_key:`searchInputRef`,ref:H,"onUpdate:modelValue":n[0]||=e=>z.value=e,type:`search`,class:`app-select__search-input`,placeholder:g.searchPlaceholder,onClick:n[1]||=x(()=>{},[`stop`]),onKeydown:[n[2]||=y(x(e=>T.value=!1,[`stop`]),[`esc`]),J]},null,40,M),[[b,z.value]])])):u(``,!0),q.value.length?u(``,!0):(a(),d(`li`,N,` موردی یافت نشد `)),(a(!0),d(f,null,r(q.value,e=>(a(),d(`li`,{key:e.value||`__empty__`,role:`presentation`},[p(`button`,{type:`button`,class:t([`app-select__option`,{"app-select__option--active":e.value===g.modelValue}]),"data-select-option":``,role:`option`,"aria-selected":e.value===g.modelValue,onClick:t=>$(e.value),onKeydown:t=>Y(t,e.value)},[p(`span`,F,s(e.label),1),e.value===g.modelValue?(a(),d(`svg`,I,[...n[4]||=[p(`path`,{d:`M5 12.5 9.5 17 19 7`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]])):u(``,!0)],42,P)]))),128))],12,ee)):u(``,!0)])),g.error?(a(),d(`p`,L,s(g.error),1)):g.hint?(a(),d(`p`,R,s(g.hint),1)):u(``,!0)],2))}}),[[`__scopeId`,`data-v-f8694ca5`]]);export{z as t};