@zydon/common 2.8.66 → 2.8.68
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-6JTWZZRD.js +19 -0
- package/dist/chunk-6JTWZZRD.js.map +1 -0
- package/dist/{chunk-QDYHWRND.js → chunk-D7UUJ7FJ.js} +2 -2
- package/dist/chunk-D7UUJ7FJ.js.map +1 -0
- package/dist/components/AutocompleteDetailed/index.js +1 -1
- package/dist/components/SelectableCards/index.d.ts +2 -2
- package/dist/components/SelectableCards/index.js +1 -1
- package/dist/components/form/AutocompleteDetailed/index.js +1 -1
- package/dist/components/form/SelectableCards/index.d.ts +1 -1
- package/dist/components/form/SelectableCards/index.js +1 -1
- package/dist/{props-3c81e5f4.d.ts → props-a322bf2a.d.ts} +1 -0
- package/package.json +1 -1
- package/dist/chunk-QDYHWRND.js.map +0 -1
- package/dist/chunk-SDS77DQQ.js +0 -19
- package/dist/chunk-SDS77DQQ.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { a as a$4 } from './chunk-6ZSTKYGL.js';
|
|
2
|
+
import { a as a$1 } from './chunk-Y3TJIK6E.js';
|
|
3
|
+
import { a as a$3 } from './chunk-IJZCVZ32.js';
|
|
4
|
+
import { a as a$2 } from './chunk-F65ZXAGV.js';
|
|
5
|
+
import { a } from './chunk-FBVAHVU3.js';
|
|
6
|
+
import { memo, useCallback, useState, useMemo } from 'react';
|
|
7
|
+
import Q from '@mui/material/Button';
|
|
8
|
+
import U from '@mui/material/CircularProgress';
|
|
9
|
+
import q from '@mui/material/Grid';
|
|
10
|
+
import d from '@mui/material/Stack';
|
|
11
|
+
import h from '@mui/material/Typography';
|
|
12
|
+
import H from '@mui/material/Card';
|
|
13
|
+
import { styled, alpha } from '@mui/material/styles';
|
|
14
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
15
|
+
|
|
16
|
+
var T=styled(H,{shouldForwardProp:t=>t!=="active"&&t!=="disabled"})(({theme:t,active:a,disabled:i})=>({boxShadow:"none",borderRadius:8,borderStyle:"solid",borderWidth:1.5,borderColor:a?t.palette.primary.main:t.palette.grey[300],color:t.palette.primary.main,backgroundColor:a?alpha(t.palette.primary.main,.04):"white","&:hover":{borderColor:t.palette.primary.main},...i?{opacity:.6,cursor:"default"}:{opacity:1,cursor:"pointer"}}));var D=memo(({item:t,isSelected:a$1,disabled:i,onSelectItem:n})=>{let o=useCallback(()=>{n(t);},[t,n]);return jsx(q,{item:!0,xs:4,children:jsx(T,{active:a$1,onClick:o,disabled:i,children:jsxs(d,{padding:1.5,width:"100%",children:[jsxs(d,{direction:"row",alignItems:"center",justifyContent:"space-between",children:[jsx(h,{color:a$1?"primary.main":"text.primary",variant:"subtitle2",textAlign:"left",noWrap:!0,children:t.title}),a$1&&jsx(a,{icon:"CHECK_CIRCLE",width:24})]}),t.options.map(l=>jsx(h,{mt:1,variant:"body2",color:"text.disabled",fontSize:12,textAlign:"left",noWrap:!0,children:`${l.label}: ${l.value}`},l.label))]})})},t.title)});D.displayName="CardItem";var O=D;var Y=new Intl.PluralRules("pt-BR"),Z=new Map([["one","selecionado"],["other","selecionados"]]),tt=t=>{let a=Y.select(t),i=Z.get(a);return `${t} ${i}`},rt=({title:t,action:a,loading:i,items:n,values:o,onChange:l,onSearch:C,disabled:s=!1})=>{let[p,$]=useState(),b=useMemo(()=>new Set(o),[o]),y=useCallback(r=>b.has(r),[b]),A=useMemo(()=>{if(!p)return n;let r=p.toLowerCase();return n.filter(g=>g.title.toLowerCase().includes(r))},[n,p]),B=useCallback(r=>{if(s)return;let g=y(r.value),u;g?u=o.filter(N=>N!==r.value):u=[...o,r.value],l(u);},[s,y,l,o]),w=useMemo(()=>n.map(r=>r.value),[n]),G=useCallback(()=>{s||(o.length===n.length?l([]):l(w));},[s,n.length,l,o.length,w]),K=useCallback(r=>{$(r),C?.(r);},[C]),W=r=>{r.key==="Enter"&&r.preventDefault();},z=useMemo(()=>o.length===0?"nenhum selecionado":tt(o.length),[o.length]),M=useMemo(()=>typeof t=="string"?jsx(h,{variant:"overline",color:"text.disabled",children:t}):t,[t]);return jsxs(d,{gap:1.5,height:450,children:[jsxs(d,{direction:"row",justifyContent:"space-between",children:[M,jsx(h,{variant:"overline",color:"text.disabled",children:z})]}),jsxs(d,{direction:"row",alignItems:"center",spacing:1.5,children:[jsx(a$1,{fullWidth:!0,size:"small",iconPosition:"start",placeholder:"Buscar",trigger:"change",onSearch:K,onKeyDown:W}),a?jsx(Fragment,{children:a}):jsx(Q,{onClick:G,size:"small",disabled:s,children:jsx(h,{variant:"overline",children:"TODOS"})})]}),jsx(a$2,{children:jsx(d,{flex:1,mb:2,children:jsx(a$3,{isLoading:i,loading:jsx(d,{alignItems:"center",mt:3,children:jsx(U,{})}),isEmpty:n.length===0,empty:jsx(a$4,{sx:{svg:{height:140}},text:p?`N\xE3o foi possivel encontrar o item "${p}"`:"Nenhum item dispon\xEDvel"}),children:jsx(q,{container:!0,spacing:1.5,children:A.map(r=>jsx(O,{item:r,isSelected:y(r.value),disabled:s,onSelectItem:B},r.value))})})})})]})},xt=rt;
|
|
17
|
+
|
|
18
|
+
export { xt as a };
|
|
19
|
+
//# sourceMappingURL=chunk-6JTWZZRD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/SelectableCards/index.tsx","../src/components/SelectableCards/CardItem.tsx","../src/components/SelectableCards/style.ts"],"names":["useCallback","useMemo","useState","Button","CircularProgress","Grid","Stack","Typography","memo","Card","alpha","styled","StyledCard","prop","theme","active","disabled","jsx","jsxs","CardItem","item","isSelected","onSelectItem","handleClick","Icon_default","option","CardItem_default","Fragment","enCardinalRules","strings","formatStrings","n","rule","suffix","SelectableCards","title","action","loading","items","values","onChange","onSearch","search","setSearch","valuesSet","itemId","filteredItems","searchLower","isItemAlreadySelected","newSelectedOptions","element","allItemValues","selectAllItems","handleSearch","value","handleKeyDown","event","selectedCount","titleComponent","SearchInput_default","Scrollbar_default","Result_default","EmptyView_default","SelectableCards_default"],"mappings":"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","sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport EmptyView from 'components/EmptyView';\nimport Result from 'components/Result';\nimport Scrollbar from 'components/Scrollbar';\nimport SearchInput from 'components/SearchInput';\n\nimport CardItem from './CardItem';\nimport { Option, SelectableCardsProps } from './props';\n\nconst enCardinalRules = new Intl.PluralRules('pt-BR');\n\nconst strings = new Map([\n ['one', 'selecionado'],\n ['other', 'selecionados'],\n]);\n\nconst formatStrings = (n: number) => {\n const rule = enCardinalRules.select(n);\n const suffix = strings.get(rule);\n return `${n} ${suffix}`;\n};\n\nconst SelectableCards = ({\n title,\n action,\n loading,\n items,\n values,\n onChange,\n onSearch,\n disabled = false,\n}: SelectableCardsProps) => {\n const [search, setSearch] = useState<string>();\n\n const valuesSet = useMemo(() => new Set(values), [values]);\n\n const isSelected = useCallback(\n (itemId: string) => {\n return valuesSet.has(itemId);\n },\n [valuesSet],\n );\n\n const filteredItems = useMemo(() => {\n if (!search) return items;\n const searchLower = search.toLowerCase();\n return items.filter(item => item.title.toLowerCase().includes(searchLower));\n }, [items, search]);\n\n const onSelectItem = useCallback(\n (item: Option) => {\n if (disabled) return;\n const isItemAlreadySelected = isSelected(item.value);\n\n let newSelectedOptions: string[];\n\n if (isItemAlreadySelected) {\n newSelectedOptions = values.filter(element => element !== item.value);\n } else {\n newSelectedOptions = [...values, item.value];\n }\n\n onChange(newSelectedOptions);\n },\n [disabled, isSelected, onChange, values],\n );\n\n const allItemValues = useMemo(() => items.map(item => item.value), [items]);\n\n const selectAllItems = useCallback(() => {\n if (disabled) return;\n if (values.length === items.length) {\n onChange([]);\n } else {\n onChange(allItemValues);\n }\n }, [disabled, items.length, onChange, values.length, allItemValues]);\n\n const handleSearch = useCallback(\n (value: string) => {\n setSearch(value);\n onSearch?.(value);\n },\n [onSearch],\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n };\n\n const selectedCount = useMemo(\n () =>\n values.length === 0 ? 'nenhum selecionado' : formatStrings(values.length),\n [values.length],\n );\n\n const titleComponent = useMemo(\n () =>\n typeof title === 'string' ? (\n <Typography variant=\"overline\" color=\"text.disabled\">\n {title}\n </Typography>\n ) : (\n title\n ),\n [title],\n );\n\n return (\n <Stack gap={1.5} height={450}>\n <Stack direction=\"row\" justifyContent=\"space-between\">\n {titleComponent}\n <Typography variant=\"overline\" color=\"text.disabled\">\n {selectedCount}\n </Typography>\n </Stack>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1.5}>\n <SearchInput\n fullWidth\n size=\"small\"\n iconPosition=\"start\"\n placeholder=\"Buscar\"\n trigger=\"change\"\n onSearch={handleSearch}\n onKeyDown={handleKeyDown}\n />\n\n {action ? (\n <>{action}</>\n ) : (\n <Button onClick={selectAllItems} size=\"small\" disabled={disabled}>\n <Typography variant=\"overline\">TODOS</Typography>\n </Button>\n )}\n </Stack>\n\n <Scrollbar>\n <Stack flex={1} mb={2}>\n <Result\n isLoading={loading}\n loading={\n <Stack alignItems=\"center\" mt={3}>\n <CircularProgress />\n </Stack>\n }\n isEmpty={items.length === 0}\n empty={\n <EmptyView\n sx={{ svg: { height: 140 } }}\n text={\n search\n ? `Não foi possivel encontrar o item \"${search}\"`\n : 'Nenhum item disponível'\n }\n />\n }\n >\n <Grid container spacing={1.5}>\n {filteredItems.map(item => (\n <CardItem\n key={item.value}\n item={item}\n isSelected={isSelected(item.value)}\n disabled={disabled}\n onSelectItem={onSelectItem}\n />\n ))}\n </Grid>\n </Result>\n </Stack>\n </Scrollbar>\n </Stack>\n );\n};\n\nexport default SelectableCards;\n","import { memo, useCallback } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { CardItemProps } from './props';\nimport { StyledCard } from './style';\n\nconst CardItem = memo(\n ({ item, isSelected, disabled, onSelectItem }: CardItemProps) => {\n const handleClick = useCallback(() => {\n onSelectItem(item);\n }, [item, onSelectItem]);\n\n return (\n <Grid key={item.title} item xs={4}>\n <StyledCard\n active={isSelected}\n onClick={handleClick}\n disabled={disabled}\n >\n <Stack padding={1.5} width=\"100%\">\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Typography\n color={isSelected ? 'primary.main' : 'text.primary'}\n variant=\"subtitle2\"\n textAlign=\"left\"\n noWrap\n >\n {item.title}\n </Typography>\n\n {isSelected && <Icon icon=\"CHECK_CIRCLE\" width={24} />}\n </Stack>\n\n {item.options.map(option => (\n <Typography\n key={option.label}\n mt={1}\n variant=\"body2\"\n color=\"text.disabled\"\n fontSize={12}\n textAlign=\"left\"\n noWrap\n >\n {`${option.label}: ${option.value}`}\n </Typography>\n ))}\n </Stack>\n </StyledCard>\n </Grid>\n );\n },\n);\n\nCardItem.displayName = 'CardItem';\n\nexport default CardItem;\n","import Card from '@mui/material/Card';\nimport { alpha, styled } from '@mui/material/styles';\n\nimport { CardProps } from './props';\n\nexport const StyledCard = styled(Card, {\n shouldForwardProp: prop => prop !== 'active' && prop !== 'disabled',\n})<CardProps>(({ theme, active, disabled }) => ({\n boxShadow: 'none',\n\n borderRadius: 8,\n borderStyle: 'solid',\n borderWidth: 1.5,\n borderColor: active ? theme.palette.primary.main : theme.palette.grey[300],\n\n color: theme.palette.primary.main,\n backgroundColor: active ? alpha(theme.palette.primary.main, 0.04) : 'white',\n\n '&:hover': {\n borderColor: theme.palette.primary.main,\n },\n\n ...(disabled\n ? {\n opacity: 0.6,\n cursor: 'default',\n }\n : {\n opacity: 1,\n cursor: 'pointer',\n }),\n}));\n"]}
|
|
@@ -12,7 +12,7 @@ import k from '@mui/material/Stack';
|
|
|
12
12
|
import Ee from '@mui/material/Popper';
|
|
13
13
|
import { styled } from '@mui/material/styles';
|
|
14
14
|
|
|
15
|
-
var X=memo(({params:e,name:r,placeholder:o,error:t,helperText:n,label:i,required:a,loading:p,tabIndex:m})=>jsx(Ce,{...e,name:r,placeholder:o,fullWidth:!0,error:!!t,helperText:n,label:i,required:a,InputProps:{...e.InputProps,endAdornment:jsxs(Fragment,{children:[p?jsx(Se,{color:"primary",size:20}):null,e.InputProps.endAdornment]})},inputProps:{...e.inputProps,name:r,tabIndex:m}}));X.displayName="AutocompleteDetailedInput";var q=X;var J=styled(Ee)({[`& .${autocompleteClasses.listbox}`]:{boxSizing:"border-box","& ul":{padding:0,margin:0}}}),K=styled(k)(({theme:e})=>({flex:1,width:"100%",gap:6,[e.breakpoints.down("md")]:{flexDirection:"column"},[e.breakpoints.up("md")]:{flexDirection:"row"}})),M=styled(k)(({theme:e})=>({flex:1,maxWidth:"100%",gap:6,[e.breakpoints.up("md")]:{flex:"1 1 calc(50% - 8px)",width:"calc(50% - 8px)",minWidth:"calc(50% - 8px)",maxWidth:"calc(50% - 8px)"}})),Q=styled(k)(({theme:e})=>({position:"relative",alignItems:"center",justifyContent:"center",width:68,height:68,borderRadius:8,overflow:"hidden",img:{position:"absolute",width:"100%",height:"100%",objectFit:"cover"},[e.breakpoints.down("sm")]:{display:"none"}})),Y=styled("hr")(({theme:e})=>({borderStyle:"dashed",position:"absolute",bottom:0,width:"100%",margin:0,borderColor:e.palette.divider,borderWidth:"0 0 thin"}));var ke={width:68,height:68,borderRadius:1},re=memo(({option:e})=>{let r=useMemo(()=>Object.keys(e).filter(t=>t.startsWith("field")).map((t,n)=>{let i=e[t];if(i&&typeof i=="object"){let a="label"in i?i.label:null,p="value"in i?i.value:null;return jsxs(te,{component:"span",variant:"body2",color:"textPrimary",noWrap:!0,children:[a,": ",p]},`${t}:${n}`)}}),[e]),o=useMemo(()=>e.image?jsx("img",{alt:"Imagem",src:e.image}):jsx(a,{alt:e.label||e.value.toString(),name:e.label||e.value.toString(),sx:ke}),[e]);return jsxs(Fragment,{children:[jsxs(k,{direction:"row",gap:2,margin:2,children:[jsx(Q,{children:o}),jsxs(k,{flex:1,overflow:"hidden",children:[jsxs(te,{variant:"subtitle2",color:"textPrimary",noWrap:!0,flex:1,children:[e.value," - ",e.label]}),r.length>0&&jsxs(K,{width:1,children:[jsxs(M,{children:[r[0]?r[0]:void 0,r[1]?r[1]:void 0]}),(r[2]||r[3])&&jsxs(M,{children:[r[2]?r[2]:void 0,r[3]?r[3]:void 0]})]})]})]}),jsx(Y,{className:"border"})]})});re.displayName="ListItem";var x=re;var H=8,oe=memo(e=>{let{data:r,index:o,style:t}=e,n=r[o],i={...t,top:t.top+H,paddingTop:8,display:"block"};if(Object.prototype.hasOwnProperty.call(n,"group")){let m=n;return jsx(He,{component:"div",style:i,children:m.group},`list-box-item-group-${m.group}`)}let a=n,p=a.props?.children?.props;return jsx(te,{component:"li",...a.props,noWrap:!0,style:i,children:jsx(x,{...p})})});oe.displayName="ListboxRow";var ne=oe;var se=$.createContext({}),pe=forwardRef((e,r)=>{let o=$.useContext(se);return jsx("div",{ref:r,...e,...o})});pe.displayName="OuterElementType";var We=e=>{let r=$.useRef(null);return useEffect(()=>{r.current!=null&&r.current.resetAfterIndex(0,!0);},[e]),r},Ve=forwardRef(function(r,o){let{children:t,"data-item-height":n,...i}=r,a=useMemo(()=>{let l=[];return t.forEach(c=>{l.push(c),Object.prototype.hasOwnProperty.call(c,"children")&&Array.isArray(c.children)&&l.push(...c.children);}),l},[t]),p=a.length,m=n>112?n:112,f=useCallback(l=>Object.prototype.hasOwnProperty.call(l,"group")?48:m,[m]),g=useMemo(()=>p>8?8*m:a.map(f).reduce((l,c)=>l+c,0),[p,m,a,f]),v=We(p),S=useCallback(l=>f(a[l]),[a,f]);return jsx("div",{ref:o,children:jsx(se.Provider,{value:i,children:jsx(VariableSizeList,{itemData:a,height:g+2*H,width:"100%",ref:v,outerElementType:pe,innerElementType:"ul",itemSize:S,overscanCount:5,itemCount:p,children:ne})})})}),me=Ve;var Xe=e=>e&&typeof e=="object"?e.value.toString():e.toString(),qe=e=>e,Je=(e,r)=>{let o=r.inputValue.toLocaleUpperCase();return e.filter(t=>`${t.field1?.value} ${t.field1?.label} ${t.field2?.label} ${t.field2?.value} ${t.field3?.label} ${t.field3?.value} ${t.field4?.label} ${t.field4?.value} ${t.field5?.label} ${t.field5?.value} ${t.label}${t.value}`.toLocaleUpperCase().includes(o))},Ke=({key:e,...r},o)=>jsx("li",{...r,style:{display:"block"},children:jsx(x,{option:o})},e),ce=memo(forwardRef(({name:e,label:r,value:o,options:t=[],loading:n,noOptionsText:i="Nenhum resultado encontrado.",loadingText:a="Carregando op\xE7\xF5es...",error:p,helperText:m,placeholder:f,onChange:g,groupBy:v,disabled:S,multiple:l,required:c,renderOption:de,tabIndex:N,onSearch:C,onInputChange:O,onBlur:T,...fe},be)=>{let[z,w]=useState(""),[W,E]=useState(null),D=useDeferredValue(z),
|
|
15
|
+
var X=memo(({params:e,name:r,placeholder:o,error:t,helperText:n,label:i,required:a,loading:p,tabIndex:m})=>jsx(Ce,{...e,name:r,placeholder:o,fullWidth:!0,error:!!t,helperText:n,label:i,required:a,InputProps:{...e.InputProps,endAdornment:jsxs(Fragment,{children:[p?jsx(Se,{color:"primary",size:20}):null,e.InputProps.endAdornment]})},inputProps:{...e.inputProps,name:r,tabIndex:m}}));X.displayName="AutocompleteDetailedInput";var q=X;var J=styled(Ee)({[`& .${autocompleteClasses.listbox}`]:{boxSizing:"border-box","& ul":{padding:0,margin:0}}}),K=styled(k)(({theme:e})=>({flex:1,width:"100%",gap:6,[e.breakpoints.down("md")]:{flexDirection:"column"},[e.breakpoints.up("md")]:{flexDirection:"row"}})),M=styled(k)(({theme:e})=>({flex:1,maxWidth:"100%",gap:6,[e.breakpoints.up("md")]:{flex:"1 1 calc(50% - 8px)",width:"calc(50% - 8px)",minWidth:"calc(50% - 8px)",maxWidth:"calc(50% - 8px)"}})),Q=styled(k)(({theme:e})=>({position:"relative",alignItems:"center",justifyContent:"center",width:68,height:68,borderRadius:8,overflow:"hidden",img:{position:"absolute",width:"100%",height:"100%",objectFit:"cover"},[e.breakpoints.down("sm")]:{display:"none"}})),Y=styled("hr")(({theme:e})=>({borderStyle:"dashed",position:"absolute",bottom:0,width:"100%",margin:0,borderColor:e.palette.divider,borderWidth:"0 0 thin"}));var ke={width:68,height:68,borderRadius:1},re=memo(({option:e})=>{let r=useMemo(()=>Object.keys(e).filter(t=>t.startsWith("field")).map((t,n)=>{let i=e[t];if(i&&typeof i=="object"){let a="label"in i?i.label:null,p="value"in i?i.value:null;return jsxs(te,{component:"span",variant:"body2",color:"textPrimary",noWrap:!0,children:[a,": ",p]},`${t}:${n}`)}}),[e]),o=useMemo(()=>e.image?jsx("img",{alt:"Imagem",src:e.image}):jsx(a,{alt:e.label||e.value.toString(),name:e.label||e.value.toString(),sx:ke}),[e]);return jsxs(Fragment,{children:[jsxs(k,{direction:"row",gap:2,margin:2,children:[jsx(Q,{children:o}),jsxs(k,{flex:1,overflow:"hidden",children:[jsxs(te,{variant:"subtitle2",color:"textPrimary",noWrap:!0,flex:1,children:[e.value," - ",e.label]}),r.length>0&&jsxs(K,{width:1,children:[jsxs(M,{children:[r[0]?r[0]:void 0,r[1]?r[1]:void 0]}),(r[2]||r[3])&&jsxs(M,{children:[r[2]?r[2]:void 0,r[3]?r[3]:void 0]})]})]})]}),jsx(Y,{className:"border"})]})});re.displayName="ListItem";var x=re;var H=8,oe=memo(e=>{let{data:r,index:o,style:t}=e,n=r[o],i={...t,top:t.top+H,paddingTop:8,display:"block"};if(Object.prototype.hasOwnProperty.call(n,"group")){let m=n;return jsx(He,{component:"div",style:i,children:m.group},`list-box-item-group-${m.group}`)}let a=n,p=a.props?.children?.props;return jsx(te,{component:"li",...a.props,noWrap:!0,style:i,children:jsx(x,{...p})})});oe.displayName="ListboxRow";var ne=oe;var se=$.createContext({}),pe=forwardRef((e,r)=>{let o=$.useContext(se);return jsx("div",{ref:r,...e,...o})});pe.displayName="OuterElementType";var We=e=>{let r=$.useRef(null);return useEffect(()=>{r.current!=null&&r.current.resetAfterIndex(0,!0);},[e]),r},Ve=forwardRef(function(r,o){let{children:t,"data-item-height":n,...i}=r,a=useMemo(()=>{let l=[];return t.forEach(c=>{l.push(c),Object.prototype.hasOwnProperty.call(c,"children")&&Array.isArray(c.children)&&l.push(...c.children);}),l},[t]),p=a.length,m=n>112?n:112,f=useCallback(l=>Object.prototype.hasOwnProperty.call(l,"group")?48:m,[m]),g=useMemo(()=>p>8?8*m:a.map(f).reduce((l,c)=>l+c,0),[p,m,a,f]),v=We(p),S=useCallback(l=>f(a[l]),[a,f]);return jsx("div",{ref:o,children:jsx(se.Provider,{value:i,children:jsx(VariableSizeList,{itemData:a,height:g+2*H,width:"100%",ref:v,outerElementType:pe,innerElementType:"ul",itemSize:S,overscanCount:5,itemCount:p,children:ne})})})}),me=Ve;var Xe=e=>e&&typeof e=="object"?e.value.toString():e.toString(),qe=e=>e,Je=(e,r)=>{let o=r.inputValue.toLocaleUpperCase();return e.filter(t=>`${t.field1?.value} ${t.field1?.label} ${t.field2?.label} ${t.field2?.value} ${t.field3?.label} ${t.field3?.value} ${t.field4?.label} ${t.field4?.value} ${t.field5?.label} ${t.field5?.value} ${t.label}${t.value}`.toLocaleUpperCase().includes(o))},Ke=({key:e,...r},o)=>jsx("li",{...r,style:{display:"block"},children:jsx(x,{option:o})},e),ce=memo(forwardRef(({name:e,label:r,value:o,options:t=[],loading:n,noOptionsText:i="Nenhum resultado encontrado.",loadingText:a="Carregando op\xE7\xF5es...",error:p,helperText:m,placeholder:f,onChange:g,groupBy:v,disabled:S,multiple:l,required:c,renderOption:de,tabIndex:N,onSearch:C,onInputChange:O,onBlur:T,...fe},be)=>{let[z,w]=useState(""),[W,E]=useState(null),D=useDeferredValue(z),h=useRef(!1),V=b("down","md"),ge=useMemo(()=>l?(Array.isArray(o)?o:[]).reduce((u,Le)=>{let j=t.find(Ie=>Ie.value.toString()===Le.toString());return j?[...u,j]:[...u]},[]):t.find(s=>s.value.toString()===o?.toString())||null,[t,o,l]),B=useMemo(()=>V&&t[0]?Object.keys(t[0]).length*24:void 0,[V,t]),he=useCallback((b,s,u)=>{if(O&&O(b,s,u),u==="input"){h.current=!0,E(u),C&&C(s),w(s);return}if(u==="reset"){if(h.current)return;E(u),w(s);return}u==="clear"&&(h.current=!1,E(u),w(""));},[O,C]),ye=useCallback((b,s)=>{if(h.current=!1,!s){g(l?[]:null);return}if(Array.isArray(s)){g(s.map(Xe));return}g(typeof s=="string"?s.toString():s.value.toString());},[g,l]),Re=useMemo(()=>({"data-item-height":B}),[B]),xe=useCallback(b=>jsx(q,{params:b,name:e,placeholder:f,error:p,helperText:m,label:r,required:c,loading:n,tabIndex:N}),[e,f,p,m,r,c,n,N]),Pe=useCallback(b=>{h.current=!1,T&&T(b);},[T]),Ae=useMemo(()=>!D||W==="reset"?t:Je(t,{inputValue:D}),[t,D,W]);return jsx(Ue,{ref:be,value:ge,inputValue:z,onInputChange:he,options:Ae,loading:n,noOptionsText:i,loadingText:a,disabled:n||S,disableListWrap:!0,PopperComponent:J,ListboxProps:Re,ListboxComponent:de?void 0:me,onChange:ye,renderOption:Ke,renderGroup:qe,groupBy:v,multiple:l,renderInput:xe,onBlur:Pe,...fe})}));ce.displayName="Autocomplete";var $t=ce;
|
|
16
16
|
|
|
17
17
|
export { $t as a };
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
18
|
+
//# sourceMappingURL=chunk-D7UUJ7FJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AutocompleteDetailed/index.tsx","../src/components/AutocompleteDetailed/AutocompleteDetailedInput.tsx","../src/components/AutocompleteDetailed/Listbox.tsx","../src/components/AutocompleteDetailed/ListboxRow.tsx","../src/components/AutocompleteDetailed/ListItem.tsx","../src/components/AutocompleteDetailed/styles.ts"],"names":["forwardRef","memo","useCallback","useDeferredValue","useMemo","useRef","useState","MuiAutocomplete","CircularProgress","TextField","Fragment","jsx","jsxs","AutocompleteDetailedInput","params","name","placeholder","error","helperText","label","required","loading","tabIndex","AutocompleteDetailedInput_default","React","useEffect","VariableSizeList","ListSubheader","Typography","Stack","autocompleteClasses","Popper","styled","StyledPopper","OptionBox","theme","OptionContent","ImageContainer","DividerStyled","AVATAR_SX","ListItem","option","options","key","index","data","value","image","CustomAvatar_default","ListItem_default","LISTBOX_PADDING","ListboxRow","props","style","dataSet","inlineStyle","groupItem","element","listItemProps","ListboxRow_default","OuterElementContext","OuterElementType","ref","outerProps","useResetCache","ListboxComponent","children","dataItemHeight","other","itemData","item","itemCount","itemSize","getChildSize","child","getHeight","a","b","gridRef","getItemSize","Listbox_default","getOptionValue","optionValue","renderGroup","filterOptions","opts","state","searchValue","opt","renderOptionListItem","AutocompleteDetailed","noOptionsText","loadingText","onChange","groupBy","disabled","multiple","renderOption","onSearch","onInputChange","onBlur","inputValue","setInputValue","inputReason","setInputReason","deferredInputValue","isTypingRef","mdDown","useResponsive_default","formattedValue","acc","curr","optionHeight","handleInputChange","event","eventValue","reason","handleChange","_","listboxProps","memoizedRenderInput","handleBlur","filteredOptions","AutocompleteDetailed_default"],"mappings":"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","sourcesContent":["import {\n forwardRef,\n HTMLAttributes,\n memo,\n ReactNode,\n useCallback,\n useDeferredValue,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport MuiAutocomplete, {\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n} from '@mui/material/Autocomplete';\n\nimport useResponsive from 'hooks/useResponsive';\nimport { Option } from 'types/option';\n\nimport AutocompleteDetailedInput from './AutocompleteDetailedInput';\nimport ListboxComponent from './Listbox';\nimport ListItem from './ListItem';\nimport { AutocompleteDetailedProps } from './props';\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 filterOptions = (opts: Option[], state: { inputValue: string }) => {\n const searchValue = state.inputValue.toLocaleUpperCase();\n return opts.filter(opt => {\n const search = `${opt.field1?.value} ${opt.field1?.label} ${opt.field2?.label} ${opt.field2?.value} ${opt.field3?.label} ${opt.field3?.value} ${opt.field4?.label} ${opt.field4?.value} ${opt.field5?.label} ${opt.field5?.value} ${opt.label}${opt.value}`;\n return search.toLocaleUpperCase().includes(searchValue);\n });\n};\n\nconst renderOptionListItem = (\n { key, ...props }: React.HTMLAttributes<HTMLLIElement> & { key: string },\n option: Option,\n) => {\n return (\n <li key={key} {...props} style={{ display: 'block' }}>\n <ListItem option={option} />\n </li>\n );\n};\n\nconst AutocompleteDetailed = memo(\n forwardRef<unknown, AutocompleteDetailedProps>(\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 disabled,\n multiple,\n required,\n renderOption,\n tabIndex,\n onSearch,\n onInputChange,\n onBlur,\n ...other\n },\n ref,\n ) => {\n const [inputValue, setInputValue] = useState<string>('');\n const [inputReason, setInputReason] = useState<\n 'input' | 'reset' | 'clear' | null\n >(null);\n const deferredInputValue = useDeferredValue(inputValue);\n const isTypingRef = useRef(false);\n\n const mdDown = useResponsive('down', 'md');\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 = options.find(\n opt => opt.value.toString() === value?.toString(),\n );\n\n return item || null;\n }, [options, value, multiple]);\n\n const optionHeight = useMemo(\n () =>\n mdDown && options[0]\n ? Object.keys(options[0]).length * 24\n : undefined,\n [mdDown, options],\n );\n\n const handleInputChange = useCallback(\n (\n event: React.SyntheticEvent,\n eventValue: string,\n reason: 'input' | 'reset' | 'clear',\n ) => {\n if (onInputChange) onInputChange(event, eventValue, reason);\n\n if (reason === 'input') {\n isTypingRef.current = true;\n setInputReason(reason);\n if (onSearch) onSearch(eventValue);\n setInputValue(eventValue);\n\n return;\n }\n\n if (reason === 'reset') {\n if (isTypingRef.current) {\n return;\n }\n setInputReason(reason);\n setInputValue(eventValue);\n return;\n }\n\n if (reason === 'clear') {\n isTypingRef.current = false;\n setInputReason(reason);\n setInputValue('');\n }\n },\n [onInputChange, onSearch],\n );\n\n const handleChange = useCallback(\n (\n _: React.SyntheticEvent,\n option: Option | (string | Option)[] | string | null,\n ) => {\n isTypingRef.current = false;\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 listboxProps = useMemo(\n () =>\n ({\n 'data-item-height': optionHeight,\n }) as HTMLAttributes<HTMLUListElement>,\n [optionHeight],\n );\n\n const memoizedRenderInput = useCallback(\n (params: AutocompleteRenderInputParams) => (\n <AutocompleteDetailedInput\n params={params}\n name={name}\n placeholder={placeholder}\n error={error}\n helperText={helperText}\n label={label}\n required={required}\n loading={loading}\n tabIndex={tabIndex}\n />\n ),\n [\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n loading,\n tabIndex,\n ],\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n isTypingRef.current = false;\n if (onBlur) onBlur(event);\n },\n [onBlur],\n );\n\n const filteredOptions = useMemo(() => {\n if (!deferredInputValue || inputReason === 'reset') return options;\n return filterOptions(options, { inputValue: deferredInputValue });\n }, [options, deferredInputValue, inputReason]);\n\n return (\n <MuiAutocomplete\n ref={ref}\n value={formattedValue}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n options={filteredOptions}\n loading={loading}\n noOptionsText={noOptionsText}\n loadingText={loadingText}\n disabled={loading || disabled}\n disableListWrap\n PopperComponent={StyledPopper}\n ListboxProps={listboxProps}\n ListboxComponent={renderOption ? undefined : ListboxComponent}\n onChange={handleChange}\n renderOption={renderOptionListItem}\n renderGroup={renderGroup}\n groupBy={groupBy}\n multiple={multiple}\n renderInput={memoizedRenderInput}\n onBlur={handleBlur}\n {...other}\n />\n );\n },\n ),\n);\n\nAutocompleteDetailed.displayName = 'Autocomplete';\n\nexport default AutocompleteDetailed;\n","import { memo } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\n\nimport { AutocompleteDetailedInputProps } from './props';\n\nconst AutocompleteDetailedInput = memo(\n ({\n params,\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n loading,\n tabIndex,\n }: AutocompleteDetailedInputProps) => (\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 InputProps={{\n ...params.InputProps,\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 />\n ),\n);\n\nAutocompleteDetailedInput.displayName = 'AutocompleteDetailedInput';\n\nexport default AutocompleteDetailedInput;\n","import React, {\n forwardRef,\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { VariableSizeList } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\n\nimport ListboxRow, { LISTBOX_PADDING } from './ListboxRow';\n\nconst OuterElementContext = React.createContext({});\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = React.useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nOuterElementType.displayName = 'OuterElementType';\n\nconst useResetCache = (data: number) => {\n const ref = React.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 React.HTMLAttributes<HTMLElement>\n>(function ListboxComponent(props, ref) {\n const {\n children,\n // eslint-disable-next-line react/prop-types\n 'data-item-height': dataItemHeight,\n ...other\n } = props as { 'data-item-height': number } & HTMLAttributes<HTMLElement>;\n\n const itemData: (React.ReactElement | AutocompleteRenderGroupParams)[] =\n useMemo(() => {\n const data: (React.ReactElement | AutocompleteRenderGroupParams)[] = [];\n (\n children as (React.ReactElement | AutocompleteRenderGroupParams)[]\n ).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 React.ReactElement[]),\n );\n }\n });\n return data;\n }, [children]);\n const itemCount = itemData.length;\n const itemSize = dataItemHeight > 112 ? dataItemHeight : 112;\n\n const getChildSize = useCallback(\n (child: React.ReactElement | AutocompleteRenderGroupParams) => {\n if (Object.prototype.hasOwnProperty.call(child, 'group')) {\n return 48;\n }\n\n return itemSize;\n },\n [itemSize],\n );\n\n const getHeight = 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\n const getItemSize = useCallback(\n (index: number) => {\n return getChildSize(itemData[index]);\n },\n [itemData, getChildSize],\n );\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={other}>\n <VariableSizeList\n itemData={itemData}\n height={getHeight + 2 * LISTBOX_PADDING}\n width=\"100%\"\n ref={gridRef}\n outerElementType={OuterElementType}\n innerElementType=\"ul\"\n itemSize={getItemSize}\n overscanCount={5}\n itemCount={itemCount}\n >\n {ListboxRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n});\n\nexport default ListboxComponent;\n","import { memo } from 'react';\nimport { ListChildComponentProps } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Typography from '@mui/material/Typography';\n\nimport ListItem from './ListItem';\nimport { ListItemProps } 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 | React.ReactElement\n | AutocompleteRenderGroupParams;\n\n const inlineStyle = {\n ...style,\n top: (style.top as number) + LISTBOX_PADDING,\n paddingTop: 8,\n display: 'block',\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 element = dataSet as React.ReactElement;\n const listItemProps = element.props?.children?.props as ListItemProps;\n\n return (\n <Typography component=\"li\" {...element.props} noWrap style={inlineStyle}>\n <ListItem {...listItemProps} />\n </Typography>\n );\n});\n\nListboxRow.displayName = 'ListboxRow';\n\nexport { LISTBOX_PADDING };\nexport default ListboxRow;\n","import { memo, useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport CustomAvatar from 'components/CustomAvatar';\n\nimport { ListItemProps } from './props';\nimport {\n DividerStyled,\n ImageContainer,\n OptionBox,\n OptionContent,\n} from './styles';\n\nconst AVATAR_SX = { width: 68, height: 68, borderRadius: 1 };\n\nconst ListItem = memo(({ option }: ListItemProps) => {\n const options = useMemo(\n () =>\n Object.keys(option)\n .filter(key => key.startsWith('field'))\n .map((key, index) => {\n const data = option[key];\n\n if (data && typeof data === 'object') {\n const label = ('label' in data ? data.label : null) as string;\n const value = ('value' in data ? data.value : null) as string;\n\n return (\n <Typography\n key={`${key}:${index}`}\n component=\"span\"\n variant=\"body2\"\n color=\"textPrimary\"\n noWrap\n >\n {label}: {value}\n </Typography>\n );\n }\n }),\n [option],\n );\n\n const image = useMemo(\n () =>\n option.image ? (\n <img alt=\"Imagem\" src={option.image} />\n ) : (\n <CustomAvatar\n alt={option.label || option.value.toString()}\n name={option.label || option.value.toString()}\n sx={AVATAR_SX}\n />\n ),\n [option],\n );\n\n return (\n <>\n <Stack direction=\"row\" gap={2} margin={2}>\n <ImageContainer>{image}</ImageContainer>\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"subtitle2\" color=\"textPrimary\" noWrap flex={1}>\n {option.value} - {option.label}\n </Typography>\n\n {options.length > 0 && (\n <OptionBox width={1}>\n <OptionContent>\n {options[0] ? options[0] : undefined}\n {options[1] ? options[1] : undefined}\n </OptionContent>\n\n {(options[2] || options[3]) && (\n <OptionContent>\n {options[2] ? options[2] : undefined}\n {options[3] ? options[3] : undefined}\n </OptionContent>\n )}\n </OptionBox>\n )}\n </Stack>\n </Stack>\n\n <DividerStyled className=\"border\" />\n </>\n );\n});\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n","import { autocompleteClasses } from '@mui/material/Autocomplete';\nimport Popper from '@mui/material/Popper';\nimport Stack from '@mui/material/Stack';\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\nexport const OptionBox = styled(Stack)(({ theme }) => ({\n flex: 1,\n width: '100%',\n gap: 6,\n\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n\n [theme.breakpoints.up('md')]: {\n flexDirection: 'row',\n },\n}));\n\nexport const OptionContent = styled(Stack)(({ theme }) => ({\n flex: 1,\n maxWidth: '100%',\n gap: 6,\n\n [theme.breakpoints.up('md')]: {\n flex: '1 1 calc(50% - 8px)',\n width: 'calc(50% - 8px)',\n minWidth: 'calc(50% - 8px)',\n maxWidth: 'calc(50% - 8px)',\n },\n}));\n\nexport const ImageContainer = styled(Stack)(({ theme }) => ({\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n width: 68,\n height: 68,\n borderRadius: 8,\n overflow: 'hidden',\n\n img: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n}));\n\nexport const DividerStyled = styled('hr')(({ theme }) => ({\n borderStyle: 'dashed',\n position: 'absolute',\n bottom: 0,\n width: '100%',\n margin: 0,\n borderColor: theme.palette.divider,\n borderWidth: '0 0 thin',\n}));\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { S as SelectableCardsProps } from '../../props-
|
|
2
|
+
import { S as SelectableCardsProps } from '../../props-a322bf2a.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
|
|
5
|
-
declare const SelectableCards: ({ title, action, loading, items, values, onChange, disabled, }: SelectableCardsProps) => react_jsx_runtime.JSX.Element;
|
|
5
|
+
declare const SelectableCards: ({ title, action, loading, items, values, onChange, onSearch, disabled, }: SelectableCardsProps) => react_jsx_runtime.JSX.Element;
|
|
6
6
|
|
|
7
7
|
export { SelectableCards as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { S as SelectableCardsProps$1 } from '../../../props-
|
|
2
|
+
import { S as SelectableCardsProps$1 } from '../../../props-a322bf2a.js';
|
|
3
3
|
import { BaseField } from '../../../types/baseField.js';
|
|
4
4
|
import 'react';
|
|
5
5
|
import 'react-hook-form';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AutocompleteDetailed/index.tsx","../src/components/AutocompleteDetailed/AutocompleteDetailedInput.tsx","../src/components/AutocompleteDetailed/Listbox.tsx","../src/components/AutocompleteDetailed/ListboxRow.tsx","../src/components/AutocompleteDetailed/ListItem.tsx","../src/components/AutocompleteDetailed/styles.ts"],"names":["forwardRef","memo","useCallback","useDeferredValue","useMemo","useRef","useState","MuiAutocomplete","CircularProgress","TextField","Fragment","jsx","jsxs","AutocompleteDetailedInput","params","name","placeholder","error","helperText","label","required","loading","tabIndex","AutocompleteDetailedInput_default","React","useEffect","VariableSizeList","ListSubheader","Typography","Stack","autocompleteClasses","Popper","styled","StyledPopper","OptionBox","theme","OptionContent","ImageContainer","DividerStyled","AVATAR_SX","ListItem","option","options","key","index","data","value","image","CustomAvatar_default","ListItem_default","LISTBOX_PADDING","ListboxRow","props","style","dataSet","inlineStyle","groupItem","element","listItemProps","ListboxRow_default","OuterElementContext","OuterElementType","ref","outerProps","useResetCache","ListboxComponent","children","dataItemHeight","other","itemData","item","itemCount","itemSize","getChildSize","child","getHeight","a","b","gridRef","getItemSize","Listbox_default","getOptionValue","optionValue","renderGroup","filterOptions","opts","state","searchValue","opt","renderOptionListItem","AutocompleteDetailed","noOptionsText","loadingText","onChange","groupBy","disabled","multiple","renderOption","onSearch","onInputChange","onBlur","inputValue","setInputValue","inputReason","setInputReason","deferredInputValue","isTypingRef","mdDown","useResponsive_default","formattedValue","acc","curr","optionHeight","handleInputChange","event","eventValue","reason","handleChange","_","listboxProps","memoizedRenderInput","handleBlur","filteredOptions","AutocompleteDetailed_default"],"mappings":"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","sourcesContent":["import {\n forwardRef,\n HTMLAttributes,\n memo,\n ReactNode,\n useCallback,\n useDeferredValue,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport MuiAutocomplete, {\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n} from '@mui/material/Autocomplete';\n\nimport useResponsive from 'hooks/useResponsive';\nimport { Option } from 'types/option';\n\nimport AutocompleteDetailedInput from './AutocompleteDetailedInput';\nimport ListboxComponent from './Listbox';\nimport ListItem from './ListItem';\nimport { AutocompleteDetailedProps } from './props';\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 filterOptions = (opts: Option[], state: { inputValue: string }) => {\n const searchValue = state.inputValue.toLocaleUpperCase();\n return opts.filter(opt => {\n const search = `${opt.field1?.value} ${opt.field1?.label} ${opt.field2?.label} ${opt.field2?.value} ${opt.field3?.label} ${opt.field3?.value} ${opt.field4?.label} ${opt.field4?.value} ${opt.field5?.label} ${opt.field5?.value} ${opt.label}${opt.value}`;\n return search.toLocaleUpperCase().includes(searchValue);\n });\n};\n\nconst renderOptionListItem = (\n { key, ...props }: React.HTMLAttributes<HTMLLIElement> & { key: string },\n option: Option,\n) => {\n return (\n <li key={key} {...props} style={{ display: 'block' }}>\n <ListItem option={option} />\n </li>\n );\n};\n\nconst AutocompleteDetailed = memo(\n forwardRef<unknown, AutocompleteDetailedProps>(\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 disabled,\n multiple,\n required,\n renderOption,\n tabIndex,\n onSearch,\n onInputChange,\n onBlur,\n ...other\n },\n ref,\n ) => {\n const [inputValue, setInputValue] = useState<string>('');\n const [inputReason, setInputReason] = useState<\n 'input' | 'reset' | 'clear' | null\n >(null);\n const deferredInputValue = useDeferredValue(inputValue);\n const isTypingRef = useRef(false);\n\n const mdDown = useResponsive('down', 'md');\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 = options.find(\n opt => opt.value.toString() === value?.toString(),\n );\n\n return item || null;\n }, [options, value, multiple]);\n\n const optionHeight = useMemo(\n () =>\n mdDown && options[0]\n ? Object.keys(options[0]).length * 24\n : undefined,\n [mdDown, options],\n );\n\n const handleInputChange = useCallback(\n (\n event: React.SyntheticEvent,\n eventValue: string,\n reason: 'input' | 'reset' | 'clear',\n ) => {\n if (onInputChange) onInputChange(event, eventValue, reason);\n\n if (reason === 'input') {\n isTypingRef.current = true;\n setInputReason(reason);\n if (onSearch) onSearch(eventValue);\n setInputValue(eventValue);\n\n return;\n }\n\n if (reason === 'reset') {\n if (isTypingRef.current) {\n return;\n }\n setInputReason(reason);\n setInputValue(eventValue);\n return;\n }\n\n if (reason === 'clear') {\n isTypingRef.current = false;\n setInputReason(reason);\n setInputValue('');\n }\n },\n [onInputChange, onSearch],\n );\n\n const handleChange = useCallback(\n (\n _: React.SyntheticEvent,\n option: Option | (string | Option)[] | string | null,\n ) => {\n isTypingRef.current = false;\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 listboxProps = useMemo(\n () =>\n ({\n 'data-item-height': optionHeight,\n }) as HTMLAttributes<HTMLUListElement>,\n [optionHeight],\n );\n\n const memoizedRenderInput = useCallback(\n (params: AutocompleteRenderInputParams) => (\n <AutocompleteDetailedInput\n params={params}\n name={name}\n placeholder={placeholder}\n error={error}\n helperText={helperText}\n label={label}\n required={required}\n loading={loading}\n tabIndex={tabIndex}\n />\n ),\n [\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n loading,\n tabIndex,\n ],\n );\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (onBlur) onBlur(event);\n },\n [onBlur],\n );\n\n const filteredOptions = useMemo(() => {\n if (!deferredInputValue || inputReason === 'reset') return options;\n return filterOptions(options, { inputValue: deferredInputValue });\n }, [options, deferredInputValue, inputReason]);\n\n return (\n <MuiAutocomplete\n ref={ref}\n value={formattedValue}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n options={filteredOptions}\n loading={loading}\n noOptionsText={noOptionsText}\n loadingText={loadingText}\n disabled={loading || disabled}\n disableListWrap\n PopperComponent={StyledPopper}\n ListboxProps={listboxProps}\n ListboxComponent={renderOption ? undefined : ListboxComponent}\n onChange={handleChange}\n renderOption={renderOptionListItem}\n renderGroup={renderGroup}\n groupBy={groupBy}\n multiple={multiple}\n renderInput={memoizedRenderInput}\n onBlur={handleBlur}\n {...other}\n />\n );\n },\n ),\n);\n\nAutocompleteDetailed.displayName = 'Autocomplete';\n\nexport default AutocompleteDetailed;\n","import { memo } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\n\nimport { AutocompleteDetailedInputProps } from './props';\n\nconst AutocompleteDetailedInput = memo(\n ({\n params,\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n loading,\n tabIndex,\n }: AutocompleteDetailedInputProps) => (\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 InputProps={{\n ...params.InputProps,\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 />\n ),\n);\n\nAutocompleteDetailedInput.displayName = 'AutocompleteDetailedInput';\n\nexport default AutocompleteDetailedInput;\n","import React, {\n forwardRef,\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { VariableSizeList } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\n\nimport ListboxRow, { LISTBOX_PADDING } from './ListboxRow';\n\nconst OuterElementContext = React.createContext({});\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = React.useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nOuterElementType.displayName = 'OuterElementType';\n\nconst useResetCache = (data: number) => {\n const ref = React.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 React.HTMLAttributes<HTMLElement>\n>(function ListboxComponent(props, ref) {\n const {\n children,\n // eslint-disable-next-line react/prop-types\n 'data-item-height': dataItemHeight,\n ...other\n } = props as { 'data-item-height': number } & HTMLAttributes<HTMLElement>;\n\n const itemData: (React.ReactElement | AutocompleteRenderGroupParams)[] =\n useMemo(() => {\n const data: (React.ReactElement | AutocompleteRenderGroupParams)[] = [];\n (\n children as (React.ReactElement | AutocompleteRenderGroupParams)[]\n ).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 React.ReactElement[]),\n );\n }\n });\n return data;\n }, [children]);\n const itemCount = itemData.length;\n const itemSize = dataItemHeight > 112 ? dataItemHeight : 112;\n\n const getChildSize = useCallback(\n (child: React.ReactElement | AutocompleteRenderGroupParams) => {\n if (Object.prototype.hasOwnProperty.call(child, 'group')) {\n return 48;\n }\n\n return itemSize;\n },\n [itemSize],\n );\n\n const getHeight = 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\n const getItemSize = useCallback(\n (index: number) => {\n return getChildSize(itemData[index]);\n },\n [itemData, getChildSize],\n );\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={other}>\n <VariableSizeList\n itemData={itemData}\n height={getHeight + 2 * LISTBOX_PADDING}\n width=\"100%\"\n ref={gridRef}\n outerElementType={OuterElementType}\n innerElementType=\"ul\"\n itemSize={getItemSize}\n overscanCount={5}\n itemCount={itemCount}\n >\n {ListboxRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n});\n\nexport default ListboxComponent;\n","import { memo } from 'react';\nimport { ListChildComponentProps } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Typography from '@mui/material/Typography';\n\nimport ListItem from './ListItem';\nimport { ListItemProps } 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 | React.ReactElement\n | AutocompleteRenderGroupParams;\n\n const inlineStyle = {\n ...style,\n top: (style.top as number) + LISTBOX_PADDING,\n paddingTop: 8,\n display: 'block',\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 element = dataSet as React.ReactElement;\n const listItemProps = element.props?.children?.props as ListItemProps;\n\n return (\n <Typography component=\"li\" {...element.props} noWrap style={inlineStyle}>\n <ListItem {...listItemProps} />\n </Typography>\n );\n});\n\nListboxRow.displayName = 'ListboxRow';\n\nexport { LISTBOX_PADDING };\nexport default ListboxRow;\n","import { memo, useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport CustomAvatar from 'components/CustomAvatar';\n\nimport { ListItemProps } from './props';\nimport {\n DividerStyled,\n ImageContainer,\n OptionBox,\n OptionContent,\n} from './styles';\n\nconst AVATAR_SX = { width: 68, height: 68, borderRadius: 1 };\n\nconst ListItem = memo(({ option }: ListItemProps) => {\n const options = useMemo(\n () =>\n Object.keys(option)\n .filter(key => key.startsWith('field'))\n .map((key, index) => {\n const data = option[key];\n\n if (data && typeof data === 'object') {\n const label = ('label' in data ? data.label : null) as string;\n const value = ('value' in data ? data.value : null) as string;\n\n return (\n <Typography\n key={`${key}:${index}`}\n component=\"span\"\n variant=\"body2\"\n color=\"textPrimary\"\n noWrap\n >\n {label}: {value}\n </Typography>\n );\n }\n }),\n [option],\n );\n\n const image = useMemo(\n () =>\n option.image ? (\n <img alt=\"Imagem\" src={option.image} />\n ) : (\n <CustomAvatar\n alt={option.label || option.value.toString()}\n name={option.label || option.value.toString()}\n sx={AVATAR_SX}\n />\n ),\n [option],\n );\n\n return (\n <>\n <Stack direction=\"row\" gap={2} margin={2}>\n <ImageContainer>{image}</ImageContainer>\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"subtitle2\" color=\"textPrimary\" noWrap flex={1}>\n {option.value} - {option.label}\n </Typography>\n\n {options.length > 0 && (\n <OptionBox width={1}>\n <OptionContent>\n {options[0] ? options[0] : undefined}\n {options[1] ? options[1] : undefined}\n </OptionContent>\n\n {(options[2] || options[3]) && (\n <OptionContent>\n {options[2] ? options[2] : undefined}\n {options[3] ? options[3] : undefined}\n </OptionContent>\n )}\n </OptionBox>\n )}\n </Stack>\n </Stack>\n\n <DividerStyled className=\"border\" />\n </>\n );\n});\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n","import { autocompleteClasses } from '@mui/material/Autocomplete';\nimport Popper from '@mui/material/Popper';\nimport Stack from '@mui/material/Stack';\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\nexport const OptionBox = styled(Stack)(({ theme }) => ({\n flex: 1,\n width: '100%',\n gap: 6,\n\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n\n [theme.breakpoints.up('md')]: {\n flexDirection: 'row',\n },\n}));\n\nexport const OptionContent = styled(Stack)(({ theme }) => ({\n flex: 1,\n maxWidth: '100%',\n gap: 6,\n\n [theme.breakpoints.up('md')]: {\n flex: '1 1 calc(50% - 8px)',\n width: 'calc(50% - 8px)',\n minWidth: 'calc(50% - 8px)',\n maxWidth: 'calc(50% - 8px)',\n },\n}));\n\nexport const ImageContainer = styled(Stack)(({ theme }) => ({\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n width: 68,\n height: 68,\n borderRadius: 8,\n overflow: 'hidden',\n\n img: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n}));\n\nexport const DividerStyled = styled('hr')(({ theme }) => ({\n borderStyle: 'dashed',\n position: 'absolute',\n bottom: 0,\n width: '100%',\n margin: 0,\n borderColor: theme.palette.divider,\n borderWidth: '0 0 thin',\n}));\n"]}
|
package/dist/chunk-SDS77DQQ.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { a as a$4 } from './chunk-6ZSTKYGL.js';
|
|
2
|
-
import { a as a$1 } from './chunk-Y3TJIK6E.js';
|
|
3
|
-
import { a as a$3 } from './chunk-IJZCVZ32.js';
|
|
4
|
-
import { a as a$2 } from './chunk-F65ZXAGV.js';
|
|
5
|
-
import { a } from './chunk-FBVAHVU3.js';
|
|
6
|
-
import { memo, useCallback, useState, useMemo } from 'react';
|
|
7
|
-
import J from '@mui/material/Button';
|
|
8
|
-
import Q from '@mui/material/CircularProgress';
|
|
9
|
-
import j from '@mui/material/Grid';
|
|
10
|
-
import d from '@mui/material/Stack';
|
|
11
|
-
import h from '@mui/material/Typography';
|
|
12
|
-
import N from '@mui/material/Card';
|
|
13
|
-
import { styled, alpha } from '@mui/material/styles';
|
|
14
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
15
|
-
|
|
16
|
-
var P=styled(N,{shouldForwardProp:r=>r!=="active"&&r!=="disabled"})(({theme:r,active:a,disabled:i})=>({boxShadow:"none",borderRadius:8,borderStyle:"solid",borderWidth:1.5,borderColor:a?r.palette.primary.main:r.palette.grey[300],color:r.palette.primary.main,backgroundColor:a?alpha(r.palette.primary.main,.04):"white","&:hover":{borderColor:r.palette.primary.main},...i?{opacity:.6,cursor:"default"}:{opacity:1,cursor:"pointer"}}));var L=memo(({item:r,isSelected:a$1,disabled:i,onSelectItem:n})=>{let o=useCallback(()=>{n(r);},[r,n]);return jsx(j,{item:!0,xs:4,children:jsx(P,{active:a$1,onClick:o,disabled:i,children:jsxs(d,{padding:1.5,width:"100%",children:[jsxs(d,{direction:"row",alignItems:"center",justifyContent:"space-between",children:[jsx(h,{color:a$1?"primary.main":"text.primary",variant:"subtitle2",textAlign:"left",noWrap:!0,children:r.title}),a$1&&jsx(a,{icon:"CHECK_CIRCLE",width:24})]}),r.options.map(l=>jsx(h,{mt:1,variant:"body2",color:"text.disabled",fontSize:12,textAlign:"left",noWrap:!0,children:`${l.label}: ${l.value}`},l.label))]})})},r.title)});L.displayName="CardItem";var D=L;var X=new Intl.PluralRules("pt-BR"),Y=new Map([["one","selecionado"],["other","selecionados"]]),Z=r=>{let a=X.select(r),i=Y.get(a);return `${r} ${i}`},rr=({title:r,action:a,loading:i,items:n,values:o,onChange:l,disabled:s=!1})=>{let[c,O]=useState(),C=useMemo(()=>new Set(o),[o]),y=useCallback(t=>C.has(t),[C]),$=useMemo(()=>{if(!c)return n;let t=c.toLowerCase();return n.filter(u=>u.title.toLowerCase().includes(t))},[n,c]),A=useCallback(t=>{if(s)return;let u=y(t.value),g;u?g=o.filter(M=>M!==t.value):g=[...o,t.value],l(g);},[s,y,l,o]),b=useMemo(()=>n.map(t=>t.value),[n]),B=useCallback(()=>{s||(o.length===n.length?l([]):l(b));},[s,n.length,l,o.length,b]),G=useCallback(t=>O(t),[]),K=t=>{t.key==="Enter"&&t.preventDefault();},W=useMemo(()=>o.length===0?"nenhum selecionado":Z(o.length),[o.length]),z=useMemo(()=>typeof r=="string"?jsx(h,{variant:"overline",color:"text.disabled",children:r}):r,[r]);return jsxs(d,{gap:1.5,height:450,children:[jsxs(d,{direction:"row",justifyContent:"space-between",children:[z,jsx(h,{variant:"overline",color:"text.disabled",children:W})]}),jsxs(d,{direction:"row",alignItems:"center",spacing:1.5,children:[jsx(a$1,{fullWidth:!0,size:"small",iconPosition:"start",placeholder:"Buscar",trigger:"change",onSearch:G,onKeyDown:K}),a?jsx(Fragment,{children:a}):jsx(J,{onClick:B,size:"small",disabled:s,children:jsx(h,{variant:"overline",children:"TODOS"})})]}),jsx(a$2,{children:jsx(d,{flex:1,mb:2,children:jsx(a$3,{isLoading:i,loading:jsx(d,{alignItems:"center",mt:3,children:jsx(Q,{})}),isEmpty:n.length===0,empty:jsx(a$4,{sx:{svg:{height:140}},text:c?`N\xE3o foi possivel encontrar o item "${c}"`:"Nenhum item dispon\xEDvel"}),children:jsx(j,{container:!0,spacing:1.5,children:$.map(t=>jsx(D,{item:t,isSelected:y(t.value),disabled:s,onSelectItem:A},t.value))})})})})]})},vr=rr;
|
|
17
|
-
|
|
18
|
-
export { vr as a };
|
|
19
|
-
//# sourceMappingURL=chunk-SDS77DQQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/SelectableCards/index.tsx","../src/components/SelectableCards/CardItem.tsx","../src/components/SelectableCards/style.ts"],"names":["useCallback","useMemo","useState","Button","CircularProgress","Grid","Stack","Typography","memo","Card","alpha","styled","StyledCard","prop","theme","active","disabled","jsx","jsxs","CardItem","item","isSelected","onSelectItem","handleClick","Icon_default","option","CardItem_default","Fragment","enCardinalRules","strings","formatStrings","n","rule","suffix","SelectableCards","title","action","loading","items","values","onChange","search","setSearch","valuesSet","itemId","filteredItems","searchLower","isItemAlreadySelected","newSelectedOptions","element","allItemValues","selectAllItems","handleSearch","value","handleKeyDown","event","selectedCount","titleComponent","SearchInput_default","Scrollbar_default","Result_default","EmptyView_default","SelectableCards_default"],"mappings":"wMAAA,OAAS,eAAAA,EAAa,WAAAC,EAAS,YAAAC,MAAgB,QAC/C,OAAOC,MAAY,uBACnB,OAAOC,MAAsB,iCAC7B,OAAOC,MAAU,qBACjB,OAAOC,MAAW,sBAClB,OAAOC,MAAgB,2BCLvB,OAAS,QAAAC,EAAM,eAAAR,MAAmB,QAClC,OAAOK,MAAU,qBACjB,OAAOC,MAAW,sBAClB,OAAOC,MAAgB,2BCHvB,OAAOE,MAAU,qBACjB,OAAS,SAAAC,EAAO,UAAAC,MAAc,uBAIvB,IAAMC,EAAaD,EAAOF,EAAM,CACrC,kBAAmBI,GAAQA,IAAS,UAAYA,IAAS,UAC3D,CAAC,EAAa,CAAC,CAAE,MAAAC,EAAO,OAAAC,EAAQ,SAAAC,CAAS,KAAO,CAC9C,UAAW,OAEX,aAAc,EACd,YAAa,QACb,YAAa,IACb,YAAaD,EAASD,EAAM,QAAQ,QAAQ,KAAOA,EAAM,QAAQ,KAAK,GAAG,EAEzE,MAAOA,EAAM,QAAQ,QAAQ,KAC7B,gBAAiBC,EAASL,EAAMI,EAAM,QAAQ,QAAQ,KAAM,GAAI,EAAI,QAEpE,UAAW,CACT,YAAaA,EAAM,QAAQ,QAAQ,IACrC,EAEA,GAAIE,EACA,CACE,QAAS,GACT,OAAQ,SACV,EACA,CACE,QAAS,EACT,OAAQ,SACV,CACN,EAAE,EDPU,OAKE,OAAAC,EALF,QAAAC,MAAA,oBAdZ,IAAMC,EAAWX,EACf,CAAC,CAAE,KAAAY,EAAM,WAAAC,EAAY,SAAAL,EAAU,aAAAM,CAAa,IAAqB,CAC/D,IAAMC,EAAcvB,EAAY,IAAM,CACpCsB,EAAaF,CAAI,CACnB,EAAG,CAACA,EAAME,CAAY,CAAC,EAEvB,OACEL,EAACZ,EAAA,CAAsB,KAAI,GAAC,GAAI,EAC9B,SAAAY,EAACL,EAAA,CACC,OAAQS,EACR,QAASE,EACT,SAAUP,EAEV,SAAAE,EAACZ,EAAA,CAAM,QAAS,IAAK,MAAM,OACzB,UAAAY,EAACZ,EAAA,CACC,UAAU,MACV,WAAW,SACX,eAAe,gBAEf,UAAAW,EAACV,EAAA,CACC,MAAOc,EAAa,eAAiB,eACrC,QAAQ,YACR,UAAU,OACV,OAAM,GAEL,SAAAD,EAAK,MACR,EAECC,GAAcJ,EAACO,EAAA,CAAK,KAAK,eAAe,MAAO,GAAI,GACtD,EAECJ,EAAK,QAAQ,IAAIK,GAChBR,EAACV,EAAA,CAEC,GAAI,EACJ,QAAQ,QACR,MAAM,gBACN,SAAU,GACV,UAAU,OACV,OAAM,GAEL,YAAGkB,EAAO,UAAUA,EAAO,SARvBA,EAAO,KASd,CACD,GACH,EACF,GAtCSL,EAAK,KAuChB,CAEJ,CACF,EAEAD,EAAS,YAAc,WAEvB,IAAOO,EAAQP,EDqCP,OA6BE,YAAAQ,GA7BF,OAAAV,EAWF,QAAAC,MAXE,oBArFR,IAAMU,EAAkB,IAAI,KAAK,YAAY,OAAO,EAE9CC,EAAU,IAAI,IAAI,CACtB,CAAC,MAAO,aAAa,EACrB,CAAC,QAAS,cAAc,CAC1B,CAAC,EAEKC,EAAiBC,GAAc,CACnC,IAAMC,EAAOJ,EAAgB,OAAOG,CAAC,EAC/BE,EAASJ,EAAQ,IAAIG,CAAI,EAC/B,MAAO,GAAGD,KAAKE,GACjB,EAEMC,GAAkB,CAAC,CACvB,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,SAAAxB,EAAW,EACb,IAA4B,CAC1B,GAAM,CAACyB,EAAQC,CAAS,EAAIxC,EAAiB,EAEvCyC,EAAY1C,EAAQ,IAAM,IAAI,IAAIsC,CAAM,EAAG,CAACA,CAAM,CAAC,EAEnDlB,EAAarB,EAChB4C,GACQD,EAAU,IAAIC,CAAM,EAE7B,CAACD,CAAS,CACZ,EAEME,EAAgB5C,EAAQ,IAAM,CAClC,GAAI,CAACwC,EAAQ,OAAOH,EACpB,IAAMQ,EAAcL,EAAO,YAAY,EACvC,OAAOH,EAAM,OAAOlB,GAAQA,EAAK,MAAM,YAAY,EAAE,SAAS0B,CAAW,CAAC,CAC5E,EAAG,CAACR,EAAOG,CAAM,CAAC,EAEZnB,EAAetB,EAClBoB,GAAiB,CAChB,GAAIJ,EAAU,OACd,IAAM+B,EAAwB1B,EAAWD,EAAK,KAAK,EAE/C4B,EAEAD,EACFC,EAAqBT,EAAO,OAAOU,GAAWA,IAAY7B,EAAK,KAAK,EAEpE4B,EAAqB,CAAC,GAAGT,EAAQnB,EAAK,KAAK,EAG7CoB,EAASQ,CAAkB,CAC7B,EACA,CAAChC,EAAUK,EAAYmB,EAAUD,CAAM,CACzC,EAEMW,EAAgBjD,EAAQ,IAAMqC,EAAM,IAAIlB,GAAQA,EAAK,KAAK,EAAG,CAACkB,CAAK,CAAC,EAEpEa,EAAiBnD,EAAY,IAAM,CACnCgB,IACAuB,EAAO,SAAWD,EAAM,OAC1BE,EAAS,CAAC,CAAC,EAEXA,EAASU,CAAa,EAE1B,EAAG,CAAClC,EAAUsB,EAAM,OAAQE,EAAUD,EAAO,OAAQW,CAAa,CAAC,EAE7DE,EAAepD,EAAaqD,GAAkBX,EAAUW,CAAK,EAAG,CAAC,CAAC,EAElEC,EAAiBC,GAA+C,CAChEA,EAAM,MAAQ,SAChBA,EAAM,eAAe,CAEzB,EAEMC,EAAgBvD,EACpB,IACEsC,EAAO,SAAW,EAAI,qBAAuBT,EAAcS,EAAO,MAAM,EAC1E,CAACA,EAAO,MAAM,CAChB,EAEMkB,EAAiBxD,EACrB,IACE,OAAOkC,GAAU,SACflB,EAACV,EAAA,CAAW,QAAQ,WAAW,MAAM,gBAClC,SAAA4B,EACH,EAEAA,EAEJ,CAACA,CAAK,CACR,EAEA,OACEjB,EAACZ,EAAA,CAAM,IAAK,IAAK,OAAQ,IACvB,UAAAY,EAACZ,EAAA,CAAM,UAAU,MAAM,eAAe,gBACnC,UAAAmD,EACDxC,EAACV,EAAA,CAAW,QAAQ,WAAW,MAAM,gBAClC,SAAAiD,EACH,GACF,EACAtC,EAACZ,EAAA,CAAM,UAAU,MAAM,WAAW,SAAS,QAAS,IAClD,UAAAW,EAACyC,EAAA,CACC,UAAS,GACT,KAAK,QACL,aAAa,QACb,YAAY,SACZ,QAAQ,SACR,SAAUN,EACV,UAAWE,EACb,EAEClB,EACCnB,EAAAU,GAAA,CAAG,SAAAS,EAAO,EAEVnB,EAACd,EAAA,CAAO,QAASgD,EAAgB,KAAK,QAAQ,SAAUnC,EACtD,SAAAC,EAACV,EAAA,CAAW,QAAQ,WAAW,iBAAK,EACtC,GAEJ,EAEAU,EAAC0C,EAAA,CACC,SAAA1C,EAACX,EAAA,CAAM,KAAM,EAAG,GAAI,EAClB,SAAAW,EAAC2C,EAAA,CACC,UAAWvB,EACX,QACEpB,EAACX,EAAA,CAAM,WAAW,SAAS,GAAI,EAC7B,SAAAW,EAACb,EAAA,EAAiB,EACpB,EAEF,QAASkC,EAAM,SAAW,EAC1B,MACErB,EAAC4C,EAAA,CACC,GAAI,CAAE,IAAK,CAAE,OAAQ,GAAI,CAAE,EAC3B,KACEpB,EACI,yCAAsCA,KACtC,4BAER,EAGF,SAAAxB,EAACZ,EAAA,CAAK,UAAS,GAAC,QAAS,IACtB,SAAAwC,EAAc,IAAIzB,GACjBH,EAACS,EAAA,CAEC,KAAMN,EACN,WAAYC,EAAWD,EAAK,KAAK,EACjC,SAAUJ,EACV,aAAcM,GAJTF,EAAK,KAKZ,CACD,EACH,EACF,EACF,EACF,GACF,CAEJ,EAEO0C,GAAQ5B","sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport EmptyView from 'components/EmptyView';\nimport Result from 'components/Result';\nimport Scrollbar from 'components/Scrollbar';\nimport SearchInput from 'components/SearchInput';\n\nimport CardItem from './CardItem';\nimport { Option, SelectableCardsProps } from './props';\n\nconst enCardinalRules = new Intl.PluralRules('pt-BR');\n\nconst strings = new Map([\n ['one', 'selecionado'],\n ['other', 'selecionados'],\n]);\n\nconst formatStrings = (n: number) => {\n const rule = enCardinalRules.select(n);\n const suffix = strings.get(rule);\n return `${n} ${suffix}`;\n};\n\nconst SelectableCards = ({\n title,\n action,\n loading,\n items,\n values,\n onChange,\n disabled = false,\n}: SelectableCardsProps) => {\n const [search, setSearch] = useState<string>();\n\n const valuesSet = useMemo(() => new Set(values), [values]);\n\n const isSelected = useCallback(\n (itemId: string) => {\n return valuesSet.has(itemId);\n },\n [valuesSet],\n );\n\n const filteredItems = useMemo(() => {\n if (!search) return items;\n const searchLower = search.toLowerCase();\n return items.filter(item => item.title.toLowerCase().includes(searchLower));\n }, [items, search]);\n\n const onSelectItem = useCallback(\n (item: Option) => {\n if (disabled) return;\n const isItemAlreadySelected = isSelected(item.value);\n\n let newSelectedOptions: string[];\n\n if (isItemAlreadySelected) {\n newSelectedOptions = values.filter(element => element !== item.value);\n } else {\n newSelectedOptions = [...values, item.value];\n }\n\n onChange(newSelectedOptions);\n },\n [disabled, isSelected, onChange, values],\n );\n\n const allItemValues = useMemo(() => items.map(item => item.value), [items]);\n\n const selectAllItems = useCallback(() => {\n if (disabled) return;\n if (values.length === items.length) {\n onChange([]);\n } else {\n onChange(allItemValues);\n }\n }, [disabled, items.length, onChange, values.length, allItemValues]);\n\n const handleSearch = useCallback((value: string) => setSearch(value), []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n };\n\n const selectedCount = useMemo(\n () =>\n values.length === 0 ? 'nenhum selecionado' : formatStrings(values.length),\n [values.length],\n );\n\n const titleComponent = useMemo(\n () =>\n typeof title === 'string' ? (\n <Typography variant=\"overline\" color=\"text.disabled\">\n {title}\n </Typography>\n ) : (\n title\n ),\n [title],\n );\n\n return (\n <Stack gap={1.5} height={450}>\n <Stack direction=\"row\" justifyContent=\"space-between\">\n {titleComponent}\n <Typography variant=\"overline\" color=\"text.disabled\">\n {selectedCount}\n </Typography>\n </Stack>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1.5}>\n <SearchInput\n fullWidth\n size=\"small\"\n iconPosition=\"start\"\n placeholder=\"Buscar\"\n trigger=\"change\"\n onSearch={handleSearch}\n onKeyDown={handleKeyDown}\n />\n\n {action ? (\n <>{action}</>\n ) : (\n <Button onClick={selectAllItems} size=\"small\" disabled={disabled}>\n <Typography variant=\"overline\">TODOS</Typography>\n </Button>\n )}\n </Stack>\n\n <Scrollbar>\n <Stack flex={1} mb={2}>\n <Result\n isLoading={loading}\n loading={\n <Stack alignItems=\"center\" mt={3}>\n <CircularProgress />\n </Stack>\n }\n isEmpty={items.length === 0}\n empty={\n <EmptyView\n sx={{ svg: { height: 140 } }}\n text={\n search\n ? `Não foi possivel encontrar o item \"${search}\"`\n : 'Nenhum item disponível'\n }\n />\n }\n >\n <Grid container spacing={1.5}>\n {filteredItems.map(item => (\n <CardItem\n key={item.value}\n item={item}\n isSelected={isSelected(item.value)}\n disabled={disabled}\n onSelectItem={onSelectItem}\n />\n ))}\n </Grid>\n </Result>\n </Stack>\n </Scrollbar>\n </Stack>\n );\n};\n\nexport default SelectableCards;\n","import { memo, useCallback } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { CardItemProps } from './props';\nimport { StyledCard } from './style';\n\nconst CardItem = memo(\n ({ item, isSelected, disabled, onSelectItem }: CardItemProps) => {\n const handleClick = useCallback(() => {\n onSelectItem(item);\n }, [item, onSelectItem]);\n\n return (\n <Grid key={item.title} item xs={4}>\n <StyledCard\n active={isSelected}\n onClick={handleClick}\n disabled={disabled}\n >\n <Stack padding={1.5} width=\"100%\">\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Typography\n color={isSelected ? 'primary.main' : 'text.primary'}\n variant=\"subtitle2\"\n textAlign=\"left\"\n noWrap\n >\n {item.title}\n </Typography>\n\n {isSelected && <Icon icon=\"CHECK_CIRCLE\" width={24} />}\n </Stack>\n\n {item.options.map(option => (\n <Typography\n key={option.label}\n mt={1}\n variant=\"body2\"\n color=\"text.disabled\"\n fontSize={12}\n textAlign=\"left\"\n noWrap\n >\n {`${option.label}: ${option.value}`}\n </Typography>\n ))}\n </Stack>\n </StyledCard>\n </Grid>\n );\n },\n);\n\nCardItem.displayName = 'CardItem';\n\nexport default CardItem;\n","import Card from '@mui/material/Card';\nimport { alpha, styled } from '@mui/material/styles';\n\nimport { CardProps } from './props';\n\nexport const StyledCard = styled(Card, {\n shouldForwardProp: prop => prop !== 'active' && prop !== 'disabled',\n})<CardProps>(({ theme, active, disabled }) => ({\n boxShadow: 'none',\n\n borderRadius: 8,\n borderStyle: 'solid',\n borderWidth: 1.5,\n borderColor: active ? theme.palette.primary.main : theme.palette.grey[300],\n\n color: theme.palette.primary.main,\n backgroundColor: active ? alpha(theme.palette.primary.main, 0.04) : 'white',\n\n '&:hover': {\n borderColor: theme.palette.primary.main,\n },\n\n ...(disabled\n ? {\n opacity: 0.6,\n cursor: 'default',\n }\n : {\n opacity: 1,\n cursor: 'pointer',\n }),\n}));\n"]}
|