@zydon/common 2.8.56 → 2.8.57

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.
Files changed (60) hide show
  1. package/dist/bulkActions-3ec5afc1.d.ts +28 -0
  2. package/dist/chunk-3HKLNWRZ.js +16 -0
  3. package/dist/chunk-3HKLNWRZ.js.map +1 -0
  4. package/dist/{chunk-UOIOBXCP.js → chunk-3WFLKIPF.js} +2 -2
  5. package/dist/chunk-75PS5WVR.js +27 -0
  6. package/dist/chunk-75PS5WVR.js.map +1 -0
  7. package/dist/chunk-D3RY7C7B.js +12 -0
  8. package/dist/chunk-D3RY7C7B.js.map +1 -0
  9. package/dist/{chunk-EWGZ2KSI.js → chunk-H3SS73NK.js} +1 -1
  10. package/dist/chunk-H3SS73NK.js.map +1 -0
  11. package/dist/{chunk-CMWRCWVK.js → chunk-LJ5JKDMG.js} +4 -4
  12. package/dist/{chunk-QT4ZQ2CJ.js → chunk-M3IIWN6P.js} +1 -1
  13. package/dist/chunk-M3IIWN6P.js.map +1 -0
  14. package/dist/{chunk-RD6YLEVF.js → chunk-OFOIKKG2.js} +2 -2
  15. package/dist/{chunk-VCK3DKB3.js → chunk-X4F3O7PX.js} +2 -2
  16. package/dist/chunk-YPL4KIKN.js +46 -0
  17. package/dist/chunk-YPL4KIKN.js.map +1 -0
  18. package/dist/components/Autocomplete/index.js +1 -1
  19. package/dist/components/AvatarButton/index.js +4 -4
  20. package/dist/components/BulkEditModal/index.js +5 -4
  21. package/dist/components/BulkEditModal/index.js.map +1 -1
  22. package/dist/components/Common/index.js +4 -4
  23. package/dist/components/Confirm/index.js +1 -11
  24. package/dist/components/Confirm/index.js.map +1 -1
  25. package/dist/components/DataView/index.d.ts +20 -3
  26. package/dist/components/DataView/index.js +3 -2
  27. package/dist/components/DynamicDataView/index.d.ts +9 -3
  28. package/dist/components/DynamicDataView/index.js +17 -16
  29. package/dist/components/DynamicDataView/index.js.map +1 -1
  30. package/dist/components/ExpandableGroup/index.js.map +1 -1
  31. package/dist/components/ListBundles/index.js +1 -1
  32. package/dist/components/ToggleTheme/index.js +4 -4
  33. package/dist/components/carousel/index.js +1 -1
  34. package/dist/components/form/Address/index.js +2 -2
  35. package/dist/components/form/Autocomplete/index.js +2 -2
  36. package/dist/components/form/Webhook/index.js +2 -2
  37. package/dist/components/form/Webhook/index.js.map +1 -1
  38. package/dist/hooks/useDynamicAutocomplete.js.map +1 -1
  39. package/dist/hooks/useThemeToggle.js +4 -4
  40. package/dist/index.js +4 -4
  41. package/dist/theme/core/index.js +2 -2
  42. package/dist/theme/theme-provider.js +4 -4
  43. package/dist/theme/with-settings/index.js +2 -2
  44. package/dist/utils/loadable.js.map +1 -1
  45. package/dist/utils/vendor.d.ts +3 -0
  46. package/dist/utils/vendor.js +4 -0
  47. package/dist/utils/vendor.js.map +1 -0
  48. package/package.json +1 -1
  49. package/dist/chunk-2W54CJ6E.js +0 -12
  50. package/dist/chunk-2W54CJ6E.js.map +0 -1
  51. package/dist/chunk-EWGZ2KSI.js.map +0 -1
  52. package/dist/chunk-GYABWIFG.js +0 -26
  53. package/dist/chunk-GYABWIFG.js.map +0 -1
  54. package/dist/chunk-PVVI43BW.js +0 -45
  55. package/dist/chunk-PVVI43BW.js.map +0 -1
  56. package/dist/chunk-QT4ZQ2CJ.js.map +0 -1
  57. /package/dist/{chunk-UOIOBXCP.js.map → chunk-3WFLKIPF.js.map} +0 -0
  58. /package/dist/{chunk-CMWRCWVK.js.map → chunk-LJ5JKDMG.js.map} +0 -0
  59. /package/dist/{chunk-RD6YLEVF.js.map → chunk-OFOIKKG2.js.map} +0 -0
  60. /package/dist/{chunk-VCK3DKB3.js.map → chunk-X4F3O7PX.js.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  export { a as default } from '../../chunk-T6UNWMMX.js';
2
2
  import '../../chunk-7OV7UPWM.js';
3
- import '../../chunk-CMWRCWVK.js';
3
+ import '../../chunk-LJ5JKDMG.js';
4
4
  import '../../chunk-373WGZZL.js';
5
5
  import '../../chunk-BX2DSNRV.js';
6
- import '../../chunk-VCK3DKB3.js';
7
- import '../../chunk-UOIOBXCP.js';
6
+ import '../../chunk-X4F3O7PX.js';
7
+ import '../../chunk-3WFLKIPF.js';
8
8
  import '../../chunk-KYV74QIT.js';
9
- import '../../chunk-PVVI43BW.js';
9
+ import '../../chunk-YPL4KIKN.js';
10
10
  import '../../chunk-HBOBTNB5.js';
11
11
  import '../../chunk-WUFEPE2G.js';
12
12
  import '../../chunk-GLRLKFPS.js';
@@ -1,4 +1,4 @@
1
- export { j as ArrowButton, f as Carousel, g as CarouselArrowBasicButtons, i as CarouselArrowFloatButtons, h as CarouselArrowNumberButtons, k as CarouselDotButtons, l as CarouselProgressBar, c as CarouselSlide, n as CarouselThumb, m as CarouselThumbs, e as StyledContainer, d as StyledRoot, a as carouselBreakpoints, b as carouselClasses, o as useCarousel } from '../../chunk-QT4ZQ2CJ.js';
1
+ export { j as ArrowButton, f as Carousel, g as CarouselArrowBasicButtons, i as CarouselArrowFloatButtons, h as CarouselArrowNumberButtons, k as CarouselDotButtons, l as CarouselProgressBar, c as CarouselSlide, n as CarouselThumb, m as CarouselThumbs, e as StyledContainer, d as StyledRoot, a as carouselBreakpoints, b as carouselClasses, o as useCarousel } from '../../chunk-M3IIWN6P.js';
2
2
  import '../../chunk-VURAUMLN.js';
3
3
  import '../../chunk-EDO23OCC.js';
4
4
  import '../../chunk-GLRLKFPS.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-YXRL4O4H.js';
4
4
  import '../../../chunk-RTC7H5E5.js';
5
- import { a as a$2 } from '../../../chunk-RD6YLEVF.js';
6
- import '../../../chunk-EWGZ2KSI.js';
5
+ import { a as a$2 } from '../../../chunk-OFOIKKG2.js';
6
+ import '../../../chunk-H3SS73NK.js';
7
7
  import '../../../chunk-VURAUMLN.js';
8
8
  import '../../../chunk-EDO23OCC.js';
9
9
  import L from '@mui/material/CircularProgress';
@@ -1,5 +1,5 @@
1
- export { a as default } from '../../../chunk-RD6YLEVF.js';
2
- import '../../../chunk-EWGZ2KSI.js';
1
+ export { a as default } from '../../../chunk-OFOIKKG2.js';
2
+ import '../../../chunk-H3SS73NK.js';
3
3
  import '../../../chunk-VURAUMLN.js';
4
4
  import '../../../chunk-EDO23OCC.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  import { a } from '../../../chunk-YXRL4O4H.js';
2
- import { a as a$2 } from '../../../chunk-RD6YLEVF.js';
2
+ import { a as a$2 } from '../../../chunk-OFOIKKG2.js';
3
3
  import { a as a$3 } from '../../../chunk-HVH6MGHX.js';
4
- import '../../../chunk-EWGZ2KSI.js';
4
+ import '../../../chunk-H3SS73NK.js';
5
5
  import { a as a$1 } from '../../../chunk-VURAUMLN.js';
6
6
  import '../../../chunk-EDO23OCC.js';
7
7
  import { useFormContext, useFieldArray } from 'react-hook-form';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","Webhook","webhookData","isEditing","haveTip","hasFilter","hasType","control","headers","append","remove","handleCreateField","Field_default","Icon_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n hasFilter = true,\n hasType = true,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = () => {\n append({\n value: '',\n name: '',\n });\n };\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field\n name=\"url\"\n label=\"URL de endpoint\"\n rules={{ required: { value: true, message: 'Url é obrigatório' } }}\n />\n {hasFilter && <Field name=\"filter\" label=\"Filtro\" />}\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n aria-label=\"Copiar ID origem\"\n onClick={() =>\n navigator.clipboard.writeText(webhookData.resource_id)\n }\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n {hasType && (\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Tipo de conteúdo é obrigatório',\n },\n }}\n />\n )}\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Método HTTP é obrigatório',\n },\n }}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={{\n required: {\n value: true,\n message: '',\n },\n }}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton aria-label=\"Remover cabeçalho\" color=\"error\" onClick={() => remove(index)}>\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={() => handleCreateField()}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n hasFilter?: boolean;\n hasType?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","Webhook","webhookData","isEditing","haveTip","hasFilter","hasType","control","headers","append","remove","handleCreateField","Field_default","Icon_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n hasFilter = true,\n hasType = true,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = () => {\n append({\n value: '',\n name: '',\n });\n };\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field\n name=\"url\"\n label=\"URL de endpoint\"\n rules={{ required: { value: true, message: 'Url é obrigatório' } }}\n />\n {hasFilter && <Field name=\"filter\" label=\"Filtro\" />}\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n aria-label=\"Copiar ID origem\"\n onClick={() =>\n navigator.clipboard.writeText(webhookData.resource_id)\n }\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n {hasType && (\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Tipo de conteúdo é obrigatório',\n },\n }}\n />\n )}\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Método HTTP é obrigatório',\n },\n }}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={{\n required: {\n value: true,\n message: '',\n },\n }}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton\n aria-label=\"Remover cabeçalho\"\n color=\"error\"\n onClick={() => remove(index)}\n >\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={() => handleCreateField()}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n hasFilter?: boolean;\n hasType?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useDynamicAutocomplete.ts"],"names":["useCallback","useEffect","useMemo","useRef","useState","useFormContext","useWatch","passthrough","o","defaultMapKeys","resolveMapper","mapOption","keys","item","useDynamicAutocomplete","fieldPath","useQuery","queryParams","onSelect","mapper","labelKey","control","setValue","open","setOpen","page","setPage","allItems","setAllItems","hasMore","setHasMore","loadingMoreRef","perPage","idField","nameField","entityId","entityName","inputValue","setInputValue","search","useDebounceValue_default","searching","onSearch","term","finishSearch","data","isLoading","isFetching","currentPageItems","prev","existingIds","i","unique","options","list","opt","handleSelectOption","value","label","option","handleOpen","handleClose","handleScrollEnd","p","useDynamicAutocomplete_default"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext, useWatch } from 'react-hook-form';\n\nimport { Option } from 'types/option';\n\nimport useDebounceValue from './useDebounceValue';\n\nconst passthrough = (o: Option[]) => o;\n\ntype MapOptionConfig = { value: string; label: string };\n\nconst defaultMapKeys: MapOptionConfig = { value: 'id', label: 'name' };\n\nconst resolveMapper = <TItem>(\n mapOption?: ((item: TItem) => Option) | MapOptionConfig,\n): ((item: TItem) => Option) => {\n if (typeof mapOption === 'function') return mapOption;\n const keys = mapOption ?? defaultMapKeys;\n return (item: TItem) => ({\n label: String((item as Record<string, unknown>)[keys.label] ?? ''),\n value: String((item as Record<string, unknown>)[keys.value] ?? ''),\n });\n};\n\nexport interface UseDynamicAutocompleteConfig<TItem> {\n /** Form field path — watches `${fieldPath}.id` and `${fieldPath}.{mapOption.label}` */\n fieldPath: string;\n /** RTK Query hook (e.g. useGetCategoriesQuery) */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery: (...args: any[]) => {\n data?: { items: TItem[] };\n isLoading: boolean;\n isFetching: boolean;\n };\n /** Static query params merged with { search } on each call */\n queryParams?: Record<string, unknown>;\n /**\n * Map an API entity to an Option { label, value }.\n * Also determines the form field name: `${fieldPath}.${mapOption.label}`.\n * - Config: `{ value: 'code', label: 'description' }`\n * - Function: falls back to `${fieldPath}.name`\n * - Omit: defaults to `{ value: 'id', label: 'name' }`\n */\n mapOption?: ((item: TItem) => Option) | MapOptionConfig;\n /** Called after an option is selected, with the raw item if found. */\n onSelect?: (value: string, item?: TItem) => void;\n}\n\nconst useDynamicAutocomplete = <TItem>({\n fieldPath,\n useQuery,\n queryParams = {},\n mapOption,\n onSelect,\n}: UseDynamicAutocompleteConfig<TItem>) => {\n const mapper = useMemo(() => resolveMapper(mapOption), [mapOption]);\n const labelKey =\n typeof mapOption === 'object' && mapOption !== null\n ? mapOption.label\n : 'name';\n const { control, setValue } = useFormContext();\n const [open, setOpen] = useState(false);\n const [page, setPage] = useState(0);\n const [allItems, setAllItems] = useState<TItem[]>([]);\n const [hasMore, setHasMore] = useState(true);\n const loadingMoreRef = useRef(false);\n\n const perPage = (queryParams.perPage as number) || 25;\n\n const idField = `${fieldPath}.id`;\n const nameField = `${fieldPath}.${labelKey}`;\n\n const entityId = useWatch({ control, name: idField });\n const entityName = useWatch({ control, name: nameField });\n\n // Simple debounced search\n const [inputValue, setInputValue] = useState<string>();\n const search = useDebounceValue(inputValue, 400);\n const searching = inputValue !== search;\n\n const onSearch = useCallback((term?: string) => {\n setInputValue(term || undefined);\n }, []);\n\n const finishSearch = useCallback(() => {\n setInputValue(undefined);\n }, []);\n\n const {\n data,\n isLoading,\n isFetching,\n } = useQuery({ ...queryParams, search, page }, { skip: !open });\n\n const currentPageItems = useMemo(() => data?.items || [], [data]);\n\n useEffect(() => {\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n }, [search]);\n\n useEffect(() => {\n if (isFetching || !open) return;\n\n setAllItems(prev => {\n if (page === 0) return currentPageItems;\n const existingIds = new Set(\n prev.map(i => String((i as Record<string, unknown>).id ?? '')),\n );\n const unique = currentPageItems.filter(\n i => !existingIds.has(String((i as Record<string, unknown>).id ?? '')),\n );\n return [...prev, ...unique];\n });\n\n setHasMore(currentPageItems.length >= perPage);\n loadingMoreRef.current = false;\n }, [currentPageItems, isFetching, page, perPage, open]);\n\n const options = useMemo(() => {\n const list = allItems.map(mapper);\n\n if (\n entityId &&\n entityName &&\n !list.some(item => String(item.value) === String(entityId))\n ) {\n list.unshift({ label: entityName, value: entityId });\n }\n\n return list.filter(\n opt => opt.value !== null && opt.value !== undefined,\n );\n }, [allItems, entityId, entityName, mapper]);\n\n const handleSelectOption = useCallback(\n (value: string) => {\n const label = options.find(\n option => String(option.value) === String(value),\n )?.label;\n setValue(nameField, label);\n\n if (onSelect) {\n const item = allItems.find(\n i => String(mapper(i).value) === String(value),\n );\n onSelect(value, item);\n }\n },\n [options, setValue, nameField, onSelect, allItems, mapper],\n );\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n finishSearch();\n }, [finishSearch]);\n\n const handleScrollEnd = useCallback(() => {\n if (!isFetching && !loadingMoreRef.current && hasMore) {\n loadingMoreRef.current = true;\n setPage(p => p + 1);\n }\n }, [isFetching, hasMore]);\n\n return {\n data,\n options,\n loading: isLoading || isFetching,\n onSearch,\n onSelectOption: handleSelectOption,\n onOpen: handleOpen,\n onClose: handleClose,\n onScrollEnd: handleScrollEnd,\n filterOptions: passthrough,\n noOptionsText: searching ? 'Carregando...' : undefined,\n };\n};\n\nexport default useDynamicAutocomplete;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useDynamicAutocomplete.ts"],"names":["useCallback","useEffect","useMemo","useRef","useState","useFormContext","useWatch","passthrough","o","defaultMapKeys","resolveMapper","mapOption","keys","item","useDynamicAutocomplete","fieldPath","useQuery","queryParams","onSelect","mapper","labelKey","control","setValue","open","setOpen","page","setPage","allItems","setAllItems","hasMore","setHasMore","loadingMoreRef","perPage","idField","nameField","entityId","entityName","inputValue","setInputValue","search","useDebounceValue_default","searching","onSearch","term","finishSearch","data","isLoading","isFetching","currentPageItems","prev","existingIds","i","unique","options","list","opt","handleSelectOption","value","label","option","handleOpen","handleClose","handleScrollEnd","p","useDynamicAutocomplete_default"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext, useWatch } from 'react-hook-form';\n\nimport { Option } from 'types/option';\n\nimport useDebounceValue from './useDebounceValue';\n\nconst passthrough = (o: Option[]) => o;\n\ntype MapOptionConfig = { value: string; label: string };\n\nconst defaultMapKeys: MapOptionConfig = { value: 'id', label: 'name' };\n\nconst resolveMapper = <TItem>(\n mapOption?: ((item: TItem) => Option) | MapOptionConfig,\n): ((item: TItem) => Option) => {\n if (typeof mapOption === 'function') return mapOption;\n const keys = mapOption ?? defaultMapKeys;\n return (item: TItem) => ({\n label: String((item as Record<string, unknown>)[keys.label] ?? ''),\n value: String((item as Record<string, unknown>)[keys.value] ?? ''),\n });\n};\n\nexport interface UseDynamicAutocompleteConfig<TItem> {\n /** Form field path — watches `${fieldPath}.id` and `${fieldPath}.{mapOption.label}` */\n fieldPath: string;\n /** RTK Query hook (e.g. useGetCategoriesQuery) */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery: (...args: any[]) => {\n data?: { items: TItem[] };\n isLoading: boolean;\n isFetching: boolean;\n };\n /** Static query params merged with { search } on each call */\n queryParams?: Record<string, unknown>;\n /**\n * Map an API entity to an Option { label, value }.\n * Also determines the form field name: `${fieldPath}.${mapOption.label}`.\n * - Config: `{ value: 'code', label: 'description' }`\n * - Function: falls back to `${fieldPath}.name`\n * - Omit: defaults to `{ value: 'id', label: 'name' }`\n */\n mapOption?: ((item: TItem) => Option) | MapOptionConfig;\n /** Called after an option is selected, with the raw item if found. */\n onSelect?: (value: string, item?: TItem) => void;\n}\n\nconst useDynamicAutocomplete = <TItem>({\n fieldPath,\n useQuery,\n queryParams = {},\n mapOption,\n onSelect,\n}: UseDynamicAutocompleteConfig<TItem>) => {\n const mapper = useMemo(() => resolveMapper(mapOption), [mapOption]);\n const labelKey =\n typeof mapOption === 'object' && mapOption !== null\n ? mapOption.label\n : 'name';\n const { control, setValue } = useFormContext();\n const [open, setOpen] = useState(false);\n const [page, setPage] = useState(0);\n const [allItems, setAllItems] = useState<TItem[]>([]);\n const [hasMore, setHasMore] = useState(true);\n const loadingMoreRef = useRef(false);\n\n const perPage = (queryParams.perPage as number) || 25;\n\n const idField = `${fieldPath}.id`;\n const nameField = `${fieldPath}.${labelKey}`;\n\n const entityId = useWatch({ control, name: idField });\n const entityName = useWatch({ control, name: nameField });\n\n // Simple debounced search\n const [inputValue, setInputValue] = useState<string>();\n const search = useDebounceValue(inputValue, 400);\n const searching = inputValue !== search;\n\n const onSearch = useCallback((term?: string) => {\n setInputValue(term || undefined);\n }, []);\n\n const finishSearch = useCallback(() => {\n setInputValue(undefined);\n }, []);\n\n const { data, isLoading, isFetching } = useQuery(\n { ...queryParams, search, page },\n { skip: !open },\n );\n\n const currentPageItems = useMemo(() => data?.items || [], [data]);\n\n useEffect(() => {\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n }, [search]);\n\n useEffect(() => {\n if (isFetching || !open) return;\n\n setAllItems(prev => {\n if (page === 0) return currentPageItems;\n const existingIds = new Set(\n prev.map(i => String((i as Record<string, unknown>).id ?? '')),\n );\n const unique = currentPageItems.filter(\n i => !existingIds.has(String((i as Record<string, unknown>).id ?? '')),\n );\n return [...prev, ...unique];\n });\n\n setHasMore(currentPageItems.length >= perPage);\n loadingMoreRef.current = false;\n }, [currentPageItems, isFetching, page, perPage, open]);\n\n const options = useMemo(() => {\n const list = allItems.map(mapper);\n\n if (\n entityId &&\n entityName &&\n !list.some(item => String(item.value) === String(entityId))\n ) {\n list.unshift({ label: entityName, value: entityId });\n }\n\n return list.filter(opt => opt.value !== null && opt.value !== undefined);\n }, [allItems, entityId, entityName, mapper]);\n\n const handleSelectOption = useCallback(\n (value: string) => {\n const label = options.find(\n option => String(option.value) === String(value),\n )?.label;\n setValue(nameField, label);\n\n if (onSelect) {\n const item = allItems.find(\n i => String(mapper(i).value) === String(value),\n );\n onSelect(value, item);\n }\n },\n [options, setValue, nameField, onSelect, allItems, mapper],\n );\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setPage(0);\n setAllItems([]);\n setHasMore(true);\n finishSearch();\n }, [finishSearch]);\n\n const handleScrollEnd = useCallback(() => {\n if (!isFetching && !loadingMoreRef.current && hasMore) {\n loadingMoreRef.current = true;\n setPage(p => p + 1);\n }\n }, [isFetching, hasMore]);\n\n return {\n data,\n options,\n loading: isLoading || isFetching,\n onSearch,\n onSelectOption: handleSelectOption,\n onOpen: handleOpen,\n onClose: handleClose,\n onScrollEnd: handleScrollEnd,\n filterOptions: passthrough,\n noOptionsText: searching ? 'Carregando...' : undefined,\n };\n};\n\nexport default useDynamicAutocomplete;\n"]}
@@ -1,11 +1,11 @@
1
1
  export { a as useThemeToggle } from '../chunk-7OV7UPWM.js';
2
- import '../chunk-CMWRCWVK.js';
2
+ import '../chunk-LJ5JKDMG.js';
3
3
  import '../chunk-373WGZZL.js';
4
4
  import '../chunk-BX2DSNRV.js';
5
- import '../chunk-VCK3DKB3.js';
6
- import '../chunk-UOIOBXCP.js';
5
+ import '../chunk-X4F3O7PX.js';
6
+ import '../chunk-3WFLKIPF.js';
7
7
  import '../chunk-KYV74QIT.js';
8
- import '../chunk-PVVI43BW.js';
8
+ import '../chunk-YPL4KIKN.js';
9
9
  import '../chunk-HBOBTNB5.js';
10
10
  import '../chunk-WUFEPE2G.js';
11
11
  import '../chunk-GLRLKFPS.js';
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  export { a as useThemeToggle } from './chunk-7OV7UPWM.js';
2
- export { b as ThemeProvider, a as createTheme } from './chunk-CMWRCWVK.js';
2
+ export { b as ThemeProvider, a as createTheme } from './chunk-LJ5JKDMG.js';
3
3
  import './chunk-373WGZZL.js';
4
4
  export { c as SettingsProvider, b as useSettingsContext } from './chunk-BX2DSNRV.js';
5
- export { b as defaultFont, c as primaryFont, d as secondaryFont, a as shadows, e as typography } from './chunk-VCK3DKB3.js';
6
- import './chunk-UOIOBXCP.js';
5
+ export { b as defaultFont, c as primaryFont, d as secondaryFont, a as shadows, e as typography } from './chunk-X4F3O7PX.js';
6
+ import './chunk-3WFLKIPF.js';
7
7
  import './chunk-KYV74QIT.js';
8
- export { l as action, k as background, m as basePalette, p as colorSchemes, i as common, a as components, q as createShadowColor, r as customShadows, o as darkPalette, h as error, b as grey, e as info, n as lightPalette, c as primary, d as secondary, f as success, j as text, g as warning } from './chunk-PVVI43BW.js';
8
+ export { l as action, k as background, m as basePalette, p as colorSchemes, i as common, a as components, q as createShadowColor, r as customShadows, o as darkPalette, h as error, b as grey, e as info, n as lightPalette, c as primary, d as secondary, f as success, j as text, g as warning } from './chunk-YPL4KIKN.js';
9
9
  import './chunk-HBOBTNB5.js';
10
10
  import './chunk-WUFEPE2G.js';
11
11
  export { a as THEME_CONFIG, q as bgBlur, p as bgGradient, o as borderGradient, j as createPaletteChannel, h as hexToRgbChannel, i as hexToRgbaChannel, l as hideScrollX, m as hideScrollY, r as maxLine, c as mediaQueries, t as menuItem, s as paper, f as pxToRem, e as remToPx, g as responsiveFontSizes, d as setFont, b as stylesMode, n as textGradient, k as varAlpha } from './chunk-GLRLKFPS.js';
@@ -1,5 +1,5 @@
1
- export { b as defaultFont, c as primaryFont, d as secondaryFont, a as shadows, e as typography } from '../../chunk-VCK3DKB3.js';
2
- export { l as action, k as background, m as basePalette, p as colorSchemes, i as common, a as components, q as createShadowColor, r as customShadows, o as darkPalette, h as error, b as grey, e as info, n as lightPalette, c as primary, d as secondary, f as success, j as text, g as warning } from '../../chunk-PVVI43BW.js';
1
+ export { b as defaultFont, c as primaryFont, d as secondaryFont, a as shadows, e as typography } from '../../chunk-X4F3O7PX.js';
2
+ export { l as action, k as background, m as basePalette, p as colorSchemes, i as common, a as components, q as createShadowColor, r as customShadows, o as darkPalette, h as error, b as grey, e as info, n as lightPalette, c as primary, d as secondary, f as success, j as text, g as warning } from '../../chunk-YPL4KIKN.js';
3
3
  import '../../chunk-HBOBTNB5.js';
4
4
  import '../../chunk-GLRLKFPS.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
- export { b as default } from '../chunk-CMWRCWVK.js';
1
+ export { b as default } from '../chunk-LJ5JKDMG.js';
2
2
  import '../chunk-373WGZZL.js';
3
3
  export { b as useSettingsContext } from '../chunk-BX2DSNRV.js';
4
- import '../chunk-VCK3DKB3.js';
5
- import '../chunk-UOIOBXCP.js';
4
+ import '../chunk-X4F3O7PX.js';
5
+ import '../chunk-3WFLKIPF.js';
6
6
  import '../chunk-KYV74QIT.js';
7
- import '../chunk-PVVI43BW.js';
7
+ import '../chunk-YPL4KIKN.js';
8
8
  import '../chunk-HBOBTNB5.js';
9
9
  import '../chunk-WUFEPE2G.js';
10
10
  export { a as THEME_CONFIG } from '../chunk-GLRLKFPS.js';
@@ -1,6 +1,6 @@
1
- export { c as buildPrimaryColors, b as updateComponentsWithSettings, a as updateCoreWithSettings } from '../../chunk-UOIOBXCP.js';
1
+ export { c as buildPrimaryColors, b as updateComponentsWithSettings, a as updateCoreWithSettings } from '../../chunk-3WFLKIPF.js';
2
2
  import '../../chunk-KYV74QIT.js';
3
- import '../../chunk-PVVI43BW.js';
3
+ import '../../chunk-YPL4KIKN.js';
4
4
  import '../../chunk-HBOBTNB5.js';
5
5
  import '../../chunk-GLRLKFPS.js';
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/loadable.tsx","../../src/components/ErrorBoundary/index.tsx","../../src/components/ReloadPage/index.ts"],"names":["Suspense","Component","useEffect","ReloadPage","ReloadPage_default","Fragment","jsx","ErrorBoundary","props","err","error","errorInfo","ErrorBoundary_default","loadable","LazyComponent","showLoading","FixedProgressBar_default","loadable_default"],"mappings":"yCACA,OAAsB,YAAAA,MAAgB,QCAtC,OAAS,aAAAC,MAAuC,QCDhD,OAAS,aAAAC,MAAiB,QAE1B,IAAMC,EAAa,KACjBD,EAAU,IAAM,CACd,OAAO,SAAS,OAAO,CACzB,EAAG,CAAC,CAAC,EAEE,MAGFE,EAAQD,EDmBF,OAMH,YAAAE,EANG,OAAAC,MAAA,oBAtBb,IAAMC,EAAN,cAA4BN,CAAkD,CAC5E,YAAYO,EAA2B,CACrC,MAAMA,CAAK,EACX,KAAK,MAAQ,CAAE,SAAU,GAAO,WAAY,EAAM,CACpD,CAEA,OAAO,yBAAyBC,EAAgC,CAC9D,OACEA,EAAI,QAAQ,WAAW,8CAA8C,EAE9D,CAAE,SAAU,GAAM,WAAY,EAAK,EAGrC,CAAE,SAAU,GAAM,WAAY,EAAM,CAC7C,CAEA,kBAAkBC,EAAcC,EAA4B,CAC1D,QAAQ,MAAM,kCAAmCD,EAAOC,CAAS,CACnE,CAEA,QAAoB,CAClB,OAAI,KAAK,MAAM,UAAY,KAAK,MAAM,WAC7BL,EAACF,EAAA,EAAW,EAGjB,KAAK,MAAM,SAEX,KAAK,MAAM,UACTE,EAAAD,EAAA,CAAE,+EAAgE,EAIjE,KAAK,MAAM,QACpB,CACF,EAEOO,EAAQL,EDjC2B,cAAAD,MAAA,oBAJ1C,IAAMO,EAAW,CAACC,EAA4BC,EAAc,KACnD,SAAgBP,EAAgC,CACrD,OACEF,EAACM,EAAA,CACC,SAAAN,EAACN,EAAA,CAAS,SAAUe,EAAcT,EAACU,EAAA,CAAiB,UAAU,yBAAyB,EAAK,OAC1F,SAAAV,EAACQ,EAAA,CAAe,GAAGN,EAAO,EAC5B,EACF,CAEJ,EAGKS,EAAQJ","sourcesContent":["/* eslint-disable react/function-component-definition */\nimport { ElementType, Suspense } from 'react';\n\nimport ErrorBoundary from 'components/ErrorBoundary';\nimport FixedProgressBar from 'components/FixedProgressBar';\n\nconst loadable = (LazyComponent: ElementType, showLoading = true) => {\n return function Loader(props: Record<string, unknown>) {\n return (\n <ErrorBoundary>\n <Suspense fallback={showLoading ? <FixedProgressBar className=\"loadable-loading-route\" /> : undefined}>\n <LazyComponent {...props} />\n </Suspense>\n </ErrorBoundary>\n );\n };\n};\n\nexport default loadable;\n","/* eslint-disable no-console */\nimport { Component, ErrorInfo, ReactNode } from 'react';\n\nimport ReloadPage from 'components/ReloadPage';\n\nimport type { ErrorBoundaryProps, ErrorBoundaryState } from './props';\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, reloadPage: false };\n }\n\n static getDerivedStateFromError(err: Error): ErrorBoundaryState {\n if (\n err.message.startsWith('Failed to fetch dynamically imported module:')\n ) {\n return { hasError: true, reloadPage: true };\n }\n\n return { hasError: true, reloadPage: false };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error('Error caught in error boundary:', error, errorInfo);\n }\n\n render(): ReactNode {\n if (this.state.hasError && this.state.reloadPage) {\n return <ReloadPage />;\n }\n\n if (this.state.hasError)\n return (\n this.props.fallback || (\n <>Ocorreu um erro inesperado. Atualize a página e tente novamente.</>\n )\n );\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import { useEffect } from 'react';\n\nconst ReloadPage = () => {\n useEffect(() => {\n window.location.reload();\n }, []);\n\n return null;\n};\n\nexport default ReloadPage;\n"]}
1
+ {"version":3,"sources":["../../src/utils/loadable.tsx","../../src/components/ErrorBoundary/index.tsx","../../src/components/ReloadPage/index.ts"],"names":["Suspense","Component","useEffect","ReloadPage","ReloadPage_default","Fragment","jsx","ErrorBoundary","props","err","error","errorInfo","ErrorBoundary_default","loadable","LazyComponent","showLoading","FixedProgressBar_default","loadable_default"],"mappings":"yCACA,OAAsB,YAAAA,MAAgB,QCAtC,OAAS,aAAAC,MAAuC,QCDhD,OAAS,aAAAC,MAAiB,QAE1B,IAAMC,EAAa,KACjBD,EAAU,IAAM,CACd,OAAO,SAAS,OAAO,CACzB,EAAG,CAAC,CAAC,EAEE,MAGFE,EAAQD,EDmBF,OAMH,YAAAE,EANG,OAAAC,MAAA,oBAtBb,IAAMC,EAAN,cAA4BN,CAAkD,CAC5E,YAAYO,EAA2B,CACrC,MAAMA,CAAK,EACX,KAAK,MAAQ,CAAE,SAAU,GAAO,WAAY,EAAM,CACpD,CAEA,OAAO,yBAAyBC,EAAgC,CAC9D,OACEA,EAAI,QAAQ,WAAW,8CAA8C,EAE9D,CAAE,SAAU,GAAM,WAAY,EAAK,EAGrC,CAAE,SAAU,GAAM,WAAY,EAAM,CAC7C,CAEA,kBAAkBC,EAAcC,EAA4B,CAC1D,QAAQ,MAAM,kCAAmCD,EAAOC,CAAS,CACnE,CAEA,QAAoB,CAClB,OAAI,KAAK,MAAM,UAAY,KAAK,MAAM,WAC7BL,EAACF,EAAA,EAAW,EAGjB,KAAK,MAAM,SAEX,KAAK,MAAM,UACTE,EAAAD,EAAA,CAAE,+EAAgE,EAIjE,KAAK,MAAM,QACpB,CACF,EAEOO,EAAQL,ED9BD,cAAAD,MAAA,oBAPd,IAAMO,EAAW,CAACC,EAA4BC,EAAc,KACnD,SAAgBP,EAAgC,CACrD,OACEF,EAACM,EAAA,CACC,SAAAN,EAACN,EAAA,CACC,SACEe,EACET,EAACU,EAAA,CAAiB,UAAU,yBAAyB,EACnD,OAGN,SAAAV,EAACQ,EAAA,CAAe,GAAGN,EAAO,EAC5B,EACF,CAEJ,EAGKS,EAAQJ","sourcesContent":["/* eslint-disable react/function-component-definition */\nimport { ElementType, Suspense } from 'react';\n\nimport ErrorBoundary from 'components/ErrorBoundary';\nimport FixedProgressBar from 'components/FixedProgressBar';\n\nconst loadable = (LazyComponent: ElementType, showLoading = true) => {\n return function Loader(props: Record<string, unknown>) {\n return (\n <ErrorBoundary>\n <Suspense\n fallback={\n showLoading ? (\n <FixedProgressBar className=\"loadable-loading-route\" />\n ) : undefined\n }\n >\n <LazyComponent {...props} />\n </Suspense>\n </ErrorBoundary>\n );\n };\n};\n\nexport default loadable;\n","/* eslint-disable no-console */\nimport { Component, ErrorInfo, ReactNode } from 'react';\n\nimport ReloadPage from 'components/ReloadPage';\n\nimport type { ErrorBoundaryProps, ErrorBoundaryState } from './props';\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, reloadPage: false };\n }\n\n static getDerivedStateFromError(err: Error): ErrorBoundaryState {\n if (\n err.message.startsWith('Failed to fetch dynamically imported module:')\n ) {\n return { hasError: true, reloadPage: true };\n }\n\n return { hasError: true, reloadPage: false };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error('Error caught in error boundary:', error, errorInfo);\n }\n\n render(): ReactNode {\n if (this.state.hasError && this.state.reloadPage) {\n return <ReloadPage />;\n }\n\n if (this.state.hasError)\n return (\n this.props.fallback || (\n <>Ocorreu um erro inesperado. Atualize a página e tente novamente.</>\n )\n );\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import { useEffect } from 'react';\n\nconst ReloadPage = () => {\n useEffect(() => {\n window.location.reload();\n }, []);\n\n return null;\n};\n\nexport default ReloadPage;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const getVendorDisplayName: (vendor?: string) => string;
2
+
3
+ export { getVendorDisplayName };
@@ -0,0 +1,4 @@
1
+ var a=t=>!t||t==="NONE"?"Manual":t.toLowerCase().split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");
2
+
3
+ export { a as getVendorDisplayName };
4
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/vendor.ts"],"names":["getVendorDisplayName","vendor","word"],"mappings":"AAAO,IAAMA,EAAwBC,GAC/B,CAACA,GAAUA,IAAW,OAAe,SAElCA,EACJ,YAAY,EACZ,MAAM,GAAG,EACT,IAAIC,GAAQA,EAAK,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,CAAC,EACxD,KAAK,GAAG","sourcesContent":["export const getVendorDisplayName = (vendor?: string): string => {\n if (!vendor || vendor === 'NONE') return 'Manual';\n\n return vendor\n .toLowerCase()\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zydon/common",
3
- "version": "2.8.56",
3
+ "version": "2.8.57",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",
@@ -1,12 +0,0 @@
1
- import { a } from './chunk-UVPQR2Q2.js';
2
- import l from '@mui/material/Divider';
3
- import n from '@mui/material/Stack';
4
- import { styled } from '@mui/material/styles';
5
- import { useCallback, useMemo } from 'react';
6
- import w from '@mui/material/TablePagination';
7
- import { jsx } from 'react/jsx-runtime';
8
-
9
- var I=styled(a,{shouldForwardProp:o=>o!=="breakpoint"})(({theme:o,breakpoint:t})=>({position:"relative",borderRadius:12,padding:0,gap:0,overflow:"hidden",[o.breakpoints.down(t)]:{borderColor:o.palette.divider}})),M=styled(n,{shouldForwardProp:o=>o!=="breakpoint"})(({theme:o,breakpoint:t})=>({flexDirection:"row",alignItems:"center",justifyContent:"space-between",padding:"24px 24px 0",gap:24,[o.breakpoints.down(t)]:{padding:"16px 16px 0"}})),S=styled(n,{shouldForwardProp:o=>o!=="breakpoint"})(({theme:o,breakpoint:t})=>({flexDirection:"row",alignItems:"center",gap:12,color:o.palette.text.secondary,[o.breakpoints.down(t)]:{"& button, & a":{textIndent:"-9999em",fontSize:0,minWidth:36,maxWidth:36,height:36,width:36,overflow:"hidden","& .MuiButton-icon":{margin:0}}}})),B=styled(l)({borderStyle:"dashed",height:16,margin:"auto"}),T=styled(l)({borderStyle:"dashed",height:12,marginTop:"auto",marginBottom:"auto"}),H=styled(n,{shouldForwardProp:o=>o!=="breakpoint"})(({theme:o,breakpoint:t})=>({position:"relative",padding:16,flexDirection:"row",alignItems:"center",color:o.palette.text.secondary,[o.breakpoints.down(t)]:{padding:"12px 16px",borderBottom:`1px solid ${o.palette.divider}`,minHeight:60,[o.breakpoints.down(t)]:{"& button":{textIndent:"-9999em",fontSize:0,minWidth:36,maxWidth:36,height:36,width:36,overflow:"hidden","& .MuiButton-icon":{margin:0}}}}})),F=styled(n,{shouldForwardProp:o=>o!=="breakpoint"})(({theme:o,breakpoint:t})=>({width:320,flexDirection:"row",alignItems:"center",justifyContent:"center",[o.breakpoints.down(t)]:{width:"100%",zIndex:1,"& fieldset, & input":{display:"flex"},"& .MuiInputAdornment-root":{marginLeft:0}}})),g=styled(n)(({theme:o})=>({"& .MuiToolbar-root":{height:24,minHeight:24,overflow:"hidden",[o.breakpoints.down("sm")]:{height:"auto",flexWrap:"wrap",justifyContent:"center"}}})),W=styled(n)(({theme:o})=>({minHeight:60,alignItems:"flex-end",justifyContent:"center",borderTop:`1px solid ${o.palette.divider}`,[o.breakpoints.down("sm")]:{minHeight:"auto"}})),$=styled(n)(({theme:o})=>({flexDirection:"row",height:60,alignItems:"center",justifyContent:"space-between",borderTop:`1px solid ${o.palette.divider}`,gap:16,padding:16}));var P=({count:o,page:t,rowsPerPage:i,onPageChange:r,onRowsPerPageChange:a})=>{let p=Math.ceil(o/i)||1,u=useCallback((d,x)=>{r(x);},[r]),f=useCallback(d=>{a(Number(d.target.value));},[a]),h=useMemo(()=>`P\xE1gina ${t+1} de ${p}`,[t,p]);return jsx(g,{"aria-label":h,"aria-live":"polite",role:"navigation",children:jsx(w,{color:"primary",component:"div",size:"small",count:o,page:t,rowsPerPage:i,onPageChange:u,onRowsPerPageChange:f})})},R=P;
10
-
11
- export { I as a, M as b, S as c, B as d, T as e, H as f, F as g, W as h, $ as i, R as j };
12
- //# sourceMappingURL=chunk-2W54CJ6E.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/DataView/styles.ts","../src/components/DataView/Pagination.tsx"],"names":["Divider","Stack","styled","Container","Panel_default","prop","theme","breakpoint","Header","ActionsContainer","ActionsDivider","ToolbarActionsDivider","Topbar","SearchContainer","PaginationContainer","MobilePaginationContainer","DesktopPaginationContainer","useCallback","useMemo","MuiPagination","jsx","Pagination","count","page","rowsPerPage","onPageChange","onRowsPerPageChange","totalPages","handlePageChange","_","newPage","handleRowsPerPageChange","event","ariaLabel","Pagination_default"],"mappings":"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","sourcesContent":["import Divider from '@mui/material/Divider';\nimport Stack, { StackProps } from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\nimport { Breakpoint } from '@mui/material/styles';\n\nimport Panel from 'components/Panel';\n\nexport interface DefaultProps {\n breakpoint: Breakpoint | number;\n}\n\nexport interface ContainerProps extends StackProps {\n breakpoint: Breakpoint | number;\n}\n\nexport const Container = styled(Panel, {\n shouldForwardProp: prop => prop !== 'breakpoint',\n})<ContainerProps>(({ theme, breakpoint }) => ({\n position: 'relative',\n borderRadius: 12,\n padding: 0,\n gap: 0,\n overflow: 'hidden',\n\n [theme.breakpoints.down(breakpoint)]: {\n borderColor: theme.palette.divider,\n },\n}));\n\nexport const Header = styled(Stack, {\n shouldForwardProp: prop => prop !== 'breakpoint',\n})<DefaultProps>(({ theme, breakpoint }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '24px 24px 0',\n gap: 24,\n\n [theme.breakpoints.down(breakpoint)]: {\n padding: '16px 16px 0',\n },\n}));\n\nexport const ActionsContainer = styled(Stack, {\n shouldForwardProp: prop => prop !== 'breakpoint',\n})<DefaultProps>(({ theme, breakpoint }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n color: theme.palette.text.secondary,\n\n [theme.breakpoints.down(breakpoint)]: {\n '& button, & a': {\n textIndent: '-9999em',\n fontSize: 0,\n minWidth: 36,\n maxWidth: 36,\n height: 36,\n width: 36,\n overflow: 'hidden',\n\n '& .MuiButton-icon': {\n margin: 0,\n },\n },\n },\n}));\n\nexport const ActionsDivider = styled(Divider)({\n borderStyle: 'dashed',\n height: 16,\n margin: 'auto',\n});\n\nexport const ToolbarActionsDivider = styled(Divider)({\n borderStyle: 'dashed',\n height: 12,\n marginTop: 'auto',\n marginBottom: 'auto',\n});\n\nexport const Topbar = styled(Stack, {\n shouldForwardProp: prop => prop !== 'breakpoint',\n})<DefaultProps>(({ theme, breakpoint }) => ({\n position: 'relative',\n padding: 16,\n flexDirection: 'row',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n\n [theme.breakpoints.down(breakpoint)]: {\n padding: '12px 16px',\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: 60,\n\n [theme.breakpoints.down(breakpoint)]: {\n '& button': {\n textIndent: '-9999em',\n fontSize: 0,\n minWidth: 36,\n maxWidth: 36,\n height: 36,\n width: 36,\n overflow: 'hidden',\n\n '& .MuiButton-icon': {\n margin: 0,\n },\n },\n },\n },\n}));\n\nexport const SearchContainer = styled(Stack, {\n shouldForwardProp: prop => prop !== 'breakpoint',\n})<DefaultProps>(({ theme, breakpoint }) => ({\n width: 320,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n\n [theme.breakpoints.down(breakpoint)]: {\n width: '100%',\n zIndex: 1,\n\n '& fieldset, & input': {\n display: 'flex',\n },\n\n '& .MuiInputAdornment-root': {\n marginLeft: 0,\n },\n },\n}));\n\nexport const PaginationContainer = styled(Stack)(({ theme }) => ({\n '& .MuiToolbar-root': {\n height: 24,\n minHeight: 24,\n overflow: 'hidden',\n\n [theme.breakpoints.down('sm')]: {\n height: 'auto',\n flexWrap: 'wrap',\n justifyContent: 'center',\n },\n },\n}));\n\nexport const MobilePaginationContainer = styled(Stack)(({ theme }) => ({\n minHeight: 60,\n alignItems: 'flex-end',\n justifyContent: 'center',\n borderTop: `1px solid ${theme.palette.divider}`,\n\n [theme.breakpoints.down('sm')]: {\n minHeight: 'auto',\n },\n}));\n\nexport const DesktopPaginationContainer = styled(Stack)(({ theme }) => ({\n flexDirection: 'row',\n height: 60,\n alignItems: 'center',\n justifyContent: 'space-between',\n borderTop: `1px solid ${theme.palette.divider}`,\n gap: 16,\n padding: 16,\n}));\n","import { useCallback, useMemo } from 'react';\nimport MuiPagination from '@mui/material/TablePagination';\n\nimport { PaginationProps } from './props';\nimport { PaginationContainer } from './styles';\n\nconst Pagination = ({\n count,\n page,\n rowsPerPage,\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps) => {\n const totalPages = Math.ceil(count / rowsPerPage) || 1;\n\n const handlePageChange = useCallback(\n (_: unknown, newPage: number) => {\n onPageChange(newPage);\n },\n [onPageChange],\n );\n\n const handleRowsPerPageChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onRowsPerPageChange(Number(event.target.value));\n },\n [onRowsPerPageChange],\n );\n\n const ariaLabel = useMemo(\n () => `Página ${page + 1} de ${totalPages}`,\n [page, totalPages],\n );\n\n return (\n <PaginationContainer\n aria-label={ariaLabel}\n aria-live=\"polite\"\n role=\"navigation\"\n >\n <MuiPagination\n color=\"primary\"\n component=\"div\"\n size=\"small\"\n count={count}\n page={page}\n rowsPerPage={rowsPerPage}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n />\n </PaginationContainer>\n );\n};\n\nexport default Pagination;\n"]}
@@ -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","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","defaultFilterOptions","optionsFilter","state","searchValue","opt","Autocomplete","value","options","noOptionsText","loadingText","onChange","groupBy","disabled","renderOption","onInputChange","onSearch","onBlur","filterOptionsProp","inputReasonRef","acc","curr","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 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 filterOptions: filterOptionsProp,\n ...other\n },\n ref,\n ) => {\n const inputReasonRef = useRef<'input' | 'reset' | 'clear' | 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 = options.find(\n opt => opt.value.toString() === value?.toString(),\n );\n\n return item || null;\n }, [options, value, multiple]);\n\n const resolvedFilterOptions = 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 />\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 ],\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 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 }: 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 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 (onScrollEnd && !firedRef.current && visibleStopIndex >= itemCount - 3) {\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,26 +0,0 @@
1
- import { a as a$4 } from './chunk-PVI5BAUW.js';
2
- import { a as a$5 } from './chunk-IJZCVZ32.js';
3
- import { a as a$8 } from './chunk-IDFJFFIV.js';
4
- import { a as a$6 } from './chunk-6U5LS7MP.js';
5
- import { i, j, a as a$2, b as b$1, c, d, f, e, g, h as h$1 } from './chunk-2W54CJ6E.js';
6
- import { a as a$7 } from './chunk-F65ZXAGV.js';
7
- import { a as a$9 } from './chunk-I4PPSW36.js';
8
- import { a as a$3 } from './chunk-CO2KQFUN.js';
9
- import { a } from './chunk-VURAUMLN.js';
10
- import { a as a$1 } from './chunk-LQRRMVFN.js';
11
- import { b } from './chunk-RPO7AI5K.js';
12
- import { memo, forwardRef, useState, useRef, useEffect, useCallback, useMemo, Fragment as Fragment$1, Children, isValidElement, cloneElement } from 'react';
13
- import ot from 'react-fast-compare';
14
- import H from '@mui/material/Button';
15
- import tt from '@mui/material/CircularProgress';
16
- import rt from '@mui/material/Divider';
17
- import et from '@mui/material/LinearProgress';
18
- import h from '@mui/material/Stack';
19
- import po from '@mui/material/Typography';
20
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
21
- import { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';
22
-
23
- var A="datagrid-actions";var Ho=({rowCount:r,page:e,rowsPerPage:n,onPaginationChange:a})=>jsxs(i,{children:[jsxs(h,{direction:"row",alignItems:"center",gap:.5,children:[jsx(po,{variant:"body2",color:"text.disabled",children:"Total de itens:"}),jsx(po,{variant:"body2",children:r})]}),jsx(j,{count:r,page:e,rowsPerPage:n,onPageChange:s=>a(s,n),onRowsPerPageChange:s=>a(e,s)})]}),uo=memo(Ho);var ho=(r,e)=>Children.map(r,n=>{if(!isValidElement(n))return n;let a=n.props.onClick,s={};s.onClick=(...d)=>{e(),a&&a(...d);};let l=n.props;return l?.children&&(s.children=ho(l.children,e)),cloneElement(n,s)}),Vo=({children:r,onClose:e})=>r?ho(r,e):null,go=memo(Vo);var qo=forwardRef(({children:r,...e},n)=>jsx(H,{...e,ref:n,color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:r??"Colunas"}));qo.displayName="ColumnsButton";var Qo=({setFilterButtonEl:r})=>{let e=useCallback(n=>{r(n);},[r]);return jsx(a$9,{container:A,children:jsx(GridToolbarColumnsButton,{ref:e,slotProps:{button:{color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:"Colunas"}}})})},Co=Qo;var nt=({title:r,header:e$1,headerProps:n,breakpoint:a$9="md",columns:s,rows:l=[],mobileSlots:d$1,mobileSlotsProps:O,mobileRender:ko,rowCount:b$2=0,paginationModel:m={page:0,pageSize:25},onPaginationChange:f$1,actions:L,moreActions:N,onAdd:F,onSearch:V,searchValue:To,onSearchChange:vo,slots:C,slotProps:Do,loading:P,fetching:z,fetchingNextPage:So,containerProps:yo={height:562,maxHeight:562},hideFooter:_,showColumnButton:R=!1,filterButton:k,activeFilters:W,onRowsScrollEnd:v,scrollEndThreshold:w=200,...Ao})=>{let u=a$1(),c$1=b("down",a$9),[bo,Ro]=useState(null),U=useRef(null);useEffect(()=>{let i=U.current;if(!i||!c$1||!v)return;let K=()=>{let{scrollTop:xo,scrollHeight:Eo,clientHeight:Io}=i;Eo-xo-Io<=w&&v();};return i.addEventListener("scroll",K,{passive:!0}),()=>{i.removeEventListener("scroll",K);}},[c$1,v,w,l.length]);let q=!!V,M=!!F,D=!!L,x=!!N,E=c$1&&x,S=!c$1&&x,wo=D||M||E,Q=S||q||R||!!k||!c$1,J=useCallback(()=>f$1?jsx(uo,{rowCount:b$2,page:m.page,rowsPerPage:m.pageSize,onPaginationChange:f$1}):null,[b$2,m,f$1]),Mo=useMemo(()=>({...C,footer:J,...R&&!C?.toolbar&&{toolbar:Co}}),[C,J,R]);return jsxs(a$2,{breakpoint:a$9,...yo,flex:P?1:void 0,minHeight:P||l.length===0?562:void 0,children:[e$1?jsx(h,{p:3,...n,children:e$1}):jsxs(Fragment,{children:[jsxs(b$1,{breakpoint:a$9,children:[jsx(po,{variant:"overline",color:"text.secondary",noWrap:!0,children:r}),wo&&jsxs(c,{breakpoint:a$9,children:[D&&L,M&&jsxs(Fragment,{children:[D&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(H,{startIcon:jsx(a,{icon:"SIMPLE_ADD"}),variant:"contained",onClick:F,children:"Adicionar"})]}),E&&jsxs(Fragment,{children:[(D||M)&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(H,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:u.onOpen,children:"Mais"})]})]})]}),Q&&jsxs(f,{breakpoint:a$9,children:[jsxs(h,{flex:1,direction:"row",alignItems:"center",id:A,gap:.5,children:[x&&jsxs(Fragment,{children:[S&&jsxs(Fragment,{children:[jsx(H,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:u.onOpen,children:"Mais"}),!c$1&&jsx(e,{orientation:"vertical",flexItem:!0})]}),(S||E)&&jsx(a$3,{open:u.open,anchorEl:u.open,onClose:u.onClose,sx:{minWidth:160},disabledArrow:!0,children:jsx(go,{onClose:u.onClose,children:N})})]}),!c$1&&k&&jsxs(Fragment,{children:[k,S&&jsx(e,{orientation:"vertical",flexItem:!0})]})]}),q&&jsxs(g,{breakpoint:a$9,children:[jsx(a$4,{value:To,placeholder:"Buscar",onSearch:V,onChange:i=>vo?.(i.target.value),size:"small",fullWidth:!0,iconPosition:"start"}),c$1&&k&&jsx(h,{ml:1,children:k})]})]}),W&&W,!Q&&jsx(rt,{sx:{mt:2}})]}),c$1?jsxs(a$5,{isFetching:z,fetching:jsx(a$6,{}),isLoading:P,loading:jsx(tt,{sx:{m:"160px auto"}}),isEmpty:l.length===0,empty:jsxs(h,{flex:1,direction:"column",...O,children:[d$1&&d$1,jsx(h,{flex:1,alignItems:"center",justifyContent:"center",children:C?.noRowsOverlay?jsx(C.noRowsOverlay,{}):jsx(po,{variant:"body2",color:"text.secondary",children:"Nenhum registro encontrado"})})]}),children:[jsxs(h,{direction:"column",flex:1,minHeight:0,...O,children:[d$1&&d$1,jsx(a$7,{fillContent:!0,ref:U,children:l.map(i=>jsx(Fragment$1,{children:ko(i)},i.id))})]}),!_&&f$1&&jsx(h$1,{children:jsx(j,{count:b$2,page:m.page,rowsPerPage:m.pageSize,onPageChange:i=>f$1?.(i,m.pageSize),onRowsPerPageChange:i=>f$1?.(m.page,i)})})]}):jsx(a$8,{columns:s,rows:l,slots:Mo,slotProps:{panel:{anchorEl:bo},toolbar:{setFilterButtonEl:Ro,showQuickFilter:!0},...Do},columnHeaderHeight:48,getRowHeight:()=>68,loading:P,fetching:z,hideFooter:_,onRowsScrollEnd:v,scrollEndThreshold:w,...Ao}),So&&jsx(et,{})]},P?"loading":"data")},Yt=memo(nt,ot);
24
-
25
- export { uo as a, go as b, Co as c, Yt as d };
26
- //# sourceMappingURL=chunk-GYABWIFG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/DataView/index.tsx","../src/components/DataView/contants.ts","../src/components/DataView/DesktopFooter.tsx","../src/components/DataView/EnhancedMoreActions.ts","../src/components/DataView/Toolbar.tsx"],"names":["Fragment","memo","useCallback","useEffect","useMemo","useRef","useState","isEqual","Button","CircularProgress","Divider","LinearProgress","Stack","Typography","DATAGRID_ACTIONS","jsx","jsxs","DesktopFooter","rowCount","page","rowsPerPage","onPaginationChange","DesktopPaginationContainer","Pagination_default","newPage","newRowsPerPage","DesktopFooter_default","Children","cloneElement","isValidElement","createEnhanceMoreActions","children","onClose","child","originalOnClick","enhancedProps","args","childProps","EnhancedMoreActions","EnhancedMoreActions_default","forwardRef","GridToolbarColumnsButton","ColumnsButton","props","ref","Icon_default","Toolbar","setFilterButtonEl","handleColumnsButtonRef","button","Portal_default","Toolbar_default","DataViewComponent","title","header","headerProps","breakpoint","columns","rows","mobileSlots","mobileSlotsProps","mobileRender","paginationModel","actions","moreActions","onAdd","onSearch","searchValue","onSearchChange","slots","slotProps","loading","fetching","fetchingNextPage","containerProps","hideFooter","showColumnButton","filterButton","activeFilters","onRowsScrollEnd","scrollEndThreshold","others","popover","usePopover_default","isMobile","useResponsive_default","filterButtonEl","scrollableNodeRef","node","handleScroll","scrollTop","scrollHeight","clientHeight","showSearch","showAdd","showActions","showMoreActions","showHeaderMoreActions","showTopbarMoreActions","showActionsContainer","showTopbar","FooterComponent","dataGridSlots","Container","Header","ActionsContainer","ActionsDivider","Topbar","ToolbarActionsDivider","MenuPopover_default","SearchContainer","SearchInput_default","e","Result_default","FixedProgressBar_default","Scrollbar_default","row","MobilePaginationContainer","DataGrid_default","DataView_default"],"mappings":"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","sourcesContent":["import {\n Fragment,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport isEqual from 'react-fast-compare';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Divider from '@mui/material/Divider';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport {\n GridSlotsComponentsProps,\n GridValidRowModel,\n} from '@mui/x-data-grid-premium';\n\nimport DataGrid from 'components/DataGrid';\nimport FixedProgressBar from 'components/FixedProgressBar';\nimport Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport Result from 'components/Result';\nimport Scrollbar from 'components/Scrollbar';\nimport SearchInput from 'components/SearchInput';\nimport usePopover from 'hooks/usePopover';\nimport useResponsive from 'hooks/useResponsive';\n\nimport { DATAGRID_ACTIONS } from './contants';\nimport DesktopFooter from './DesktopFooter';\nimport EnhancedMoreActions from './EnhancedMoreActions';\nimport Pagination from './Pagination';\nimport { DataGridSlotsProps, DataViewProps } from './props';\nimport {\n ActionsContainer,\n ActionsDivider,\n Container,\n Header,\n MobilePaginationContainer,\n SearchContainer,\n ToolbarActionsDivider,\n Topbar,\n} from './styles';\nimport Toolbar from './Toolbar';\n\nconst DataViewComponent = <T extends GridValidRowModel = GridValidRowModel>({\n title,\n header,\n headerProps,\n breakpoint = 'md',\n columns,\n rows = [],\n mobileSlots,\n mobileSlotsProps,\n mobileRender,\n rowCount = 0,\n paginationModel = { page: 0, pageSize: 25 },\n onPaginationChange,\n actions,\n moreActions,\n onAdd,\n onSearch,\n searchValue,\n onSearchChange,\n slots,\n slotProps,\n loading,\n fetching,\n fetchingNextPage,\n containerProps = { height: 562, maxHeight: 562 },\n hideFooter,\n showColumnButton = false,\n filterButton,\n activeFilters,\n onRowsScrollEnd,\n scrollEndThreshold = 200,\n ...others\n}: DataViewProps<T>) => {\n const popover = usePopover();\n const isMobile = useResponsive('down', breakpoint);\n const [filterButtonEl, setFilterButtonEl] =\n useState<HTMLButtonElement | null>(null);\n const scrollableNodeRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const node = scrollableNodeRef.current;\n\n if (!node || !isMobile || !onRowsScrollEnd) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = node;\n const distanceToBottom = scrollHeight - scrollTop - clientHeight;\n if (distanceToBottom <= scrollEndThreshold) {\n (onRowsScrollEnd as () => void)();\n }\n };\n\n node.addEventListener('scroll', handleScroll, { passive: true });\n\n return () => {\n node.removeEventListener('scroll', handleScroll);\n };\n }, [isMobile, onRowsScrollEnd, scrollEndThreshold, rows.length]);\n\n const showSearch = !!onSearch;\n const showAdd = !!onAdd;\n const showActions = !!actions;\n const showMoreActions = !!moreActions;\n const showHeaderMoreActions = isMobile && showMoreActions;\n const showTopbarMoreActions = !isMobile && showMoreActions;\n const showActionsContainer = showActions || showAdd || showHeaderMoreActions;\n const showTopbar =\n showTopbarMoreActions ||\n showSearch ||\n showColumnButton ||\n !!filterButton ||\n !isMobile;\n\n const FooterComponent = useCallback(() => {\n if (onPaginationChange) {\n return (\n <DesktopFooter\n rowCount={rowCount}\n page={paginationModel.page}\n rowsPerPage={paginationModel.pageSize}\n onPaginationChange={onPaginationChange}\n />\n );\n }\n\n return null;\n }, [rowCount, paginationModel, onPaginationChange]);\n\n const dataGridSlots: DataGridSlotsProps = useMemo(\n () => ({\n ...slots,\n footer: FooterComponent as unknown as DataGridSlotsProps['footer'],\n ...(showColumnButton &&\n !slots?.toolbar && {\n toolbar: Toolbar as unknown as DataGridSlotsProps['toolbar'],\n }),\n }),\n [slots, FooterComponent, showColumnButton],\n );\n\n return (\n <Container\n key={loading ? 'loading' : 'data'}\n breakpoint={breakpoint}\n {...containerProps}\n flex={loading ? 1 : undefined}\n minHeight={loading || rows.length === 0 ? 562 : undefined}\n >\n {header ? (\n <Stack p={3} {...headerProps}>\n {header}\n </Stack>\n ) : (\n <>\n <Header breakpoint={breakpoint}>\n <Typography variant=\"overline\" color=\"text.secondary\" noWrap>\n {title}\n </Typography>\n\n {showActionsContainer && (\n <ActionsContainer breakpoint={breakpoint}>\n {showActions && actions}\n\n {showAdd && (\n <>\n {showActions && (\n <ActionsDivider orientation=\"vertical\" flexItem />\n )}\n\n <Button\n startIcon={<Icon icon=\"SIMPLE_ADD\" />}\n variant=\"contained\"\n onClick={onAdd}\n >\n Adicionar\n </Button>\n </>\n )}\n\n {showHeaderMoreActions && (\n <>\n {(showActions || showAdd) && (\n <ActionsDivider orientation=\"vertical\" flexItem />\n )}\n\n <Button\n color=\"inherit\"\n startIcon={<Icon icon=\"MORE_BOLD\" />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n Mais\n </Button>\n </>\n )}\n </ActionsContainer>\n )}\n </Header>\n\n {showTopbar && (\n <Topbar breakpoint={breakpoint}>\n <Stack\n flex={1}\n direction=\"row\"\n alignItems=\"center\"\n id={DATAGRID_ACTIONS}\n gap={0.5}\n >\n {showMoreActions && (\n <>\n {showTopbarMoreActions && (\n <>\n <Button\n color=\"inherit\"\n startIcon={<Icon icon=\"MORE_BOLD\" />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n Mais\n </Button>\n\n {!isMobile && (\n <ToolbarActionsDivider\n orientation=\"vertical\"\n flexItem\n />\n )}\n </>\n )}\n\n {(showTopbarMoreActions || showHeaderMoreActions) && (\n <MenuPopover\n open={popover.open}\n anchorEl={popover.open}\n onClose={popover.onClose}\n sx={{\n minWidth: 160,\n }}\n disabledArrow={true}\n >\n <EnhancedMoreActions onClose={popover.onClose}>\n {moreActions}\n </EnhancedMoreActions>\n </MenuPopover>\n )}\n </>\n )}\n\n {!isMobile && filterButton && (\n <>\n {filterButton}\n\n {showTopbarMoreActions && (\n <ToolbarActionsDivider orientation=\"vertical\" flexItem />\n )}\n </>\n )}\n </Stack>\n\n {showSearch && (\n <SearchContainer breakpoint={breakpoint}>\n <SearchInput\n value={searchValue}\n placeholder=\"Buscar\"\n onSearch={onSearch}\n onChange={e => onSearchChange?.(e.target.value)}\n size=\"small\"\n fullWidth\n iconPosition=\"start\"\n />\n {isMobile && filterButton && (\n <Stack ml={1}>{filterButton}</Stack>\n )}\n </SearchContainer>\n )}\n </Topbar>\n )}\n\n {activeFilters && activeFilters}\n\n {!showTopbar && <Divider sx={{ mt: 2 }} />}\n </>\n )}\n\n {isMobile ? (\n <Result\n isFetching={fetching}\n fetching={<FixedProgressBar />}\n isLoading={loading}\n loading={<CircularProgress sx={{ m: '160px auto' }} />}\n isEmpty={rows.length === 0}\n empty={\n <Stack flex={1} direction=\"column\" {...mobileSlotsProps}>\n {mobileSlots && mobileSlots}\n\n <Stack flex={1} alignItems=\"center\" justifyContent=\"center\">\n {slots?.noRowsOverlay ? (\n <slots.noRowsOverlay />\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nenhum registro encontrado\n </Typography>\n )}\n </Stack>\n </Stack>\n }\n >\n <Stack\n direction=\"column\"\n flex={1}\n minHeight={0}\n {...mobileSlotsProps}\n >\n {mobileSlots && mobileSlots}\n\n <Scrollbar fillContent ref={scrollableNodeRef}>\n {rows.map(row => (\n <Fragment key={row.id}>\n {mobileRender(row)}\n </Fragment>\n ))}\n </Scrollbar>\n </Stack>\n\n {!hideFooter && onPaginationChange && (\n <MobilePaginationContainer>\n <Pagination\n count={rowCount}\n page={paginationModel.page}\n rowsPerPage={paginationModel.pageSize}\n onPageChange={newPage =>\n onPaginationChange?.(newPage, paginationModel.pageSize)\n }\n onRowsPerPageChange={newRowsPerPage =>\n onPaginationChange?.(paginationModel.page, newRowsPerPage)\n }\n />\n </MobilePaginationContainer>\n )}\n </Result>\n ) : (\n <DataGrid\n columns={columns}\n rows={rows}\n slots={dataGridSlots}\n slotProps={{\n panel: { anchorEl: filterButtonEl },\n toolbar: {\n setFilterButtonEl,\n showQuickFilter: true,\n } as unknown as GridSlotsComponentsProps['toolbar'],\n ...slotProps,\n }}\n columnHeaderHeight={48}\n getRowHeight={() => 68}\n loading={loading}\n fetching={fetching}\n hideFooter={hideFooter}\n onRowsScrollEnd={onRowsScrollEnd}\n scrollEndThreshold={scrollEndThreshold}\n {...others}\n />\n )}\n\n {fetchingNextPage && <LinearProgress />}\n </Container>\n );\n};\n\nexport default memo(DataViewComponent, isEqual) as typeof DataViewComponent;\nexport {\n ActionsContainer,\n ActionsDivider,\n Container,\n DesktopFooter,\n EnhancedMoreActions,\n Header,\n MobilePaginationContainer,\n SearchContainer,\n Toolbar,\n ToolbarActionsDivider,\n Topbar,\n};\n","export const DATAGRID_ACTIONS = 'datagrid-actions';\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Pagination from './Pagination';\nimport { DesktopFooterProps } from './props';\nimport { DesktopPaginationContainer } from './styles';\n\nconst DesktopFooter = ({\n rowCount,\n page,\n rowsPerPage,\n onPaginationChange,\n}: DesktopFooterProps) => {\n return (\n <DesktopPaginationContainer>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n <Typography variant=\"body2\" color=\"text.disabled\">\n Total de itens:\n </Typography>\n <Typography variant=\"body2\">{rowCount}</Typography>\n </Stack>\n\n <Pagination\n count={rowCount}\n page={page}\n rowsPerPage={rowsPerPage}\n onPageChange={newPage => onPaginationChange(newPage, rowsPerPage)}\n onRowsPerPageChange={newRowsPerPage =>\n onPaginationChange(page, newRowsPerPage)\n }\n />\n </DesktopPaginationContainer>\n );\n};\n\nexport default memo(DesktopFooter);\n","import {\n Children,\n cloneElement,\n isValidElement,\n memo,\n ReactElement,\n ReactNode,\n} from 'react';\n\nimport { EnhancedMoreActionsProps } from './props';\n\nconst createEnhanceMoreActions = (\n children: ReactNode,\n onClose: () => void,\n): ReactNode => {\n return Children.map(children, child => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const originalOnClick = (\n child.props as { onClick?: (...args: unknown[]) => void }\n ).onClick;\n\n const enhancedProps: {\n onClick?: (...args: unknown[]) => void;\n children?: ReactNode;\n } = {};\n\n enhancedProps.onClick = (...args: unknown[]) => {\n onClose();\n if (originalOnClick) {\n originalOnClick(...args);\n }\n };\n\n const childProps = child.props as { children?: ReactNode };\n if (childProps?.children) {\n enhancedProps.children = createEnhanceMoreActions(\n childProps.children,\n onClose,\n );\n }\n\n return cloneElement(child as ReactElement, enhancedProps);\n });\n};\n\nconst EnhancedMoreActions = ({\n children,\n onClose,\n}: EnhancedMoreActionsProps) => {\n if (!children) return null;\n return createEnhanceMoreActions(children, onClose);\n};\n\nexport default memo(EnhancedMoreActions);\n","import { forwardRef, useCallback } from 'react';\nimport Button, { ButtonProps } from '@mui/material/Button';\nimport { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';\n\nimport Icon from 'components/Icon';\nimport Portal from 'components/Portal';\n\nimport { DATAGRID_ACTIONS } from './contants';\nimport { ToolbarProps } from './props';\n\nconst ColumnsButton = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ children, ...props }, ref) => (\n <Button\n {...props}\n ref={ref}\n color=\"inherit\"\n startIcon={<Icon icon=\"COLUMNS\" />}\n >\n {children ?? 'Colunas'}\n </Button>\n ),\n);\n\nColumnsButton.displayName = 'ColumnsButton';\n\nconst Toolbar = ({ setFilterButtonEl }: ToolbarProps) => {\n const handleColumnsButtonRef = useCallback(\n (button: HTMLButtonElement | null) => {\n setFilterButtonEl(button);\n },\n [setFilterButtonEl],\n );\n\n return (\n <Portal container={DATAGRID_ACTIONS}>\n <GridToolbarColumnsButton\n ref={handleColumnsButtonRef}\n slotProps={{\n button: {\n color: 'inherit',\n startIcon: <Icon icon=\"COLUMNS\" />,\n children: 'Colunas',\n },\n }}\n />\n </Portal>\n );\n};\n\nexport default Toolbar;\n"]}