UNPKG

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) 1.97 kB
import*as e from"react";import{Tooltip as t}from"primereact/tooltip";import{ObjectUtils as o,classNames as n,DomHandler as r}from"primereact/utils";function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},l.apply(this,arguments)}var i=e.memo(e.forwardRef((function(a,s){var u=e.useRef(s),p=e.useRef(0),c=function(e){var t=u.current;t&&r.isVisible(t)&&(p.current||(p.current=t.scrollHeight,t.style.overflow="hidden"),(p.current!==t.scrollHeight||e)&&(t.style.height="",t.style.height=t.scrollHeight+"px",parseFloat(t.style.height)>=parseFloat(t.style.maxHeight)?(t.style.overflowY="scroll",t.style.height=t.style.maxHeight):t.style.overflow="hidden",p.current=t.scrollHeight))},f=u.current&&u.current.value,m=e.useMemo((function(){return o.isNotEmpty(a.value)||o.isNotEmpty(a.defaultValue)||o.isNotEmpty(f)}),[a.value,a.defaultValue,f]);e.useEffect((function(){o.combinedRefs(u,s)}),[u,s]),e.useEffect((function(){a.autoResize&&c(!0)}),[a.autoResize]);var d=o.isNotEmpty(a.tooltip),y=o.findDiffKeys(a,i.defaultProps),h=n("p-inputtextarea p-inputtext p-component",{"p-disabled":a.disabled,"p-filled":m,"p-inputtextarea-resizable":a.autoResize},a.className);return e.createElement(e.Fragment,null,e.createElement("textarea",l({ref:u},y,{className:h,onFocus:function(e){a.autoResize&&c(),a.onFocus&&a.onFocus(e)},onBlur:function(e){a.autoResize&&c(),a.onBlur&&a.onBlur(e)},onKeyUp:function(e){a.autoResize&&c(),a.onKeyUp&&a.onKeyUp(e)},onInput:function(e){a.autoResize&&c(),a.onInput&&a.onInput(e);var t=e.target;o.isNotEmpty(t.value)?r.addClass(t,"p-filled"):r.removeClass(t,"p-filled")}})),d&&e.createElement(t,l({target:u,content:a.tooltip},a.tooltipOptions)))})));i.displayName="InputTextarea",i.defaultProps={__TYPE:"InputTextarea",autoResize:!1,tooltip:null,tooltipOptions:null,onInput:null};export{i as InputTextarea};