vxe-table
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 2.8 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_size=require("../../hooks/size"),_utils=require("../../tools/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=(0,_vue.defineComponent)({name:"VxeSwitch",props:{modelValue:[String,Number,Boolean],disabled:Boolean,size:{type:String,default:function(){return _conf.default.switch.size||_conf.default.size}},openLabel:String,closeLabel:String,openValue:{type:[String,Number,Boolean],default:!0},closeValue:{type:[String,Number,Boolean],default:!1},openIcon:String,closeIcon:String},emits:["update:modelValue","change","focus","blur"],setup:function(o,e){function s(e){var t;o.disabled||(t=h.value,clearTimeout(u),t=t?o.closeValue:o.openValue,d.hasAnimat=!0,n("update:modelValue",t),_.dispatchEvent("change",{value:t},e),i&&a&&i.triggerItemEvent(e,a.itemConfig.field,t),u=setTimeout(function(){d.hasAnimat=!1},400))}function c(e){d.isActivated=!0,_.dispatchEvent("focus",{value:o.modelValue},e)}function r(e){d.isActivated=!1,_.dispatchEvent("blur",{value:o.modelValue},e)}var u,n=e.emit,i=(0,_vue.inject)("$xeform",null),a=(0,_vue.inject)("$xeformiteminfo",null),t=_xeUtils.default.uniqueId(),v=(0,_size.useSize)(o),d=(0,_vue.reactive)({isActivated:!1,hasAnimat:!1,offsetLeft:0}),l={xID:t,props:o,context:e,reactData:d},f=(0,_vue.ref)(),_={},p=(0,_vue.computed)(function(){return(0,_utils.getFuncText)(o.openLabel)}),m=(0,_vue.computed)(function(){return(0,_utils.getFuncText)(o.closeLabel)}),h=(0,_vue.computed)(function(){return o.modelValue===o.openValue}),_={dispatchEvent:function(e,t,u){n(e,Object.assign({$switch:l,$event:u},t))},focus:function(){var e=f.value;return d.isActivated=!0,e.focus(),(0,_vue.nextTick)()},blur:function(){return f.value.blur(),(d.isActivated=!1,_vue.nextTick)()}};Object.assign(l,_);return l.renderVN=function(){var e=o.disabled,t=o.openIcon,u=o.closeIcon,n=h.value,i=v.value,a=p.value,l=m.value;return(0,_vue.h)("div",{class:["vxe-switch",n?"is--on":"is--off",((n={})["size--".concat(i)]=i,n["is--disabled"]=e,n["is--animat"]=d.hasAnimat,n)]},[(0,_vue.h)("button",{ref:f,class:"vxe-switch--button",type:"button",disabled:e,onClick:s,onFocus:c,onBlur:r},[(0,_vue.h)("span",{class:"vxe-switch--label vxe-switch--label-on"},[t?(0,_vue.h)("i",{class:["vxe-switch--label-icon",t]}):(0,_vue.createCommentVNode)(),a]),(0,_vue.h)("span",{class:"vxe-switch--label vxe-switch--label-off"},[u?(0,_vue.h)("i",{class:["vxe-switch--label-icon",u]}):(0,_vue.createCommentVNode)(),l]),(0,_vue.h)("span",{class:"vxe-switch--icon"})])])},l},render:function(){return this.renderVN()}});exports.default=_default;