UNPKG

@ra-libs/react-rbac

Version:

React admin RBAC front components and utils

42 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ShowActions = ShowActions; const tslib_1 = require("tslib"); const ability_1 = require("@casl/ability"); const material_1 = require("@mui/material"); const react_1 = tslib_1.__importDefault(require("react")); const react_admin_1 = require("react-admin"); const react_router_dom_1 = require("react-router-dom"); const config_1 = require("../../../config"); const contexts_1 = require("../../../contexts"); // Override ra-ui-materialui/src/detail/ShowActions.tsx function ShowActions(props) { const { useGoBackButton = false } = props; const record = (0, react_admin_1.useRecordContext)(); const resource = (0, react_admin_1.useResourceContext)(); const translate = (0, react_admin_1.useTranslate)(); const navigate = (0, react_router_dom_1.useNavigate)(); const { hasEdit } = (0, react_admin_1.useResourceDefinition)(); const { ability } = (0, contexts_1.useCASL)(); if (!record || !resource) return null; let canDelete = false, canUpdate = false, canRead = false; try { canDelete = ability.can(config_1.CASLAction.Delete, (0, ability_1.subject)(resource, record)); canUpdate = ability.can(config_1.CASLAction.Update, (0, ability_1.subject)(resource, record)); canRead = ability.can(config_1.CASLAction.Read, (0, ability_1.subject)(resource, record)); } catch (error) { console.error(error); } return (react_1.default.createElement(react_admin_1.TopToolbar, { className: props.className }, react_1.default.createElement(material_1.Grid, { container: true, justifyContent: 'space-between' }, react_1.default.createElement(material_1.Grid, { item: true }, useGoBackButton && (react_1.default.createElement(react_admin_1.Button, { style: { alignSelf: 'flex-start' }, label: translate('buttons.go_back'), onClick: () => { navigate(-1); } }))), react_1.default.createElement(material_1.Grid, { item: true }, hasEdit && canUpdate && react_1.default.createElement(react_admin_1.EditButton, { record: record }), canDelete && react_1.default.createElement(react_admin_1.DeleteWithConfirmButton, { record: record }), canRead && react_1.default.createElement(react_admin_1.RefreshButton, null))))); } //# sourceMappingURL=index.js.map