UNPKG

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) 2.47 kB
import*as e from"react";import{KeyFilter as t}from"primereact/keyfilter";import{Tooltip as o}from"primereact/tooltip";import{ObjectUtils as n,classNames as r,DomHandler as l}from"primereact/utils";function i(){return i=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},i.apply(this,arguments)}var a={defaultProps:{__TYPE:"InputTextarea",autoResize:!1,keyfilter:null,onBlur:null,onFocus:null,onInput:null,onKeyDown:null,onKeyUp:null,onPaste:null,tooltip:null,tooltipOptions:null,validateOnly:!1,children:void 0},getProps:function(e){return n.getMergedProps(e,a.defaultProps)},getOtherProps:function(e){return n.getDiffProps(e,a.defaultProps)}},u=e.memo(e.forwardRef((function(u,s){var p=a.getProps(u),c=e.useRef(s),f=e.useRef(0),y=function(e){var t=c.current;t&&l.isVisible(t)&&(f.current||(f.current=t.scrollHeight,t.style.overflow="hidden"),(f.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",f.current=t.scrollHeight))},m=c.current&&c.current.value,d=e.useMemo((function(){return n.isNotEmpty(p.value)||n.isNotEmpty(p.defaultValue)||n.isNotEmpty(m)}),[p.value,p.defaultValue,m]);e.useEffect((function(){n.combinedRefs(c,s)}),[c,s]),e.useEffect((function(){p.autoResize&&y(!0)}),[p.autoResize]);var g=n.isNotEmpty(p.tooltip),h=a.getOtherProps(p),v=r("p-inputtextarea p-inputtext p-component",{"p-disabled":p.disabled,"p-filled":d,"p-inputtextarea-resizable":p.autoResize},p.className);return e.createElement(e.Fragment,null,e.createElement("textarea",i({ref:c},h,{className:v,onFocus:function(e){p.autoResize&&y(),p.onFocus&&p.onFocus(e)},onBlur:function(e){p.autoResize&&y(),p.onBlur&&p.onBlur(e)},onKeyUp:function(e){p.autoResize&&y(),p.onKeyUp&&p.onKeyUp(e)},onKeyDown:function(e){p.onKeyDown&&p.onKeyDown(e),p.keyfilter&&t.onKeyPress(e,p.keyfilter,p.validateOnly)},onInput:function(e){p.autoResize&&y(),p.onInput&&p.onInput(e);var t=e.target;n.isNotEmpty(t.value)?l.addClass(t,"p-filled"):l.removeClass(t,"p-filled")},onPaste:function(e){p.onPaste&&p.onPaste(e),p.keyfilter&&t.onPaste(e,p.keyfilter,p.validateOnly)}})),g&&e.createElement(o,i({target:c,content:p.tooltip},p.tooltipOptions)))})));u.displayName="InputTextarea";export{u as InputTextarea};