UNPKG

@snowball-tech/fractal

Version:

Fractal's (Snowball's design system) React component library based on RadixUI and PandaCSS

3 lines 4.09 kB
'use client'; import{a as X}from"./chunk-FA4DQLON.js";import{a as G}from"./chunk-GIEDMTVD.js";import{a as b}from"./chunk-AOLTZ2WJ.js";import{b as t}from"./chunk-CMFNILWJ.js";import{a as g,b as M}from"./chunk-XYM7TA65.js";import{a as n}from"./chunk-EHXFCPU4.js";import{Label as de}from"@radix-ui/react-label";import{forwardRef as me,useEffect as pe,useId as we,useImperativeHandle as ye,useRef as O,useState as j}from"react";import x from"lodash/fp/isError";import a from"lodash/fp/isFunction";import ge from"lodash/fp/isString";import z from"lodash/fp/omit";import{jsx as m,jsxs as $e}from"react/jsx-runtime";var J=me(({autoFocus:Q=!1,children:L,defaultValue:N,description:K,disabled:p=!1,dropdown:$={},error:r,fullWidth:h=!1,id:W,label:I,labelElement:Y,name:Z,onBlur:R,onChange:D,onClose:A,onInputChange:H,onOpen:S,open:w,placeholder:B,readOnly:_=!1,required:k=!1,success:E,value:F,...i},V)=>{let q=we(),P=(W??q)||q,o=O(null),T=O(null),f=O(null);ye(V,()=>({get container(){return T?.current??null},get dropdown(){return f?.current??null},get input(){return o?.current??null}}));let d=!!L,[ee,u]=j(!1),[c,te]=j(w===!0||d&&w!==!1),ne=x(r)?r.message:r,v=r!==!0&&!!ne,C=E!==!0&&!!E,y=v||r===!0||x(r),U=(C||E===!0)&&!y,oe=(e,s)=>{c||u(!0),a(H)&&H(e,s),a(D)&&D(e,s)},l=e=>{te(e)};pe(()=>{l(!!(w===!0||d&&w!==!1))},[d,w]);let re=e=>{let{target:s}=e;s===window||s===null||s===void 0||(T?.current?.contains(s)||f?.current?.container?.contains(s)||f?.current?.dropdown?.contains(s)?e.preventDefault():c&&a(R)&&o.current?.blur())},se=e=>{a($.onPointerDownOutside)&&$.onPointerDownOutside(e),o?.current&&(u(!1),o.current.blur())},ae=()=>{ee?(u(!1),o?.current&&o.current.focus()):a(R)&&!c&&R()},ie=e=>{switch(e.stopPropagation(),a(i.onKeyDown)&&i.onKeyDown(e),e.key){case"ArrowDown":case"ArrowUp":{if(!d)return;c?f?.current&&f.current.dropdown?.focus():(u(!0),l(!0)),e.preventDefault();break}case"Enter":{e.preventDefault(),a(D)&&D(null,String(F));break}case"Escape":{e.preventDefault(),c?l(!1):o?.current&&(u(!1),o.current.blur());break}default:break}},ue=e=>{e.key==="Escape"&&o?.current&&document.activeElement===o.current&&u(!0)},ce=e=>{i.onClick&&i.onClick(e),o?.current&&document.activeElement!==o.current&&o.current.focus(),d&&(document.activeElement===o.current&&!c&&u(!0),l(!0))},le=e=>{i.onFocus&&i.onFocus(e),d&&(c||u(!0),l(!0))},fe=!p&&!_;return $e("div",{ref:T,className:M(`${t}-${n}`,"flex w-full max-w-full flex-col",`${t}-${n}--${fe?"":"not-"}writable`,p?`${t}-${n}--disabled`:"",h?`${t}-${n}--full-width`:"sm:w-fit",y?`${t}-${n}--with-error`:"",_?`${t}-${n}--readonly`:"",k?`${t}-${n}--required`:"",U?`${t}-${n}--with-success`:"",i.className),children:[I&&m(de,{asChild:!0,className:g(`${t}-${n}__label`,p?`${t}-${n}__label--disabled cursor-default`:"cursor-pointer",k?`${t}-${n}__label--required after:text-feedback-danger-50 after:content-required`:""),htmlFor:P,children:m(b,{element:Y||(ge(I)?void 0:"div"),children:I})}),m(G,{ref:f,align:"end",disabled:p,dropdown:{className:M(`${t}-${n}__dropdown`,$.className),onPointerDownOutside:se,style:{marginTop:0},...z(["className","onPointerDownOutside"],$)},fullWidth:h,...a(A)?{onClose:A}:{},...a(S)?{onOpen:S}:{},open:c,toggleOnTriggerClick:!1,trigger:m(X,{id:P,ref:o,autoFocus:Q,className:g(`${t}-${n}__input`,"my-1"),...N===void 0?{}:{defaultValue:N},disabled:p,error:y,fullWidth:h,name:Z||P,...B===void 0?{}:{placeholder:B},readOnly:_,required:k,selectOnFocus:!1,success:U,type:"text",...F===void 0?{}:{value:F},onBlur:ae,onChange:oe,onClick:ce,onFocus:le,onKeyDown:ie,...z(["className","onBlur","onKeyDown","onFocus","onClick"],i)}),width:"trigger",withIndicator:!1,onInteractOutside:re,onKeyDown:ue,onMenuOpenChange:l,children:L}),K&&!v&&!C&&m(b,{className:g(`${t}-${n}__description`,"cursor-default text-dark"),variant:"caption-median",children:K}),(v||C)&&m(b,{className:g(`${t}-${n}__message ${t}-${n}__message--${y?"error":"success"}`,"cursor-default text-dark"),value:"caption-median",children:y?x(r)?r.message:r:E})]})});J.displayName="Autocomplete";var Ce=J;export{J as a,Ce as b}; //# sourceMappingURL=chunk-3XAPF2SY.js.map