vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.18 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeRate",props:{modelValue:[Number,String],disabled:{type:Boolean,default:null},readonly:{type:Boolean,default:null},size:{type:String,default:()=>(0,_ui.getConfig)().rate.size||(0,_ui.getConfig)().size},status:String},emits:["update:modelValue","change"],setup(l,e){let a=e.emit,n=(0,_vue.inject)("$xeForm",null),o=(0,_vue.inject)("xeFormItemInfo",null);var u=_xeUtils.default.uniqueId();let v=(0,_ui.useSize)(l).computeSize,s=(0,_vue.ref)(),d=(0,_vue.reactive)({activeValue:null}),t={refElem:s},p=(0,_vue.computed)(()=>{var e=l.disabled;return null===e?!!n&&(n.props.readonly||n.props.disabled):e}),c=(0,_vue.computed)(()=>{var e=l.readonly;return null===e?!!n&&(n.props.readonly||n.props.disabled):e}),_=(0,_vue.computed)(()=>{var e=l.modelValue,u=d.activeValue;return _xeUtils.default.toNumber(null===u?e:u)}),m=(0,_vue.computed)(()=>[1,2,3,4,5].map(e=>({value:e,label:e}))),r={},i={xID:u,props:l,context:e,reactData:d,getRefMaps:()=>t,getComputeMaps:()=>r},f=(e,u,t)=>{a(e,(0,_ui.createEvent)(t,{$rate:i},u))};u={dispatchEvent:f};let g=e=>{a("update:modelValue",e)},x=()=>{d.activeValue=null};Object.assign(i,u,{});return i.renderVN=()=>{var e=l.status;let r=p.value,i=c.value;var u=m.value,t=v.value;let a=_.value;return(0,_vue.h)("div",{ref:s,class:["vxe-rate",{["size--"+t]:t,["theme--"+e]:e,"is--disabled":r,"is--readonly":i}]},u.map(l=>{var e=a>=l.value;return(0,_vue.h)("div",{class:["vxe-rte--item",{"is--checked":e}],onMouseenter(e){var u,t,a;r||i||(u=l,t=p.value,a=c.value,t)||a||(t=u.value,d.activeValue=t)},onMouseleave:x,onClick(e){var u,t,a;r||i||(e=e,u=l,t=p.value,a=c.value,t)||a||(t=u.value,g(t),f("change",{value:t},e),n&&o&&n.triggerItemEvent(e,o.itemConfig.field,t))}},[(0,_vue.h)("i",{class:e?(0,_ui.getIcon)().RATE_CHECKED:(0,_ui.getIcon)().RATE_UNCHECKED})])}))},i},render(){return this.renderVN()}});