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) • 5.25 kB
JavaScript
import*as e from"react";import{PrimeReactContext as r}from"primereact/api";import{ComponentBase as t,useHandleStyle as n}from"primereact/componentbase";import{useMergeProps as o,useMountEffect as i}from"primereact/hooks";import{TimesCircleIcon as l}from"primereact/icons/timescircle";import{classNames as a,UniqueComponentId as c,ObjectUtils as u,IconUtils as p}from"primereact/utils";function s(e){return s="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},s(e)}function m(e,r){if("object"!=s(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r||"default");if("object"!=s(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}function f(e){var r=m(e,"string");return"symbol"==s(r)?r:r+""}function b(e,r,t){return(r=f(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function y(){return y=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},y.apply(null,arguments)}function v(e){if(Array.isArray(e))return e}function g(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,l,a=[],c=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=i.call(t)).done)&&(a.push(n.value),a.length!==r);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=t.return&&(l=t.return(),Object(l)!==l))return}finally{if(u)throw o}}return a}}function h(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function d(e,r){if(e){if("string"==typeof e)return h(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?h(e,r):void 0}}function O(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(e,r){return v(e)||g(e,r)||d(e,r)||O()}var S=t.extend({defaultProps:{__TYPE:"Chip",label:null,icon:null,image:null,removable:!1,removeIcon:null,className:null,style:null,template:null,imageAlt:"chip",onImageError:null,onRemove:null,children:void 0},css:{classes:{root:function(e){return a("p-chip p-component",{"p-chip-image":null!=e.props.image})},removeIcon:"p-chip-remove-icon",icon:"p-chip-icon",label:"p-chip-text"},styles:"\n@layer primereact {\n .p-chip {\n display: inline-flex;\n align-items: center;\n }\n \n .p-chip-text {\n line-height: 1.5;\n }\n \n .p-chip-icon.pi {\n line-height: 1.5;\n }\n \n .p-chip .p-chip-remove-icon {\n line-height: 1.5;\n cursor: pointer;\n }\n \n .p-chip img {\n border-radius: 50%;\n }\n}\n"}});function E(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function P(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?E(Object(t),!0).forEach((function(r){b(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):E(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var w=e.memo(e.forwardRef((function(t,s){var m=o(),f=e.useContext(r),b=S.getProps(t,f),v=e.useRef(null),g=j(e.useState(!0),2),h=g[0],d=g[1],O=j(e.useState(b.id),2),E=O[0],w=O[1],I=S.setMetaData({props:b}),x=I.ptm,N=I.cx;n(S.css.styles,I.isUnstyled,{name:"chip"});var k,A,D=function(e){"Enter"!==e.code&&"NumpadEnter"!==e.code&&"Backspace"!==e.code||C(e)},C=function(e){var r=!0;b.onRemove&&(e.stopPropagation(),r=b.onRemove({originalEvent:e,value:b.label||b.image||b.icon})),!1!==r&&d(!1)},R=function(){var r=[],t=m({role:"button",tabIndex:0,className:N("removeIcon"),onClick:C,onKeyDown:D},x("removeIcon")),n=b.removeIcon||e.createElement(l,y({},t,{key:"".concat(E,"-removeIcon")}));if(b.image){var o=m({src:b.image,onError:b.onImageError},x("image"));r.push(e.createElement("img",y({alt:b.imageAlt},o,{key:"".concat(E,"-image")})))}else if(b.icon){var i=m({className:N("icon")},x("icon"));r.push(p.getJSXIcon(b.icon,P({},i),{props:b}))}if(b.label){var a=m({className:N("label")},x("label"));r.push(e.createElement("span",y({},a,{key:c("label")}),b.label))}return b.removable&&r.push(p.getJSXIcon(n,P({},t),{props:b})),r};return e.useImperativeHandle(s,(function(){return{props:b,getVisible:function(){return h},setVisible:function(e){return d(e)},getElement:function(){return v.current}}})),i((function(){E||w(c())})),E?h&&(k=b.template?u.getJSXElement(b.template,b):R(),A=m({ref:v,style:b.style,className:a(b.className,N("root")),"aria-label":b.label},S.getOtherProps(b),x("root")),e.createElement("div",y({},A,{key:c("chip")}),k)):null})));w.displayName="Chip";export{w as Chip};