@orbe-agro/client-core 5.3.274 → 5.3.275

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.
@@ -197,16 +197,30 @@ function DataTable(props) {
197
197
  }
198
198
  }, [table.getState().rowSelection, onSelectionChange, table]);
199
199
  useEffect(() => {
200
- if (props.isAllSelected && table) {
201
- const all = {};
202
- table.getRowModel().rows.forEach((row) => {
203
- all[row.id] = true;
200
+ if (props.selectedRows && data.length > 0) {
201
+ const externalSelection = {};
202
+ data.forEach((row, index) => {
203
+ const isSelected = props.selectedRows?.some((selectedRow) => selectedRow === row);
204
+ if (isSelected) {
205
+ externalSelection[index] = true;
206
+ }
204
207
  });
205
- setRowSelection(all);
206
- } else {
207
- setRowSelection({});
208
+ setRowSelection(externalSelection);
209
+ }
210
+ }, [props.selectedRows, data]);
211
+ useEffect(() => {
212
+ if (!props.selectedRows) {
213
+ if (props.isAllSelected === true && table) {
214
+ const all = {};
215
+ table.getRowModel().rows.forEach((row) => {
216
+ all[row.id] = true;
217
+ });
218
+ setRowSelection(all);
219
+ } else if (props.isAllSelected === false) {
220
+ setRowSelection({});
221
+ }
208
222
  }
209
- }, [props.isAllSelected]);
223
+ }, [props.isAllSelected, table, props.selectedRows]);
210
224
  return /* @__PURE__ */ jsxs(Loading, { loading: Boolean(loading && data.length !== 0), type: "cover", children: [
211
225
  /* @__PURE__ */ jsxs(Table, { ...rest, children: [
212
226
  /* @__PURE__ */ jsx(THead, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(Tr, { children: headerGroup.headers.map((header) => {
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sources":["../../../../lib/@ecme/components/shared/DataTable.tsx"],"sourcesContent":["import FileNotFound from '@/assets/svg/FileNotFound'\nimport type { CheckboxProps } from '@/components/ui/Checkbox'\nimport Checkbox from '@/components/ui/Checkbox'\nimport Pagination from '@/components/ui/Pagination'\nimport Select from '@/components/ui/Select'\nimport type { SkeletonProps } from '@/components/ui/Skeleton'\nimport type { TableProps } from '@/components/ui/Table'\nimport Table from '@/components/ui/Table'\nimport {\n CellContext,\n ColumnDef,\n ColumnSort,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n Row,\n useReactTable,\n} from '@tanstack/react-table'\nimport classNames from 'classnames'\nimport type { ChangeEvent, ReactNode, Ref } from 'react'\nimport {\n Fragment,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport TableRowSkeleton from './loaders/TableRowSkeleton'\nimport Loading from './Loading'\n\nexport type OnSortParam = { order: 'asc' | 'desc' | ''; key: string | number }\n\nexport type DataTableProps<T> = {\n columns: ColumnDef<T>[]\n customNoDataIcon?: ReactNode\n data?: T[]\n loading?: boolean\n noData?: boolean\n instanceId?: string\n onCheckBoxChange?: (checked: boolean, row: T) => void\n onIndeterminateCheckBoxChange?: (checked: boolean, rows: Row<T>[]) => void\n onPaginationChange?: (page: number) => void\n onSelectChange?: (num: number) => void\n onSort?: (sort: OnSortParam) => void\n pageSizes?: number[]\n manualSorting?: boolean\n selectable?: boolean\n skeletonAvatarColumns?: number[]\n skeletonAvatarProps?: SkeletonProps\n pagingData?: {\n total: number\n pageIndex: number\n pageSize: number\n }\n checkboxChecked?: (row: T) => boolean\n indeterminateCheckboxChecked?: (row: Row<T>[]) => boolean\n ref?: Ref<DataTableResetHandle | HTMLTableElement>\n onSelectionChange?: (selected: T[]) => void\n renderSubComponent?: (row: Row<T>) => React.ReactNode\n getRowCanExpand?: (row: Row<T>) => boolean\n hidePagination?: boolean\n isAllSelected?: boolean\n} & TableProps\n\nexport type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>\n\nexport interface IndeterminateCheckboxProps\n extends Omit<CheckboxProps, 'onChange'> {\n onChange: (event: CheckBoxChangeEvent) => void\n indeterminate: boolean\n onCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n onIndeterminateCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n}\n\nconst { Tr, Th, Td, THead, TBody, Sorter } = Table\n\nconst IndeterminateCheckbox = (props: IndeterminateCheckboxProps) => {\n const {\n indeterminate,\n onChange,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n ...rest\n } = props\n\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (typeof indeterminate === 'boolean' && ref.current) {\n ref.current.indeterminate = !rest.checked && indeterminate\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, indeterminate])\n\n const handleChange = (e: CheckBoxChangeEvent) => {\n onChange(e)\n onCheckBoxChange?.(e)\n onIndeterminateCheckBoxChange?.(e)\n }\n\n return (\n <Checkbox\n ref={ref}\n className=\"mb-0\"\n onChange={(_, e) => handleChange(e)}\n {...rest}\n />\n )\n}\n\nexport type DataTableResetHandle = {\n resetSorting: () => void\n resetSelected: () => void\n}\n\nfunction DataTable<T>(props: DataTableProps<T>) {\n const {\n skeletonAvatarColumns,\n columns: columnsProp = [],\n data = [],\n customNoDataIcon,\n loading,\n noData,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n onPaginationChange,\n onSelectChange,\n onSort,\n pageSizes = [10, 25, 50, 100],\n selectable = false,\n skeletonAvatarProps,\n pagingData = {\n total: 0,\n pageIndex: 1,\n pageSize: 10,\n },\n checkboxChecked,\n indeterminateCheckboxChecked,\n instanceId = 'data-table',\n ref,\n renderSubComponent = () => null,\n getRowCanExpand = () => false,\n onSelectionChange,\n hidePagination = false,\n ...rest\n } = props\n\n const { pageSize, pageIndex, total } = pagingData\n\n const [sorting, setSorting] = useState<ColumnSort[] | null>(null)\n const [selection, setRowSelection] = useState({})\n\n const { t } = useTranslation()\n\n const pageSizeOption = useMemo(\n () =>\n pageSizes.map((number) => ({\n value: number,\n label: `${number} / ${t('common.table.pageAbbr')}`,\n })),\n [pageSizes],\n )\n\n useEffect(() => {\n if (Array.isArray(sorting)) {\n const sortOrder =\n sorting.length > 0 ? (sorting[0].desc ? 'desc' : 'asc') : ''\n const id = sorting.length > 0 ? sorting[0].id : ''\n onSort?.({ order: sortOrder, key: id })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sorting])\n\n const handleIndeterminateCheckBoxChange = (\n checked: boolean,\n rows: Row<T>[],\n ) => {\n if (!loading) {\n onIndeterminateCheckBoxChange?.(checked, rows)\n }\n }\n\n const handleCheckBoxChange = (checked: boolean, row: T) => {\n if (!loading) {\n onCheckBoxChange?.(checked, row)\n }\n }\n\n const finalColumns: ColumnDef<T>[] = useMemo(() => {\n const columns = columnsProp\n\n if (selectable) {\n return [\n {\n id: 'select',\n maxSize: 50,\n header: ({ table }) => (\n <IndeterminateCheckbox\n checked={\n indeterminateCheckboxChecked\n ? indeterminateCheckboxChecked(\n table.getRowModel().rows,\n )\n : table.getIsAllRowsSelected()\n }\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n onIndeterminateCheckBoxChange={(e) => {\n handleIndeterminateCheckBoxChange(\n e.target.checked,\n table.getRowModel().rows,\n )\n }}\n />\n ),\n cell: ({ row }) => (\n <IndeterminateCheckbox\n checked={\n checkboxChecked\n ? checkboxChecked(row.original)\n : row.getIsSelected()\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onCheckBoxChange={(e) =>\n handleCheckBoxChange(\n e.target.checked,\n row.original,\n )\n }\n />\n ),\n },\n ...columns,\n ]\n }\n return columns\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnsProp, selectable, loading, checkboxChecked])\n\n const table = useReactTable({\n data,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: finalColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination: true,\n manualSorting: props.manualSorting ?? false,\n onSortingChange: (sorter) => {\n setSorting(sorter as ColumnSort[])\n },\n onRowSelectionChange: setRowSelection,\n state: {\n sorting: sorting as ColumnSort[],\n rowSelection: selection,\n },\n getRowCanExpand,\n })\n\n const resetSorting = () => {\n table.resetSorting()\n }\n\n const resetSelected = () => {\n table.resetRowSelection(true)\n }\n\n useImperativeHandle(ref, () => ({\n resetSorting,\n resetSelected,\n }))\n\n const handlePaginationChange = (page: number) => {\n if (!loading) {\n resetSelected()\n onPaginationChange?.(page)\n }\n }\n\n const handleSelectChange = (value?: number) => {\n if (!loading) {\n onSelectChange?.(Number(value))\n }\n }\n\n const prevSelectedRef = useRef<T[]>([])\n\n useEffect(() => {\n if (!onSelectionChange) return\n\n const selectedRows = table\n .getSelectedRowModel()\n .rows.map((r) => r.original as T)\n\n const isEqual =\n selectedRows.length === prevSelectedRef.current.length &&\n selectedRows.every(\n (item, idx) => item === prevSelectedRef.current[idx],\n )\n\n if (!isEqual) {\n prevSelectedRef.current = selectedRows\n onSelectionChange(selectedRows)\n }\n }, [table.getState().rowSelection, onSelectionChange, table])\n\n useEffect(() => {\n if (props.isAllSelected && table) {\n const all = {}\n table.getRowModel().rows.forEach((row) => {\n all[row.id] = true\n })\n setRowSelection(all)\n } else {\n setRowSelection({})\n }\n }, [props.isAllSelected])\n\n return (\n <Loading loading={Boolean(loading && data.length !== 0)} type=\"cover\">\n <Table {...rest}>\n <THead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n // 1. LEITURA E VALIDAÇÕES DO ALINHAMENTO\n const headerAlign = (header.column.columnDef as any).meta?.headerAlign || 'between';\n\n let justifyClass = 'justify-between'; // Padrão: Nome Esquerda, Sorter Direita\n\n // Flag para o alinhamento complexo desejado\n const sorterEnd = headerAlign === 'name-center-sorter-end';\n\n // Define a classe de justificação principal para os alinhamentos simples\n if (headerAlign === 'center') {\n justifyClass = 'justify-center'; // Nome + Sorter juntos no centro\n } else if (headerAlign === 'start') {\n justifyClass = 'justify-start'; // Nome + Sorter juntos na esquerda\n } else if (headerAlign === 'end') {\n justifyClass = 'justify-end'; // Nome + Sorter juntos na direita\n }\n\n // Se for o layout complexo, usamos 'justify-center' como base\n if (sorterEnd) {\n // Usamos justify-center, e o ml-auto do Sorter o empurra para o canto.\n justifyClass = 'justify-center';\n }\n\n // Define classes para o SPAN do nome (Ocupa largura total e centraliza o texto)\n const nameClasses = classNames('truncate', {\n // Se for sorterEnd, o SPAN ocupa a largura total para centralizar o nome\n 'w-full text-center': sorterEnd,\n });\n\n // Define a classe para o wrapper do Sorter.\n let sorterClasses = '';\n if (sorterEnd) {\n // Para sorterEnd, ml-auto empurra o Sorter para a EXTREMA direita\n sorterClasses = 'ml-auto';\n }\n\n return (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n >\n {header.isPlaceholder ? null : (\n <div\n className={classNames(\n 'flex items-center gap-1', // O 'gap-1' fornece o espaçamento entre Nome e Sorter\n justifyClass,\n header.column.getCanSort() &&\n 'cursor-pointer select-none',\n loading &&\n 'pointer-events-none',\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {/* 2. RENDERIZAÇÃO DO NOME (Sempre primeiro, pois o Sorter deve ser à direita) */}\n <span className={nameClasses}>\n {flexRender(\n header.column.columnDef\n .header,\n header.getContext(),\n )}\n </span>\n\n {/* 3. RENDERIZAÇÃO DO SORTER: Sempre depois do nome. O ml-auto será aplicado APENAS em sorterEnd */}\n {header.column.getCanSort() && (\n // O Sorter deve estar em uma div se precisar de classes condicionais (ml-auto)\n <div className={sorterClasses}>\n <Sorter\n sort={header.column.getIsSorted()}\n />\n </div>\n )}\n </div>\n )}\n </Th>\n );\n })}\n </Tr>\n ))}\n </THead>\n {loading && data.length === 0 ? (\n <TableRowSkeleton\n columns={(finalColumns as Array<T>).length}\n rows={pagingData.pageSize}\n avatarInColumns={skeletonAvatarColumns}\n avatarProps={skeletonAvatarProps}\n />\n ) : (\n <TBody>\n {noData ? (\n <Tr>\n <Td\n className=\"hover:bg-transparent\"\n colSpan={finalColumns.length}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {customNoDataIcon ? (\n customNoDataIcon\n ) : (\n <>\n <FileNotFound />\n <span className=\"font-semibold\">\n No data found!\n </span>\n </>\n )}\n </div>\n </Td>\n </Tr>\n ) : (\n table\n .getRowModel()\n .rows.slice(0, pageSize)\n .map((row) => {\n return (\n <Fragment key={row.id}>\n <Tr key={row.id}>\n {row\n .getVisibleCells()\n .map((cell) => {\n return (\n <Td\n key={cell.id}\n style={{\n width: cell.column.getSize(),\n }}\n >\n {flexRender(\n cell.column\n .columnDef\n .cell,\n cell.getContext(),\n )}\n </Td>\n )\n })}\n </Tr>\n {row.getIsExpanded() && (\n <Tr>\n <Td\n colSpan={\n row.getVisibleCells()\n .length\n }\n >\n {renderSubComponent(\n row,\n )}\n </Td>\n </Tr>\n )}\n </Fragment>\n )\n })\n )}\n </TBody>\n )}\n </Table>\n {!hidePagination && (\n <div className=\"mt-4 flex items-center justify-between\">\n <Pagination\n pageSize={pageSize}\n currentPage={pageIndex}\n total={total}\n onChange={handlePaginationChange}\n />\n <div style={{ minWidth: 130 }}>\n <Select\n instanceId={instanceId}\n size=\"sm\"\n menuPlacement=\"top\"\n isSearchable={false}\n value={pageSizeOption.filter(\n (option) => option.value === pageSize,\n )}\n options={pageSizeOption}\n onChange={(option) =>\n handleSelectChange(option?.value)\n }\n />\n </div>\n </div>\n )}\n </Loading>\n )\n}\n\nexport { DataTable }\nexport type { CellContext, ColumnDef, ColumnSort, Row }\nexport default DataTable\n"],"names":["table","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","sources":["../../../../lib/@ecme/components/shared/DataTable.tsx"],"sourcesContent":["import FileNotFound from '@/assets/svg/FileNotFound'\nimport type { CheckboxProps } from '@/components/ui/Checkbox'\nimport Checkbox from '@/components/ui/Checkbox'\nimport Pagination from '@/components/ui/Pagination'\nimport Select from '@/components/ui/Select'\nimport type { SkeletonProps } from '@/components/ui/Skeleton'\nimport type { TableProps } from '@/components/ui/Table'\nimport Table from '@/components/ui/Table'\nimport {\n CellContext,\n ColumnDef,\n ColumnSort,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n Row,\n useReactTable,\n} from '@tanstack/react-table'\nimport classNames from 'classnames'\nimport type { ChangeEvent, ReactNode, Ref } from 'react'\nimport {\n Fragment,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport TableRowSkeleton from './loaders/TableRowSkeleton'\nimport Loading from './Loading'\n\nexport type OnSortParam = { order: 'asc' | 'desc' | ''; key: string | number }\n\nexport type DataTableProps<T> = {\n columns: ColumnDef<T>[]\n customNoDataIcon?: ReactNode\n data?: T[]\n loading?: boolean\n noData?: boolean\n instanceId?: string\n onCheckBoxChange?: (checked: boolean, row: T) => void\n onIndeterminateCheckBoxChange?: (checked: boolean, rows: Row<T>[]) => void\n onPaginationChange?: (page: number) => void\n onSelectChange?: (num: number) => void\n onSort?: (sort: OnSortParam) => void\n pageSizes?: number[]\n manualSorting?: boolean\n selectable?: boolean\n skeletonAvatarColumns?: number[]\n skeletonAvatarProps?: SkeletonProps\n pagingData?: {\n total: number\n pageIndex: number\n pageSize: number\n }\n checkboxChecked?: (row: T) => boolean\n indeterminateCheckboxChecked?: (row: Row<T>[]) => boolean\n ref?: Ref<DataTableResetHandle | HTMLTableElement>\n onSelectionChange?: (selected: T[]) => void\n renderSubComponent?: (row: Row<T>) => React.ReactNode\n getRowCanExpand?: (row: Row<T>) => boolean\n hidePagination?: boolean\n isAllSelected?: boolean\n selectedRows?: T[]\n} & TableProps\n\nexport type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>\n\nexport interface IndeterminateCheckboxProps\n extends Omit<CheckboxProps, 'onChange'> {\n onChange: (event: CheckBoxChangeEvent) => void\n indeterminate: boolean\n onCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n onIndeterminateCheckBoxChange?: (event: CheckBoxChangeEvent) => void\n}\n\nconst { Tr, Th, Td, THead, TBody, Sorter } = Table\n\nconst IndeterminateCheckbox = (props: IndeterminateCheckboxProps) => {\n const {\n indeterminate,\n onChange,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n ...rest\n } = props\n\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (typeof indeterminate === 'boolean' && ref.current) {\n ref.current.indeterminate = !rest.checked && indeterminate\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, indeterminate])\n\n const handleChange = (e: CheckBoxChangeEvent) => {\n onChange(e)\n onCheckBoxChange?.(e)\n onIndeterminateCheckBoxChange?.(e)\n }\n\n return (\n <Checkbox\n ref={ref}\n className=\"mb-0\"\n onChange={(_, e) => handleChange(e)}\n {...rest}\n />\n )\n}\n\nexport type DataTableResetHandle = {\n resetSorting: () => void\n resetSelected: () => void\n}\n\nfunction DataTable<T>(props: DataTableProps<T>) {\n const {\n skeletonAvatarColumns,\n columns: columnsProp = [],\n data = [],\n customNoDataIcon,\n loading,\n noData,\n onCheckBoxChange,\n onIndeterminateCheckBoxChange,\n onPaginationChange,\n onSelectChange,\n onSort,\n pageSizes = [10, 25, 50, 100],\n selectable = false,\n skeletonAvatarProps,\n pagingData = {\n total: 0,\n pageIndex: 1,\n pageSize: 10,\n },\n checkboxChecked,\n indeterminateCheckboxChecked,\n instanceId = 'data-table',\n ref,\n renderSubComponent = () => null,\n getRowCanExpand = () => false,\n onSelectionChange,\n hidePagination = false,\n ...rest\n } = props\n\n const { pageSize, pageIndex, total } = pagingData\n\n const [sorting, setSorting] = useState<ColumnSort[] | null>(null)\n const [selection, setRowSelection] = useState({})\n\n const { t } = useTranslation()\n\n const pageSizeOption = useMemo(\n () =>\n pageSizes.map((number) => ({\n value: number,\n label: `${number} / ${t('common.table.pageAbbr')}`,\n })),\n [pageSizes],\n )\n\n useEffect(() => {\n if (Array.isArray(sorting)) {\n const sortOrder =\n sorting.length > 0 ? (sorting[0].desc ? 'desc' : 'asc') : ''\n const id = sorting.length > 0 ? sorting[0].id : ''\n onSort?.({ order: sortOrder, key: id })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sorting])\n\n const handleIndeterminateCheckBoxChange = (\n checked: boolean,\n rows: Row<T>[],\n ) => {\n if (!loading) {\n onIndeterminateCheckBoxChange?.(checked, rows)\n }\n }\n\n const handleCheckBoxChange = (checked: boolean, row: T) => {\n if (!loading) {\n onCheckBoxChange?.(checked, row)\n }\n }\n\n const finalColumns: ColumnDef<T>[] = useMemo(() => {\n const columns = columnsProp\n\n if (selectable) {\n return [\n {\n id: 'select',\n maxSize: 50,\n header: ({ table }) => (\n <IndeterminateCheckbox\n checked={\n indeterminateCheckboxChecked\n ? indeterminateCheckboxChecked(\n table.getRowModel().rows,\n )\n : table.getIsAllRowsSelected()\n }\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n onIndeterminateCheckBoxChange={(e) => {\n handleIndeterminateCheckBoxChange(\n e.target.checked,\n table.getRowModel().rows,\n )\n }}\n />\n ),\n cell: ({ row }) => (\n <IndeterminateCheckbox\n checked={\n checkboxChecked\n ? checkboxChecked(row.original)\n : row.getIsSelected()\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onCheckBoxChange={(e) =>\n handleCheckBoxChange(\n e.target.checked,\n row.original,\n )\n }\n />\n ),\n },\n ...columns,\n ]\n }\n return columns\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnsProp, selectable, loading, checkboxChecked])\n\n const table = useReactTable({\n data,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: finalColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualPagination: true,\n manualSorting: props.manualSorting ?? false,\n onSortingChange: (sorter) => {\n setSorting(sorter as ColumnSort[])\n },\n onRowSelectionChange: setRowSelection,\n state: {\n sorting: sorting as ColumnSort[],\n rowSelection: selection,\n },\n getRowCanExpand,\n })\n\n const resetSorting = () => {\n table.resetSorting()\n }\n\n const resetSelected = () => {\n table.resetRowSelection(true)\n }\n\n useImperativeHandle(ref, () => ({\n resetSorting,\n resetSelected,\n }))\n\n const handlePaginationChange = (page: number) => {\n if (!loading) {\n resetSelected()\n onPaginationChange?.(page)\n }\n }\n\n const handleSelectChange = (value?: number) => {\n if (!loading) {\n onSelectChange?.(Number(value))\n }\n }\n\n const prevSelectedRef = useRef<T[]>([])\n\n useEffect(() => {\n if (!onSelectionChange) return\n\n const selectedRows = table\n .getSelectedRowModel()\n .rows.map((r) => r.original as T)\n\n const isEqual =\n selectedRows.length === prevSelectedRef.current.length &&\n selectedRows.every(\n (item, idx) => item === prevSelectedRef.current[idx],\n )\n\n if (!isEqual) {\n prevSelectedRef.current = selectedRows\n onSelectionChange(selectedRows)\n }\n }, [table.getState().rowSelection, onSelectionChange, table])\n\n // Sync external selectedRows prop with internal selection state\n useEffect(() => {\n if (props.selectedRows && data.length > 0) {\n const externalSelection = {}\n data.forEach((row, index) => {\n const isSelected = props.selectedRows?.some(selectedRow => selectedRow === row)\n if (isSelected) {\n externalSelection[index] = true\n }\n })\n setRowSelection(externalSelection)\n }\n }, [props.selectedRows, data])\n\n // isAllSelected management - only when selectedRows is not provided\n useEffect(() => {\n if (!props.selectedRows) { // Only manage isAllSelected when selectedRows is not used\n if (props.isAllSelected === true && table) {\n const all = {}\n table.getRowModel().rows.forEach((row) => {\n all[row.id] = true\n })\n setRowSelection(all)\n } else if (props.isAllSelected === false) {\n setRowSelection({})\n }\n // When isAllSelected is undefined, preserve current selections\n }\n }, [props.isAllSelected, table, props.selectedRows])\n\n return (\n <Loading loading={Boolean(loading && data.length !== 0)} type=\"cover\">\n <Table {...rest}>\n <THead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n // 1. LEITURA E VALIDAÇÕES DO ALINHAMENTO\n const headerAlign = (header.column.columnDef as any).meta?.headerAlign || 'between';\n\n let justifyClass = 'justify-between'; // Padrão: Nome Esquerda, Sorter Direita\n\n // Flag para o alinhamento complexo desejado\n const sorterEnd = headerAlign === 'name-center-sorter-end';\n\n // Define a classe de justificação principal para os alinhamentos simples\n if (headerAlign === 'center') {\n justifyClass = 'justify-center'; // Nome + Sorter juntos no centro\n } else if (headerAlign === 'start') {\n justifyClass = 'justify-start'; // Nome + Sorter juntos na esquerda\n } else if (headerAlign === 'end') {\n justifyClass = 'justify-end'; // Nome + Sorter juntos na direita\n }\n\n // Se for o layout complexo, usamos 'justify-center' como base\n if (sorterEnd) {\n // Usamos justify-center, e o ml-auto do Sorter o empurra para o canto.\n justifyClass = 'justify-center';\n }\n\n // Define classes para o SPAN do nome (Ocupa largura total e centraliza o texto)\n const nameClasses = classNames('truncate', {\n // Se for sorterEnd, o SPAN ocupa a largura total para centralizar o nome\n 'w-full text-center': sorterEnd,\n });\n\n // Define a classe para o wrapper do Sorter.\n let sorterClasses = '';\n if (sorterEnd) {\n // Para sorterEnd, ml-auto empurra o Sorter para a EXTREMA direita\n sorterClasses = 'ml-auto';\n }\n\n return (\n <Th\n key={header.id}\n colSpan={header.colSpan}\n >\n {header.isPlaceholder ? null : (\n <div\n className={classNames(\n 'flex items-center gap-1', // O 'gap-1' fornece o espaçamento entre Nome e Sorter\n justifyClass,\n header.column.getCanSort() &&\n 'cursor-pointer select-none',\n loading &&\n 'pointer-events-none',\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {/* 2. RENDERIZAÇÃO DO NOME (Sempre primeiro, pois o Sorter deve ser à direita) */}\n <span className={nameClasses}>\n {flexRender(\n header.column.columnDef\n .header,\n header.getContext(),\n )}\n </span>\n\n {/* 3. RENDERIZAÇÃO DO SORTER: Sempre depois do nome. O ml-auto será aplicado APENAS em sorterEnd */}\n {header.column.getCanSort() && (\n // O Sorter deve estar em uma div se precisar de classes condicionais (ml-auto)\n <div className={sorterClasses}>\n <Sorter\n sort={header.column.getIsSorted()}\n />\n </div>\n )}\n </div>\n )}\n </Th>\n );\n })}\n </Tr>\n ))}\n </THead>\n {loading && data.length === 0 ? (\n <TableRowSkeleton\n columns={(finalColumns as Array<T>).length}\n rows={pagingData.pageSize}\n avatarInColumns={skeletonAvatarColumns}\n avatarProps={skeletonAvatarProps}\n />\n ) : (\n <TBody>\n {noData ? (\n <Tr>\n <Td\n className=\"hover:bg-transparent\"\n colSpan={finalColumns.length}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {customNoDataIcon ? (\n customNoDataIcon\n ) : (\n <>\n <FileNotFound />\n <span className=\"font-semibold\">\n No data found!\n </span>\n </>\n )}\n </div>\n </Td>\n </Tr>\n ) : (\n table\n .getRowModel()\n .rows.slice(0, pageSize)\n .map((row) => {\n return (\n <Fragment key={row.id}>\n <Tr key={row.id}>\n {row\n .getVisibleCells()\n .map((cell) => {\n return (\n <Td\n key={cell.id}\n style={{\n width: cell.column.getSize(),\n }}\n >\n {flexRender(\n cell.column\n .columnDef\n .cell,\n cell.getContext(),\n )}\n </Td>\n )\n })}\n </Tr>\n {row.getIsExpanded() && (\n <Tr>\n <Td\n colSpan={\n row.getVisibleCells()\n .length\n }\n >\n {renderSubComponent(\n row,\n )}\n </Td>\n </Tr>\n )}\n </Fragment>\n )\n })\n )}\n </TBody>\n )}\n </Table>\n {!hidePagination && (\n <div className=\"mt-4 flex items-center justify-between\">\n <Pagination\n pageSize={pageSize}\n currentPage={pageIndex}\n total={total}\n onChange={handlePaginationChange}\n />\n <div style={{ minWidth: 130 }}>\n <Select\n instanceId={instanceId}\n size=\"sm\"\n menuPlacement=\"top\"\n isSearchable={false}\n value={pageSizeOption.filter(\n (option) => option.value === pageSize,\n )}\n options={pageSizeOption}\n onChange={(option) =>\n handleSelectChange(option?.value)\n }\n />\n </div>\n </div>\n )}\n </Loading>\n )\n}\n\nexport { DataTable }\nexport type { CellContext, ColumnDef, ColumnSort, Row }\nexport default DataTable"],"names":["table","Fragment"],"mappings":"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"}
@@ -37,6 +37,7 @@ export type DataTableProps<T> = {
37
37
  getRowCanExpand?: (row: Row<T>) => boolean;
38
38
  hidePagination?: boolean;
39
39
  isAllSelected?: boolean;
40
+ selectedRows?: T[];
40
41
  } & TableProps;
41
42
  export type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>;
42
43
  export interface IndeterminateCheckboxProps extends Omit<CheckboxProps, 'onChange'> {
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../lib/@ecme/components/shared/DataTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../lib/@ecme/components/shared/DataTable.tsx"],"names":[],"mappings":"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"}
@@ -64,6 +64,7 @@ export type DataTableProps<T> = {
64
64
  getRowCanExpand?: (row: Row<T>) => boolean
65
65
  hidePagination?: boolean
66
66
  isAllSelected?: boolean
67
+ selectedRows?: T[]
67
68
  } & TableProps
68
69
 
69
70
  export type CheckBoxChangeEvent = ChangeEvent<HTMLInputElement>
@@ -311,17 +312,35 @@ function DataTable<T>(props: DataTableProps<T>) {
311
312
  }
312
313
  }, [table.getState().rowSelection, onSelectionChange, table])
313
314
 
315
+ // Sync external selectedRows prop with internal selection state
314
316
  useEffect(() => {
315
- if (props.isAllSelected && table) {
316
- const all = {}
317
- table.getRowModel().rows.forEach((row) => {
318
- all[row.id] = true
317
+ if (props.selectedRows && data.length > 0) {
318
+ const externalSelection = {}
319
+ data.forEach((row, index) => {
320
+ const isSelected = props.selectedRows?.some(selectedRow => selectedRow === row)
321
+ if (isSelected) {
322
+ externalSelection[index] = true
323
+ }
319
324
  })
320
- setRowSelection(all)
321
- } else {
322
- setRowSelection({})
325
+ setRowSelection(externalSelection)
323
326
  }
324
- }, [props.isAllSelected])
327
+ }, [props.selectedRows, data])
328
+
329
+ // isAllSelected management - only when selectedRows is not provided
330
+ useEffect(() => {
331
+ if (!props.selectedRows) { // Only manage isAllSelected when selectedRows is not used
332
+ if (props.isAllSelected === true && table) {
333
+ const all = {}
334
+ table.getRowModel().rows.forEach((row) => {
335
+ all[row.id] = true
336
+ })
337
+ setRowSelection(all)
338
+ } else if (props.isAllSelected === false) {
339
+ setRowSelection({})
340
+ }
341
+ // When isAllSelected is undefined, preserve current selections
342
+ }
343
+ }, [props.isAllSelected, table, props.selectedRows])
325
344
 
326
345
  return (
327
346
  <Loading loading={Boolean(loading && data.length !== 0)} type="cover">
@@ -518,4 +537,4 @@ function DataTable<T>(props: DataTableProps<T>) {
518
537
 
519
538
  export { DataTable }
520
539
  export type { CellContext, ColumnDef, ColumnSort, Row }
521
- export default DataTable
540
+ export default DataTable
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbe-agro/client-core",
3
- "version": "5.3.274",
3
+ "version": "5.3.275",
4
4
  "description": "Biblioteca principal de componentes e utilidades para os microfrontends do Orbe Agro.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",