primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 2.74 kB
JavaScript
this.primevue=this.primevue||{},this.primevue.selectbutton=function(e,t,i){"use strict";function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o={name:"SelectButton",emits:["update:modelValue","focus","blur"],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)},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:{equalityKey(){return this.optionValue?null:this.dataKey}},directives:{ripple:l(t).default}};const s={class:"p-selectbutton p-buttonset p-component",role:"group"},n={class:"p-button-label"};return o.render=function(e,t,l,o,a,r){const u=i.resolveDirective("ripple");return i.openBlock(),i.createBlock("div",s,[(i.openBlock(!0),i.createBlock(i.Fragment,null,i.renderList(l.options,((o,s)=>i.withDirectives((i.openBlock(),i.createBlock("div",{key:r.getOptionRenderKey(o),"aria-label":r.getOptionLabel(o),role:"button","aria-pressed":r.isSelected(o),onClick:e=>r.onOptionSelect(e,o,s),onKeydown:[i.withKeys(i.withModifiers((e=>r.onOptionSelect(e,o,s)),["prevent"]),["enter"]),i.withKeys(i.withModifiers((e=>r.onOptionSelect(e,o)),["prevent"]),["space"])],tabindex:r.isOptionDisabled(o)?null:"0",onFocus:t[1]||(t[1]=e=>r.onFocus(e)),onBlur:t[2]||(t[2]=e=>r.onBlur(e)),"aria-labelledby":l.ariaLabelledBy,class:r.getButtonClass(o)},[i.renderSlot(e.$slots,"option",{option:o,index:s},(()=>[i.createVNode("span",n,i.toDisplayString(r.getOptionLabel(o)),1)]))],42,["aria-label","aria-pressed","onClick","onKeydown","tabindex","aria-labelledby"])),[[u]]))),128))])},o}(primevue.utils,primevue.ripple,Vue);