UNPKG

vxe-table-demonic

Version:

一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...

1 lines 2.93 kB
"use strict";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:{type:String,default:function(){return _conf.default.switch.openIcon}},closeIcon:{type:String,default:function(){return _conf.default.switch.closeIcon}}},emits:["update:modelValue","change","focus","blur"],setup:function(l,e){function s(e){var t;l.disabled||(t=m.value,clearTimeout(u),t=t?l.closeValue:l.openValue,f.hasAnimat=!0,n("update:modelValue",t),_.dispatchEvent("change",{value:t},e),i&&a&&i.triggerItemEvent(e,a.itemConfig.field,t),u=setTimeout(function(){f.hasAnimat=!1},400))}function c(e){f.isActivated=!0,_.dispatchEvent("focus",{value:l.modelValue},e)}function r(e){f.isActivated=!1,_.dispatchEvent("blur",{value:l.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)(l),f=(0,_vue.reactive)({isActivated:!1,hasAnimat:!1,offsetLeft:0}),o={xID:t,props:l,context:e,reactData:f},d=(0,_vue.ref)(),_={},p=(0,_vue.computed)(function(){return(0,_utils.getFuncText)(l.openLabel)}),h=(0,_vue.computed)(function(){return(0,_utils.getFuncText)(l.closeLabel)}),m=(0,_vue.computed)(function(){return l.modelValue===l.openValue}),_={dispatchEvent:function(e,t,u){n(e,Object.assign({$switch:o,$event:u},t))},focus:function(){var e=d.value;return f.isActivated=!0,e.focus(),(0,_vue.nextTick)()},blur:function(){return d.value.blur(),(f.isActivated=!1,_vue.nextTick)()}};Object.assign(o,_);return o.renderVN=function(){var e=l.disabled,t=l.openIcon,u=l.closeIcon,n=m.value,i=v.value,a=p.value,o=h.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"]=f.hasAnimat,n)]},[(0,_vue.h)("button",{ref:d,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)(),o]),(0,_vue.h)("span",{class:"vxe-switch--icon"})])])},o},render:function(){return this.renderVN()}});exports.default=_default;