Files
bodyshop/client/src/components/shop-users/shop-users.component.jsx

82 lines
2.5 KiB
JavaScript

import { useQuery } from "@apollo/client/react";
import { Button } from "antd";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { QUERY_SHOP_ASSOCIATIONS } from "../../graphql/user.queries";
import { selectBodyshop } from "../../redux/user/user.selectors";
import AlertComponent from "../alert/alert.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import RbacWrapper from "../rbac-wrapper/rbac-wrapper.component";
import ResponsiveTable from "../responsive-table/responsive-table.component";
import ShopUsersAuthEdit from "../shop-users-auth-edit/shop-users-auth-edit.component";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
bodyshop: selectBodyshop
});
const mapDispatchToProps = () => ({
//setUserLanguage: language => dispatch(setUserLanguage(language))
});
export default connect(mapStateToProps, mapDispatchToProps)(ShopInfoUsersComponent);
export function ShopInfoUsersComponent({ bodyshop }) {
const { t } = useTranslation();
const { loading, error, data } = useQuery(QUERY_SHOP_ASSOCIATIONS, {
variables: { shopid: bodyshop.id },
fetchPolicy: "network-only",
nextFetchPolicy: "network-only"
});
const columns = [
{
title: t("user.fields.email"),
dataIndex: "email",
key: "email",
render: (text, record) => record.user.email
},
{
title: t("user.fields.authlevel"),
dataIndex: "authlevel",
key: "authlevel",
render: (text, record) => (
<RbacWrapper action="users:editaccess">
<ShopUsersAuthEdit association={record} />
</RbacWrapper>
)
},
{
title: t("user.labels.actions"),
dataIndex: "actions",
key: "actions",
render: () => (
<div>
<Button
disabled
onClick={() => {
// NO OP
}}
>
{t("general.actions.delete")}
</Button>
</div>
)
}
];
if (error) {
return <AlertComponent type="error" title={JSON.stringify(error)} />;
}
return (
<LayoutFormRow title={t("bodyshop.labels.licensing")}>
<ResponsiveTable
loading={loading}
pagination={{ placement: "top" }}
columns={columns}
mobileColumnKeys={["email", "authlevel", "actions"]}
rowKey="id"
dataSource={data && data.associations}
/>
</LayoutFormRow>
);
}