primereact
Version:
PrimeReact is an open source UI library for React 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 Prime
2 lines (1 loc) • 3.07 kB
JavaScript
import*as e from"react";import{Tooltip as n}from"primereact/tooltip";import{ObjectUtils as t,classNames as r,IconUtils as o}from"primereact/utils";function a(){return a=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},a.apply(this,arguments)}function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?l(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var p=e.memo(e.forwardRef((function(i,l){var u=e.useRef(null),s=!i.disabled&&!i.readOnly,f=s?0:null,m=function(e,n){s&&i.onChange&&i.onChange({originalEvent:e,value:n,stopPropagation:function(){},preventDefault:function(){},target:{name:i.name,id:i.id,value:n}}),e.preventDefault()},g=function(e){s&&i.onChange&&i.onChange({originalEvent:e,value:null,stopPropagation:function(){},preventDefault:function(){},target:{name:i.name,id:i.id,value:null}}),e.preventDefault()},d=function(e,n){"Enter"===e.key&&m(e,n)},y=function(e){"Enter"===e.key&&g(e)};e.useImperativeHandle(l,(function(){return{props:i,getElement:function(){return u.current}}}));var v=t.isNotEmpty(i.tooltip),b=t.findDiffKeys(i,p.defaultProps),O=r("p-rating",{"p-disabled":i.disabled,"p-readonly":i.readOnly},i.className),P=function(){if(i.cancel){var n=o.getJSXIcon(i.cancelIcon,c({className:"p-rating-icon p-rating-cancel"},i.cancelIconProps),{props:i});return e.createElement("div",{className:"p-rating-item p-rating-cancel-item",onClick:g,tabIndex:f,onKeyDown:y},n)}return null}(),I=Array.from({length:i.stars},(function(e,n){return n+1})).map((function(n){var t=n<=i.value,a=r("p-rating-item",{"p-rating-item-active":t}),l=t?{type:i.onIcon,props:i.onIconProps}:{type:i.offIcon,props:i.offIconProps},p=o.getJSXIcon(l.type,c({className:"p-rating-icon"},l.props),{props:i});return e.createElement("div",{key:n,className:a,tabIndex:f,onClick:function(e){return m(e,n)},onKeyDown:function(e){return d(e,n)}},p)}));return e.createElement(e.Fragment,null,e.createElement("div",a({ref:u,id:i.id,className:O,style:i.style},b),P,I),v&&e.createElement(n,a({target:u,content:i.tooltip},i.tooltipOptions)))})));p.displayName="Rating",p.defaultProps={__TYPE:"Rating",id:null,value:null,disabled:!1,readOnly:!1,stars:5,cancel:!0,style:null,className:null,tooltip:null,tooltipOptions:null,onChange:null,onIcon:"pi pi-star-fill",offIcon:"pi pi-star",cancelIcon:"pi pi-ban",cancelIconProps:null,onIconProps:null,offIconProps:null};export{p as Rating};