primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 5.2 kB
JavaScript
import n from"primevue/icons/ban";import e from"primevue/icons/star";import t from"primevue/icons/starfill";import{UniqueComponentId as a,DomHandler as o}from"primevue/utils";import i from"primevue/basecomponent";import{useStyle as c}from"primevue/usestyle";import{openBlock as l,createElementBlock as r,mergeProps as s,createElementVNode as u,renderSlot as d,normalizeClass as p,createBlock as f,resolveDynamicComponent as m,createCommentVNode as I,Fragment as h,renderList as g}from"vue";var v=c("\n.p-rating {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.p-rating-item {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n}\n\n.p-rating.p-readonly .p-rating-item {\n cursor: default;\n}\n",{name:"rating",manual:!0}),y={name:"Rating",extends:{name:"BaseRating",extends:i,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}},css:{classes:{root:function(n){var e=n.props;return["p-rating",{"p-readonly":e.readonly,"p-disabled":e.disabled}]},cancelItem:function(n){return["p-rating-item p-rating-cancel-item",{"p-focus":0===n.instance.focusedOptionIndex}]},cancelIcon:"p-rating-icon p-rating-cancel",item:function(n){var e=n.value;return["p-rating-item",{"p-rating-item-active":e<=n.props.modelValue,"p-focus":e===n.instance.focusedOptionIndex}]},onIcon:"p-rating-icon",offIcon:"p-rating-icon"},loadStyle:v.load},provide:function(){return{$parentInstance:this}}},emits:["update:modelValue","change","focus","blur"],data:function(){return{name:this.$attrs.name,focusedOptionIndex:-1}},watch:{"$attrs.name":function(n){this.name=n||a()}},mounted:function(){this.name=this.name||a()},methods:{getPTOptions:function(n,e){return this.ptm(n,{context:{active:e<=this.modelValue,focused:e===this.focusedOptionIndex}})},onOptionClick:function(n,e){if(!this.readonly&&!this.disabled){this.onOptionSelect(n,e);var t=o.getFirstFocusableElement(n.currentTarget);t&&o.focus(t)}},onFocus:function(n,e){this.focusedOptionIndex=e,this.$emit("focus",n)},onBlur:function(n){this.focusedOptionIndex=-1,this.$emit("blur",n)},onChange:function(n,e){this.onOptionSelect(n,e)},onOptionSelect:function(n,e){this.focusedOptionIndex=e,this.updateModel(n,e||null)},updateModel:function(n,e){this.$emit("update:modelValue",e),this.$emit("change",{originalEvent:n,value:e})},cancelAriaLabel:function(){return this.$primevue.config.locale.clear},starAriaLabel:function(n){return 1===n?this.$primevue.config.locale.aria.star:this.$primevue.config.locale.aria.stars.replace(/{star}/g,n)}},components:{StarFillIcon:t,StarIcon:e,BanIcon:n}},b=["data-p-focused"],x=["name","checked","disabled","readonly","aria-label"],O=["onClick","data-p-active","data-p-focused"],k=["value","name","checked","disabled","readonly","aria-label","onFocus","onChange"];y.render=function(n,e,t,a,o,i){return l(),r("div",s({class:n.cx("root")},n.ptm("root"),{"data-pc-name":"rating"}),[n.cancel?(l(),r("div",s({key:0,class:n.cx("cancelItem"),onClick:e[3]||(e[3]=function(n){return i.onOptionClick(n,0)})},i.getPTOptions("cancelItem",0),{"data-p-focused":0===o.focusedOptionIndex}),[u("span",s({class:"p-hidden-accessible"},n.ptm("hiddenCancelInputWrapper"),{"data-p-hidden-accessible":!0}),[u("input",s({type:"radio",value:"0",name:o.name,checked:0===n.modelValue,disabled:n.disabled,readonly:n.readonly,"aria-label":i.cancelAriaLabel(),onFocus:e[0]||(e[0]=function(n){return i.onFocus(n,0)}),onBlur:e[1]||(e[1]=function(){return i.onBlur&&i.onBlur.apply(i,arguments)}),onChange:e[2]||(e[2]=function(n){return i.onChange(n,0)})},n.ptm("hiddenCancelInput")),null,16,x)],16),d(n.$slots,"cancelicon",{class:p(n.cx("cancelIcon"))},(function(){return[(l(),f(m(n.cancelIcon?"span":"BanIcon"),s({class:[n.cx("cancelIcon"),n.cancelIcon]},n.ptm("cancelIcon")),null,16,["class"]))]}))],16,b)):I("",!0),(l(!0),r(h,null,g(n.stars,(function(t){return l(),r("div",s({key:t,class:n.cx("item",{value:t}),onClick:function(n){return i.onOptionClick(n,t)}},i.getPTOptions("item",t),{"data-p-active":t<=n.modelValue,"data-p-focused":t===o.focusedOptionIndex}),[u("span",s({class:"p-hidden-accessible"},n.ptm("hiddenItemInputWrapper"),{"data-p-hidden-accessible":!0}),[u("input",s({type:"radio",value:t,name:o.name,checked:n.modelValue===t,disabled:n.disabled,readonly:n.readonly,"aria-label":i.starAriaLabel(t),onFocus:function(n){return i.onFocus(n,t)},onBlur:e[4]||(e[4]=function(){return i.onBlur&&i.onBlur.apply(i,arguments)}),onChange:function(n){return i.onChange(n,t)}},n.ptm("hiddenItemInput")),null,16,k)],16),t<=n.modelValue?d(n.$slots,"onicon",{key:0,value:t,class:p(n.cx("onIcon"))},(function(){return[(l(),f(m(n.onIcon?"span":"StarFillIcon"),s({class:[n.cx("onIcon"),n.onIcon]},n.ptm("onIcon")),null,16,["class"]))]})):d(n.$slots,"officon",{key:1,value:t,class:p(n.cx("offIcon"))},(function(){return[(l(),f(m(n.offIcon?"span":"StarIcon"),s({class:[n.cx("offIcon"),n.offIcon]},n.ptm("offIcon")),null,16,["class"]))]}))],16,O)})),128))],16)};export{y as default};