primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 4.52 kB
JavaScript
this.primevue=this.primevue||{},this.primevue.rating=function(e,n,a,t,o){"use strict";function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=l(e),c=l(n),s={name:"Rating",emits:["update:modelValue","change","focus","blur"],props:{modelValue:{type:Number,default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},stars:{type:Number,default:5},cancel:{type:Boolean,default:!0},onIcon:{type:String,default:void 0},offIcon:{type:String,default:void 0},cancelIcon:{type:String,default:void 0}},data(){return{name:this.$attrs.name,focusedOptionIndex:-1}},watch:{"$attrs.name":function(e){this.name=e||t.UniqueComponentId()}},mounted(){this.name=this.name||t.UniqueComponentId()},methods:{onOptionClick(e,n){if(!this.readonly&&!this.disabled){this.onOptionSelect(e,n);const a=t.DomHandler.getFirstFocusableElement(e.currentTarget);a&&t.DomHandler.focus(a)}},onFocus(e,n){this.focusedOptionIndex=n,this.$emit("focus",e)},onBlur(e){this.focusedOptionIndex=-1,this.$emit("blur",e)},onChange(e,n){this.onOptionSelect(e,n)},onOptionSelect(e,n){this.focusedOptionIndex=n,this.updateModel(e,n||null)},updateModel(e,n){this.$emit("update:modelValue",n),this.$emit("change",{originalEvent:e,value:n})},cancelAriaLabel(){return this.$primevue.config.locale.clear},starAriaLabel(e){return 1===e?this.$primevue.config.locale.aria.star:this.$primevue.config.locale.aria.stars.replace(/{star}/g,e)}},computed:{containerClass(){return["p-rating",{"p-readonly":this.readonly,"p-disabled":this.disabled}]}},components:{StarFillIcon:l(a).default,StarIcon:c.default,BanIcon:i.default}};const r={class:"p-hidden-accessible"},d=["name","checked","disabled","readonly","aria-label"],u=["onClick"],p={class:"p-hidden-accessible"},m=["value","name","checked","disabled","readonly","aria-label","onFocus","onChange"];return function(e,n){void 0===n&&(n={});var a=n.insertAt;if(e&&"undefined"!=typeof document){var t=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===a&&t.firstChild?t.insertBefore(o,t.firstChild):t.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}("\n.p-rating {\n position: relative;\n display: flex;\n align-items: center;\n}\n.p-rating-item {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n}\n.p-rating.p-readonly .p-rating-item {\n cursor: default;\n}\n"),s.render=function(e,n,a,t,l,i){return o.openBlock(),o.createElementBlock("div",{class:o.normalizeClass(i.containerClass)},[a.cancel?(o.openBlock(),o.createElementBlock("div",{key:0,class:o.normalizeClass(["p-rating-item p-rating-cancel-item",{"p-focus":0===l.focusedOptionIndex}]),onClick:n[3]||(n[3]=e=>i.onOptionClick(e,0))},[o.createElementVNode("span",r,[o.createElementVNode("input",{type:"radio",value:"0",name:l.name,checked:0===a.modelValue,disabled:a.disabled,readonly:a.readonly,"aria-label":i.cancelAriaLabel(),onFocus:n[0]||(n[0]=e=>i.onFocus(e,0)),onBlur:n[1]||(n[1]=(...e)=>i.onBlur&&i.onBlur(...e)),onChange:n[2]||(n[2]=e=>i.onChange(e,0))},null,40,d)]),o.renderSlot(e.$slots,"cancelicon",{},(()=>[(o.openBlock(),o.createBlock(o.resolveDynamicComponent(a.cancelIcon?"span":"BanIcon"),{class:o.normalizeClass(["p-rating-icon p-rating-cancel",a.cancelIcon])},null,8,["class"]))]))],2)):o.createCommentVNode("",!0),(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(a.stars,(t=>(o.openBlock(),o.createElementBlock("div",{key:t,class:o.normalizeClass(["p-rating-item",{"p-rating-item-active":t<=a.modelValue,"p-focus":t===l.focusedOptionIndex}]),onClick:e=>i.onOptionClick(e,t)},[o.createElementVNode("span",p,[o.createElementVNode("input",{type:"radio",value:t,name:l.name,checked:a.modelValue===t,disabled:a.disabled,readonly:a.readonly,"aria-label":i.starAriaLabel(t),onFocus:e=>i.onFocus(e,t),onBlur:n[4]||(n[4]=(...e)=>i.onBlur&&i.onBlur(...e)),onChange:e=>i.onChange(e,t)},null,40,m)]),t<=a.modelValue?o.renderSlot(e.$slots,"onicon",{key:0,value:t},(()=>[(o.openBlock(),o.createBlock(o.resolveDynamicComponent(a.onIcon?"span":"StarFillIcon"),{class:o.normalizeClass(["p-rating-icon",a.onIcon])},null,8,["class"]))])):o.renderSlot(e.$slots,"officon",{key:1,value:t},(()=>[(o.openBlock(),o.createBlock(o.resolveDynamicComponent(a.onIcon?"span":"StarIcon"),{class:o.normalizeClass(["p-rating-icon",a.offIcon])},null,8,["class"]))]))],10,u)))),128))],2)},s}(primevue.icons.ban,primevue.icons.star,primevue.icons.starfill,primevue.utils,Vue);