primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ 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.79 kB
JavaScript
import*as e from"react";import{Tooltip as t}from"primereact/tooltip";import{ObjectUtils as n,classNames as r,IconUtils as o}from"primereact/utils";function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function l(e,t){if("object"!==a(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function c(e){var t=l(e,"string");return"symbol"===a(t)?t:String(t)}function u(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var 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,children:void 0},getProps:function(e){return n.getMergedProps(e,p.defaultProps)},getOtherProps:function(e){return n.getDiffProps(e,p.defaultProps)}};function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){u(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var m=e.memo(e.forwardRef((function(a,l){var c=p.getProps(a),u=e.useRef(null),s=!c.disabled&&!c.readOnly,m=s?0:null,g=function(e,t){s&&c.onChange&&c.onChange({originalEvent:e,value:t,stopPropagation:function(){},preventDefault:function(){},target:{name:c.name,id:c.id,value:t}}),e.preventDefault()},y=function(e){s&&c.onChange&&c.onChange({originalEvent:e,value:null,stopPropagation:function(){},preventDefault:function(){},target:{name:c.name,id:c.id,value:null}}),e.preventDefault()},b=function(e,t){"Enter"===e.key&&g(e,t)},v=function(e){"Enter"===e.key&&y(e)};e.useImperativeHandle(l,(function(){return{props:c,getElement:function(){return u.current}}}));var d=n.isNotEmpty(c.tooltip),P=p.getOtherProps(c),O=r("p-rating",{"p-disabled":c.disabled,"p-readonly":c.readOnly},c.className),h=function(){if(c.cancel){var t=o.getJSXIcon(c.cancelIcon,f({className:"p-rating-icon p-rating-cancel"},c.cancelIconProps),{props:c});return e.createElement("div",{className:"p-rating-item p-rating-cancel-item",onClick:y,tabIndex:m,onKeyDown:v},t)}return null}(),j=Array.from({length:c.stars},(function(e,t){return t+1})).map((function(t){var n=t<=c.value,i=r("p-rating-item",{"p-rating-item-active":n}),a=n?{type:c.onIcon,props:c.onIconProps}:{type:c.offIcon,props:c.offIconProps},l=o.getJSXIcon(a.type,f({className:"p-rating-icon"},a.props),{props:c});return e.createElement("div",{key:t,className:i,tabIndex:m,onClick:function(e){return g(e,t)},onKeyDown:function(e){return b(e,t)}},l)}));return e.createElement(e.Fragment,null,e.createElement("div",i({ref:u,id:c.id,className:O,style:c.style},P),h,j),d&&e.createElement(t,i({target:u,content:c.tooltip},c.tooltipOptions)))})));m.displayName="Rating";export{m as Rating};