primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 2.83 kB
JavaScript
"use strict";var e=require("primevue/utils"),t=require("primevue/ripple"),i=require("vue");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o={name:"SelectButton",emits:["update:modelValue","focus","blur","change"],props:{modelValue:null,options:Array,optionLabel:null,optionValue:null,optionDisabled:null,multiple:Boolean,disabled:Boolean,dataKey:null,ariaLabelledBy:null},methods:{getOptionLabel(t){return this.optionLabel?e.ObjectUtils.resolveFieldData(t,this.optionLabel):t},getOptionValue(t){return this.optionValue?e.ObjectUtils.resolveFieldData(t,this.optionValue):t},getOptionRenderKey(t){return this.dataKey?e.ObjectUtils.resolveFieldData(t,this.dataKey):this.getOptionLabel(t)},isOptionDisabled(t){return!!this.optionDisabled&&e.ObjectUtils.resolveFieldData(t,this.optionDisabled)},onOptionSelect(t,i){if(this.disabled||this.isOptionDisabled(i))return;let l,o=this.isSelected(i),s=this.getOptionValue(i);l=this.multiple?o?this.modelValue.filter((t=>!e.ObjectUtils.equals(t,s,this.equalityKey))):this.modelValue?[...this.modelValue,s]:[s]:s,this.$emit("update:modelValue",l),this.$emit("change",{event:t,value:l})},isSelected(t){let i=!1,l=this.getOptionValue(t);if(this.multiple){if(this.modelValue)for(let t of this.modelValue)if(e.ObjectUtils.equals(t,l,this.equalityKey)){i=!0;break}}else i=e.ObjectUtils.equals(this.modelValue,l,this.equalityKey);return i},onFocus(e){this.$emit("focus",e)},onBlur(e){this.$emit("blur",e)},getButtonClass(e){return["p-button p-component",{"p-highlight":this.isSelected(e),"p-disabled":this.isOptionDisabled(e)}]}},computed:{containerClass(){return["p-selectbutton p-buttonset p-component",{"p-disabled":this.disabled}]},equalityKey(){return this.optionValue?null:this.dataKey}},directives:{ripple:l(t).default}};const s={class:"p-button-label"};o.render=function(e,t,l,o,a,n){const r=i.resolveDirective("ripple");return i.openBlock(),i.createBlock("div",{class:n.containerClass,role:"group"},[(i.openBlock(!0),i.createBlock(i.Fragment,null,i.renderList(l.options,((o,a)=>i.withDirectives((i.openBlock(),i.createBlock("div",{key:n.getOptionRenderKey(o),"aria-label":n.getOptionLabel(o),role:"button","aria-pressed":n.isSelected(o),onClick:e=>n.onOptionSelect(e,o,a),onKeydown:[i.withKeys(i.withModifiers((e=>n.onOptionSelect(e,o,a)),["prevent"]),["enter"]),i.withKeys(i.withModifiers((e=>n.onOptionSelect(e,o)),["prevent"]),["space"])],tabindex:n.isOptionDisabled(o)?null:"0",onFocus:t[1]||(t[1]=e=>n.onFocus(e)),onBlur:t[2]||(t[2]=e=>n.onBlur(e)),"aria-labelledby":l.ariaLabelledBy,class:n.getButtonClass(o)},[i.renderSlot(e.$slots,"option",{option:o,index:a},(()=>[i.createVNode("span",s,i.toDisplayString(n.getOptionLabel(o)),1)]))],42,["aria-label","aria-pressed","onClick","onKeydown","tabindex","aria-labelledby"])),[[r]]))),128))],2)},module.exports=o;