carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 3.46 kB
JavaScript
import{jsx as e}from"react/jsx-runtime";import t,{useContext as r,useRef as n,useCallback as o,useEffect as u}from"react";import i from"./input.style.js";import{InputContext as c}from"../input-behaviour/input-behaviour.component.js";import{InputGroupContext as l}from"../input-behaviour/input-group-behaviour.component.js";import{SelectTextboxContext as a}from"../../components/select/__internal__/select-textbox/select-textbox.context.js";function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const p=t.forwardRef(((t,p)=>{var{align:d,"aria-labelledby":b,"aria-describedby":f,placeholder:y,disabled:m,readOnly:O,autoFocus:h,onClick:g,onChangeDeferred:v,onChange:j,onBlur:B,onFocus:P,deferTimeout:w,type:x="text",id:F,name:I,validationIconId:S,inputBorderRadius:C="borderRadius050",enterKeyHint:R}=t,k=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)r=u[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)r=u[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(t,["align","aria-labelledby","aria-describedby","placeholder","disabled","readOnly","autoFocus","onClick","onChangeDeferred","onChange","onBlur","onFocus","deferTimeout","type","id","name","validationIconId","inputBorderRadius","enterKeyHint"]);const D=r(c),E=r(l),{isInputInSelect:T}=r(a),_=n(null);let H=n(null);p&&"current"in p&&(H=p);const K=o((e=>{H.current=e,"function"==typeof p&&p(e),h&&e&&e.focus(),R&&e&&e.setAttribute("enterkeyhint",R)}),[h,p,R]);u((()=>{D.inputRef&&D.inputRef(H)}),[D,H]),u((()=>{m&&D.onBlur&&D.onBlur()}),[m,D]);const M=f?[f]:[];(D.hasFocus||E.hasFocus||D.hasMouseOver||E.hasMouseOver)&&S&&M.push(S);const A=M.length?M.filter(Boolean).join(" "):void 0;return e(i,(N=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){s(e,t,r[t])}))}return e}({},k),q={isInputInSelect:T,"data-has-autofocus":!!h||void 0,"aria-describedby":A,"aria-labelledby":b,align:d,placeholder:y,disabled:m,readOnly:O,name:I,type:x,id:F||I,ref:K,"data-element":"input",onFocus:e=>{P&&P(e),D.onFocus&&D.onFocus(),E.onFocus&&E.onFocus(),"text"===x&&function(e){setTimeout((()=>{if(null==e?void 0:e.current){const{selectionStart:t,selectionEnd:r,value:n}=e.current,{length:o}=n;(0===t&&0===r||t===o&&r===o)&&document.activeElement===e.current&&e.current.setSelectionRange(0,o)}}))}(H)},onBlur:e=>{B&&B(e),D.onBlur&&D.onBlur(),E.onBlur&&E.onBlur()},onClick:m||O?void 0:e=>{var t;g&&g(e),null==H||null===(t=H.current)||void 0===t||t.focus()},onChange:e=>{j&&j(e),(e=>{v&&(_.current&&clearTimeout(_.current),_.current=setTimeout((()=>{v(e)}),w||750))})(e)},inputBorderRadius:C},q=null!=q?q:{},Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(q)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(q)).forEach((function(e){Object.defineProperty(N,e,Object.getOwnPropertyDescriptor(q,e))})),N));var N,q}));p.displayName="Input";export{p as default};