feat: role system fix
This commit is contained in:
@@ -149,75 +149,69 @@ export const StationListPage = observer(() => {
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="flex justify-end mb-5 duration-300">
|
||||
<button
|
||||
className={`px-4 py-2 rounded flex gap-2 items-center transition-all ${
|
||||
ids.length > 0
|
||||
? "bg-red-500 text-white cursor-pointer opacity-100"
|
||||
: "bg-gray-300 text-gray-500 cursor-not-allowed opacity-0 pointer-events-none"
|
||||
}`}
|
||||
onClick={() => {
|
||||
if (ids.length > 0) {
|
||||
setIsBulkDeleteModalOpen(true);
|
||||
}
|
||||
}}
|
||||
disabled={ids.length === 0}
|
||||
>
|
||||
<Trash2
|
||||
size={20}
|
||||
className={ids.length > 0 ? "text-white" : "text-gray-500"}
|
||||
/>
|
||||
Удалить выбранные ({ids.length})
|
||||
</button>
|
||||
</div>
|
||||
{canWriteStations && ids.length > 0 && (
|
||||
<div className="flex justify-end mb-5 duration-300">
|
||||
<button
|
||||
className="px-4 py-2 bg-red-500 text-white rounded flex gap-2 items-center"
|
||||
onClick={() => setIsBulkDeleteModalOpen(true)}
|
||||
>
|
||||
<Trash2 size={20} className="text-white" /> Удалить выбранные (
|
||||
{ids.length})
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<DataGrid
|
||||
rows={rows}
|
||||
columns={columns}
|
||||
checkboxSelection
|
||||
checkboxSelection={canWriteStations}
|
||||
disableRowSelectionExcludeModel
|
||||
loading={isLoading}
|
||||
paginationModel={paginationModel}
|
||||
onPaginationModelChange={setPaginationModel}
|
||||
pageSizeOptions={[50]}
|
||||
onRowSelectionModelChange={(newSelection: any) => {
|
||||
if (Array.isArray(newSelection)) {
|
||||
const selectedIds = newSelection
|
||||
.map((id: string | number) => {
|
||||
const numId =
|
||||
typeof id === "string"
|
||||
? Number.parseInt(id, 10)
|
||||
: Number(id);
|
||||
return numId;
|
||||
})
|
||||
.filter(
|
||||
(id: number) =>
|
||||
!Number.isNaN(id) && id !== null && id !== undefined
|
||||
);
|
||||
setIds(selectedIds);
|
||||
} else if (
|
||||
newSelection &&
|
||||
typeof newSelection === "object" &&
|
||||
"ids" in newSelection
|
||||
) {
|
||||
const idsSet = newSelection.ids as Set<string | number>;
|
||||
const selectedIds = Array.from(idsSet)
|
||||
.map((id: string | number) => {
|
||||
const numId =
|
||||
typeof id === "string"
|
||||
? Number.parseInt(id, 10)
|
||||
: Number(id);
|
||||
return numId;
|
||||
})
|
||||
.filter(
|
||||
(id: number) =>
|
||||
!Number.isNaN(id) && id !== null && id !== undefined
|
||||
);
|
||||
setIds(selectedIds);
|
||||
} else {
|
||||
setIds([]);
|
||||
}
|
||||
}}
|
||||
onRowSelectionModelChange={
|
||||
canWriteStations
|
||||
? (newSelection: any) => {
|
||||
if (Array.isArray(newSelection)) {
|
||||
const selectedIds = newSelection
|
||||
.map((id: string | number) => {
|
||||
const numId =
|
||||
typeof id === "string"
|
||||
? Number.parseInt(id, 10)
|
||||
: Number(id);
|
||||
return numId;
|
||||
})
|
||||
.filter(
|
||||
(id: number) =>
|
||||
!Number.isNaN(id) && id !== null && id !== undefined
|
||||
);
|
||||
setIds(selectedIds);
|
||||
} else if (
|
||||
newSelection &&
|
||||
typeof newSelection === "object" &&
|
||||
"ids" in newSelection
|
||||
) {
|
||||
const idsSet = newSelection.ids as Set<string | number>;
|
||||
const selectedIds = Array.from(idsSet)
|
||||
.map((id: string | number) => {
|
||||
const numId =
|
||||
typeof id === "string"
|
||||
? Number.parseInt(id, 10)
|
||||
: Number(id);
|
||||
return numId;
|
||||
})
|
||||
.filter(
|
||||
(id: number) =>
|
||||
!Number.isNaN(id) && id !== null && id !== undefined
|
||||
);
|
||||
setIds(selectedIds);
|
||||
} else {
|
||||
setIds([]);
|
||||
}
|
||||
}
|
||||
: undefined
|
||||
}
|
||||
localeText={ruRU.components.MuiDataGrid.defaultProps.localeText}
|
||||
slots={{
|
||||
noRowsOverlay: () => (
|
||||
|
||||
Reference in New Issue
Block a user