@zydon/common 2.7.61 → 2.7.63
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-75G5RNV4.js → chunk-5LQLLZ5L.js} +2 -2
- package/dist/chunk-5NIMUEW5.js +25 -0
- package/dist/chunk-5NIMUEW5.js.map +1 -0
- package/dist/chunk-6WGKIN5L.js +18 -0
- package/dist/chunk-6WGKIN5L.js.map +1 -0
- package/dist/chunk-7MVZYOHX.js +13 -0
- package/dist/chunk-7MVZYOHX.js.map +1 -0
- package/dist/{chunk-KRT2AT6N.js → chunk-CWCEG2DZ.js} +2 -2
- package/dist/{chunk-HLMZQG27.js → chunk-HWYA3EGC.js} +2 -2
- package/dist/chunk-HWYA3EGC.js.map +1 -0
- package/dist/chunk-IEGF6HVV.js +43 -0
- package/dist/{chunk-XTTDUDXX.js.map → chunk-IEGF6HVV.js.map} +1 -1
- package/dist/chunk-JFZOAS75.js +23 -0
- package/dist/{chunk-MJQ5FMYR.js → chunk-JZ55NEMI.js} +2 -2
- package/dist/{chunk-WVXEXDGZ.js → chunk-KR3DUHA6.js} +3 -3
- package/dist/{chunk-X7VVV26F.js → chunk-LEMPYV5U.js} +2 -2
- package/dist/{chunk-AA2DXMIC.js → chunk-LNXA53QR.js} +2 -2
- package/dist/{chunk-CDJKO3NN.js → chunk-LY3IB5VH.js} +2 -2
- package/dist/{chunk-YEVAAROT.js → chunk-MP2LAJS5.js} +3 -3
- package/dist/{chunk-BX2JPTSO.js → chunk-N4DW7EIC.js} +2 -2
- package/dist/{chunk-DLIHGNBS.js → chunk-NQNNMRLC.js} +3 -3
- package/dist/{chunk-DLIHGNBS.js.map → chunk-NQNNMRLC.js.map} +1 -1
- package/dist/{chunk-QHXITV2M.js → chunk-OTVEMGF2.js} +2 -2
- package/dist/chunk-POTVACYB.js +8 -0
- package/dist/chunk-POTVACYB.js.map +1 -0
- package/dist/chunk-QVU6HSYP.js +12 -0
- package/dist/chunk-QVU6HSYP.js.map +1 -0
- package/dist/{chunk-GFXVOSAE.js → chunk-R76WTFYC.js} +2 -2
- package/dist/chunk-RBTYTONM.js +13 -0
- package/dist/chunk-RBTYTONM.js.map +1 -0
- package/dist/{chunk-BOKTSYI5.js → chunk-RFRLNTFN.js} +2 -2
- package/dist/{chunk-MTBVMYTS.js → chunk-U7BH6DMJ.js} +2 -2
- package/dist/{chunk-CU7PKEY2.js → chunk-VPKUUY5Q.js} +2 -2
- package/dist/chunk-VYNBVZSA.js +37 -0
- package/dist/chunk-VYNBVZSA.js.map +1 -0
- package/dist/chunk-WQSRNCNF.js +5 -0
- package/dist/chunk-WQSRNCNF.js.map +1 -0
- package/dist/{chunk-BBFBNDAZ.js → chunk-XZFBTUAG.js} +2 -2
- package/dist/{chunk-C7VQJ35F.js → chunk-ZFRNMT3P.js} +2 -2
- package/dist/{chunk-SSLZPI3M.js → chunk-ZGSSTXUO.js} +2 -2
- package/dist/components/ActionButton/index.js +2 -2
- package/dist/components/Autocomplete/index.js +2 -2
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/AvatarButton/index.js +3 -3
- package/dist/components/BuilderLayout/index.js +2 -2
- package/dist/components/BuilderSidebar/index.js +1 -1
- package/dist/components/BulkEditModal/index.d.ts +64 -0
- package/dist/components/BulkEditModal/index.js +28 -0
- package/dist/components/BulkEditModal/index.js.map +1 -0
- package/dist/components/CardBrand/index.js +1 -1
- package/dist/components/Common/index.js +3 -3
- package/dist/components/CopyButton/index.js +2 -2
- package/dist/components/DataGrid/index.js +2 -1
- package/dist/components/DataView/index.js +8 -6
- package/dist/components/DragButton/index.js +2 -2
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/DynamicDataView/index.d.ts +4 -2
- package/dist/components/DynamicDataView/index.js +20 -14
- package/dist/components/DynamicDataView/index.js.map +1 -1
- package/dist/components/EasyCropModal/index.js +3 -3
- package/dist/components/Error/index.js +1 -1
- package/dist/components/ExpandableGroup/index.js +7 -7
- package/dist/components/ExpandableGroup/index.js.map +1 -1
- package/dist/components/FieldMentions/index.js.map +1 -1
- package/dist/components/FileUpload/index.js +7 -6
- package/dist/components/FrameSkeleton/index.js +4 -4
- package/dist/components/HelpButton/index.js +2 -2
- package/dist/components/Icon/index.js +1 -1
- package/dist/components/IconButton/index.js +2 -2
- package/dist/components/ImageCropModal/index.js +3 -3
- package/dist/components/Incrementer/index.js +2 -2
- package/dist/components/InfoCircle/index.js +1 -1
- package/dist/components/ListBundles/index.js +2 -2
- package/dist/components/MenuItem/index.js +1 -1
- package/dist/components/Modal/index.js +2 -2
- package/dist/components/MoreMenu/index.js +1 -1
- package/dist/components/PasswordRules/index.js +1 -1
- package/dist/components/PopoverSelect/index.js +1 -1
- package/dist/components/SearchInput/index.js +2 -2
- package/dist/components/SelectableCards/index.js +3 -3
- package/dist/components/SeoPreview/index.js +1 -1
- package/dist/components/StateDisplay/index.js +2 -2
- package/dist/components/Steps/index.js +1 -1
- package/dist/components/StyledTab/index.js +1 -1
- package/dist/components/SwapList/index.js +2 -2
- package/dist/components/ToggleTheme/index.js +2 -2
- package/dist/components/WebhookCard/index.js +2 -2
- package/dist/components/carousel/index.js +2 -2
- package/dist/components/form/Address/index.js +3 -3
- package/dist/components/form/Autocomplete/index.js +3 -3
- package/dist/components/form/FileUpload/index.js +8 -7
- package/dist/components/form/FileUpload/index.js.map +1 -1
- package/dist/components/form/Incrementer/index.js +2 -2
- package/dist/components/form/Password/index.js +1 -1
- package/dist/components/form/SelectableCards/index.js +3 -3
- package/dist/components/form/UploadAvatarWithCrop/index.js +6 -5
- package/dist/components/form/UploadAvatarWithCrop/index.js.map +1 -1
- package/dist/components/form/UploadWithCrop/index.js +8 -7
- package/dist/components/form/UploadWithCrop/index.js.map +1 -1
- package/dist/components/form/Webhook/index.js +12 -12
- package/dist/components/form/Webhook/index.js.map +1 -1
- package/dist/components/lightbox/index.js +1 -1
- package/dist/components/table/index.js +2 -2
- package/dist/components/upload/index.js +11 -10
- package/dist/components/upload/index.js.map +1 -1
- package/dist/hooks/useCollapseSidebarOnMount.js +3 -3
- package/dist/hooks/useEventCallback.d.ts +2 -3
- package/dist/hooks/useEventCallback.js +1 -1
- package/dist/hooks/useLocalStorage.js +2 -2
- package/dist/hooks/useSnackbar.d.ts +1 -1
- package/dist/hooks/useThemeToggle.js +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/theme/core/index.d.ts +1 -1
- package/dist/theme/styles/index.d.ts +13 -13
- package/dist/theme/theme-provider.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-F4T3RPSV.js +0 -36
- package/dist/chunk-F4T3RPSV.js.map +0 -1
- package/dist/chunk-HLMZQG27.js.map +0 -1
- package/dist/chunk-JBPWWO5D.js +0 -15
- package/dist/chunk-JBPWWO5D.js.map +0 -1
- package/dist/chunk-MQAMSYYK.js +0 -8
- package/dist/chunk-MQAMSYYK.js.map +0 -1
- package/dist/chunk-NCNSNAJ5.js +0 -27
- package/dist/chunk-NCNSNAJ5.js.map +0 -1
- package/dist/chunk-SA2BESEB.js +0 -17
- package/dist/chunk-SA2BESEB.js.map +0 -1
- package/dist/chunk-XTTDUDXX.js +0 -42
- package/dist/chunk-YCKZD2H6.js +0 -23
- package/dist/{chunk-75G5RNV4.js.map → chunk-5LQLLZ5L.js.map} +0 -0
- package/dist/{chunk-KRT2AT6N.js.map → chunk-CWCEG2DZ.js.map} +0 -0
- package/dist/{chunk-YCKZD2H6.js.map → chunk-JFZOAS75.js.map} +0 -0
- package/dist/{chunk-MJQ5FMYR.js.map → chunk-JZ55NEMI.js.map} +0 -0
- package/dist/{chunk-WVXEXDGZ.js.map → chunk-KR3DUHA6.js.map} +0 -0
- package/dist/{chunk-X7VVV26F.js.map → chunk-LEMPYV5U.js.map} +0 -0
- package/dist/{chunk-AA2DXMIC.js.map → chunk-LNXA53QR.js.map} +0 -0
- package/dist/{chunk-CDJKO3NN.js.map → chunk-LY3IB5VH.js.map} +0 -0
- package/dist/{chunk-YEVAAROT.js.map → chunk-MP2LAJS5.js.map} +0 -0
- package/dist/{chunk-BX2JPTSO.js.map → chunk-N4DW7EIC.js.map} +0 -0
- package/dist/{chunk-QHXITV2M.js.map → chunk-OTVEMGF2.js.map} +0 -0
- package/dist/{chunk-GFXVOSAE.js.map → chunk-R76WTFYC.js.map} +0 -0
- package/dist/{chunk-BOKTSYI5.js.map → chunk-RFRLNTFN.js.map} +0 -0
- package/dist/{chunk-MTBVMYTS.js.map → chunk-U7BH6DMJ.js.map} +0 -0
- package/dist/{chunk-CU7PKEY2.js.map → chunk-VPKUUY5Q.js.map} +0 -0
- package/dist/{chunk-BBFBNDAZ.js.map → chunk-XZFBTUAG.js.map} +0 -0
- package/dist/{chunk-C7VQJ35F.js.map → chunk-ZFRNMT3P.js.map} +0 -0
- package/dist/{chunk-SSLZPI3M.js.map → chunk-ZGSSTXUO.js.map} +0 -0
- package/dist/{index-c8f1e6e7.d.ts → index-5a5e5dc8.d.ts} +12 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/BulkEditModal/index.tsx","../../../src/components/BulkEditModal/BulkEditGridCell.tsx","../../../src/components/BulkEditModal/styles.ts","../../../src/components/BulkEditModal/Header.tsx","../../../src/components/BulkEditModal/Toolbar.tsx"],"names":["useCallback","useEffect","useMemo","useState","FormProvider","useForm","LinearProgress","Typography","memo","useFormContext","useWatch","Switch","TextField","Box","Button","Chip","Dialog","Stack","styled","DataGridPremium","BulkEditDialog","BulkEditContainer","StyledChip","theme","StyledBackButton","GridWrapper","StyledDataGrid","CellContent","ReadOnlyText","Footer","FooterTotal","jsx","AUTOCOMPLETE_SX","getInputProps","isNumber","formatDisplayValue","value","column","option","opt","BulkEditGridCellComponent","item","rowIndex","itemId","onFieldChange","isFieldDisabled","setValue","control","fieldName","fieldPath","watchedValue","cellValue","isDisabled","isIdField","displayValue","event","previousValue","result","entityValue","recordValue","Autocomplete_default","newValue","inputValue","rawValue","BulkEditGridCell","prev","next","GridToolbarColumnsButton","BULK_EDIT_DATAGRID_ACTIONS","BulkEditToolbar","setFilterButtonEl","handleColumnsButtonRef","button","Portal_default","Icon_default","Toolbar_default","jsxs","Header","onClose","total","title","DEFAULT_PAGE_SIZE_OPTIONS","resolveAlignment","BulkEditModalInner","open","header","items","columns","getItemId","isLoading","page","perPage","onPageChange","onRowsPerPageChange","showColumnButton","filterButtonEl","rows","totalPages","maxPage","safePage","paginationModel","pageSizeOptions","options","a","b","handlePaginationModelChange","model","handleFooterPageChange","newPage","handleFooterRowsPerPageChange","newRowsPerPage","dataGridColumns","align","baseWidth","params","visibleIndex","row","LoadingOverlay_default","Pagination_default","BulkEditModal","props","formMethods","BulkEditModal_default"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport type {\n GridSlots,\n GridSlotsComponentsProps,\n} from '@mui/x-data-grid-premium';\nimport {\n GridAlignment,\n GridColDef,\n GridPaginationModel,\n GridValidRowModel,\n} from '@mui/x-data-grid-premium';\n\nimport LoadingOverlay from 'components/DataGrid/LoadingOverlay';\nimport Pagination from 'components/DataView/Pagination';\n\nimport { BulkEditGridCell } from './BulkEditGridCell';\nimport { Header } from './Header';\nimport { type BulkEditModalInnerProps, type BulkEditModalProps } from './props';\nimport {\n BulkEditContainer,\n BulkEditDialog,\n Footer,\n FooterTotal,\n GridWrapper,\n StyledDataGrid,\n} from './styles';\nimport BulkEditToolbar from './Toolbar';\n\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\n\nconst resolveAlignment = <TItem extends Record<string, unknown>>(\n column: BulkEditModalInnerProps<TItem>['columns'][number],\n): GridAlignment => {\n if (column.type === 'number') return 'right';\n if (column.type === 'boolean') return 'center';\n return 'left';\n};\n\nconst BulkEditModalInner = <TItem extends Record<string, unknown>>({\n open,\n onClose,\n title,\n header,\n items,\n columns,\n getItemId,\n isLoading,\n page,\n perPage,\n total,\n onPageChange,\n onRowsPerPageChange,\n onFieldChange,\n isFieldDisabled,\n showColumnButton,\n}: BulkEditModalInnerProps<TItem>) => {\n const [filterButtonEl, setFilterButtonEl] =\n useState<HTMLButtonElement | null>(null);\n const rows = items;\n\n const totalPages = perPage > 0 ? Math.ceil(total / perPage) : 0;\n const maxPage = totalPages > 0 ? totalPages - 1 : 0;\n const safePage = Math.min(Math.max(page, 0), maxPage);\n\n const paginationModel = useMemo(\n () => ({\n page: safePage,\n pageSize: perPage,\n }),\n [perPage, safePage],\n );\n\n const pageSizeOptions = useMemo(() => {\n const options = perPage\n ? [perPage, ...DEFAULT_PAGE_SIZE_OPTIONS]\n : DEFAULT_PAGE_SIZE_OPTIONS;\n return Array.from(new Set(options)).sort((a, b) => a - b);\n }, [perPage]);\n\n const handlePaginationModelChange = useCallback(\n (model: GridPaginationModel) => {\n if (model.pageSize !== perPage) {\n onRowsPerPageChange(model.pageSize);\n }\n\n if (model.page !== page || model.pageSize !== perPage) {\n onPageChange(model.page, model.pageSize);\n }\n },\n [onPageChange, onRowsPerPageChange, page, perPage],\n );\n\n const handleFooterPageChange = useCallback(\n (newPage: number) => {\n handlePaginationModelChange({ page: newPage, pageSize: perPage });\n },\n [handlePaginationModelChange, perPage],\n );\n\n const handleFooterRowsPerPageChange = useCallback(\n (newRowsPerPage: number) => {\n handlePaginationModelChange({ page: safePage, pageSize: newRowsPerPage });\n },\n [handlePaginationModelChange, safePage],\n );\n\n const dataGridColumns = useMemo<GridColDef<GridValidRowModel>[]>(\n () =>\n columns.map(column => {\n const align = resolveAlignment(column);\n const baseWidth = column.type === 'boolean' ? 100 : 180;\n\n return {\n field: String(column.field),\n headerName: column.headerName,\n flex: 1,\n minWidth: baseWidth,\n disableColumnMenu: true,\n headerAlign: align,\n align,\n renderCell: params => {\n const visibleIndex = params.api.getRowIndexRelativeToVisibleRows(\n params.id,\n );\n const rowIndex =\n typeof visibleIndex === 'number' && visibleIndex > -1\n ? visibleIndex\n : 0;\n\n return (\n <BulkEditGridCell\n column={column}\n item={params.row as TItem}\n rowIndex={rowIndex}\n itemId={getItemId(params.row as TItem)}\n onFieldChange={onFieldChange}\n isFieldDisabled={isFieldDisabled}\n />\n );\n },\n };\n }),\n [columns, getItemId, isFieldDisabled, onFieldChange],\n );\n\n return (\n <BulkEditDialog open={open} onClose={onClose} fullWidth>\n <BulkEditContainer>\n {header ?? <Header onClose={onClose} total={total} title={title} />}\n {isLoading && <LinearProgress sx={{ height: 2 }} />}\n\n <GridWrapper>\n <StyledDataGrid\n columns={dataGridColumns}\n rows={rows as unknown as GridValidRowModel[]}\n getRowId={row => getItemId(row as TItem)}\n hideFooterSelectedRowCount\n hideFooter\n disableRowSelectionOnClick\n paginationModel={paginationModel}\n onPaginationModelChange={handlePaginationModelChange}\n pageSizeOptions={pageSizeOptions}\n paginationMode=\"server\"\n rowCount={total}\n rowHeight={56}\n loading={isLoading}\n slots={{\n loadingOverlay: LoadingOverlay,\n ...(showColumnButton && {\n toolbar: BulkEditToolbar as unknown as GridSlots['toolbar'],\n }),\n }}\n slotProps={{\n panel: { anchorEl: filterButtonEl },\n toolbar: {\n setFilterButtonEl,\n } as unknown as GridSlotsComponentsProps['toolbar'],\n }}\n />\n </GridWrapper>\n <Footer>\n <FooterTotal component=\"p\">\n <Typography component=\"span\" variant=\"body2\" color=\"text.disabled\">\n Total de itens:\n </Typography>\n <Typography component=\"span\" variant=\"body2\">\n {total}\n </Typography>\n </FooterTotal>\n <Pagination\n count={total}\n page={safePage}\n rowsPerPage={perPage}\n onPageChange={handleFooterPageChange}\n onRowsPerPageChange={handleFooterRowsPerPageChange}\n />\n </Footer>\n </BulkEditContainer>\n </BulkEditDialog>\n );\n};\n\nconst BulkEditModal = <TItem extends Record<string, unknown>>(\n props: BulkEditModalProps<TItem>,\n) => {\n const { items } = props;\n const formMethods = useForm<{ items: TItem[] }>({\n defaultValues: { items },\n });\n\n // O desempenho é melhor que values: { items } no useForm\n useEffect(() => {\n formMethods.reset({ items });\n }, [formMethods, items]);\n\n return (\n <FormProvider {...formMethods}>\n <BulkEditModalInner<TItem> {...props} />\n </FormProvider>\n );\n};\n\nexport * from './props';\n\nexport default BulkEditModal;\n","import { memo } from 'react';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport Switch from '@mui/material/Switch';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\n\nimport Autocomplete from 'components/form/Autocomplete';\n\nimport {\n BulkEditGridCellProps,\n BulkEditModalColumn,\n BulkEditModalFieldChangeParams,\n} from './props';\nimport { CellContent, ReadOnlyText } from './styles';\n\nconst AUTOCOMPLETE_SX = {\n '& .MuiOutlinedInput-root': {\n px: 0,\n borderRadius: 0,\n background: 'transparent',\n '& fieldset, &:hover fieldset, &.Mui-focused fieldset': {\n background: 'transparent',\n borderRadius: 0,\n border: 'none',\n },\n },\n '& .MuiInputBase-input': {\n py: 0,\n height: 56,\n background: 'transparent',\n },\n} as const;\n\nconst getInputProps = (isNumber: boolean) => {\n return {\n disableUnderline: true,\n sx: {\n px: 0,\n '& input': {\n textAlign: isNumber ? 'right' : 'left',\n },\n },\n };\n};\n\nconst formatDisplayValue = <TItem extends Record<string, unknown>>(\n value: unknown,\n column: BulkEditModalColumn<TItem>,\n) => {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n if (column.type === 'entity' && column.options) {\n const option = column.options.find(\n opt => opt.value?.toString() === value?.toString(),\n );\n if (option) {\n return option.label;\n }\n }\n\n if (typeof value === 'object') {\n if ('name' in (value as Record<string, unknown>)) {\n return String((value as { name: unknown }).name);\n }\n if ('label' in (value as Record<string, unknown>)) {\n return String((value as { label: unknown }).label);\n }\n if ('value' in (value as Record<string, unknown>)) {\n return String((value as { value: unknown }).value);\n }\n }\n\n if (typeof value === 'boolean') {\n return value ? 'Sim' : 'Não';\n }\n\n return String(value);\n};\n\nconst BulkEditGridCellComponent = <TItem extends Record<string, unknown>>({\n column,\n item,\n rowIndex,\n itemId,\n onFieldChange,\n isFieldDisabled,\n}: BulkEditGridCellProps<TItem>) => {\n const { setValue, control } = useFormContext();\n const fieldName = column.field;\n const fieldPath = `items.${rowIndex}.${String(fieldName)}`;\n const watchedValue = useWatch({\n control,\n name: fieldPath,\n defaultValue: item?.[fieldName],\n });\n const cellValue =\n watchedValue === undefined ? item?.[fieldName] : watchedValue;\n const isDisabled =\n column.readOnly ||\n (isFieldDisabled ? isFieldDisabled({ item, field: fieldName }) : false);\n const isIdField = String(fieldName) === 'id';\n\n if (column.readOnly || isIdField) {\n const displayValue = formatDisplayValue(cellValue, column);\n\n return (\n <CellContent>\n {displayValue ? (\n <ReadOnlyText variant=\"body2\">{displayValue}</ReadOnlyText>\n ) : (\n <Typography variant=\"body2\" color=\"text.disabled\">\n -\n </Typography>\n )}\n </CellContent>\n );\n }\n\n if (column.type === 'boolean') {\n return (\n <CellContent sx={{ justifyContent: 'center' }}>\n <Switch\n color=\"primary\"\n checked={Boolean(cellValue)}\n inputProps={{ 'aria-label': column.headerName }}\n onChange={event => {\n const value = event.target.checked;\n const previousValue = cellValue;\n\n setValue(fieldPath, value as TItem[keyof TItem], {\n shouldDirty: true,\n shouldTouch: true,\n });\n\n const result = onFieldChange({\n itemId,\n field: fieldName,\n value,\n previousValue,\n } as BulkEditModalFieldChangeParams<TItem>);\n\n if (\n result &&\n typeof (result as Promise<unknown>).catch === 'function'\n ) {\n (result as Promise<unknown>).catch(() => {\n setValue(fieldPath, previousValue as TItem[keyof TItem], {\n shouldDirty: true,\n shouldTouch: true,\n });\n });\n }\n }}\n disabled={isDisabled}\n />\n </CellContent>\n );\n }\n\n if (column.type === 'entity') {\n let entityValue = '';\n\n if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\n if (typeof cellValue === 'object') {\n const recordValue = cellValue as Record<string, unknown>;\n\n if ('id' in recordValue) {\n entityValue = String(recordValue.id ?? '');\n } else if ('value' in recordValue) {\n entityValue = String(recordValue.value ?? '');\n }\n } else {\n entityValue = String(cellValue);\n }\n }\n\n return (\n <CellContent>\n <Autocomplete\n fullWidth\n name={fieldPath}\n value={entityValue}\n options={column.options ?? []}\n disabled={isDisabled}\n size=\"small\"\n placeholder=\"Preencher\"\n sx={AUTOCOMPLETE_SX}\n disableClearable\n onSelectOption={(newValue: unknown) => {\n const previousValue = cellValue;\n\n const result = onFieldChange({\n itemId,\n field: fieldName,\n value: newValue,\n previousValue,\n } as BulkEditModalFieldChangeParams<TItem>);\n\n if (\n result &&\n typeof (result as Promise<unknown>).catch === 'function'\n ) {\n (result as Promise<unknown>).catch(() => {\n setValue(fieldPath, previousValue as TItem[keyof TItem], {\n shouldDirty: true,\n shouldTouch: true,\n });\n });\n }\n }}\n />\n </CellContent>\n );\n }\n\n const isNumber = column.type === 'number';\n const inputValue = cellValue ?? '';\n\n return (\n <CellContent sx={{ justifyContent: isNumber ? 'flex-end' : 'flex-start' }}>\n <TextField\n fullWidth\n size=\"small\"\n type={isNumber ? 'number' : 'text'}\n placeholder=\"Preencher\"\n aria-label={column.headerName}\n name={fieldPath}\n value={inputValue as string | number}\n variant=\"standard\"\n InputProps={getInputProps(isNumber)}\n disabled={isDisabled}\n onKeyDown={event => {\n if (event.key === ' ' || event.key === 'Spacebar') {\n event.stopPropagation();\n }\n }}\n onChange={event => {\n const rawValue = event.target.value;\n const value = isNumber\n ? rawValue === ''\n ? ''\n : Number(rawValue)\n : rawValue;\n setValue(fieldPath, value as TItem[keyof TItem], {\n shouldDirty: true,\n shouldTouch: true,\n });\n\n onFieldChange({\n itemId,\n field: fieldName,\n value,\n } as BulkEditModalFieldChangeParams<TItem>);\n }}\n />\n </CellContent>\n );\n};\n\nexport const BulkEditGridCell = memo(\n BulkEditGridCellComponent,\n (prev, next) =>\n prev.itemId === next.itemId &&\n prev.rowIndex === next.rowIndex &&\n prev.column === next.column &&\n prev.isFieldDisabled === next.isFieldDisabled,\n) as typeof BulkEditGridCellComponent;\n","import Box from '@mui/material/Box';\nimport Button, { ButtonProps } from '@mui/material/Button';\nimport Chip, { ChipProps } from '@mui/material/Chip';\nimport Dialog from '@mui/material/Dialog';\nimport Stack, { StackProps } from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\nimport { DataGridPremium } from '@mui/x-data-grid-premium';\n\nexport const BulkEditDialog = styled(Dialog)({\n '& .MuiDialog-paper': {\n margin: 0,\n borderRadius: 0,\n maxHeight: '100vh',\n padding: 0,\n height: '100vh',\n width: '100%',\n maxWidth: '100%',\n },\n});\n\nexport const BulkEditContainer = styled(Stack)({\n height: '100%',\n minHeight: 0,\n});\n\nexport const StyledChip = styled(Chip)<ChipProps>(({ theme }) => ({\n padding: 0,\n '& .MuiChip-label': {\n color: theme.palette.text.secondary,\n fontWeight: '700',\n },\n}));\n\nexport const StyledBackButton = styled(Button)<ButtonProps>(({ theme }) => ({\n color: theme.palette.text.secondary,\n}));\n\nexport const GridWrapper = styled(Box)({\n flex: 1,\n minHeight: 0,\n padding: 0,\n display: 'flex',\n alignItems: 'stretch',\n});\n\nexport const StyledDataGrid = styled(DataGridPremium)(({ theme }) => ({\n flex: 1,\n height: '100%',\n minHeight: 320,\n borderRadius: theme.shape.borderRadius,\n backgroundColor: theme.palette.background.paper,\n '& .MuiDataGrid-columnHeaders': {\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: 48,\n maxHeight: 48,\n },\n '& .MuiDataGrid-columnHeader': {\n borderTop: `1px solid ${theme.palette.divider} !important`,\n borderBottom: `1px solid ${theme.palette.divider} !important`,\n minWidth: '120px !important',\n },\n '& .MuiDataGrid-cell': {\n alignItems: 'stretch',\n borderTop: `1px solid ${theme.palette.divider}`,\n minWidth: 120,\n width: '100%',\n borderLeft: `1px solid ${theme.palette.divider}`,\n padding: 0,\n },\n '& .MuiDataGrid-cell:focus, & .MuiDataGrid-columnHeader:focus': {\n outline: 'none',\n },\n '& .MuiDataGrid-withBorderColor': {\n borderColor: theme.palette.divider,\n },\n '& .MuiDataGrid-virtualScroller': {\n overflowX: 'auto',\n },\n '& .MuiDataGrid-footerContainer': {\n borderTop: `1px solid ${theme.palette.divider}`,\n },\n}));\n\nexport const CellContent = styled(Box)({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n padding: 0,\n boxSizing: 'border-box',\n\n '& .MuiTypography-root': {\n width: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n});\n\nexport const ReadOnlyText = styled(Typography)(({ theme }) => ({\n color: theme.palette.text.primary,\n}));\n\nexport const Footer = styled(Stack)(({ theme }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderTop: `1px solid ${theme.palette.divider}`,\n padding: theme.spacing(2, 3),\n gap: theme.spacing(2),\n flexWrap: 'wrap',\n}));\n\nexport const FooterTotal = styled(Stack)<StackProps>(({ theme }) => ({\n flexDirection: 'row',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n}));\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { HeaderProps } from './props';\nimport { StyledBackButton, StyledChip } from './styles';\nimport { BULK_EDIT_DATAGRID_ACTIONS } from './Toolbar';\n\nexport const Header = ({ onClose, total, title }: HeaderProps) => {\n const showTotal = typeof total === 'number';\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n gap={3}\n sx={{ px: 3, py: 0, minHeight: 'var(--layout-nav-horizontal-height)' }}\n >\n <StyledBackButton\n variant=\"text\"\n size=\"small\"\n startIcon={<Icon icon=\"CHEVRON_LEFT\" />}\n onClick={onClose}\n >\n Sair\n </StyledBackButton>\n\n <Stack\n flex={1}\n direction=\"row\"\n alignItems=\"center\"\n component=\"h2\"\n m={0}\n gap={1}\n >\n <Typography component=\"span\" variant=\"h6\">\n Editando\n </Typography>\n {showTotal && (\n <StyledChip\n component=\"span\"\n disabled\n label={total}\n size=\"small\"\n color=\"default\"\n />\n )}\n <Typography component=\"span\" variant=\"h6\">\n {title}\n </Typography>\n </Stack>\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={1}\n id={BULK_EDIT_DATAGRID_ACTIONS}\n />\n </Stack>\n );\n};\n","import { useCallback } from 'react';\nimport { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';\n\nimport Icon from 'components/Icon';\nimport Portal from 'components/Portal';\n\nimport { BulkEditToolbarProps } from './props';\n\nexport const BULK_EDIT_DATAGRID_ACTIONS = 'bulk-edit-datagrid-actions';\n\nconst BulkEditToolbar = ({ setFilterButtonEl }: BulkEditToolbarProps) => {\n const handleColumnsButtonRef = useCallback(\n (button: HTMLButtonElement | null) => {\n setFilterButtonEl(button);\n },\n [setFilterButtonEl],\n );\n\n return (\n <Portal container={BULK_EDIT_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 BulkEditToolbar;\n"]}
|
|
@@ -2,7 +2,7 @@ import '../../chunk-MZN5X6GM.js';
|
|
|
2
2
|
import { a as a$1 } from '../../chunk-RFAAH7QG.js';
|
|
3
3
|
import '../../chunk-HSJS3HUW.js';
|
|
4
4
|
import '../../chunk-IL3EAU5G.js';
|
|
5
|
-
import { a } from '../../chunk-
|
|
5
|
+
import { a } from '../../chunk-NQNNMRLC.js';
|
|
6
6
|
import '../../chunk-CIGSMWKF.js';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
8
8
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { a } from '../../chunk-
|
|
1
|
+
import { a } from '../../chunk-NQNNMRLC.js';
|
|
2
2
|
import '../../chunk-CIGSMWKF.js';
|
|
3
|
-
import { b } from '../../chunk-
|
|
3
|
+
import { b } from '../../chunk-VPKUUY5Q.js';
|
|
4
4
|
import '../../chunk-LDGBS7ZI.js';
|
|
5
|
+
import '../../chunk-WUFEPE2G.js';
|
|
5
6
|
import '../../chunk-2WG6OWB4.js';
|
|
6
7
|
import '../../chunk-6W52DPH4.js';
|
|
7
8
|
import '../../chunk-TWSAWMZ3.js';
|
|
8
9
|
import '../../chunk-ROVD7OGE.js';
|
|
9
10
|
import '../../chunk-EQYL7U3J.js';
|
|
10
|
-
import '../../chunk-WUFEPE2G.js';
|
|
11
11
|
import { k } from '../../chunk-GLRLKFPS.js';
|
|
12
12
|
import 'dayjs/locale/pt-br';
|
|
13
13
|
import _ from 'dayjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { a as default } from '../../chunk-
|
|
1
|
+
export { a as default } from '../../chunk-ZGSSTXUO.js';
|
|
2
2
|
import '../../chunk-45OMMG7D.js';
|
|
3
|
-
import '../../chunk-
|
|
3
|
+
import '../../chunk-NQNNMRLC.js';
|
|
4
4
|
import '../../chunk-CIGSMWKF.js';
|
|
5
5
|
import '../../chunk-IAOMC4C4.js';
|
|
6
6
|
import '../../chunk-CFNATBO2.js';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { a as default } from '../../chunk-
|
|
1
|
+
export { a as default } from '../../chunk-7MVZYOHX.js';
|
|
2
2
|
import '../../chunk-BNBE2OMA.js';
|
|
3
3
|
import '../../chunk-NIQW2J3M.js';
|
|
4
4
|
import '../../chunk-6U5LS7MP.js';
|
|
5
|
+
import '../../chunk-RBTYTONM.js';
|
|
5
6
|
import '../../chunk-GLRLKFPS.js';
|
|
6
7
|
//# sourceMappingURL=out.js.map
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-IN7SP2ND.js';
|
|
1
|
+
export { a as Toolbar, b as default } from '../../chunk-5NIMUEW5.js';
|
|
2
|
+
import '../../chunk-OTVEMGF2.js';
|
|
4
3
|
import '../../chunk-IJZCVZ32.js';
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-JBPWWO5D.js';
|
|
4
|
+
import '../../chunk-7MVZYOHX.js';
|
|
7
5
|
import '../../chunk-BNBE2OMA.js';
|
|
8
6
|
import '../../chunk-NIQW2J3M.js';
|
|
9
7
|
import '../../chunk-6U5LS7MP.js';
|
|
10
8
|
import '../../chunk-CO2KQFUN.js';
|
|
11
|
-
|
|
9
|
+
export { c as ActionsContainer, d as ActionsDivider, a as Container, i as DesktopPaginationContainer, b as Header, h as MobilePaginationContainer, g as SearchContainer, e as ToolbarActionsDivider, f as Topbar } from '../../chunk-QVU6HSYP.js';
|
|
10
|
+
import '../../chunk-IN7SP2ND.js';
|
|
11
|
+
import '../../chunk-UVPQR2Q2.js';
|
|
12
|
+
import '../../chunk-RBTYTONM.js';
|
|
13
|
+
import '../../chunk-NQNNMRLC.js';
|
|
12
14
|
import '../../chunk-CIGSMWKF.js';
|
|
13
15
|
import '../../chunk-XWUVJ22J.js';
|
|
14
16
|
import '../../chunk-LQRRMVFN.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { a as default } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
export { a as default } from '../../chunk-N4DW7EIC.js';
|
|
2
|
+
import '../../chunk-NQNNMRLC.js';
|
|
3
3
|
import '../../chunk-CIGSMWKF.js';
|
|
4
4
|
//# sourceMappingURL=out.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
|
+
import { GridColDef, GridColumnVisibilityModel } from '@mui/x-data-grid-premium';
|
|
4
5
|
import { PagedResponse } from '../../types/api.js';
|
|
5
6
|
import { Field, EntityMetadataResponse } from '../../types/entityMetadata.js';
|
|
6
|
-
import { GridColDef } from '@mui/x-data-grid-premium';
|
|
7
7
|
import { Icon } from '../../types/icon.js';
|
|
8
8
|
|
|
9
9
|
interface DynamicRow {
|
|
@@ -82,9 +82,11 @@ interface DynamicDataViewProps<T = object> {
|
|
|
82
82
|
columnStrategies?: {
|
|
83
83
|
[fieldName: string]: ColumnStrategy<T>;
|
|
84
84
|
};
|
|
85
|
+
onColumnVisibilityModelChange?: (model: GridColumnVisibilityModel) => void;
|
|
86
|
+
columnVisibilityStorageKey?: string;
|
|
85
87
|
}
|
|
86
88
|
|
|
87
|
-
declare const _default$8: <T extends object = object>({ title, metadata, data, isLoading, isFetching, page, perPage, searchValue, onSearchChange, onSearch, onPaginationChange, onAdd, onRowAction, onRowDoubleClick, actions, moreActions, hideHeader, slots, mobileRender, containerHeight, showColumnButton, defaultVisibleFieldNames, preferredFieldOrder, columnStrategies, }: DynamicDataViewProps<T>) => react_jsx_runtime.JSX.Element;
|
|
89
|
+
declare const _default$8: <T extends object = object>({ title, metadata, data, isLoading, isFetching, page, perPage, searchValue, onSearchChange, onSearch, onPaginationChange, onAdd, onRowAction, onRowDoubleClick, actions, moreActions, hideHeader, slots, mobileRender, containerHeight, showColumnButton, defaultVisibleFieldNames, preferredFieldOrder, columnStrategies, onColumnVisibilityModelChange, columnVisibilityStorageKey, }: DynamicDataViewProps<T>) => react_jsx_runtime.JSX.Element;
|
|
88
90
|
|
|
89
91
|
declare const _default$7: react.MemoExoticComponent<({ value, trueLabel, falseLabel, }: BooleanRendererProps) => ReactNode>;
|
|
90
92
|
|
|
@@ -1,34 +1,40 @@
|
|
|
1
|
-
import { d, c } from '../../chunk-N7IK5EUP.js';
|
|
1
|
+
import { d, c as c$1 } from '../../chunk-N7IK5EUP.js';
|
|
2
2
|
import { a } from '../../chunk-FK4XGRYF.js';
|
|
3
|
-
import { h
|
|
4
|
-
import { a as a$2 } from '../../chunk-
|
|
3
|
+
import { h, a as a$3 } from '../../chunk-OF6623HG.js';
|
|
4
|
+
import { a as a$2 } from '../../chunk-ZGSSTXUO.js';
|
|
5
5
|
import '../../chunk-45OMMG7D.js';
|
|
6
|
-
import {
|
|
7
|
-
import '../../chunk-
|
|
8
|
-
import '../../chunk-IN7SP2ND.js';
|
|
6
|
+
import { b } from '../../chunk-5NIMUEW5.js';
|
|
7
|
+
import '../../chunk-OTVEMGF2.js';
|
|
9
8
|
import '../../chunk-IJZCVZ32.js';
|
|
10
|
-
import '../../chunk-
|
|
11
|
-
import '../../chunk-JBPWWO5D.js';
|
|
9
|
+
import '../../chunk-7MVZYOHX.js';
|
|
12
10
|
import '../../chunk-BNBE2OMA.js';
|
|
13
11
|
import '../../chunk-NIQW2J3M.js';
|
|
14
12
|
import '../../chunk-6U5LS7MP.js';
|
|
15
13
|
import '../../chunk-CO2KQFUN.js';
|
|
16
|
-
import
|
|
14
|
+
import '../../chunk-QVU6HSYP.js';
|
|
15
|
+
import '../../chunk-IN7SP2ND.js';
|
|
16
|
+
import '../../chunk-UVPQR2Q2.js';
|
|
17
|
+
import '../../chunk-RBTYTONM.js';
|
|
18
|
+
import { a as a$1 } from '../../chunk-NQNNMRLC.js';
|
|
17
19
|
import '../../chunk-CIGSMWKF.js';
|
|
18
20
|
import '../../chunk-XWUVJ22J.js';
|
|
19
21
|
import '../../chunk-LQRRMVFN.js';
|
|
20
22
|
import '../../chunk-RPO7AI5K.js';
|
|
21
23
|
import '../../chunk-IAOMC4C4.js';
|
|
22
24
|
import '../../chunk-GLRLKFPS.js';
|
|
25
|
+
import { a as a$4 } from '../../chunk-HWYA3EGC.js';
|
|
26
|
+
import '../../chunk-POTVACYB.js';
|
|
27
|
+
import '../../chunk-L5URMM57.js';
|
|
28
|
+
import '../../chunk-ET3WPQIO.js';
|
|
23
29
|
import '../../chunk-CFNATBO2.js';
|
|
24
30
|
import { memo, useMemo, useCallback } from 'react';
|
|
25
31
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
32
|
+
import Be from '@mui/material/Chip';
|
|
33
|
+
import te from '@mui/material/Stack';
|
|
34
|
+
import oe from '@mui/material/Typography';
|
|
29
35
|
|
|
30
|
-
var
|
|
36
|
+
var c={IMAGE_WIDTH:90,MIN_WIDTH:130,ENTITY_MIN_WIDTH:100,ENTITY_FLEX:.5,ID_MIN_WIDTH:200,ID_FLEX:1,ACTIONS_WIDTH:80},S={READ_ONLY:"READ_ONLY",READ_AND_WRITE:"READ_AND_WRITE"},Z=["price","base_price","minimum_value","maximum_value","minimum_installment_value"];var Ae=(e,r)=>({field:e.name,headerName:e.description,sortable:!1,width:c.IMAGE_WIDTH,resizable:!1,renderCell:t=>r(e,t.row)}),Se=(e,r)=>({field:e.name,headerName:e.description,minWidth:c.ID_MIN_WIDTH,flex:c.ID_FLEX,renderCell:t=>r(e,t.row)}),xe=(e,r)=>({field:e.name,headerName:e.description,minWidth:c.ENTITY_MIN_WIDTH,flex:c.ENTITY_FLEX,renderCell:t=>r(e,t.row)}),Fe=(e,r)=>({field:e.name,headerName:e.description,minWidth:c.MIN_WIDTH,renderCell:t=>r(e,t.row)}),Me=(e,r)=>({field:e.name,headerName:"A\xE7\xF5es",width:c.ACTIONS_WIDTH,sortable:!1,resizable:!1,disableReorder:!0,headerAlign:"center",disableColumnMenu:!0,align:"center",renderCell:t=>r(e,t.row)}),$=(e,r)=>e.name===r?.id_field_name||e.name==="name"?Se:e.name==="ACTIONS"?Me:e.type==="FILE"?Ae:e.type==="ENTITY"?xe:Fe;var ee=({metadata:e,renderCell:r,columnStrategies:t})=>useMemo(()=>{if(!e?.fields)return [];let a=new Map;return e.fields.filter(o=>o.access_type===S.READ_ONLY||o.access_type===S.READ_AND_WRITE?!0:o.name==="ACTIONS"||o.name===e?.id_field_name||o.name==="NAME").forEach(o=>{if(a.has(o.name))return;let b=(t?.[o.name]??$(o,e))(o,r,e);a.set(o.name,b);}),Array.from(a.values())},[t,e,r]);var re=()=>({name:"ACTIONS",description:"",filter_field_name:null,type:"TEXT",metadata:null,access_type:"READ_ONLY",relation_field_name:null,available_filter_conditions:[]}),x=e=>e.fields.some(t=>t.name==="ACTIONS")?e:{...e,fields:[...e.fields,re()]};var Le=({value:e,trueLabel:r="Ativo",falseLabel:t="Inativo"})=>jsx(a,{color:e?"success":"warning",children:e?r:t}),F=memo(Le);var ve=({value:e,format:r})=>e==null?"-":d(e,r),M=memo(ve);var Ve=({value:e,format:r})=>e==null?"-":c$1(e,r),P=memo(Ve);var He=({value:e,field:r})=>{if(!r.metadata||typeof e!="object"||e===null)return e?String(e):"-";let t=e[r.metadata.description_field_name];return t?jsx(Be,{label:String(t),variant:"outlined",size:"small",sx:{width:"fit-content",color:"text.secondary",borderColor:"divider",borderRadius:3}}):null},G=memo(He);var ze=({value:e,trueIcon:r="STAR_02",falseIcon:t="STAR",color:a="primary.main",width:i=18})=>jsx(a$1,{icon:e?r:t,color:a,width:i}),Xe=memo(ze);var Ke=({id:e,displayName:r,copyMessage:t="ID copiado!"})=>jsxs(te,{height:1,justifyContent:"center",children:[jsx(oe,{variant:"subtitle2",noWrap:!0,title:r,children:r}),jsxs(te,{direction:"row",gap:1,alignItems:"center",children:[jsxs(oe,{color:"grey.600",variant:"body2",noWrap:!0,children:["ID: ",e]}),jsx(a$2,{toCopy:e,message:t})]})]}),Qe=memo(Ke);var rr=({value:e,isCurrency:r=!1})=>e==null?"-":jsx(te,{direction:"row",alignItems:"center",height:"100%",children:jsx(oe,{variant:"body2",noWrap:!0,width:"fit-content",children:r?h(Number(e)):a$3(Number(e))})}),W=memo(rr);var ar=e=>e.replace(/<[^>]*>/g,"").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").trim(),ir=({value:e,showCopyButton:r=!1,copyMessage:t="Copiado"})=>{if(!e)return "-";let a=String(e),i=ar(a);return r?jsxs(te,{direction:"row",gap:1,alignItems:"center",children:[jsx(oe,{variant:"body2",noWrap:!0,children:i}),jsx(a$2,{toCopy:i,message:t})]}):i},k=memo(ir);function sr(e){return Z.includes(e)}var me=e=>{let{onRowAction:r}=e,t=(a,i)=>{let o=i[a.name];if(a.name==="ACTIONS")return r?.(i.id,i);switch(a.type){case"BOOLEAN":return jsx(F,{value:o});case"DATE":return jsx(M,{value:o});case"DATETIME":return jsx(P,{value:o});case"DECIMAL":case"INTEGER":return jsx(W,{value:o,isCurrency:sr(a.name)});case"FILE":case"ENTITY":return jsx(G,{value:o,field:a});case"TEXT":default:return jsx(k,{value:o})}};return t.displayName="CellRendererComponent",t};function v(e){return e.name}var dr=({title:e,metadata:r,data:t,isLoading:a,isFetching:i,page:o,perPage:O,searchValue:b$1,onSearchChange:le,onSearch:de,onPaginationChange:ce,onAdd:pe,onRowAction:N,onRowDoubleClick:I,actions:ue,moreActions:fe,hideHeader:Re,slots:Te,mobileRender:ye,containerHeight:V=600,showColumnButton:Ce=!1,defaultVisibleFieldNames:_,preferredFieldOrder:E,columnStrategies:De,onColumnVisibilityModelChange:w,columnVisibilityStorageKey:Y})=>{let{items:ge=[],total:Ne=0}=t||{},l=useMemo(()=>N?x(r):r,[r,N]),Ie=useMemo(()=>me({onRowAction:N}),[N]),T=ee({metadata:l,renderCell:Ie,columnStrategies:De}),y=useMemo(()=>new Map(T.map(n=>[n.field,n])),[T]),C=!!Y,[A,B]=a$4(Y||"__dynamic-data-view:columns__",void 0,{initializeWithValue:C}),_e=useMemo(()=>{if(!E||E.length===0||!l?.fields)return T;let n="ACTIONS",p=E.filter(s=>s!==n),d=new Set,m=[],D=s=>{let u=l.fields.find(we=>we.name===s);if(!u)return;let f=v(u),H=y.get(f);!H||d.has(f)||(m.push(H),d.add(f));};return p.forEach(s=>{D(s);}),l.fields.forEach(s=>{if(s.name===n||p.includes(s.name))return;let u=v(s),f=y.get(u);!f||d.has(u)||(m.push(f),d.add(u));}),D(n),m.length===0?T:m},[T,y,l,E]),Ee=useMemo(()=>{if(!l?.fields)return;let n={};if(l.fields.forEach(p=>{let d=v(p);if(!y.has(d))return;let m;if(C&&A){let D=A[d];typeof D=="boolean"&&(m=D);}m===void 0&&_&&_.length>0&&(m=_.includes(p.name)),typeof m=="boolean"&&(n[d]=m);}),Object.keys(n).length!==0)return {columns:{columnVisibilityModel:n}}},[y,_,l,C,A]),he=useCallback(n=>{C&&B(n),w&&w(n);},[C,w,B]),be=useCallback(n=>{if(!I)return;let p=n.id?.toString()||"";I(p,n.row);},[I]);return jsx(b,{title:e,columns:_e,rows:ge,mobileRender:ye||(()=>null),rowCount:Ne,loading:a,fetching:i,searchValue:b$1,onSearch:de,onSearchChange:le,paginationModel:{page:o,pageSize:O},onPaginationChange:ce,actions:ue,moreActions:fe,onAdd:pe,hideHeader:Re,onRowDoubleClick:I?be:void 0,disableRowSelectionOnClick:!0,slots:Te,initialState:Ee,showColumnButton:Ce,containerProps:{height:V,maxHeight:V},onColumnVisibilityModelChange:he})},cr=memo(dr);
|
|
31
37
|
|
|
32
|
-
export {
|
|
38
|
+
export { F as BooleanRenderer, M as DateRenderer, P as DateTimeRenderer, G as EntityRenderer, Xe as IconRenderer, Qe as NameRenderer, W as NumberRenderer, k as TextRenderer, x as addActionsFieldToMetadata, re as createActionsField, cr as default };
|
|
33
39
|
//# sourceMappingURL=out.js.map
|
|
34
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/DynamicDataView/DynamicDataView.tsx","../../../src/components/DynamicDataView/hooks/useDynamicColumns.ts","../../../src/components/DynamicDataView/constants/columnDefaults.ts","../../../src/components/DynamicDataView/utils/columnStrategies.ts","../../../src/components/DynamicDataView/utils/addActionsField.ts","../../../src/components/DynamicDataView/renderers/BooleanRenderer.tsx","../../../src/components/DynamicDataView/renderers/DateRenderer.tsx","../../../src/components/DynamicDataView/renderers/DateTimeRenderer.tsx","../../../src/components/DynamicDataView/renderers/EntityRenderer.tsx","../../../src/components/DynamicDataView/renderers/IconRenderer.tsx","../../../src/components/DynamicDataView/renderers/NameRenderer.tsx","../../../src/components/DynamicDataView/renderers/NumberRenderer.tsx","../../../src/components/DynamicDataView/renderers/TextRenderer.tsx","../../../src/components/DynamicDataView/utils/createCellRenderer.tsx"],"names":["memo","useCallback","useMemo","COLUMN_DEFAULTS","ACCESS_TYPES","CURRENCY_FIELD_NAMES","createImageColumn","field","renderCell","params","createIdColumn","createEntityColumn","createDefaultColumn","createActionsColumn","getColumnStrategy","metadata","useDynamicColumns","columnStrategies","columnsMap","column","createActionsField","addActionsFieldToMetadata","jsx","BooleanRenderer","value","trueLabel","falseLabel","Label_default","BooleanRenderer_default","DateRenderer","format","fDate","DateRenderer_default","DateTimeRenderer","fDateTime","DateTimeRenderer_default","Chip","EntityRenderer","entityValue","EntityRenderer_default","IconRenderer","trueIcon","falseIcon","color","width","Icon_default","IconRenderer_default","Stack","Typography","jsxs","NameRenderer","id","displayName","copyMessage","CopyButton_default","NameRenderer_default","NumberRenderer","isCurrency","fCurrencyBRL","fNumber","NumberRenderer_default","sanitizeHtml","text","TextRenderer","showCopyButton","stringValue","sanitizedValue","TextRenderer_default","getIsCurrency","fieldName","createCellRenderer","context","onRowAction","CellRendererComponent","row","getColumnFieldIdFromField","DynamicDataView","title","data","isLoading","isFetching","page","perPage","searchValue","onSearchChange","onSearch","onPaginationChange","onAdd","onRowDoubleClick","actions","moreActions","hideHeader","slots","mobileRender","containerHeight","showColumnButton","defaultVisibleFieldNames","preferredFieldOrder","rows","total","effectiveMetadata","columns","columnsByFieldId","orderedColumns","actionFieldName","preferredWithoutActions","usedColumnFieldIds","ordered","pushColumnForField","fieldItem","columnFieldId","initialState","visibilityModel","handleRowDoubleClick","rowId","DataView_default","DynamicDataView_default"],"mappings":"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","sourcesContent":["import { memo, useCallback, useMemo } from 'react';\nimport { GridColumnVisibilityModel } from '@mui/x-data-grid-premium';\n\nimport { Field } from 'types/entityMetadata';\n\nimport DataView from '../DataView';\n\nimport { useDynamicColumns } from './hooks/useDynamicColumns';\nimport { addActionsFieldToMetadata } from './utils/addActionsField';\nimport { createCellRenderer } from './utils/createCellRenderer';\nimport { DynamicDataViewProps, DynamicRowData } from './props';\n\nfunction getColumnFieldIdFromField(field: Field): string {\n return field.name;\n}\n\nconst DynamicDataView = <T extends object = object>({\n title,\n metadata,\n data,\n isLoading,\n isFetching,\n page,\n perPage,\n searchValue,\n onSearchChange,\n onSearch,\n onPaginationChange,\n onAdd,\n onRowAction,\n onRowDoubleClick,\n actions,\n moreActions,\n hideHeader,\n slots,\n mobileRender,\n containerHeight = 600,\n showColumnButton = false,\n defaultVisibleFieldNames,\n preferredFieldOrder,\n columnStrategies,\n}: DynamicDataViewProps<T>) => {\n const { items: rows = [], total = 0 } = data || {};\n\n const effectiveMetadata = useMemo(\n () => (onRowAction ? addActionsFieldToMetadata(metadata) : metadata),\n [metadata, onRowAction],\n );\n\n const renderCell = useMemo(\n () =>\n createCellRenderer<T>({\n onRowAction,\n }),\n [onRowAction],\n );\n\n const columns = useDynamicColumns<T>({\n metadata: effectiveMetadata,\n renderCell,\n columnStrategies,\n });\n\n const columnsByFieldId = useMemo(\n () => new Map(columns.map(column => [column.field, column])),\n [columns],\n );\n\n const orderedColumns = useMemo(() => {\n if (\n !preferredFieldOrder ||\n preferredFieldOrder.length === 0 ||\n !effectiveMetadata?.fields\n ) {\n return columns;\n }\n\n const actionFieldName = 'ACTIONS';\n const preferredWithoutActions = preferredFieldOrder.filter(\n fieldName => fieldName !== actionFieldName,\n );\n\n const usedColumnFieldIds = new Set<string>();\n const ordered: Array<(typeof columns)[number]> = [];\n\n const pushColumnForField = (fieldName: string) => {\n const field = effectiveMetadata.fields.find(\n fieldItem => fieldItem.name === fieldName,\n );\n\n if (!field) {\n return;\n }\n\n const columnFieldId = getColumnFieldIdFromField(field);\n const column = columnsByFieldId.get(columnFieldId);\n\n if (!column || usedColumnFieldIds.has(columnFieldId)) {\n return;\n }\n\n ordered.push(column);\n usedColumnFieldIds.add(columnFieldId);\n };\n\n preferredWithoutActions.forEach(fieldName => {\n pushColumnForField(fieldName);\n });\n\n effectiveMetadata.fields.forEach(field => {\n if (field.name === actionFieldName) {\n return;\n }\n\n if (preferredWithoutActions.includes(field.name)) {\n return;\n }\n\n const columnFieldId = getColumnFieldIdFromField(field);\n const column = columnsByFieldId.get(columnFieldId);\n\n if (!column || usedColumnFieldIds.has(columnFieldId)) {\n return;\n }\n\n ordered.push(column);\n usedColumnFieldIds.add(columnFieldId);\n });\n\n pushColumnForField(actionFieldName);\n\n if (ordered.length === 0) {\n return columns;\n }\n\n return ordered;\n }, [columns, columnsByFieldId, effectiveMetadata, preferredFieldOrder]);\n\n const initialState = useMemo(() => {\n if (\n !defaultVisibleFieldNames ||\n defaultVisibleFieldNames.length === 0 ||\n !effectiveMetadata?.fields\n ) {\n return undefined;\n }\n\n const visibilityModel: GridColumnVisibilityModel = {};\n\n effectiveMetadata.fields.forEach(field => {\n const columnFieldId = getColumnFieldIdFromField(field);\n\n if (!columnsByFieldId.has(columnFieldId)) {\n return;\n }\n\n visibilityModel[columnFieldId] = defaultVisibleFieldNames.includes(\n field.name,\n );\n });\n\n return {\n columns: {\n columnVisibilityModel: visibilityModel,\n },\n };\n }, [columnsByFieldId, defaultVisibleFieldNames, effectiveMetadata]);\n\n const handleRowDoubleClick = useCallback(\n (params: { id: string | number; row: DynamicRowData<T> }) => {\n if (!onRowDoubleClick) return;\n\n const rowId = params.id?.toString() || '';\n onRowDoubleClick(rowId, params.row);\n },\n [onRowDoubleClick],\n );\n\n return (\n <DataView\n title={title}\n columns={orderedColumns}\n rows={rows}\n mobileRender={mobileRender || (() => null)}\n rowCount={total}\n loading={isLoading}\n fetching={isFetching}\n searchValue={searchValue}\n onSearch={onSearch}\n onSearchChange={onSearchChange}\n paginationModel={{\n page,\n pageSize: perPage,\n }}\n onPaginationChange={onPaginationChange}\n actions={actions}\n moreActions={moreActions}\n onAdd={onAdd}\n hideHeader={hideHeader}\n onRowDoubleClick={onRowDoubleClick ? handleRowDoubleClick : undefined}\n disableRowSelectionOnClick\n slots={slots}\n initialState={initialState}\n showColumnButton={showColumnButton}\n containerProps={{\n height: containerHeight,\n maxHeight: containerHeight,\n }}\n />\n );\n};\n\nexport default memo(DynamicDataView) as typeof DynamicDataView;\nexport type {\n DynamicDataViewProps,\n DynamicRowData,\n MobileRenderFunction,\n} from './props';\n","import { useMemo } from 'react';\nimport { GridColDef } from '@mui/x-data-grid-premium';\n\nimport { Columns } from 'types/datagrid';\nimport { EntityMetadataResponse } from 'types/entityMetadata';\n\nimport { ACCESS_TYPES } from '../constants/columnDefaults';\nimport { CellRenderer } from '../types/cellRenderer';\nimport { ColumnStrategy, getColumnStrategy } from '../utils/columnStrategies';\n\ninterface UseDynamicColumnsProps<T> {\n metadata?: EntityMetadataResponse;\n renderCell: CellRenderer<T>;\n columnStrategies?: {\n [fieldName: string]: ColumnStrategy<T>;\n };\n}\n\nexport const useDynamicColumns = <T extends object>({\n metadata,\n renderCell,\n columnStrategies,\n}: UseDynamicColumnsProps<T>): Columns => {\n return useMemo(() => {\n if (!metadata?.fields) return [];\n\n const columnsMap = new Map<string, GridColDef>();\n\n const visibleFields = metadata.fields.filter(field => {\n if (\n field.access_type === ACCESS_TYPES.READ_ONLY ||\n field.access_type === ACCESS_TYPES.READ_AND_WRITE\n ) {\n return true;\n }\n\n return (\n field.name === 'ACTIONS' ||\n field.name === metadata?.id_field_name ||\n field.name === 'NAME'\n );\n });\n\n visibleFields.forEach(field => {\n if (columnsMap.has(field.name)) {\n return;\n }\n\n const strategy =\n columnStrategies?.[field.name] ?? getColumnStrategy<T>(field, metadata);\n const column = strategy(field, renderCell, metadata);\n\n columnsMap.set(field.name, column);\n });\n\n return Array.from(columnsMap.values());\n }, [columnStrategies, metadata, renderCell]);\n};\n","export const COLUMN_DEFAULTS = {\n IMAGE_WIDTH: 90,\n MIN_WIDTH: 130,\n ID_MIN_WIDTH: 200,\n ENTITY_MIN_WIDTH: 160,\n HIGHLIGHT_MAX_WIDTH: 80,\n ACTIONS_WIDTH: 80,\n ID_FLEX: 2,\n ENTITY_FLEX: 1,\n} as const;\n\nexport const ACCESS_TYPES = {\n READ_ONLY: 'READ_ONLY',\n READ_AND_WRITE: 'READ_AND_WRITE',\n} as const;\n\nexport const CURRENCY_FIELD_NAMES: readonly string[] = [\n 'price',\n 'base_price',\n 'minimum_value',\n 'maximum_value',\n 'minimum_installment_value',\n];\n","import { GridColDef, GridRenderCellParams } from '@mui/x-data-grid-premium';\n\nimport { Field } from 'types/entityMetadata';\n\nimport { COLUMN_DEFAULTS } from '../constants/columnDefaults';\nimport { CellRenderer, DynamicRowData } from '../types/cellRenderer';\n\nexport type ColumnStrategy<T = object> = (\n field: Field,\n renderCell: CellRenderer<T>,\n metadata?: { id_field_name?: string },\n) => GridColDef;\n\nconst createImageColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n sortable: false,\n width: COLUMN_DEFAULTS.IMAGE_WIDTH,\n resizable: false,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createIdColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n minWidth: COLUMN_DEFAULTS.ID_MIN_WIDTH,\n flex: COLUMN_DEFAULTS.ID_FLEX,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createEntityColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n minWidth: COLUMN_DEFAULTS.ENTITY_MIN_WIDTH,\n flex: COLUMN_DEFAULTS.ENTITY_FLEX,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createDefaultColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n minWidth: COLUMN_DEFAULTS.MIN_WIDTH,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createActionsColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: 'Ações',\n width: COLUMN_DEFAULTS.ACTIONS_WIDTH,\n sortable: false,\n resizable: false,\n disableReorder: true,\n headerAlign: 'center',\n disableColumnMenu: true,\n align: 'center',\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nexport const getColumnStrategy = <T extends object>(\n field: Field,\n metadata?: { id_field_name?: string },\n): ColumnStrategy<T> => {\n if (field.name === metadata?.id_field_name || field.name === 'name') {\n return createIdColumn;\n }\n\n if (field.name === 'ACTIONS') {\n return createActionsColumn;\n }\n\n if (field.type === 'FILE') {\n return createImageColumn;\n }\n\n if (field.type === 'ENTITY') {\n return createEntityColumn;\n }\n\n return createDefaultColumn;\n};\n","import { EntityMetadataResponse, Field } from 'types/entityMetadata';\n\nexport const createActionsField = (): Field => ({\n name: 'ACTIONS',\n description: '',\n filter_field_name: null,\n type: 'TEXT',\n metadata: null,\n access_type: 'READ_ONLY',\n relation_field_name: null,\n available_filter_conditions: [],\n});\n\nexport const addActionsFieldToMetadata = (\n metadata: EntityMetadataResponse,\n): EntityMetadataResponse => {\n const hasActionsField = metadata.fields.some(\n field => field.name === 'ACTIONS',\n );\n\n if (hasActionsField) {\n return metadata;\n }\n\n return {\n ...metadata,\n fields: [...metadata.fields, createActionsField()],\n };\n};\n","import { memo, ReactNode } from 'react';\n\nimport Label from '../../Label';\n\nimport { BooleanRendererProps } from './props';\n\nconst BooleanRenderer = ({\n value,\n trueLabel = 'Ativo',\n falseLabel = 'Inativo',\n}: BooleanRendererProps): ReactNode => {\n return (\n <Label color={value ? 'success' : 'warning'}>\n {value ? trueLabel : falseLabel}\n </Label>\n );\n};\n\nexport default memo(BooleanRenderer);\n","import { memo, ReactNode } from 'react';\n\nimport { DatePickerFormat, fDate } from 'utils/formatTime';\n\nexport interface DateRendererProps {\n value: unknown;\n format?: string;\n}\n\nconst DateRenderer = ({ value, format }: DateRendererProps): ReactNode => {\n if (value === null || value === undefined) return '-';\n\n return fDate(value as DatePickerFormat, format);\n};\n\nexport default memo(DateRenderer);\n","import { memo, ReactNode } from 'react';\n\nimport { DatePickerFormat, fDateTime } from 'utils/formatTime';\n\nexport interface DateTimeRendererProps {\n value: unknown;\n format?: string;\n}\n\nconst DateTimeRenderer = ({\n value,\n format,\n}: DateTimeRendererProps): ReactNode => {\n if (value === null || value === undefined) return '-';\n\n return fDateTime(value as DatePickerFormat, format);\n};\n\nexport default memo(DateTimeRenderer);\n","import { memo, ReactNode } from 'react';\nimport Chip from '@mui/material/Chip';\n\nimport { EntityRendererProps } from './props';\n\nconst EntityRenderer = ({ value, field }: EntityRendererProps): ReactNode => {\n if (!field.metadata || typeof value !== 'object' || value === null) {\n return value ? String(value) : '-';\n }\n\n const entityValue = (value as Record<string, unknown>)[\n field.metadata.description_field_name\n ];\n\n if (!entityValue) return null;\n\n return (\n <Chip\n label={String(entityValue)}\n variant=\"outlined\"\n size=\"small\"\n sx={{\n width: 'fit-content',\n color: 'text.secondary',\n borderColor: 'divider',\n px: 1.5,\n }}\n />\n );\n};\n\nexport default memo(EntityRenderer);\n","import { memo, ReactNode } from 'react';\n\nimport Icon, { IconEnum } from '../../Icon';\n\nimport { IconRendererProps } from './props';\n\nconst IconRenderer = ({\n value,\n trueIcon = IconEnum.STAR_02,\n falseIcon = IconEnum.STAR,\n color = 'primary.main',\n width = 18,\n}: IconRendererProps): ReactNode => {\n return (\n <Icon icon={value ? trueIcon : falseIcon} color={color} width={width} />\n );\n};\n\nexport default memo(IconRenderer);\n","import { memo, ReactNode } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport CopyButton from 'components/CopyButton';\n\nimport { NameRendererProps } from './props';\n\nconst NameRenderer = ({\n id,\n displayName,\n copyMessage = 'ID copiado!',\n}: NameRendererProps): ReactNode => {\n return (\n <Stack height={1} justifyContent=\"center\">\n <Typography variant=\"subtitle2\" noWrap title={displayName}>\n {displayName}\n </Typography>\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Typography color=\"grey.600\" variant=\"body2\" noWrap>\n ID: {id}\n </Typography>\n <CopyButton toCopy={id} message={copyMessage} />\n </Stack>\n </Stack>\n );\n};\n\nexport default memo(NameRenderer);\n","import { memo, ReactNode } from 'react';\nimport Typography from '@mui/material/Typography';\n\nimport { fCurrencyBRL, fNumber } from 'utils/formatNumber';\n\nimport { NumberRendererProps } from './props';\n\nconst NumberRenderer = ({\n value,\n isCurrency = false,\n}: NumberRendererProps): ReactNode => {\n if (value === null || value === undefined) return '-';\n\n if (isCurrency) {\n return (\n <Typography variant=\"body2\" noWrap width=\"fit-content\">\n {fCurrencyBRL(Number(value))}\n </Typography>\n );\n }\n\n return (\n <Typography variant=\"body2\" noWrap width=\"fit-content\">\n {fNumber(Number(value))}\n </Typography>\n );\n};\n\nexport default memo(NumberRenderer);\n","import { memo, ReactNode } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport CopyButton from 'components/CopyButton';\n\nimport { TextRendererProps } from './props';\n\nconst sanitizeHtml = (text: string): string => {\n const withoutTags = text.replace(/<[^>]*>/g, '');\n return withoutTags\n .replace(/ /g, ' ')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .trim();\n};\n\nconst TextRenderer = ({\n value,\n showCopyButton = false,\n copyMessage = 'Copiado',\n}: TextRendererProps): ReactNode => {\n if (!value) return '-';\n\n const stringValue = String(value);\n const sanitizedValue = sanitizeHtml(stringValue);\n\n if (showCopyButton) {\n return (\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Typography variant=\"body2\" noWrap>\n {sanitizedValue}\n </Typography>\n <CopyButton toCopy={sanitizedValue} message={copyMessage} />\n </Stack>\n );\n }\n\n return sanitizedValue;\n};\n\nexport default memo(TextRenderer);\n","import { ReactNode } from 'react';\n\nimport { Field } from 'types/entityMetadata';\n\nimport { CURRENCY_FIELD_NAMES } from '../constants/columnDefaults';\nimport { CellRenderer, DynamicRowData } from '../props';\nimport {\n BooleanRenderer,\n DateRenderer,\n DateTimeRenderer,\n EntityRenderer,\n NumberRenderer,\n TextRenderer,\n} from '../renderers';\n\nfunction getIsCurrency(fieldName: string): boolean {\n return CURRENCY_FIELD_NAMES.includes(fieldName);\n}\n\nexport const createCellRenderer = <T extends object = object>(context: {\n onRowAction?: (rowId: string, row: DynamicRowData<T>) => ReactNode;\n}): CellRenderer<T> => {\n const { onRowAction } = context;\n\n const CellRendererComponent = (\n field: Field,\n row: DynamicRowData<T>,\n ): ReactNode => {\n const value = row[field.name];\n\n if (field.name === 'ACTIONS') {\n return onRowAction?.(row.id, row);\n }\n\n switch (field.type) {\n case 'BOOLEAN':\n return <BooleanRenderer value={value} />;\n\n case 'DATE':\n return <DateRenderer value={value} />;\n\n case 'DATETIME':\n return <DateTimeRenderer value={value} />;\n\n case 'DECIMAL':\n case 'INTEGER':\n return (\n <NumberRenderer\n value={value}\n isCurrency={getIsCurrency(field.name)}\n />\n );\n\n case 'FILE':\n case 'ENTITY':\n return <EntityRenderer value={value} field={field} />;\n case 'TEXT':\n default:\n return <TextRenderer value={value} />;\n }\n };\n\n CellRendererComponent.displayName = 'CellRendererComponent';\n return CellRendererComponent;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DynamicDataView/DynamicDataView.tsx","../../../src/components/DynamicDataView/hooks/useDynamicColumns.ts","../../../src/components/DynamicDataView/constants/columnDefaults.ts","../../../src/components/DynamicDataView/utils/columnStrategies.ts","../../../src/components/DynamicDataView/utils/addActionsField.ts","../../../src/components/DynamicDataView/renderers/BooleanRenderer.tsx","../../../src/components/DynamicDataView/renderers/DateRenderer.tsx","../../../src/components/DynamicDataView/renderers/DateTimeRenderer.tsx","../../../src/components/DynamicDataView/renderers/EntityRenderer.tsx","../../../src/components/DynamicDataView/renderers/IconRenderer.tsx","../../../src/components/DynamicDataView/renderers/NameRenderer.tsx","../../../src/components/DynamicDataView/renderers/NumberRenderer.tsx","../../../src/components/DynamicDataView/renderers/TextRenderer.tsx","../../../src/components/DynamicDataView/utils/createCellRenderer.tsx"],"names":["memo","useCallback","useMemo","COLUMN_DEFAULTS","ACCESS_TYPES","CURRENCY_FIELD_NAMES","createImageColumn","field","renderCell","params","createIdColumn","createEntityColumn","createDefaultColumn","createActionsColumn","getColumnStrategy","metadata","useDynamicColumns","columnStrategies","columnsMap","column","createActionsField","addActionsFieldToMetadata","jsx","BooleanRenderer","value","trueLabel","falseLabel","Label_default","BooleanRenderer_default","DateRenderer","format","fDate","DateRenderer_default","DateTimeRenderer","fDateTime","DateTimeRenderer_default","Chip","EntityRenderer","entityValue","EntityRenderer_default","IconRenderer","trueIcon","falseIcon","color","width","Icon_default","IconRenderer_default","Stack","Typography","jsxs","NameRenderer","id","displayName","copyMessage","CopyButton_default","NameRenderer_default","NumberRenderer","isCurrency","fCurrencyBRL","fNumber","NumberRenderer_default","sanitizeHtml","text","TextRenderer","showCopyButton","stringValue","sanitizedValue","TextRenderer_default","getIsCurrency","fieldName","createCellRenderer","context","onRowAction","CellRendererComponent","row","getColumnFieldIdFromField","DynamicDataView","title","data","isLoading","isFetching","page","perPage","searchValue","onSearchChange","onSearch","onPaginationChange","onAdd","onRowDoubleClick","actions","moreActions","hideHeader","slots","mobileRender","containerHeight","showColumnButton","defaultVisibleFieldNames","preferredFieldOrder","onColumnVisibilityModelChange","columnVisibilityStorageKey","rows","total","effectiveMetadata","columns","columnsByFieldId","hasStorageKey","storedVisibilityModel","setStoredVisibilityModel","useLocalStorage_default","orderedColumns","actionFieldName","preferredWithoutActions","usedColumnFieldIds","ordered","pushColumnForField","fieldItem","columnFieldId","initialState","visibilityModel","visible","stored","handleColumnVisibilityModelChange","model","handleRowDoubleClick","rowId","DataView_default","DynamicDataView_default"],"mappings":"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","sourcesContent":["import { memo, useCallback, useMemo } from 'react';\nimport { GridColumnVisibilityModel } from '@mui/x-data-grid-premium';\n\nimport useLocalStorage from 'hooks/useLocalStorage';\nimport { Field } from 'types/entityMetadata';\n\nimport DataView from '../DataView';\n\nimport { useDynamicColumns } from './hooks/useDynamicColumns';\nimport { addActionsFieldToMetadata } from './utils/addActionsField';\nimport { createCellRenderer } from './utils/createCellRenderer';\nimport { DynamicDataViewProps, DynamicRowData } from './props';\n\nfunction getColumnFieldIdFromField(field: Field): string {\n return field.name;\n}\n\nconst DynamicDataView = <T extends object = object>({\n title,\n metadata,\n data,\n isLoading,\n isFetching,\n page,\n perPage,\n searchValue,\n onSearchChange,\n onSearch,\n onPaginationChange,\n onAdd,\n onRowAction,\n onRowDoubleClick,\n actions,\n moreActions,\n hideHeader,\n slots,\n mobileRender,\n containerHeight = 600,\n showColumnButton = false,\n defaultVisibleFieldNames,\n preferredFieldOrder,\n columnStrategies,\n onColumnVisibilityModelChange,\n columnVisibilityStorageKey,\n}: DynamicDataViewProps<T>) => {\n const { items: rows = [], total = 0 } = data || {};\n\n const effectiveMetadata = useMemo(\n () => (onRowAction ? addActionsFieldToMetadata(metadata) : metadata),\n [metadata, onRowAction],\n );\n\n const renderCell = useMemo(\n () =>\n createCellRenderer<T>({\n onRowAction,\n }),\n [onRowAction],\n );\n\n const columns = useDynamicColumns<T>({\n metadata: effectiveMetadata,\n renderCell,\n columnStrategies,\n });\n\n const columnsByFieldId = useMemo(\n () => new Map(columns.map(column => [column.field, column])),\n [columns],\n );\n\n const hasStorageKey = Boolean(columnVisibilityStorageKey);\n\n const [storedVisibilityModel, setStoredVisibilityModel] = useLocalStorage<\n GridColumnVisibilityModel | undefined\n >(columnVisibilityStorageKey || '__dynamic-data-view:columns__', undefined, {\n initializeWithValue: hasStorageKey,\n });\n\n const orderedColumns = useMemo(() => {\n if (\n !preferredFieldOrder ||\n preferredFieldOrder.length === 0 ||\n !effectiveMetadata?.fields\n ) {\n return columns;\n }\n\n const actionFieldName = 'ACTIONS';\n const preferredWithoutActions = preferredFieldOrder.filter(\n fieldName => fieldName !== actionFieldName,\n );\n\n const usedColumnFieldIds = new Set<string>();\n const ordered: Array<(typeof columns)[number]> = [];\n\n const pushColumnForField = (fieldName: string) => {\n const field = effectiveMetadata.fields.find(\n fieldItem => fieldItem.name === fieldName,\n );\n\n if (!field) {\n return;\n }\n\n const columnFieldId = getColumnFieldIdFromField(field);\n const column = columnsByFieldId.get(columnFieldId);\n\n if (!column || usedColumnFieldIds.has(columnFieldId)) {\n return;\n }\n\n ordered.push(column);\n usedColumnFieldIds.add(columnFieldId);\n };\n\n preferredWithoutActions.forEach(fieldName => {\n pushColumnForField(fieldName);\n });\n\n effectiveMetadata.fields.forEach(field => {\n if (field.name === actionFieldName) {\n return;\n }\n\n if (preferredWithoutActions.includes(field.name)) {\n return;\n }\n\n const columnFieldId = getColumnFieldIdFromField(field);\n const column = columnsByFieldId.get(columnFieldId);\n\n if (!column || usedColumnFieldIds.has(columnFieldId)) {\n return;\n }\n\n ordered.push(column);\n usedColumnFieldIds.add(columnFieldId);\n });\n\n pushColumnForField(actionFieldName);\n\n if (ordered.length === 0) {\n return columns;\n }\n\n return ordered;\n }, [columns, columnsByFieldId, effectiveMetadata, preferredFieldOrder]);\n\n const initialState = useMemo(() => {\n if (!effectiveMetadata?.fields) {\n return undefined;\n }\n\n const visibilityModel: GridColumnVisibilityModel = {};\n\n effectiveMetadata.fields.forEach(field => {\n const columnFieldId = getColumnFieldIdFromField(field);\n\n if (!columnsByFieldId.has(columnFieldId)) {\n return;\n }\n\n let visible: boolean | undefined;\n\n if (hasStorageKey && storedVisibilityModel) {\n const stored = storedVisibilityModel[columnFieldId];\n if (typeof stored === 'boolean') {\n visible = stored;\n }\n }\n\n if (\n visible === undefined &&\n defaultVisibleFieldNames &&\n defaultVisibleFieldNames.length > 0\n ) {\n visible = defaultVisibleFieldNames.includes(field.name);\n }\n\n if (typeof visible === 'boolean') {\n visibilityModel[columnFieldId] = visible;\n }\n });\n\n if (Object.keys(visibilityModel).length === 0) {\n return undefined;\n }\n\n return {\n columns: {\n columnVisibilityModel: visibilityModel,\n },\n };\n }, [\n columnsByFieldId,\n defaultVisibleFieldNames,\n effectiveMetadata,\n hasStorageKey,\n storedVisibilityModel,\n ]);\n\n const handleColumnVisibilityModelChange = useCallback(\n (model: GridColumnVisibilityModel) => {\n if (hasStorageKey) {\n setStoredVisibilityModel(model);\n }\n\n if (onColumnVisibilityModelChange) {\n onColumnVisibilityModelChange(model);\n }\n },\n [hasStorageKey, onColumnVisibilityModelChange, setStoredVisibilityModel],\n );\n\n const handleRowDoubleClick = useCallback(\n (params: { id: string | number; row: DynamicRowData<T> }) => {\n if (!onRowDoubleClick) return;\n\n const rowId = params.id?.toString() || '';\n onRowDoubleClick(rowId, params.row);\n },\n [onRowDoubleClick],\n );\n\n return (\n <DataView\n title={title}\n columns={orderedColumns}\n rows={rows}\n mobileRender={mobileRender || (() => null)}\n rowCount={total}\n loading={isLoading}\n fetching={isFetching}\n searchValue={searchValue}\n onSearch={onSearch}\n onSearchChange={onSearchChange}\n paginationModel={{\n page,\n pageSize: perPage,\n }}\n onPaginationChange={onPaginationChange}\n actions={actions}\n moreActions={moreActions}\n onAdd={onAdd}\n hideHeader={hideHeader}\n onRowDoubleClick={onRowDoubleClick ? handleRowDoubleClick : undefined}\n disableRowSelectionOnClick\n slots={slots}\n initialState={initialState}\n showColumnButton={showColumnButton}\n containerProps={{\n height: containerHeight,\n maxHeight: containerHeight,\n }}\n onColumnVisibilityModelChange={handleColumnVisibilityModelChange}\n />\n );\n};\n\nexport default memo(DynamicDataView) as typeof DynamicDataView;\nexport type {\n DynamicDataViewProps,\n DynamicRowData,\n MobileRenderFunction,\n} from './props';\n","import { useMemo } from 'react';\nimport { GridColDef } from '@mui/x-data-grid-premium';\n\nimport { Columns } from 'types/datagrid';\nimport { EntityMetadataResponse } from 'types/entityMetadata';\n\nimport { ACCESS_TYPES } from '../constants/columnDefaults';\nimport { CellRenderer } from '../types/cellRenderer';\nimport { ColumnStrategy, getColumnStrategy } from '../utils/columnStrategies';\n\ninterface UseDynamicColumnsProps<T> {\n metadata?: EntityMetadataResponse;\n renderCell: CellRenderer<T>;\n columnStrategies?: {\n [fieldName: string]: ColumnStrategy<T>;\n };\n}\n\nexport const useDynamicColumns = <T extends object>({\n metadata,\n renderCell,\n columnStrategies,\n}: UseDynamicColumnsProps<T>): Columns => {\n return useMemo(() => {\n if (!metadata?.fields) return [];\n\n const columnsMap = new Map<string, GridColDef>();\n\n const visibleFields = metadata.fields.filter(field => {\n if (\n field.access_type === ACCESS_TYPES.READ_ONLY ||\n field.access_type === ACCESS_TYPES.READ_AND_WRITE\n ) {\n return true;\n }\n\n return (\n field.name === 'ACTIONS' ||\n field.name === metadata?.id_field_name ||\n field.name === 'NAME'\n );\n });\n\n visibleFields.forEach(field => {\n if (columnsMap.has(field.name)) {\n return;\n }\n\n const strategy =\n columnStrategies?.[field.name] ?? getColumnStrategy<T>(field, metadata);\n const column = strategy(field, renderCell, metadata);\n\n columnsMap.set(field.name, column);\n });\n\n return Array.from(columnsMap.values());\n }, [columnStrategies, metadata, renderCell]);\n};\n","export const COLUMN_DEFAULTS = {\n IMAGE_WIDTH: 90,\n MIN_WIDTH: 130,\n ENTITY_MIN_WIDTH: 100,\n ENTITY_FLEX: 0.5,\n ID_MIN_WIDTH: 200,\n ID_FLEX: 1,\n ACTIONS_WIDTH: 80,\n} as const;\n\nexport const ACCESS_TYPES = {\n READ_ONLY: 'READ_ONLY',\n READ_AND_WRITE: 'READ_AND_WRITE',\n} as const;\n\nexport const CURRENCY_FIELD_NAMES: readonly string[] = [\n 'price',\n 'base_price',\n 'minimum_value',\n 'maximum_value',\n 'minimum_installment_value',\n];\n","import { GridColDef, GridRenderCellParams } from '@mui/x-data-grid-premium';\n\nimport { Field } from 'types/entityMetadata';\n\nimport { COLUMN_DEFAULTS } from '../constants/columnDefaults';\nimport { CellRenderer, DynamicRowData } from '../types/cellRenderer';\n\nexport type ColumnStrategy<T = object> = (\n field: Field,\n renderCell: CellRenderer<T>,\n metadata?: { id_field_name?: string },\n) => GridColDef;\n\nconst createImageColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n sortable: false,\n width: COLUMN_DEFAULTS.IMAGE_WIDTH,\n resizable: false,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createIdColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n minWidth: COLUMN_DEFAULTS.ID_MIN_WIDTH,\n flex: COLUMN_DEFAULTS.ID_FLEX,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createEntityColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n minWidth: COLUMN_DEFAULTS.ENTITY_MIN_WIDTH,\n flex: COLUMN_DEFAULTS.ENTITY_FLEX,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createDefaultColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: field.description,\n minWidth: COLUMN_DEFAULTS.MIN_WIDTH,\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nconst createActionsColumn = <T extends object>(\n field: Field,\n renderCell: CellRenderer<T>,\n): GridColDef => ({\n field: field.name,\n headerName: 'Ações',\n width: COLUMN_DEFAULTS.ACTIONS_WIDTH,\n sortable: false,\n resizable: false,\n disableReorder: true,\n headerAlign: 'center',\n disableColumnMenu: true,\n align: 'center',\n renderCell: (params: GridRenderCellParams) =>\n renderCell(field, params.row as DynamicRowData<T>),\n});\n\nexport const getColumnStrategy = <T extends object>(\n field: Field,\n metadata?: { id_field_name?: string },\n): ColumnStrategy<T> => {\n if (field.name === metadata?.id_field_name || field.name === 'name') {\n return createIdColumn;\n }\n\n if (field.name === 'ACTIONS') {\n return createActionsColumn;\n }\n\n if (field.type === 'FILE') {\n return createImageColumn;\n }\n\n if (field.type === 'ENTITY') {\n return createEntityColumn;\n }\n\n return createDefaultColumn;\n};\n","import { EntityMetadataResponse, Field } from 'types/entityMetadata';\n\nexport const createActionsField = (): Field => ({\n name: 'ACTIONS',\n description: '',\n filter_field_name: null,\n type: 'TEXT',\n metadata: null,\n access_type: 'READ_ONLY',\n relation_field_name: null,\n available_filter_conditions: [],\n});\n\nexport const addActionsFieldToMetadata = (\n metadata: EntityMetadataResponse,\n): EntityMetadataResponse => {\n const hasActionsField = metadata.fields.some(\n field => field.name === 'ACTIONS',\n );\n\n if (hasActionsField) {\n return metadata;\n }\n\n return {\n ...metadata,\n fields: [...metadata.fields, createActionsField()],\n };\n};\n","import { memo, ReactNode } from 'react';\n\nimport Label from '../../Label';\n\nimport { BooleanRendererProps } from './props';\n\nconst BooleanRenderer = ({\n value,\n trueLabel = 'Ativo',\n falseLabel = 'Inativo',\n}: BooleanRendererProps): ReactNode => {\n return (\n <Label color={value ? 'success' : 'warning'}>\n {value ? trueLabel : falseLabel}\n </Label>\n );\n};\n\nexport default memo(BooleanRenderer);\n","import { memo, ReactNode } from 'react';\n\nimport { DatePickerFormat, fDate } from 'utils/formatTime';\n\nexport interface DateRendererProps {\n value: unknown;\n format?: string;\n}\n\nconst DateRenderer = ({ value, format }: DateRendererProps): ReactNode => {\n if (value === null || value === undefined) return '-';\n\n return fDate(value as DatePickerFormat, format);\n};\n\nexport default memo(DateRenderer);\n","import { memo, ReactNode } from 'react';\n\nimport { DatePickerFormat, fDateTime } from 'utils/formatTime';\n\nexport interface DateTimeRendererProps {\n value: unknown;\n format?: string;\n}\n\nconst DateTimeRenderer = ({\n value,\n format,\n}: DateTimeRendererProps): ReactNode => {\n if (value === null || value === undefined) return '-';\n\n return fDateTime(value as DatePickerFormat, format);\n};\n\nexport default memo(DateTimeRenderer);\n","import { memo, ReactNode } from 'react';\nimport Chip from '@mui/material/Chip';\n\nimport { EntityRendererProps } from './props';\n\nconst EntityRenderer = ({ value, field }: EntityRendererProps): ReactNode => {\n if (!field.metadata || typeof value !== 'object' || value === null) {\n return value ? String(value) : '-';\n }\n\n const entityValue = (value as Record<string, unknown>)[\n field.metadata.description_field_name\n ];\n\n if (!entityValue) return null;\n\n return (\n <Chip\n label={String(entityValue)}\n variant=\"outlined\"\n size=\"small\"\n sx={{\n width: 'fit-content',\n color: 'text.secondary',\n borderColor: 'divider',\n borderRadius: 3,\n }}\n />\n );\n};\n\nexport default memo(EntityRenderer);\n","import { memo, ReactNode } from 'react';\n\nimport Icon, { IconEnum } from '../../Icon';\n\nimport { IconRendererProps } from './props';\n\nconst IconRenderer = ({\n value,\n trueIcon = IconEnum.STAR_02,\n falseIcon = IconEnum.STAR,\n color = 'primary.main',\n width = 18,\n}: IconRendererProps): ReactNode => {\n return (\n <Icon icon={value ? trueIcon : falseIcon} color={color} width={width} />\n );\n};\n\nexport default memo(IconRenderer);\n","import { memo, ReactNode } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport CopyButton from 'components/CopyButton';\n\nimport { NameRendererProps } from './props';\n\nconst NameRenderer = ({\n id,\n displayName,\n copyMessage = 'ID copiado!',\n}: NameRendererProps): ReactNode => {\n return (\n <Stack height={1} justifyContent=\"center\">\n <Typography variant=\"subtitle2\" noWrap title={displayName}>\n {displayName}\n </Typography>\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Typography color=\"grey.600\" variant=\"body2\" noWrap>\n ID: {id}\n </Typography>\n <CopyButton toCopy={id} message={copyMessage} />\n </Stack>\n </Stack>\n );\n};\n\nexport default memo(NameRenderer);\n","import { memo, ReactNode } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { fCurrencyBRL, fNumber } from 'utils/formatNumber';\n\nimport { NumberRendererProps } from './props';\n\nconst NumberRenderer = ({\n value,\n isCurrency = false,\n}: NumberRendererProps): ReactNode => {\n if (value === null || value === undefined) return '-';\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" height=\"100%\">\n <Typography variant=\"body2\" noWrap width=\"fit-content\">\n {isCurrency ? fCurrencyBRL(Number(value)) : fNumber(Number(value))}\n </Typography>\n </Stack>\n );\n};\n\nexport default memo(NumberRenderer);\n","import { memo, ReactNode } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport CopyButton from 'components/CopyButton';\n\nimport { TextRendererProps } from './props';\n\nconst sanitizeHtml = (text: string): string => {\n const withoutTags = text.replace(/<[^>]*>/g, '');\n return withoutTags\n .replace(/ /g, ' ')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .trim();\n};\n\nconst TextRenderer = ({\n value,\n showCopyButton = false,\n copyMessage = 'Copiado',\n}: TextRendererProps): ReactNode => {\n if (!value) return '-';\n\n const stringValue = String(value);\n const sanitizedValue = sanitizeHtml(stringValue);\n\n if (showCopyButton) {\n return (\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Typography variant=\"body2\" noWrap>\n {sanitizedValue}\n </Typography>\n <CopyButton toCopy={sanitizedValue} message={copyMessage} />\n </Stack>\n );\n }\n\n return sanitizedValue;\n};\n\nexport default memo(TextRenderer);\n","import { ReactNode } from 'react';\n\nimport { Field } from 'types/entityMetadata';\n\nimport { CURRENCY_FIELD_NAMES } from '../constants/columnDefaults';\nimport { CellRenderer, DynamicRowData } from '../props';\nimport {\n BooleanRenderer,\n DateRenderer,\n DateTimeRenderer,\n EntityRenderer,\n NumberRenderer,\n TextRenderer,\n} from '../renderers';\n\nfunction getIsCurrency(fieldName: string): boolean {\n return CURRENCY_FIELD_NAMES.includes(fieldName);\n}\n\nexport const createCellRenderer = <T extends object = object>(context: {\n onRowAction?: (rowId: string, row: DynamicRowData<T>) => ReactNode;\n}): CellRenderer<T> => {\n const { onRowAction } = context;\n\n const CellRendererComponent = (\n field: Field,\n row: DynamicRowData<T>,\n ): ReactNode => {\n const value = row[field.name];\n\n if (field.name === 'ACTIONS') {\n return onRowAction?.(row.id, row);\n }\n\n switch (field.type) {\n case 'BOOLEAN':\n return <BooleanRenderer value={value} />;\n\n case 'DATE':\n return <DateRenderer value={value} />;\n\n case 'DATETIME':\n return <DateTimeRenderer value={value} />;\n\n case 'DECIMAL':\n case 'INTEGER':\n return (\n <NumberRenderer\n value={value}\n isCurrency={getIsCurrency(field.name)}\n />\n );\n\n case 'FILE':\n case 'ENTITY':\n return <EntityRenderer value={value} field={field} />;\n case 'TEXT':\n default:\n return <TextRenderer value={value} />;\n }\n };\n\n CellRendererComponent.displayName = 'CellRendererComponent';\n return CellRendererComponent;\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { a as default } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
export { a as default } from '../../chunk-ZFRNMT3P.js';
|
|
2
|
+
import '../../chunk-RFRLNTFN.js';
|
|
3
3
|
import '../../chunk-KGLU4CR2.js';
|
|
4
|
-
import '../../chunk-
|
|
4
|
+
import '../../chunk-NQNNMRLC.js';
|
|
5
5
|
import '../../chunk-CIGSMWKF.js';
|
|
6
6
|
import '../../chunk-RPO7AI5K.js';
|
|
7
7
|
//# sourceMappingURL=out.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { a as a$1 } from '../../chunk-
|
|
1
|
+
import { a as a$1 } from '../../chunk-NQNNMRLC.js';
|
|
2
2
|
import '../../chunk-CIGSMWKF.js';
|
|
3
3
|
import { a } from '../../chunk-E3R7W7GK.js';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
4
|
+
import m from '@mui/material/IconButton';
|
|
5
|
+
import i from '@mui/material/Stack';
|
|
6
|
+
import s from '@mui/material/Typography';
|
|
7
|
+
import T from '@mui/material/Collapse';
|
|
8
8
|
import { styled, alpha } from '@mui/material/styles';
|
|
9
9
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var l=styled(i)(({theme:r})=>({border:`1px solid ${r.palette.divider}`,borderRadius:8,alignItems:"center",overflow:"hidden"})),d=styled(i)(({theme:r})=>({backgroundColor:alpha(r.palette.grey[500],.1),padding:8,width:"100%",justifyContent:"space-between",alignItems:"center",gap:12,"& .MuiInputBase-root":{backgroundColor:r.palette.background.paper}})),c=styled(T)({width:"100%",padding:"12px 16px"});var G=({description:r,name:g,children:C,header:f,onDelete:x})=>{let[t,E]=a(!0);return jsxs(l,{children:[jsxs(d,{direction:"row",children:[jsxs(i,{direction:"row",alignItems:"center",gap:1.5,flex:1,children:[jsx(m,{edge:"end",onClick:E,children:jsx(a$1,{icon:t?"CHEVRON_UP":"CHEVRON_RIGHT","data-testid":t?"CHEVRON_UP":"CHEVRON_RIGHT"})}),jsx(s,{variant:"overline",color:"text.primary",children:g}),jsx(s,{variant:"overline",color:"text.secondary",children:r}),jsx(i,{flex:1,children:f})]}),jsx(m,{color:"error",onClick:x,children:jsx(a$1,{icon:"DELETE_MARK_BUTTON_02"})})]}),jsx(c,{in:t,timeout:"auto",unmountOnExit:!0,children:C})]})},P=G;
|
|
12
12
|
|
|
13
|
-
export {
|
|
13
|
+
export { P as default };
|
|
14
14
|
//# sourceMappingURL=out.js.map
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ExpandableGroup/index.tsx","../../../src/components/ExpandableGroup/styles.ts"],"names":["IconButton","Stack","Typography","Collapse","alpha","styled","Container","theme","GroupTop","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ExpandableGroup/index.tsx","../../../src/components/ExpandableGroup/styles.ts"],"names":["IconButton","Stack","Typography","Collapse","alpha","styled","Container","theme","GroupTop","CollapseGroup","jsx","jsxs","ExpandableGroup","description","name","children","header","onDelete","expanded","toggleExpanded","useToggle_default","Icon_default","ExpandableGroup_default"],"mappings":"mHACA,OAAOA,MAAgB,2BACvB,OAAOC,MAAW,sBAClB,OAAOC,MAAgB,2BCHvB,OAAOC,MAAc,yBACrB,OAAOF,MAAW,sBAClB,OAAS,SAAAG,EAAO,UAAAC,MAAc,uBAEvB,IAAMC,EAAYD,EAAOJ,CAAK,EAAE,CAAC,CAAE,MAAAM,CAAM,KAAO,CACrD,OAAQ,aAAaA,EAAM,QAAQ,UACnC,aAAc,EACd,WAAY,SACZ,SAAU,QACZ,EAAE,EAEWC,EAAWH,EAAOJ,CAAK,EAAE,CAAC,CAAE,MAAAM,CAAM,KAAO,CACpD,gBAAiBH,EAAMG,EAAM,QAAQ,KAAK,GAAG,EAAG,EAAG,EACnD,QAAS,EACT,MAAO,OACP,eAAgB,gBAChB,WAAY,SACZ,IAAK,GAEL,uBAAwB,CACtB,gBAAiBA,EAAM,QAAQ,WAAW,KAC5C,CACF,EAAE,EAEWE,EAAgBJ,EAAOF,CAAQ,EAAE,CAC5C,MAAO,OACP,QAAS,WACX,CAAC,EDHO,OAEI,OAAAO,EAFJ,QAAAC,MAAA,oBAZR,IAAMC,EAAkB,CAAC,CACvB,YAAAC,EACA,KAAAC,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,CACF,IAA+C,CAC7C,GAAM,CAACC,EAAUC,CAAc,EAAIC,EAAU,EAAI,EAEjD,OACET,EAACL,EAAA,CACC,UAAAK,EAACH,EAAA,CAAS,UAAU,MAClB,UAAAG,EAACV,EAAA,CAAM,UAAU,MAAM,WAAW,SAAS,IAAK,IAAK,KAAM,EACzD,UAAAS,EAACV,EAAA,CAAW,KAAK,MAAM,QAASmB,EAC9B,SAAAT,EAACW,EAAA,CACC,KAAMH,EAAW,aAAe,gBAChC,cAAaA,EAAW,aAAe,gBACzC,EACF,EAEAR,EAACR,EAAA,CAAW,QAAQ,WAAW,MAAM,eAClC,SAAAY,EACH,EAEAJ,EAACR,EAAA,CAAW,QAAQ,WAAW,MAAM,iBAClC,SAAAW,EACH,EAEAH,EAACT,EAAA,CAAM,KAAM,EAAI,SAAAe,EAAO,GAC1B,EACAN,EAACV,EAAA,CAAW,MAAM,QAAQ,QAASiB,EACjC,SAAAP,EAACW,EAAA,CAAK,KAAK,wBAAwB,EACrC,GACF,EAEAX,EAACD,EAAA,CAAc,GAAIS,EAAU,QAAQ,OAAO,cAAa,GACtD,SAAAH,EACH,GACF,CAEJ,EAEOO,EAAQV","sourcesContent":["import { PropsWithChildren } from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport useToggle from 'hooks/useToggle';\n\nimport Icon from '../Icon';\n\nimport { ExpandableGroupProps } from './props';\nimport { CollapseGroup, Container, GroupTop } from './styles';\n\nconst ExpandableGroup = ({\n description,\n name,\n children,\n header,\n onDelete,\n}: PropsWithChildren<ExpandableGroupProps>) => {\n const [expanded, toggleExpanded] = useToggle(true);\n\n return (\n <Container>\n <GroupTop direction=\"row\">\n <Stack direction=\"row\" alignItems=\"center\" gap={1.5} flex={1}>\n <IconButton edge=\"end\" onClick={toggleExpanded}>\n <Icon\n icon={expanded ? 'CHEVRON_UP' : 'CHEVRON_RIGHT'}\n data-testid={expanded ? 'CHEVRON_UP' : 'CHEVRON_RIGHT'}\n />\n </IconButton>\n\n <Typography variant=\"overline\" color=\"text.primary\">\n {name}\n </Typography>\n\n <Typography variant=\"overline\" color=\"text.secondary\">\n {description}\n </Typography>\n\n <Stack flex={1}>{header}</Stack>\n </Stack>\n <IconButton color=\"error\" onClick={onDelete}>\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </GroupTop>\n\n <CollapseGroup in={expanded} timeout=\"auto\" unmountOnExit>\n {children}\n </CollapseGroup>\n </Container>\n );\n};\n\nexport default ExpandableGroup;\n","import Collapse from '@mui/material/Collapse';\nimport Stack from '@mui/material/Stack';\nimport { alpha, styled } from '@mui/material/styles';\n\nexport const Container = styled(Stack)(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: 8,\n alignItems: 'center',\n overflow: 'hidden',\n}));\n\nexport const GroupTop = styled(Stack)(({ theme }) => ({\n backgroundColor: alpha(theme.palette.grey[500], 0.1),\n padding: 8,\n width: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: 12,\n\n '& .MuiInputBase-root': {\n backgroundColor: theme.palette.background.paper,\n },\n}));\n\nexport const CollapseGroup = styled(Collapse)({\n width: '100%',\n padding: '12px 16px',\n});\n"]}
|