UNPKG

primevue

Version:

PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc

2 lines (1 loc) 4.5 kB
import n from"primevue/icons/ban";import e from"primevue/icons/star";import t from"primevue/icons/starfill";import{UniqueComponentId as o,DomHandler as a}from"primevue/utils";import c from"primevue/basecomponent";import i from"primevue/rating/style";import{openBlock as l,createElementBlock as s,mergeProps as u,createElementVNode as r,renderSlot as d,normalizeClass as p,createBlock as f,resolveDynamicComponent as m,createCommentVNode as h,Fragment as I,renderList as b}from"vue";var v={name:"Rating",extends:{name:"BaseRating",extends:c,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}},style:i,provide:function(){return{$parentInstance:this}}},emits:["update:modelValue","change","focus","blur"],data:function(){return{name:this.$attrs.name,focusedOptionIndex:-1,isFocusVisibleItem:!0}},watch:{"$attrs.name":function(n){this.name=n||o()}},mounted:function(){this.name=this.name||o()},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),this.isFocusVisibleItem=!1;var t=a.getFirstFocusableElement(n.currentTarget);t&&a.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),this.isFocusVisibleItem=!0},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}},y=["data-p-focused"],g=["name","checked","disabled","readonly","aria-label"],x=["onClick","data-p-active","data-p-focused"],O=["value","name","checked","disabled","readonly","aria-label","onFocus","onChange"];v.render=function(n,e,t,o,a,c){return l(),s("div",u({class:n.cx("root")},n.ptm("root"),{"data-pc-name":"rating"}),[n.cancel?(l(),s("div",u({key:0,class:n.cx("cancelItem"),onClick:e[3]||(e[3]=function(n){return c.onOptionClick(n,0)})},c.getPTOptions("cancelItem",0),{"data-p-focused":0===a.focusedOptionIndex}),[r("span",u({class:"p-hidden-accessible"},n.ptm("hiddenCancelInputWrapper"),{"data-p-hidden-accessible":!0}),[r("input",u({type:"radio",value:"0",name:a.name,checked:0===n.modelValue,disabled:n.disabled,readonly:n.readonly,"aria-label":c.cancelAriaLabel(),onFocus:e[0]||(e[0]=function(n){return c.onFocus(n,0)}),onBlur:e[1]||(e[1]=function(){return c.onBlur&&c.onBlur.apply(c,arguments)}),onChange:e[2]||(e[2]=function(n){return c.onChange(n,0)})},n.ptm("hiddenCancelInput")),null,16,g)],16),d(n.$slots,"cancelicon",{class:p(n.cx("cancelIcon"))},(function(){return[(l(),f(m(n.cancelIcon?"span":"BanIcon"),u({class:[n.cx("cancelIcon"),n.cancelIcon]},n.ptm("cancelIcon")),null,16,["class"]))]}))],16,y)):h("",!0),(l(!0),s(I,null,b(n.stars,(function(t){return l(),s("div",u({key:t,class:n.cx("item",{value:t}),onClick:function(n){return c.onOptionClick(n,t)}},c.getPTOptions("item",t),{"data-p-active":t<=n.modelValue,"data-p-focused":t===a.focusedOptionIndex}),[r("span",u({class:"p-hidden-accessible"},n.ptm("hiddenItemInputWrapper"),{"data-p-hidden-accessible":!0}),[r("input",u({type:"radio",value:t,name:a.name,checked:n.modelValue===t,disabled:n.disabled,readonly:n.readonly,"aria-label":c.starAriaLabel(t),onFocus:function(n){return c.onFocus(n,t)},onBlur:e[4]||(e[4]=function(){return c.onBlur&&c.onBlur.apply(c,arguments)}),onChange:function(n){return c.onChange(n,t)}},n.ptm("hiddenItemInput")),null,16,O)],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"),u({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"),u({class:[n.cx("offIcon"),n.offIcon]},n.ptm("offIcon")),null,16,["class"]))]}))],16,x)})),128))],16)};export{v as default};