UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

2 lines (1 loc) 1.73 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("vue"),M=require("@vuux/utils"),p=(a,l,u,i)=>{const x={text:"请按住滑块拖动",successText:"验证通过"},n=f.ref(0),y=f.ref(!1),c=f.ref(!1),s=f.ref(!1),g=f.computed({get:()=>a.modelValue?a.successText||x.successText:a.text||x.text,set:e=>e}),o=40,d=240,h=()=>{s.value=!1,y.value=!0,i("result",!0),i("update:modelValue",!0)};return{sliderIsOk:y,sliderIsLoosen:c,sliderIsMoving:s,sliderMessage:g,sliderOnMousedown:e=>{e.cancelable&&e.preventDefault(),a.modelValue||(s.value=!0,e instanceof MouseEvent?n.value=e.pageX:e instanceof TouchEvent&&(n.value=e.touches[0].pageX))},sliderOnMousemove:e=>{if(e.cancelable&&e.preventDefault(),s.value&&!a.modelValue){let t=0;e instanceof MouseEvent?t=e.pageX-n.value:e instanceof TouchEvent&&(t=e.touches[0].pageX-n.value);const v=d-o;t>0&&t<=v?(u.value&&(u.value.style.left=t+"px"),l.value&&(l.value.style.width=t+o/2+"px")):t>v&&(u.value&&(u.value.style.left=v+"px"),l.value&&(l.value.style.width=d-o/2+"px"),h())}},sliderOnMouseup:async e=>{if(e.cancelable&&e.stopPropagation(),s.value&&!a.modelValue){let t=0;e instanceof MouseEvent?t=e.pageX-n.value:e instanceof TouchEvent&&(t=e.changedTouches[0].pageX-n.value);const v=d-o;t<v?(c.value=!0,await M.Utils.wait(500),u.value&&(u.value.style.left="0"),l.value&&(l.value.style.width="0"),c.value=!1,i("result",!1),i("update:modelValue",!1)):(u.value&&(u.value.style.left=v+"px"),l.value&&(l.value.style.width=d-o/2+"px"),h()),s.value=!1}},sliderReset:()=>{c.value=!1,s.value=!1,i("update:modelValue",!1),l.value&&(l.value.style.width="0"),u.value&&(u.value.style.left="0"),y.value=!1,g.value=a.text??x.text}}};exports.useVerifySlider=p;