primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 1.56 kB
JavaScript
import t from"primevue/ripple";import{resolveDirective as e,withDirectives as o,openBlock as n,createBlock as l,createCommentVNode as i,createVNode as s,toDisplayString as a}from"vue";var h={name:"ToggleButton",emits:["update:modelValue","change"],props:{modelValue:Boolean,onIcon:String,offIcon:String,onLabel:String,offLabel:String,iconPos:{type:String,default:"left"}},methods:{onClick(t){this.$attrs.disabled||(this.$emit("update:modelValue",!this.modelValue),this.$emit("change",t))}},computed:{buttonClass(){return{"p-button p-togglebutton p-component":!0,"p-button-icon-only":this.hasIcon&&!this.hasLabel,"p-disabled":this.$attrs.disabled,"p-highlight":!0===this.modelValue}},iconClass(){return[this.modelValue?this.onIcon:this.offIcon,"p-button-icon",{"p-button-icon-left":"left"===this.iconPos&&this.label,"p-button-icon-right":"right"===this.iconPos&&this.label}]},hasLabel(){return this.onLabel&&this.onLabel.length>0&&this.offLabel&&this.offLabel.length>0},hasIcon(){return this.onIcon&&this.onIcon.length>0&&this.offIcon&&this.offIcon.length>0},label(){return this.hasLabel?this.modelValue?this.onLabel:this.offLabel:" "}},directives:{ripple:t}};const c={class:"p-button-label"};h.render=function(t,h,r,u,b,p){const d=e("ripple");return o((n(),l("div",{class:p.buttonClass,onClick:h[1]||(h[1]=t=>p.onClick(t)),role:"checkbox","aria-checked":r.modelValue,tabindex:t.$attrs.disabled?null:"0"},[p.hasIcon?(n(),l("span",{key:0,class:p.iconClass},null,2)):i("",!0),s("span",c,a(p.label),1)],10,["aria-checked","tabindex"])),[[d]])};export default h;