@zydon/common 2.9.26 → 2.9.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-7UJSGCXL.js +18 -0
- package/dist/chunk-7UJSGCXL.js.map +1 -0
- package/dist/{chunk-ZPQQINYE.js → chunk-E6RRGP5Y.js} +2 -2
- package/dist/components/Analytics/index.js +1 -1
- package/dist/components/Autocomplete/index.js +1 -1
- package/dist/components/BulkEditModal/index.js +2 -2
- package/dist/components/DynamicDataView/index.js +1 -1
- package/dist/components/Filters/index.js +1 -1
- package/dist/components/form/Address/index.js +2 -2
- package/dist/components/form/Autocomplete/index.js +2 -2
- package/dist/components/form/Webhook/index.js +2 -2
- package/dist/hooks/useAutocomplete.d.ts +1 -0
- package/dist/hooks/useDynamicAutocomplete.d.ts +1 -0
- package/dist/types/option.d.ts +2 -0
- package/package.json +1 -1
- package/dist/chunk-3OITALLA.js +0 -18
- package/dist/chunk-3OITALLA.js.map +0 -1
- /package/dist/{chunk-ZPQQINYE.js.map → chunk-E6RRGP5Y.js.map} +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { a } from './chunk-VJW7L44O.js';
|
|
2
|
+
import { memo, createContext, forwardRef, useContext, useMemo, useCallback, useRef, useEffect } from 'react';
|
|
3
|
+
import $e, { autocompleteClasses } from '@mui/material/Autocomplete';
|
|
4
|
+
import ge from '@mui/material/CircularProgress';
|
|
5
|
+
import Pe from '@mui/material/TextField';
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
import { VariableSizeList } from 'react-window';
|
|
8
|
+
import { useTheme, styled } from '@mui/material/styles';
|
|
9
|
+
import we from '@mui/material/useMediaQuery';
|
|
10
|
+
import he from '@mui/material/ListSubheader';
|
|
11
|
+
import Se from '@mui/material/Stack';
|
|
12
|
+
import q from '@mui/material/Typography';
|
|
13
|
+
import Ne from '@mui/material/Popper';
|
|
14
|
+
|
|
15
|
+
var Ie=e=>{if(!(!e||Array.isArray(e))){if(e.startAdornment)return e.startAdornment;if(e.icon)return jsx(a,{icon:e.icon})}},$=memo(({params:e,name:t,placeholder:s,error:n,helperText:u,label:l,required:A,multiple:a,formattedValue:p,loading:c,tabIndex:m,InputLabelProps:y,inputRef:g})=>jsx(Pe,{...e,name:t,placeholder:s,fullWidth:!0,error:!!n,helperText:u,label:l,required:A,inputRef:g,InputProps:{...e.InputProps,...!a&&{startAdornment:Ie(p)},endAdornment:jsxs(Fragment,{children:[c?jsx(ge,{color:"primary",size:20}):null,e.InputProps.endAdornment]})},inputProps:{...e.inputProps,name:t,tabIndex:m},InputLabelProps:y}));$.displayName="AutocompleteInput";var F=$;var w=8,U=memo(e=>{let{data:t,index:s,style:n}=e,u=t[s],l={...n,top:n.top+w,paddingTop:8};if(Object.prototype.hasOwnProperty.call(u,"group")){let y=u;return jsx(he,{component:"div",style:l,children:y.group},`list-box-item-group-${y.group}`)}let[A,a$1]=u,{showValueInLabel:p,key:c,...m}=A;return jsx(q,{component:"li",...m,noWrap:!0,style:l,children:jsxs(Se,{component:"div",direction:"row",flex:1,gap:1,justifyContent:"start",children:[a$1.icon&&jsx(a,{icon:a$1.icon}),a$1.label,p&&jsxs(q,{variant:"inherit",color:"grey.400",children:["(",a$1.value,")"]})]})},`list-box-item-${c}`)});U.displayName="ListboxRow";var W=U;var Te=createContext(void 0),h=Te;var Y=createContext({}),Z=forwardRef((e,t)=>{let s=useContext(Y);return jsx("div",{ref:t,...e,...s})});Z.displayName="OuterElementType";var He=e=>{let t=useRef(null);return useEffect(()=>{t.current!=null&&t.current.resetAfterIndex(0,!0);},[e]),t},ke=forwardRef(function(t,s){let{children:n,...u}=t,l=useMemo(()=>{let o=[];return n.forEach(b=>{o.push(b),Object.prototype.hasOwnProperty.call(b,"children")&&Array.isArray(b.children)&&o.push(...b.children);}),o},[n]),A=useTheme(),a=we(A.breakpoints.up("sm")),p=l.length,c=a?36:48,m=useCallback(o=>Object.prototype.hasOwnProperty.call(o,"group")?48:c,[c]),y=useMemo(()=>p>8?8*c:l.map(m).reduce((o,b)=>o+b,0),[p,c,l,m]),g=He(p),P=useContext(h),d=useRef(!1);useEffect(()=>{d.current=!1;},[p]);let R=useCallback(({visibleStopIndex:o})=>{P&&!d.current&&o>=p-3&&(d.current=!0,P());},[P,p]);return jsx("div",{ref:s,children:jsx(Y.Provider,{value:u,children:jsx(VariableSizeList,{itemData:l,height:y+2*w,width:"100%",ref:g,outerElementType:Z,innerElementType:"ul",itemSize:o=>m(l[o]),overscanCount:5,itemCount:p,onItemsRendered:R,children:W})})})}),ee=ke;var te=styled(Ne)({[`& .${autocompleteClasses.listbox}`]:{boxSizing:"border-box","& ul":{padding:0,margin:0}}});var k=e=>e&&typeof e=="object"?e.value.toString():e.toString(),Fe=e=>e,qe=(e,t)=>k(e)===k(t),Be=(e,t)=>{let s=t.inputValue.toLocaleUpperCase();return e.filter(n=>`${n.value} ${n.label}`.toLocaleUpperCase().includes(s))},ne=memo(forwardRef(({name:e,label:t,value:s,options:n=[],loading:u,noOptionsText:l="Nenhum resultado encontrado.",loadingText:A="Carregando op\xE7\xF5es...",error:a,helperText:p,placeholder:c,onChange:m,groupBy:y,showValueInLabel:g,disabled:P,multiple:d,required:R,renderOption:o,tabIndex:b,onInputChange:C,onSearch:L,onBlur:T,onScrollEnd:ie,InputLabelProps:G,inputRef:N,filterOptions:se,...pe},ue)=>{let z=useRef(null),D=useRef(null),v=useMemo(()=>{if(d)return (Array.isArray(s)?s:[]).reduce((x,ye)=>{let V=n.find(Ae=>Ae.value.toString()===ye.toString());return V?[...x,V]:[...x]},[]);let i=n.find(f=>f.value.toString()===s?.toString())||null,r=D.current;return r&&i&&r.value===i.value&&r.label===i.label?r:(D.current=i,i)},[n,s,d]),le=se??(z.current==="reset"?void 0:Be),me=useCallback((i,r,f)=>{if(z.current=f,C&&C(i,r,f),f==="input"){L&&L(r);return}f==="reset"&&L&&L(void 0),f==="clear"&&L&&L("");},[C,L]),ae=useCallback((i,r)=>{if(!r){m(d?[]:null);return}if(Array.isArray(r)){m(r.map(k));return}m(typeof r=="string"?r.toString():r.value.toString());},[m,d]),ce=useCallback(i=>{T&&T(i);},[T]),de=useCallback((i,r,f,x)=>o?o(i,r,f,x):[{...i,showValueInLabel:g},r],[o,g]),fe=useMemo(()=>o?void 0:ee,[o]),be=useCallback(i=>jsx(F,{params:i,name:e,placeholder:c,error:a,helperText:p,label:t,required:R,multiple:d,formattedValue:v,loading:u,tabIndex:b,InputLabelProps:G,inputRef:N}),[e,c,a,p,t,R,d,v,u,b,G,N]);return jsx(h.Provider,{value:ie,children:jsx($e,{ref:ue,value:v,onInputChange:me,options:n,loading:u,noOptionsText:l,loadingText:A,disabled:P,disableListWrap:!0,PopperComponent:te,ListboxComponent:fe,filterOptions:le,isOptionEqualToValue:qe,onChange:ae,onBlur:ce,renderOption:de,renderGroup:Fe,groupBy:y,multiple:d,renderInput:be,...pe})})}));ne.displayName="Autocomplete";var Mt=ne;
|
|
16
|
+
|
|
17
|
+
export { Mt as a };
|
|
18
|
+
//# sourceMappingURL=chunk-7UJSGCXL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Autocomplete/index.tsx","../src/components/Autocomplete/AutocompleteInput.tsx","../src/components/Autocomplete/Listbox.tsx","../src/components/Autocomplete/ListboxRow.tsx","../src/components/Autocomplete/ScrollEndContext.ts","../src/components/Autocomplete/styles.ts"],"names":["forwardRef","memo","useCallback","useMemo","useRef","MuiAutocomplete","CircularProgress","TextField","Fragment","jsx","jsxs","inputStartAdornment","formattedValue","Icon_default","AutocompleteInput","params","name","placeholder","error","helperText","label","required","multiple","loading","tabIndex","InputLabelProps","inputRef","AutocompleteInput_default","createContext","useContext","useEffect","VariableSizeList","useTheme","useMediaQuery","ListSubheader","Stack","Typography","LISTBOX_PADDING","ListboxRow","props","data","index","style","dataSet","inlineStyle","groupItem","itemProps","option","showValueInLabel","key","otherItemProps","ListboxRow_default","ScrollEndContext","ScrollEndContext_default","OuterElementContext","OuterElementType","ref","outerProps","useResetCache","ListboxComponent","children","other","itemData","item","theme","smUp","itemCount","itemSize","getChildSize","child","itemsHeight","a","gridRef","onScrollEnd","firedRef","handleItemsRendered","visibleStopIndex","Listbox_default","autocompleteClasses","Popper","styled","StyledPopper","getOptionValue","optionValue","renderGroup","defaultIsOptionEqualToValue","selected","defaultFilterOptions","optionsFilter","state","searchValue","opt","Autocomplete","value","options","noOptionsText","loadingText","onChange","groupBy","disabled","renderOption","onInputChange","onSearch","onBlur","filterOptionsProp","inputReasonRef","lastSingleValueRef","acc","curr","previous","resolvedFilterOptions","handleInputChange","event","eventValue","reason","handleChange","_","handleBlur","memoizedRenderOption","ownerState","renderListbox","memoizedRenderInput","Autocomplete_default"],"mappings":"wCAAA,OACE,cAAAA,GACA,QAAAC,GAEA,eAAAC,EACA,WAAAC,GACA,UAAAC,OACK,QACP,OAAOC,OAKA,6BCbP,OAAS,QAAAJ,OAAY,QACrB,OAAOK,OAAsB,iCAC7B,OAAOC,OAAe,0BAaY,OAqCxB,YAAAC,GArCwB,OAAAC,EAqCxB,QAAAC,OArCwB,oBAPlC,IAAMC,GACJC,GACG,CACH,GAAI,GAACA,GAAkB,MAAM,QAAQA,CAAc,GAEnD,IAAIA,EAAe,eAAgB,OAAOA,EAAe,eAEzD,GAAIA,EAAe,KAAM,OAAOH,EAACI,EAAA,CAAK,KAAMD,EAAe,KAAM,EAGnE,EAEME,EAAoBb,GACxB,CAAC,CACC,OAAAc,EACA,KAAAC,EACA,YAAAC,EACA,MAAAC,EACA,WAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,eAAAV,EACA,QAAAW,EACA,SAAAC,EACA,gBAAAC,EACA,SAAAC,CACF,IACEjB,EAACF,GAAA,CACE,GAAGQ,EACJ,KAAMC,EACN,YAAaC,EACb,UAAS,GACT,MAAO,CAAC,CAACC,EACT,WAAYC,EACZ,MAAOC,EACP,SAAUC,EACV,SAAUK,EACV,WAAY,CACV,GAAGX,EAAO,WACV,GAAI,CAACO,GAAY,CACf,eAAgBX,GAAoBC,CAAc,CACpD,EACA,aACEF,GAAAF,GAAA,CACG,UAAAe,EAAUd,EAACH,GAAA,CAAiB,MAAM,UAAU,KAAM,GAAI,EAAK,KAC3DS,EAAO,WAAW,cACrB,CAEJ,EACA,WAAY,CACV,GAAGA,EAAO,WACV,KAAAC,EACA,SAAAQ,CACF,EACA,gBAAiBC,EACnB,CAEJ,EAEAX,EAAkB,YAAc,oBAEhC,IAAOa,EAAQb,ECtEf,OACE,iBAAAc,GACA,cAAA5B,EAEA,eAAAE,EACA,cAAA2B,EACA,aAAAC,EACA,WAAA3B,EACA,UAAAC,MACK,QACP,OAAmC,oBAAA2B,OAAwB,eAE3D,OAAS,YAAAC,OAAgB,uBACzB,OAAOC,OAAmB,8BCb1B,OAAyB,QAAAhC,OAAY,QAGrC,OAAOiC,OAAmB,8BAC1B,OAAOC,OAAW,sBAClB,OAAOC,MAAgB,2BAyBjB,cAAA3B,EAsCI,QAAAC,MAtCJ,oBAjBN,IAAM2B,EAAkB,EAElBC,EAAarC,GAAMsC,GAAmC,CAC1D,GAAM,CAAE,KAAAC,EAAM,MAAAC,EAAO,MAAAC,CAAM,EAAIH,EACzBI,EAAUH,EAAKC,CAAK,EAIpBG,EAAc,CAClB,GAAGF,EACH,IAAMA,EAAM,IAAiBL,EAC7B,WAAY,CACd,EAEA,GAAI,OAAO,UAAU,eAAe,KAAKM,EAAS,OAAO,EAAG,CAC1D,IAAME,EAAYF,EAClB,OACElC,EAACyB,GAAA,CAEC,UAAU,MACV,MAAOU,EAEN,SAAAC,EAAU,OAJN,uBAAuBA,EAAU,OAKxC,EAIJ,GAAM,CAACC,EAAWC,CAAM,EAAIJ,EAOtB,CAAE,iBAAAK,EAAkB,IAAAC,EAAK,GAAGC,CAAe,EAAIJ,EAErD,OACErC,EAAC2B,EAAA,CACC,UAAU,KAET,GAAGc,EACJ,OAAM,GACN,MAAON,EAEP,SAAAlC,EAACyB,GAAA,CACC,UAAU,MACV,UAAU,MACV,KAAM,EACN,IAAK,EACL,eAAe,QAEd,UAAAY,EAAO,MAAQtC,EAACI,EAAA,CAAK,KAAMkC,EAAO,KAAkB,EACpDA,EAAO,MAEPC,GACCtC,EAAC0B,EAAA,CAAW,QAAQ,UAAU,MAAM,WAAW,cAC3CW,EAAO,MAAM,KACjB,GAEJ,GApBK,iBAAiBE,GAqBxB,CAEJ,CAAC,EAEDX,EAAW,YAAc,aAGzB,IAAOa,EAAQb,EChFf,OAAS,iBAAAV,OAAqB,QAE9B,IAAMwB,GAAmBxB,GAAwC,MAAS,EAEnEyB,EAAQD,GFmBN,cAAA3C,MAAA,oBAJT,IAAM6C,EAAsB1B,GAAc,CAAC,CAAC,EAEtC2B,EAAmBvD,EAA2B,CAACuC,EAAOiB,IAAQ,CAClE,IAAMC,EAAa5B,EAAWyB,CAAmB,EACjD,OAAO7C,EAAC,OAAI,IAAK+C,EAAM,GAAGjB,EAAQ,GAAGkB,EAAY,CACnD,CAAC,EAEDF,EAAiB,YAAc,mBAE/B,IAAMG,GAAiBlB,GAAiB,CACtC,IAAMgB,EAAMpD,EAAyB,IAAI,EAEzC,OAAA0B,EAAU,IAAM,CACV0B,EAAI,SAAW,MACjBA,EAAI,QAAQ,gBAAgB,EAAG,EAAI,CAEvC,EAAG,CAAChB,CAAI,CAAC,EAEFgB,CACT,EAEMG,GAAmB3D,EAGvB,SAA0BuC,EAAOiB,EAAK,CACtC,GAAM,CAAE,SAAAI,EAAU,GAAGC,CAAM,EAAItB,EAEzBuB,EAA0B3D,EAAQ,IAAM,CAC5C,IAAMqC,EAAsB,CAAC,EAC7B,OAACoB,EAA2B,QAAQG,GAAQ,CAC1CvB,EAAK,KAAKuB,CAAI,EAEZ,OAAO,UAAU,eAAe,KAAKA,EAAM,UAAU,GACrD,MAAM,QAASA,EAAuC,QAAQ,GAE9DvB,EAAK,KACH,GAAKuB,EACF,QACL,CAEJ,CAAC,EACMvB,CACT,EAAG,CAACoB,CAAQ,CAAC,EAEPI,EAAQhC,GAAS,EACjBiC,EAAOhC,GAAc+B,EAAM,YAAY,GAAG,IAAI,CAAC,EAC/CE,EAAYJ,EAAS,OACrBK,EAAWF,EAAO,GAAK,GAEvBG,EAAelE,EAClBmE,GACK,OAAO,UAAU,eAAe,KAAKA,EAAO,OAAO,EAC9C,GAGFF,EAET,CAACA,CAAQ,CACX,EAEMG,EAAcnE,EAAQ,IACtB+D,EAAY,EACP,EAAIC,EAENL,EAAS,IAAIM,CAAY,EAAE,OAAO,CAACG,EAAG,IAAMA,EAAI,EAAG,CAAC,EAC1D,CAACL,EAAWC,EAAUL,EAAUM,CAAY,CAAC,EAE1CI,EAAUd,GAAcQ,CAAS,EACjCO,EAAc5C,EAAWwB,CAAgB,EACzCqB,EAAWtE,EAAO,EAAK,EAE7B0B,EAAU,IAAM,CACd4C,EAAS,QAAU,EACrB,EAAG,CAACR,CAAS,CAAC,EAEd,IAAMS,EAAsBzE,EAC1B,CAAC,CAAE,iBAAA0E,CAAiB,IAAgC,CAEhDH,GACA,CAACC,EAAS,SACVE,GAAoBV,EAAY,IAEhCQ,EAAS,QAAU,GACnBD,EAAY,EAEhB,EACA,CAACA,EAAaP,CAAS,CACzB,EAEA,OACEzD,EAAC,OAAI,IAAK+C,EACR,SAAA/C,EAAC6C,EAAoB,SAApB,CAA6B,MAAOO,EACnC,SAAApD,EAACsB,GAAA,CACC,SAAU+B,EACV,OAAQQ,EAAc,EAAIjC,EAC1B,MAAM,OACN,IAAKmC,EACL,iBAAkBjB,EAClB,iBAAiB,KACjB,SAAUd,GAAS2B,EAAaN,EAASrB,CAAK,CAAC,EAC/C,cAAe,EACf,UAAWyB,EACX,gBAAiBS,EAEhB,SAAAxB,EACH,EACF,EACF,CAEJ,CAAC,EAEM0B,GAAQlB,GGlIf,OAAS,uBAAAmB,OAA2B,6BACpC,OAAOC,OAAY,uBACnB,OAAS,UAAAC,OAAc,uBAEhB,IAAMC,GAAeD,GAAOD,EAAM,EAAE,CACzC,CAAC,MAAMD,GAAoB,SAAS,EAAG,CACrC,UAAW,aACX,OAAQ,CACN,QAAS,EACT,OAAQ,CACV,CACF,CACF,CAAC,ELwLS,cAAArE,MAAA,oBA7KV,IAAMyE,EAAkBC,GACtBA,GAAe,OAAOA,GAAgB,SAClCA,EAAY,MAAM,SAAS,EAC3BA,EAAY,SAAS,EAErBC,GAAerE,GACnBA,EAEIsE,GAA8B,CAACtC,EAAgBuC,IACnDJ,EAAenC,CAAM,IAAMmC,EAAeI,CAAQ,EAE9CC,GAAuB,CAC3BC,EACAC,IACG,CACH,IAAMC,EAAcD,EAAM,WAAW,kBAAkB,EACvD,OAAOD,EAAc,OAAOG,GACX,GAAGA,EAAI,SAASA,EAAI,QAErB,kBAAkB,EAAE,SAASD,CAAW,CACvD,CACH,EAEME,GAAe3F,GACnBD,GACE,CACE,CACE,KAAAgB,EACA,MAAAI,EACA,MAAAyE,EACA,QAAAC,EAAU,CAAC,EACX,QAAAvE,EACA,cAAAwE,EAAgB,+BAChB,YAAAC,EAAc,6BACd,MAAA9E,EACA,WAAAC,EACA,YAAAF,EACA,SAAAgF,EACA,QAAAC,EACA,iBAAAlD,EACA,SAAAmD,EACA,SAAA7E,EACA,SAAAD,EACA,aAAA+E,EACA,SAAA5E,EACA,cAAA6E,EACA,SAAAC,EACA,OAAAC,EACA,YAAA9B,GACA,gBAAAhD,EACA,SAAAC,EACA,cAAe8E,GACf,GAAG3C,EACL,EACAL,KACG,CACH,IAAMiD,EAAiBrG,GAA2C,IAAI,EAEhEsG,EAAqBtG,GAAsB,IAAI,EAE/CQ,EAAiBT,GAAQ,IAAM,CACnC,GAAImB,EAGF,OAFe,MAAM,QAAQuE,CAAK,EAAIA,EAAQ,CAAC,GAEjC,OAAiB,CAACc,EAAKC,KAAS,CAC5C,IAAM7C,EAAO+B,EAAQ,KACnBH,IAAOA,GAAI,MAAM,SAAS,IAAMiB,GAAK,SAAS,CAChD,EAEA,OAAI7C,EAAa,CAAC,GAAG4C,EAAK5C,CAAI,EAEvB,CAAC,GAAG4C,CAAG,CAChB,EAAG,CAAC,CAAC,EAGP,IAAM5C,EACJ+B,EAAQ,KAAKH,GAAOA,EAAI,MAAM,SAAS,IAAME,GAAO,SAAS,CAAC,GAC9D,KAEIgB,EAAWH,EAAmB,QACpC,OACEG,GACA9C,GACA8C,EAAS,QAAU9C,EAAK,OACxB8C,EAAS,QAAU9C,EAAK,MAEjB8C,GAGTH,EAAmB,QAAU3C,EACtBA,EACT,EAAG,CAAC+B,EAASD,EAAOvE,CAAQ,CAAC,EAEvBwF,GACJN,KACCC,EAAe,UAAY,QAAU,OAAYlB,IAE9CwB,GAAoB7G,EACxB,CACE8G,EACAC,EACAC,IACG,CAIH,GAHAT,EAAe,QAAUS,EACrBb,GAAeA,EAAcW,EAAOC,EAAYC,CAAM,EAEtDA,IAAW,QAAS,CAClBZ,GAAUA,EAASW,CAAU,EACjC,OAGEC,IAAW,SACTZ,GAAUA,EAAS,MAAS,EAG9BY,IAAW,SACTZ,GAAUA,EAAS,EAAE,CAE7B,EACA,CAACD,EAAeC,CAAQ,CAC1B,EAEMa,GAAejH,EACnB,CACEkH,EACArE,IACG,CACH,GAAI,CAACA,EAAQ,CACXkD,EAAS3E,EAAW,CAAC,EAAI,IAAI,EAC7B,OAGF,GAAI,MAAM,QAAQyB,CAAM,EAAG,CACzBkD,EAASlD,EAAO,IAAImC,CAAc,CAAC,EACnC,OAGFe,EACE,OAAOlD,GAAW,SACdA,EAAO,SAAS,EAChBA,EAAO,MAAM,SAAS,CAC5B,CACF,EACA,CAACkD,EAAU3E,CAAQ,CACrB,EAEM+F,GAAanH,EAChB8G,GAA4C,CACvCT,GAAQA,EAAOS,CAAK,CAC1B,EACA,CAACT,CAAM,CACT,EAEMe,GAAuBpH,EAC3B,CACEqC,EACAQ,EACA0C,EACA8B,IAEAnB,EACIA,EAAa7D,EAAOQ,EAAQ0C,EAAO8B,CAAU,EAC5C,CAAC,CAAE,GAAGhF,EAAO,iBAAAS,CAAiB,EAAGD,CAAM,EAC9C,CAACqD,EAAcpD,CAAgB,CACjC,EAEMwE,GAAgBrH,GACpB,IAAOiG,EAAe,OAAYvB,GAClC,CAACuB,CAAY,CACf,EAEMqB,GAAsBvH,EACzBa,GACCN,EAACkB,EAAA,CACC,OAAQZ,EACR,KAAMC,EACN,YAAaC,EACb,MAAOC,EACP,WAAYC,EACZ,MAAOC,EACP,SAAUC,EACV,SAAUC,EACV,eAAgBV,EAChB,QAASW,EACT,SAAUC,EACV,gBAAiBC,EACjB,SAAUC,EACZ,EAEF,CACEV,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAV,EACAW,EACAC,EACAC,EACAC,CACF,CACF,EAEA,OACEjB,EAAC4C,EAAiB,SAAjB,CAA0B,MAAOoB,GAChC,SAAAhE,EAACJ,GAAA,CACC,IAAKmD,GACL,MAAO5C,EACP,cAAemG,GACf,QAASjB,EACT,QAASvE,EACT,cAAewE,EACf,YAAaC,EACb,SAAUG,EACV,gBAAe,GACf,gBAAiBlB,GACjB,iBAAkBuC,GAClB,cAAeV,GACf,qBAAsBzB,GACtB,SAAU8B,GACV,OAAQE,GACR,aAAcC,GACd,YAAalC,GACb,QAASc,EACT,SAAU5E,EACV,YAAamG,GACZ,GAAG5D,GACN,EACF,CAEJ,CACF,CACF,EAEA+B,GAAa,YAAc,eAE3B,IAAO8B,GAAQ9B","sourcesContent":["import {\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport MuiAutocomplete, {\n AutocompleteOwnerState,\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n AutocompleteRenderOptionState,\n} from '@mui/material/Autocomplete';\n\nimport { AutocompleteProps } from 'types/autoCompleteProps';\nimport { Option } from 'types/option';\n\nimport AutocompleteInput from './AutocompleteInput';\nimport ListboxComponent from './Listbox';\nimport ScrollEndContext from './ScrollEndContext';\nimport { StyledPopper } from './styles';\n\nconst getOptionValue = (optionValue: Option | string | number): string =>\n optionValue && typeof optionValue === 'object'\n ? optionValue.value.toString()\n : optionValue.toString();\n\nconst renderGroup = (params: AutocompleteRenderGroupParams) =>\n params as unknown as ReactNode;\n\nconst defaultIsOptionEqualToValue = (option: Option, selected: Option) =>\n getOptionValue(option) === getOptionValue(selected);\n\nconst defaultFilterOptions = (\n optionsFilter: Option[],\n state: { inputValue: string },\n) => {\n const searchValue = state.inputValue.toLocaleUpperCase();\n return optionsFilter.filter(opt => {\n const search = `${opt.value} ${opt.label}`;\n\n return search.toLocaleUpperCase().includes(searchValue);\n });\n};\n\nconst Autocomplete = memo(\n forwardRef<unknown, AutocompleteProps>(\n (\n {\n name,\n label,\n value,\n options = [],\n loading,\n noOptionsText = 'Nenhum resultado encontrado.',\n loadingText = 'Carregando opções...',\n error,\n helperText,\n placeholder,\n onChange,\n groupBy,\n showValueInLabel,\n disabled,\n multiple,\n required,\n renderOption,\n tabIndex,\n onInputChange,\n onSearch,\n onBlur,\n onScrollEnd,\n InputLabelProps,\n inputRef,\n filterOptions: filterOptionsProp,\n ...other\n },\n ref,\n ) => {\n const inputReasonRef = useRef<'input' | 'reset' | 'clear' | null>(null);\n\n const lastSingleValueRef = useRef<Option | null>(null);\n\n const formattedValue = useMemo(() => {\n if (multiple) {\n const values = Array.isArray(value) ? value : [];\n\n return values.reduce<Option[]>((acc, curr) => {\n const item = options.find(\n opt => opt.value.toString() === curr.toString(),\n );\n\n if (item) return [...acc, item];\n\n return [...acc];\n }, []);\n }\n\n const item =\n options.find(opt => opt.value.toString() === value?.toString()) ||\n null;\n\n const previous = lastSingleValueRef.current;\n if (\n previous &&\n item &&\n previous.value === item.value &&\n previous.label === item.label\n ) {\n return previous;\n }\n\n lastSingleValueRef.current = item;\n return item;\n }, [options, value, multiple]);\n\n const resolvedFilterOptions =\n filterOptionsProp ??\n (inputReasonRef.current === 'reset' ? undefined : defaultFilterOptions);\n\n const handleInputChange = useCallback(\n (\n event: React.SyntheticEvent,\n eventValue: string,\n reason: 'input' | 'reset' | 'clear',\n ) => {\n inputReasonRef.current = reason;\n if (onInputChange) onInputChange(event, eventValue, reason);\n\n if (reason === 'input') {\n if (onSearch) onSearch(eventValue);\n return;\n }\n\n if (reason === 'reset') {\n if (onSearch) onSearch(undefined);\n }\n\n if (reason === 'clear') {\n if (onSearch) onSearch('');\n }\n },\n [onInputChange, onSearch],\n );\n\n const handleChange = useCallback(\n (\n _: React.SyntheticEvent,\n option: Option | (string | Option)[] | string | null,\n ) => {\n if (!option) {\n onChange(multiple ? [] : null);\n return;\n }\n\n if (Array.isArray(option)) {\n onChange(option.map(getOptionValue));\n return;\n }\n\n onChange(\n typeof option === 'string'\n ? option.toString()\n : option.value.toString(),\n );\n },\n [onChange, multiple],\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (onBlur) onBlur(event);\n },\n [onBlur],\n );\n\n const memoizedRenderOption = useCallback(\n (\n props: React.HTMLAttributes<HTMLLIElement> & { key: string },\n option: Option,\n state: AutocompleteRenderOptionState,\n ownerState: AutocompleteOwnerState<Option, boolean, boolean, boolean>,\n ) =>\n renderOption\n ? renderOption(props, option, state, ownerState)\n : ([{ ...props, showValueInLabel }, option] as ReactNode),\n [renderOption, showValueInLabel],\n );\n\n const renderListbox = useMemo(\n () => (renderOption ? undefined : ListboxComponent),\n [renderOption],\n );\n\n const memoizedRenderInput = useCallback(\n (params: AutocompleteRenderInputParams) => (\n <AutocompleteInput\n params={params}\n name={name}\n placeholder={placeholder}\n error={error}\n helperText={helperText}\n label={label}\n required={required}\n multiple={multiple}\n formattedValue={formattedValue}\n loading={loading}\n tabIndex={tabIndex}\n InputLabelProps={InputLabelProps}\n inputRef={inputRef}\n />\n ),\n [\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n multiple,\n formattedValue,\n loading,\n tabIndex,\n InputLabelProps,\n inputRef,\n ],\n );\n\n return (\n <ScrollEndContext.Provider value={onScrollEnd}>\n <MuiAutocomplete\n ref={ref}\n value={formattedValue}\n onInputChange={handleInputChange}\n options={options}\n loading={loading}\n noOptionsText={noOptionsText}\n loadingText={loadingText}\n disabled={disabled}\n disableListWrap\n PopperComponent={StyledPopper}\n ListboxComponent={renderListbox}\n filterOptions={resolvedFilterOptions}\n isOptionEqualToValue={defaultIsOptionEqualToValue}\n onChange={handleChange}\n onBlur={handleBlur}\n renderOption={memoizedRenderOption}\n renderGroup={renderGroup}\n groupBy={groupBy}\n multiple={multiple}\n renderInput={memoizedRenderInput}\n {...other}\n />\n </ScrollEndContext.Provider>\n );\n },\n ),\n);\n\nAutocomplete.displayName = 'Autocomplete';\n\nexport default Autocomplete;\n","import { memo } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\n\nimport Icon from '../Icon';\n\nimport { AutocompleteInputProps } from './props';\n\nconst inputStartAdornment = (\n formattedValue: AutocompleteInputProps['formattedValue'],\n) => {\n if (!formattedValue || Array.isArray(formattedValue)) return undefined;\n\n if (formattedValue.startAdornment) return formattedValue.startAdornment;\n\n if (formattedValue.icon) return <Icon icon={formattedValue.icon} />;\n\n return undefined;\n};\n\nconst AutocompleteInput = memo(\n ({\n params,\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n multiple,\n formattedValue,\n loading,\n tabIndex,\n InputLabelProps,\n inputRef,\n }: AutocompleteInputProps) => (\n <TextField\n {...params}\n name={name}\n placeholder={placeholder}\n fullWidth\n error={!!error}\n helperText={helperText}\n label={label}\n required={required}\n inputRef={inputRef}\n InputProps={{\n ...params.InputProps,\n ...(!multiple && {\n startAdornment: inputStartAdornment(formattedValue),\n }),\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"primary\" size={20} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n }}\n inputProps={{\n ...params.inputProps,\n name,\n tabIndex,\n }}\n InputLabelProps={InputLabelProps}\n />\n ),\n);\n\nAutocompleteInput.displayName = 'AutocompleteInput';\n\nexport default AutocompleteInput;\n","import {\n createContext,\n forwardRef,\n HTMLAttributes,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { ListOnItemsRenderedProps, VariableSizeList } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport ListboxRow, { LISTBOX_PADDING } from './ListboxRow';\nimport type { ListboxItem } from './props';\nimport ScrollEndContext from './ScrollEndContext';\n\nconst OuterElementContext = createContext({});\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nOuterElementType.displayName = 'OuterElementType';\n\nconst useResetCache = (data: number) => {\n const ref = useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (ref.current != null) {\n ref.current.resetAfterIndex(0, true);\n }\n }, [data]);\n\n return ref;\n};\n\nconst ListboxComponent = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLElement>\n>(function ListboxComponent(props, ref) {\n const { children, ...other } = props;\n\n const itemData: ListboxItem[] = useMemo(() => {\n const data: ListboxItem[] = [];\n (children as ListboxItem[]).forEach(item => {\n data.push(item);\n if (\n Object.prototype.hasOwnProperty.call(item, 'children') &&\n Array.isArray((item as AutocompleteRenderGroupParams).children)\n ) {\n data.push(\n ...((item as AutocompleteRenderGroupParams)\n .children as ListboxItem[]),\n );\n }\n });\n return data;\n }, [children]);\n\n const theme = useTheme();\n const smUp = useMediaQuery(theme.breakpoints.up('sm'));\n const itemCount = itemData.length;\n const itemSize = smUp ? 36 : 48;\n\n const getChildSize = useCallback(\n (child: ListboxItem) => {\n if (Object.prototype.hasOwnProperty.call(child, 'group')) {\n return 48;\n }\n\n return itemSize;\n },\n [itemSize],\n );\n\n const itemsHeight = useMemo(() => {\n if (itemCount > 8) {\n return 8 * itemSize;\n }\n return itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n }, [itemCount, itemSize, itemData, getChildSize]);\n\n const gridRef = useResetCache(itemCount);\n const onScrollEnd = useContext(ScrollEndContext);\n const firedRef = useRef(false);\n\n useEffect(() => {\n firedRef.current = false;\n }, [itemCount]);\n\n const handleItemsRendered = useCallback(\n ({ visibleStopIndex }: ListOnItemsRenderedProps) => {\n if (\n onScrollEnd &&\n !firedRef.current &&\n visibleStopIndex >= itemCount - 3\n ) {\n firedRef.current = true;\n onScrollEnd();\n }\n },\n [onScrollEnd, itemCount],\n );\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={other}>\n <VariableSizeList\n itemData={itemData}\n height={itemsHeight + 2 * LISTBOX_PADDING}\n width=\"100%\"\n ref={gridRef}\n outerElementType={OuterElementType}\n innerElementType=\"ul\"\n itemSize={index => getChildSize(itemData[index])}\n overscanCount={5}\n itemCount={itemCount}\n onItemsRendered={handleItemsRendered}\n >\n {ListboxRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n});\n\nexport default ListboxComponent;\n","import { HTMLAttributes, memo } from 'react';\nimport { ListChildComponentProps } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { Option } from 'types/option';\n\nimport Icon from '../Icon';\n\nimport type { IconName } from './props';\n\nconst LISTBOX_PADDING = 8;\n\nconst ListboxRow = memo((props: ListChildComponentProps) => {\n const { data, index, style } = props;\n const dataSet = data[index] as\n | AutocompleteRenderGroupParams\n | [HTMLAttributes<HTMLLIElement> & { showValueInLabel?: boolean }, Option];\n\n const inlineStyle = {\n ...style,\n top: (style.top as number) + LISTBOX_PADDING,\n paddingTop: 8,\n };\n\n if (Object.prototype.hasOwnProperty.call(dataSet, 'group')) {\n const groupItem = dataSet as AutocompleteRenderGroupParams;\n return (\n <ListSubheader\n key={`list-box-item-group-${groupItem.group}`}\n component=\"div\"\n style={inlineStyle}\n >\n {groupItem.group}\n </ListSubheader>\n );\n }\n\n const [itemProps, option] = dataSet as [\n HTMLAttributes<HTMLLIElement> & {\n showValueInLabel?: boolean;\n key: string;\n },\n Option,\n ];\n const { showValueInLabel, key, ...otherItemProps } = itemProps;\n\n return (\n <Typography\n component=\"li\"\n key={`list-box-item-${key}`}\n {...otherItemProps}\n noWrap\n style={inlineStyle}\n >\n <Stack\n component=\"div\"\n direction=\"row\"\n flex={1}\n gap={1}\n justifyContent=\"start\"\n >\n {option.icon && <Icon icon={option.icon as IconName} />}\n {option.label}\n\n {showValueInLabel && (\n <Typography variant=\"inherit\" color=\"grey.400\">\n ({option.value})\n </Typography>\n )}\n </Stack>\n </Typography>\n );\n});\n\nListboxRow.displayName = 'ListboxRow';\n\nexport { LISTBOX_PADDING };\nexport default ListboxRow;\n","import { createContext } from 'react';\n\nconst ScrollEndContext = createContext<(() => void) | undefined>(undefined);\n\nexport default ScrollEndContext;\n","import { autocompleteClasses } from '@mui/material/Autocomplete';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\n\nexport const StyledPopper = styled(Popper)({\n [`& .${autocompleteClasses.listbox}`]: {\n boxSizing: 'border-box',\n '& ul': {\n padding: 0,\n margin: 0,\n },\n },\n});\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a } from './chunk-
|
|
1
|
+
import { a } from './chunk-7UJSGCXL.js';
|
|
2
2
|
import { useFormContext, Controller } from 'react-hook-form';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
var A=({name:t,helperText:u,rules:m,onSelectOption:r,InputLabelProps:p,onBlur:n,...c})=>{let{control:i}=useFormContext(),C=o=>e=>{r&&r(e,o.value),o.onChange(e);};return jsx(Controller,{name:t,control:i,rules:m,render:({field:{ref:o,...e},fieldState:{error:l}})=>{let g=d=>{e.onBlur(),n&&n(d);};return jsx(a,{"data-intercom-target":t,...e,...c,inputRef:o,onChange:C(e),onBlur:g,error:!!l,helperText:l?.message||u,InputLabelProps:p})}})},B=A;
|
|
6
6
|
|
|
7
7
|
export { B as a };
|
|
8
|
-
//# sourceMappingURL=chunk-
|
|
8
|
+
//# sourceMappingURL=chunk-E6RRGP5Y.js.map
|
|
@@ -12,7 +12,7 @@ import { a } from '../../chunk-ADNBF5AS.js';
|
|
|
12
12
|
import { a as a$3 } from '../../chunk-4F2NKGF6.js';
|
|
13
13
|
import { a as a$6 } from '../../chunk-CO2KQFUN.js';
|
|
14
14
|
import '../../chunk-F65ZXAGV.js';
|
|
15
|
-
import { a as a$a } from '../../chunk-
|
|
15
|
+
import { a as a$a } from '../../chunk-7UJSGCXL.js';
|
|
16
16
|
import { a as a$4 } from '../../chunk-VJW7L44O.js';
|
|
17
17
|
import '../../chunk-Z6YXPKWP.js';
|
|
18
18
|
import { a as a$2 } from '../../chunk-E3R7W7GK.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { a } from '../../chunk-
|
|
1
|
+
import { a } from '../../chunk-E6RRGP5Y.js';
|
|
2
2
|
import { r } from '../../chunk-XUDTPZHF.js';
|
|
3
3
|
import '../../chunk-UVPQR2Q2.js';
|
|
4
4
|
import { a as a$1 } from '../../chunk-RBTYTONM.js';
|
|
5
5
|
import '../../chunk-CO2KQFUN.js';
|
|
6
6
|
import { a as a$3 } from '../../chunk-I4PPSW36.js';
|
|
7
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-7UJSGCXL.js';
|
|
8
8
|
import { a as a$2 } from '../../chunk-VJW7L44O.js';
|
|
9
9
|
import '../../chunk-Z6YXPKWP.js';
|
|
10
10
|
import { memo, useEffect, useState, useMemo, useCallback } from 'react';
|
|
@@ -20,7 +20,7 @@ import '../../chunk-CO2KQFUN.js';
|
|
|
20
20
|
import { a as a$8 } from '../../chunk-F6H765KA.js';
|
|
21
21
|
import '../../chunk-F65ZXAGV.js';
|
|
22
22
|
import '../../chunk-I4PPSW36.js';
|
|
23
|
-
import { a as a$3 } from '../../chunk-
|
|
23
|
+
import { a as a$3 } from '../../chunk-7UJSGCXL.js';
|
|
24
24
|
import { a } from '../../chunk-VJW7L44O.js';
|
|
25
25
|
import '../../chunk-Z6YXPKWP.js';
|
|
26
26
|
import '../../chunk-IAOMC4C4.js';
|
|
@@ -4,7 +4,7 @@ import { c } from '../../chunk-VGTQYKAC.js';
|
|
|
4
4
|
import { a } from '../../chunk-CO2KQFUN.js';
|
|
5
5
|
import { a as a$5 } from '../../chunk-F65ZXAGV.js';
|
|
6
6
|
import { a as a$7 } from '../../chunk-YAS6LE4A.js';
|
|
7
|
-
import { a as a$4 } from '../../chunk-
|
|
7
|
+
import { a as a$4 } from '../../chunk-7UJSGCXL.js';
|
|
8
8
|
import { a as a$6 } from '../../chunk-VJW7L44O.js';
|
|
9
9
|
import '../../chunk-Z6YXPKWP.js';
|
|
10
10
|
import { a as a$8 } from '../../chunk-LQRRMVFN.js';
|
|
@@ -2,8 +2,8 @@ import { a as a$3 } from '../../../chunk-MSCOIJQ5.js';
|
|
|
2
2
|
import { a } from '../../../chunk-X64QHBVQ.js';
|
|
3
3
|
import { a as a$1 } from '../../../chunk-P2QZJ57W.js';
|
|
4
4
|
import '../../../chunk-RTC7H5E5.js';
|
|
5
|
-
import { a as a$2 } from '../../../chunk-
|
|
6
|
-
import '../../../chunk-
|
|
5
|
+
import { a as a$2 } from '../../../chunk-E6RRGP5Y.js';
|
|
6
|
+
import '../../../chunk-7UJSGCXL.js';
|
|
7
7
|
import '../../../chunk-VJW7L44O.js';
|
|
8
8
|
import '../../../chunk-Z6YXPKWP.js';
|
|
9
9
|
import L from '@mui/material/CircularProgress';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { a as default } from '../../../chunk-
|
|
2
|
-
import '../../../chunk-
|
|
1
|
+
export { a as default } from '../../../chunk-E6RRGP5Y.js';
|
|
2
|
+
import '../../../chunk-7UJSGCXL.js';
|
|
3
3
|
import '../../../chunk-VJW7L44O.js';
|
|
4
4
|
import '../../../chunk-Z6YXPKWP.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as a$1 } from '../../../chunk-P2QZJ57W.js';
|
|
2
|
-
import { a as a$2 } from '../../../chunk-
|
|
2
|
+
import { a as a$2 } from '../../../chunk-E6RRGP5Y.js';
|
|
3
3
|
import { a as a$3 } from '../../../chunk-YAS6LE4A.js';
|
|
4
|
-
import '../../../chunk-
|
|
4
|
+
import '../../../chunk-7UJSGCXL.js';
|
|
5
5
|
import { a } from '../../../chunk-VJW7L44O.js';
|
|
6
6
|
import '../../../chunk-Z6YXPKWP.js';
|
|
7
7
|
import { useCallback, useMemo } from 'react';
|
package/dist/types/option.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { IconName } from './icon.js';
|
|
2
3
|
|
|
3
4
|
interface FieldValue {
|
|
@@ -15,6 +16,7 @@ interface Option {
|
|
|
15
16
|
field4?: FieldValue;
|
|
16
17
|
field5?: FieldValue;
|
|
17
18
|
icon?: IconName;
|
|
19
|
+
startAdornment?: ReactNode;
|
|
18
20
|
[key: string]: unknown;
|
|
19
21
|
}
|
|
20
22
|
|
package/package.json
CHANGED
package/dist/chunk-3OITALLA.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { a } from './chunk-VJW7L44O.js';
|
|
2
|
-
import { memo, createContext, forwardRef, useContext, useMemo, useCallback, useRef, useEffect } from 'react';
|
|
3
|
-
import Ve, { autocompleteClasses } from '@mui/material/Autocomplete';
|
|
4
|
-
import ge from '@mui/material/CircularProgress';
|
|
5
|
-
import Pe from '@mui/material/TextField';
|
|
6
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import { VariableSizeList } from 'react-window';
|
|
8
|
-
import { useTheme, styled } from '@mui/material/styles';
|
|
9
|
-
import Me from '@mui/material/useMediaQuery';
|
|
10
|
-
import Oe from '@mui/material/ListSubheader';
|
|
11
|
-
import he from '@mui/material/Stack';
|
|
12
|
-
import q from '@mui/material/Typography';
|
|
13
|
-
import Ge from '@mui/material/Popper';
|
|
14
|
-
|
|
15
|
-
var $=memo(({params:e,name:t,placeholder:p,error:i,helperText:u,label:l,required:L,multiple:a$1,formattedValue:o,loading:c,tabIndex:m,InputLabelProps:y,inputRef:g})=>jsx(Pe,{...e,name:t,placeholder:p,fullWidth:!0,error:!!i,helperText:u,label:l,required:L,inputRef:g,InputProps:{...e.InputProps,...!a$1&&{startAdornment:o&&!Array.isArray(o)&&o.icon?jsx(a,{icon:o.icon}):void 0},endAdornment:jsxs(Fragment,{children:[c?jsx(ge,{color:"primary",size:20}):null,e.InputProps.endAdornment]})},inputProps:{...e.inputProps,name:t,tabIndex:m},InputLabelProps:y}));$.displayName="AutocompleteInput";var F=$;var w=8,U=memo(e=>{let{data:t,index:p,style:i}=e,u=t[p],l={...i,top:i.top+w,paddingTop:8};if(Object.prototype.hasOwnProperty.call(u,"group")){let y=u;return jsx(Oe,{component:"div",style:l,children:y.group},`list-box-item-group-${y.group}`)}let[L,a$1]=u,{showValueInLabel:o,key:c,...m}=L;return jsx(q,{component:"li",...m,noWrap:!0,style:l,children:jsxs(he,{component:"div",direction:"row",flex:1,gap:1,justifyContent:"start",children:[a$1.icon&&jsx(a,{icon:a$1.icon}),a$1.label,o&&jsxs(q,{variant:"inherit",color:"grey.400",children:["(",a$1.value,")"]})]})},`list-box-item-${c}`)});U.displayName="ListboxRow";var W=U;var Ce=createContext(void 0),h=Ce;var Y=createContext({}),Z=forwardRef((e,t)=>{let p=useContext(Y);return jsx("div",{ref:t,...e,...p})});Z.displayName="OuterElementType";var we=e=>{let t=useRef(null);return useEffect(()=>{t.current!=null&&t.current.resetAfterIndex(0,!0);},[e]),t},He=forwardRef(function(t,p){let{children:i,...u}=t,l=useMemo(()=>{let r=[];return i.forEach(b=>{r.push(b),Object.prototype.hasOwnProperty.call(b,"children")&&Array.isArray(b.children)&&r.push(...b.children);}),r},[i]),L=useTheme(),a=Me(L.breakpoints.up("sm")),o=l.length,c=a?36:48,m=useCallback(r=>Object.prototype.hasOwnProperty.call(r,"group")?48:c,[c]),y=useMemo(()=>o>8?8*c:l.map(m).reduce((r,b)=>r+b,0),[o,c,l,m]),g=we(o),P=useContext(h),d=useRef(!1);useEffect(()=>{d.current=!1;},[o]);let R=useCallback(({visibleStopIndex:r})=>{P&&!d.current&&r>=o-3&&(d.current=!0,P());},[P,o]);return jsx("div",{ref:p,children:jsx(Y.Provider,{value:u,children:jsx(VariableSizeList,{itemData:l,height:y+2*w,width:"100%",ref:g,outerElementType:Z,innerElementType:"ul",itemSize:r=>m(l[r]),overscanCount:5,itemCount:o,onItemsRendered:R,children:W})})})}),ee=He;var te=styled(Ge)({[`& .${autocompleteClasses.listbox}`]:{boxSizing:"border-box","& ul":{padding:0,margin:0}}});var k=e=>e&&typeof e=="object"?e.value.toString():e.toString(),$e=e=>e,Fe=(e,t)=>k(e)===k(t),qe=(e,t)=>{let p=t.inputValue.toLocaleUpperCase();return e.filter(i=>`${i.value} ${i.label}`.toLocaleUpperCase().includes(p))},ne=memo(forwardRef(({name:e,label:t,value:p,options:i=[],loading:u,noOptionsText:l="Nenhum resultado encontrado.",loadingText:L="Carregando op\xE7\xF5es...",error:a,helperText:o,placeholder:c,onChange:m,groupBy:y,showValueInLabel:g,disabled:P,multiple:d,required:R,renderOption:r,tabIndex:b,onInputChange:C,onSearch:A,onBlur:T,onScrollEnd:ie,InputLabelProps:G,inputRef:N,filterOptions:se,...pe},ue)=>{let z=useRef(null),D=useRef(null),v=useMemo(()=>{if(d)return (Array.isArray(p)?p:[]).reduce((x,ye)=>{let V=i.find(Le=>Le.value.toString()===ye.toString());return V?[...x,V]:[...x]},[]);let s=i.find(f=>f.value.toString()===p?.toString())||null,n=D.current;return n&&s&&n.value===s.value&&n.label===s.label?n:(D.current=s,s)},[i,p,d]),le=se??(z.current==="reset"?void 0:qe),me=useCallback((s,n,f)=>{if(z.current=f,C&&C(s,n,f),f==="input"){A&&A(n);return}f==="reset"&&A&&A(void 0),f==="clear"&&A&&A("");},[C,A]),ae=useCallback((s,n)=>{if(!n){m(d?[]:null);return}if(Array.isArray(n)){m(n.map(k));return}m(typeof n=="string"?n.toString():n.value.toString());},[m,d]),ce=useCallback(s=>{T&&T(s);},[T]),de=useCallback((s,n,f,x)=>r?r(s,n,f,x):[{...s,showValueInLabel:g},n],[r,g]),fe=useMemo(()=>r?void 0:ee,[r]),be=useCallback(s=>jsx(F,{params:s,name:e,placeholder:c,error:a,helperText:o,label:t,required:R,multiple:d,formattedValue:v,loading:u,tabIndex:b,InputLabelProps:G,inputRef:N}),[e,c,a,o,t,R,d,v,u,b,G,N]);return jsx(h.Provider,{value:ie,children:jsx(Ve,{ref:ue,value:v,onInputChange:me,options:i,loading:u,noOptionsText:l,loadingText:L,disabled:P,disableListWrap:!0,PopperComponent:te,ListboxComponent:fe,filterOptions:le,isOptionEqualToValue:Fe,onChange:ae,onBlur:ce,renderOption:de,renderGroup:$e,groupBy:y,multiple:d,renderInput:be,...pe})})}));ne.displayName="Autocomplete";var Et=ne;
|
|
16
|
-
|
|
17
|
-
export { Et as a };
|
|
18
|
-
//# sourceMappingURL=chunk-3OITALLA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Autocomplete/index.tsx","../src/components/Autocomplete/AutocompleteInput.tsx","../src/components/Autocomplete/Listbox.tsx","../src/components/Autocomplete/ListboxRow.tsx","../src/components/Autocomplete/ScrollEndContext.ts","../src/components/Autocomplete/styles.ts"],"names":["forwardRef","memo","useCallback","useMemo","useRef","MuiAutocomplete","CircularProgress","TextField","Fragment","jsx","jsxs","AutocompleteInput","params","name","placeholder","error","helperText","label","required","multiple","formattedValue","loading","tabIndex","InputLabelProps","inputRef","Icon_default","AutocompleteInput_default","createContext","useContext","useEffect","VariableSizeList","useTheme","useMediaQuery","ListSubheader","Stack","Typography","LISTBOX_PADDING","ListboxRow","props","data","index","style","dataSet","inlineStyle","groupItem","itemProps","option","showValueInLabel","key","otherItemProps","ListboxRow_default","ScrollEndContext","ScrollEndContext_default","OuterElementContext","OuterElementType","ref","outerProps","useResetCache","ListboxComponent","children","other","itemData","item","theme","smUp","itemCount","itemSize","getChildSize","child","itemsHeight","a","gridRef","onScrollEnd","firedRef","handleItemsRendered","visibleStopIndex","Listbox_default","autocompleteClasses","Popper","styled","StyledPopper","getOptionValue","optionValue","renderGroup","defaultIsOptionEqualToValue","selected","defaultFilterOptions","optionsFilter","state","searchValue","opt","Autocomplete","value","options","noOptionsText","loadingText","onChange","groupBy","disabled","renderOption","onInputChange","onSearch","onBlur","filterOptionsProp","inputReasonRef","lastSingleValueRef","acc","curr","previous","resolvedFilterOptions","handleInputChange","event","eventValue","reason","handleChange","_","handleBlur","memoizedRenderOption","ownerState","renderListbox","memoizedRenderInput","Autocomplete_default"],"mappings":"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","sourcesContent":["import {\n forwardRef,\n memo,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport MuiAutocomplete, {\n AutocompleteOwnerState,\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n AutocompleteRenderOptionState,\n} from '@mui/material/Autocomplete';\n\nimport { AutocompleteProps } from 'types/autoCompleteProps';\nimport { Option } from 'types/option';\n\nimport AutocompleteInput from './AutocompleteInput';\nimport ListboxComponent from './Listbox';\nimport ScrollEndContext from './ScrollEndContext';\nimport { StyledPopper } from './styles';\n\nconst getOptionValue = (optionValue: Option | string | number): string =>\n optionValue && typeof optionValue === 'object'\n ? optionValue.value.toString()\n : optionValue.toString();\n\nconst renderGroup = (params: AutocompleteRenderGroupParams) =>\n params as unknown as ReactNode;\n\nconst defaultIsOptionEqualToValue = (option: Option, selected: Option) =>\n getOptionValue(option) === getOptionValue(selected);\n\nconst defaultFilterOptions = (\n optionsFilter: Option[],\n state: { inputValue: string },\n) => {\n const searchValue = state.inputValue.toLocaleUpperCase();\n return optionsFilter.filter(opt => {\n const search = `${opt.value} ${opt.label}`;\n\n return search.toLocaleUpperCase().includes(searchValue);\n });\n};\n\nconst Autocomplete = memo(\n forwardRef<unknown, AutocompleteProps>(\n (\n {\n name,\n label,\n value,\n options = [],\n loading,\n noOptionsText = 'Nenhum resultado encontrado.',\n loadingText = 'Carregando opções...',\n error,\n helperText,\n placeholder,\n onChange,\n groupBy,\n showValueInLabel,\n disabled,\n multiple,\n required,\n renderOption,\n tabIndex,\n onInputChange,\n onSearch,\n onBlur,\n onScrollEnd,\n InputLabelProps,\n inputRef,\n filterOptions: filterOptionsProp,\n ...other\n },\n ref,\n ) => {\n const inputReasonRef = useRef<'input' | 'reset' | 'clear' | null>(null);\n\n const lastSingleValueRef = useRef<Option | null>(null);\n\n const formattedValue = useMemo(() => {\n if (multiple) {\n const values = Array.isArray(value) ? value : [];\n\n return values.reduce<Option[]>((acc, curr) => {\n const item = options.find(\n opt => opt.value.toString() === curr.toString(),\n );\n\n if (item) return [...acc, item];\n\n return [...acc];\n }, []);\n }\n\n const item =\n options.find(opt => opt.value.toString() === value?.toString()) ||\n null;\n\n const previous = lastSingleValueRef.current;\n if (\n previous &&\n item &&\n previous.value === item.value &&\n previous.label === item.label\n ) {\n return previous;\n }\n\n lastSingleValueRef.current = item;\n return item;\n }, [options, value, multiple]);\n\n const resolvedFilterOptions =\n filterOptionsProp ??\n (inputReasonRef.current === 'reset' ? undefined : defaultFilterOptions);\n\n const handleInputChange = useCallback(\n (\n event: React.SyntheticEvent,\n eventValue: string,\n reason: 'input' | 'reset' | 'clear',\n ) => {\n inputReasonRef.current = reason;\n if (onInputChange) onInputChange(event, eventValue, reason);\n\n if (reason === 'input') {\n if (onSearch) onSearch(eventValue);\n return;\n }\n\n if (reason === 'reset') {\n if (onSearch) onSearch(undefined);\n }\n\n if (reason === 'clear') {\n if (onSearch) onSearch('');\n }\n },\n [onInputChange, onSearch],\n );\n\n const handleChange = useCallback(\n (\n _: React.SyntheticEvent,\n option: Option | (string | Option)[] | string | null,\n ) => {\n if (!option) {\n onChange(multiple ? [] : null);\n return;\n }\n\n if (Array.isArray(option)) {\n onChange(option.map(getOptionValue));\n return;\n }\n\n onChange(\n typeof option === 'string'\n ? option.toString()\n : option.value.toString(),\n );\n },\n [onChange, multiple],\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (onBlur) onBlur(event);\n },\n [onBlur],\n );\n\n const memoizedRenderOption = useCallback(\n (\n props: React.HTMLAttributes<HTMLLIElement> & { key: string },\n option: Option,\n state: AutocompleteRenderOptionState,\n ownerState: AutocompleteOwnerState<Option, boolean, boolean, boolean>,\n ) =>\n renderOption\n ? renderOption(props, option, state, ownerState)\n : ([{ ...props, showValueInLabel }, option] as ReactNode),\n [renderOption, showValueInLabel],\n );\n\n const renderListbox = useMemo(\n () => (renderOption ? undefined : ListboxComponent),\n [renderOption],\n );\n\n const memoizedRenderInput = useCallback(\n (params: AutocompleteRenderInputParams) => (\n <AutocompleteInput\n params={params}\n name={name}\n placeholder={placeholder}\n error={error}\n helperText={helperText}\n label={label}\n required={required}\n multiple={multiple}\n formattedValue={formattedValue}\n loading={loading}\n tabIndex={tabIndex}\n InputLabelProps={InputLabelProps}\n inputRef={inputRef}\n />\n ),\n [\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n multiple,\n formattedValue,\n loading,\n tabIndex,\n InputLabelProps,\n inputRef,\n ],\n );\n\n return (\n <ScrollEndContext.Provider value={onScrollEnd}>\n <MuiAutocomplete\n ref={ref}\n value={formattedValue}\n onInputChange={handleInputChange}\n options={options}\n loading={loading}\n noOptionsText={noOptionsText}\n loadingText={loadingText}\n disabled={disabled}\n disableListWrap\n PopperComponent={StyledPopper}\n ListboxComponent={renderListbox}\n filterOptions={resolvedFilterOptions}\n isOptionEqualToValue={defaultIsOptionEqualToValue}\n onChange={handleChange}\n onBlur={handleBlur}\n renderOption={memoizedRenderOption}\n renderGroup={renderGroup}\n groupBy={groupBy}\n multiple={multiple}\n renderInput={memoizedRenderInput}\n {...other}\n />\n </ScrollEndContext.Provider>\n );\n },\n ),\n);\n\nAutocomplete.displayName = 'Autocomplete';\n\nexport default Autocomplete;\n","import { memo } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\n\nimport Icon from '../Icon';\n\nimport { AutocompleteInputProps } from './props';\n\nconst AutocompleteInput = memo(\n ({\n params,\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n multiple,\n formattedValue,\n loading,\n tabIndex,\n InputLabelProps,\n inputRef,\n }: AutocompleteInputProps) => (\n <TextField\n {...params}\n name={name}\n placeholder={placeholder}\n fullWidth\n error={!!error}\n helperText={helperText}\n label={label}\n required={required}\n inputRef={inputRef}\n InputProps={{\n ...params.InputProps,\n ...(!multiple && {\n startAdornment:\n formattedValue &&\n !Array.isArray(formattedValue) &&\n formattedValue.icon ? (\n <Icon icon={formattedValue.icon} />\n ) : undefined,\n }),\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"primary\" size={20} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n }}\n inputProps={{\n ...params.inputProps,\n name,\n tabIndex,\n }}\n InputLabelProps={InputLabelProps}\n />\n ),\n);\n\nAutocompleteInput.displayName = 'AutocompleteInput';\n\nexport default AutocompleteInput;\n","import {\n createContext,\n forwardRef,\n HTMLAttributes,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { ListOnItemsRenderedProps, VariableSizeList } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport ListboxRow, { LISTBOX_PADDING } from './ListboxRow';\nimport type { ListboxItem } from './props';\nimport ScrollEndContext from './ScrollEndContext';\n\nconst OuterElementContext = createContext({});\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nOuterElementType.displayName = 'OuterElementType';\n\nconst useResetCache = (data: number) => {\n const ref = useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (ref.current != null) {\n ref.current.resetAfterIndex(0, true);\n }\n }, [data]);\n\n return ref;\n};\n\nconst ListboxComponent = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLElement>\n>(function ListboxComponent(props, ref) {\n const { children, ...other } = props;\n\n const itemData: ListboxItem[] = useMemo(() => {\n const data: ListboxItem[] = [];\n (children as ListboxItem[]).forEach(item => {\n data.push(item);\n if (\n Object.prototype.hasOwnProperty.call(item, 'children') &&\n Array.isArray((item as AutocompleteRenderGroupParams).children)\n ) {\n data.push(\n ...((item as AutocompleteRenderGroupParams)\n .children as ListboxItem[]),\n );\n }\n });\n return data;\n }, [children]);\n\n const theme = useTheme();\n const smUp = useMediaQuery(theme.breakpoints.up('sm'));\n const itemCount = itemData.length;\n const itemSize = smUp ? 36 : 48;\n\n const getChildSize = useCallback(\n (child: ListboxItem) => {\n if (Object.prototype.hasOwnProperty.call(child, 'group')) {\n return 48;\n }\n\n return itemSize;\n },\n [itemSize],\n );\n\n const itemsHeight = useMemo(() => {\n if (itemCount > 8) {\n return 8 * itemSize;\n }\n return itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n }, [itemCount, itemSize, itemData, getChildSize]);\n\n const gridRef = useResetCache(itemCount);\n const onScrollEnd = useContext(ScrollEndContext);\n const firedRef = useRef(false);\n\n useEffect(() => {\n firedRef.current = false;\n }, [itemCount]);\n\n const handleItemsRendered = useCallback(\n ({ visibleStopIndex }: ListOnItemsRenderedProps) => {\n if (\n onScrollEnd &&\n !firedRef.current &&\n visibleStopIndex >= itemCount - 3\n ) {\n firedRef.current = true;\n onScrollEnd();\n }\n },\n [onScrollEnd, itemCount],\n );\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={other}>\n <VariableSizeList\n itemData={itemData}\n height={itemsHeight + 2 * LISTBOX_PADDING}\n width=\"100%\"\n ref={gridRef}\n outerElementType={OuterElementType}\n innerElementType=\"ul\"\n itemSize={index => getChildSize(itemData[index])}\n overscanCount={5}\n itemCount={itemCount}\n onItemsRendered={handleItemsRendered}\n >\n {ListboxRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n});\n\nexport default ListboxComponent;\n","import { HTMLAttributes, memo } from 'react';\nimport { ListChildComponentProps } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { Option } from 'types/option';\n\nimport Icon from '../Icon';\n\nimport type { IconName } from './props';\n\nconst LISTBOX_PADDING = 8;\n\nconst ListboxRow = memo((props: ListChildComponentProps) => {\n const { data, index, style } = props;\n const dataSet = data[index] as\n | AutocompleteRenderGroupParams\n | [HTMLAttributes<HTMLLIElement> & { showValueInLabel?: boolean }, Option];\n\n const inlineStyle = {\n ...style,\n top: (style.top as number) + LISTBOX_PADDING,\n paddingTop: 8,\n };\n\n if (Object.prototype.hasOwnProperty.call(dataSet, 'group')) {\n const groupItem = dataSet as AutocompleteRenderGroupParams;\n return (\n <ListSubheader\n key={`list-box-item-group-${groupItem.group}`}\n component=\"div\"\n style={inlineStyle}\n >\n {groupItem.group}\n </ListSubheader>\n );\n }\n\n const [itemProps, option] = dataSet as [\n HTMLAttributes<HTMLLIElement> & {\n showValueInLabel?: boolean;\n key: string;\n },\n Option,\n ];\n const { showValueInLabel, key, ...otherItemProps } = itemProps;\n\n return (\n <Typography\n component=\"li\"\n key={`list-box-item-${key}`}\n {...otherItemProps}\n noWrap\n style={inlineStyle}\n >\n <Stack\n component=\"div\"\n direction=\"row\"\n flex={1}\n gap={1}\n justifyContent=\"start\"\n >\n {option.icon && <Icon icon={option.icon as IconName} />}\n {option.label}\n\n {showValueInLabel && (\n <Typography variant=\"inherit\" color=\"grey.400\">\n ({option.value})\n </Typography>\n )}\n </Stack>\n </Typography>\n );\n});\n\nListboxRow.displayName = 'ListboxRow';\n\nexport { LISTBOX_PADDING };\nexport default ListboxRow;\n","import { createContext } from 'react';\n\nconst ScrollEndContext = createContext<(() => void) | undefined>(undefined);\n\nexport default ScrollEndContext;\n","import { autocompleteClasses } from '@mui/material/Autocomplete';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\n\nexport const StyledPopper = styled(Popper)({\n [`& .${autocompleteClasses.listbox}`]: {\n boxSizing: 'border-box',\n '& ul': {\n padding: 0,\n margin: 0,\n },\n },\n});\n"]}
|
|
File without changes
|