UNPKG

vxe-pc-ui

Version:
1 lines 3.13 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeSwitch",props:{modelValue:[String,Number,Boolean],disabled:{type:Boolean,default:null},readonly:{type:Boolean,default:null},size:{type:String,default:()=>(0,_ui.getConfig)().switch.size||(0,_ui.getConfig)().size},openLabel:String,closeLabel:String,openValue:{type:[String,Number,Boolean],default:!0},closeValue:{type:[String,Number,Boolean],default:!1},openIcon:String,closeIcon:String,openActiveIcon:String,closeActiveIcon:String},emits:["update:modelValue","change","focus","blur"],setup(c,e){const a=e["emit"],l=(0,_vue.inject)("$xeForm",null),i=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const v=(0,_ui.useSize)(c)["computeSize"],d=(0,_vue.reactive)({isActivated:!1,hasAnimat:!1,offsetLeft:0}),n={},o={xID:t,props:c,context:e,reactData:d,internalData:n},p=(0,_vue.ref)();let s={};const _=(0,_vue.computed)(()=>{var e=c["disabled"];return null===e?!!l&&(l.props.readonly||l.props.disabled):e}),m=(0,_vue.computed)(()=>{var e=c["readonly"];return null===e?!!l&&(l.props.readonly||l.props.disabled):e}),f=(0,_vue.computed)(()=>(0,_utils.getFuncText)(c.openLabel)),h=(0,_vue.computed)(()=>(0,_utils.getFuncText)(c.closeLabel)),b=(0,_vue.computed)(()=>c.modelValue===c.openValue),r=e=>{a("update:modelValue",e)},x=e=>{var t=_.value,u=m.value;t||u||(t=b.value,clearTimeout(n.atTimeout),u=t?c.closeValue:c.openValue,d.hasAnimat=!0,r(u),s.dispatchEvent("change",{value:u},e),l&&i&&l.triggerItemEvent(e,i.itemConfig.field,u),n.atTimeout=setTimeout(()=>{d.hasAnimat=!1,n.atTimeout=void 0},400))};const g=e=>{d.isActivated=!0,s.dispatchEvent("focus",{value:c.modelValue},e)},V=e=>{d.isActivated=!1,s.dispatchEvent("blur",{value:c.modelValue},e)};s={dispatchEvent:(e,t,u)=>{a(e,(0,_ui.createEvent)(u,{$switch:o},t))},focus(){var e=p.value;return d.isActivated=!0,e&&e.focus(),(0,_vue.nextTick)()},blur(){var e=p.value;return e&&e.blur(),(d.isActivated=!1,_vue.nextTick)()}},Object.assign(o,s);return o.renderVN=()=>{var{openIcon:e,closeIcon:t,openActiveIcon:u,closeActiveIcon:a}=c,l=v.value,i=b.value,n=f.value,o=h.value,s=_.value,r=m.value;return(0,_vue.h)("div",{class:["vxe-switch",i?"is--on":"is--off",{["size--"+l]:l,"is--disabled":s,"is--readonly":r,"is--animat":d.hasAnimat}]},[(0,_vue.h)("button",{ref:p,class:"vxe-switch--button",type:"button",disabled:s||r,onClick:x,onFocus:g,onBlur:V},[(0,_vue.h)("span",{class:"vxe-switch--label vxe-switch--label-on"},[e?(0,_vue.h)("i",{class:["vxe-switch--label-icon",e]}):(0,_vue.createCommentVNode)(),n]),(0,_vue.h)("span",{class:"vxe-switch--label vxe-switch--label-off"},[t?(0,_vue.h)("i",{class:["vxe-switch--label-icon",t]}):(0,_vue.createCommentVNode)(),o]),(0,_vue.h)("span",{class:["vxe-switch--icon"]},u||a?[(0,_vue.h)("i",{class:i?u:a})]:[])])])},o},render(){return this.renderVN()}});