Make account permissions and status common
This commit is contained in:
parent
b5c3a7eb3e
commit
353490e1a6
17 changed files with 86 additions and 105 deletions
|
@ -12,8 +12,8 @@ import { FormattedMessage, useIntl } from "react-intl";
|
||||||
|
|
||||||
import CardTitle from "@saleor/components/CardTitle";
|
import CardTitle from "@saleor/components/CardTitle";
|
||||||
import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox";
|
import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox";
|
||||||
|
import { ShopInfo_shop_permissions } from "@saleor/components/Shop/types/ShopInfo";
|
||||||
import Skeleton from "@saleor/components/Skeleton";
|
import Skeleton from "@saleor/components/Skeleton";
|
||||||
import { StaffMemberDetails_shop_permissions } from "../../types/StaffMemberDetails";
|
|
||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
|
@ -29,8 +29,8 @@ const styles = (theme: Theme) =>
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
interface StaffPermissionsProps extends WithStyles<typeof styles> {
|
interface AccountPermissionsProps extends WithStyles<typeof styles> {
|
||||||
permissions: StaffMemberDetails_shop_permissions[];
|
permissions: ShopInfo_shop_permissions[];
|
||||||
data: {
|
data: {
|
||||||
hasFullAccess: boolean;
|
hasFullAccess: boolean;
|
||||||
permissions: string[];
|
permissions: string[];
|
||||||
|
@ -39,14 +39,14 @@ interface StaffPermissionsProps extends WithStyles<typeof styles> {
|
||||||
onChange: (event: React.ChangeEvent<any>, cb?: () => void) => void;
|
onChange: (event: React.ChangeEvent<any>, cb?: () => void) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const StaffPermissions = withStyles(styles, { name: "StaffPermissions" })(
|
const AccountPermissions = withStyles(styles, { name: "AccountPermissions" })(
|
||||||
({
|
({
|
||||||
classes,
|
classes,
|
||||||
data,
|
data,
|
||||||
disabled,
|
disabled,
|
||||||
permissions,
|
permissions,
|
||||||
onChange
|
onChange
|
||||||
}: StaffPermissionsProps) => {
|
}: AccountPermissionsProps) => {
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
|
||||||
const handleFullAccessChange = (event: React.ChangeEvent<any>) =>
|
const handleFullAccessChange = (event: React.ChangeEvent<any>) =>
|
||||||
|
@ -123,5 +123,5 @@ const StaffPermissions = withStyles(styles, { name: "StaffPermissions" })(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
StaffPermissions.displayName = "StaffPermissions";
|
AccountPermissions.displayName = "AccountPermissions";
|
||||||
export default StaffPermissions;
|
export default AccountPermissions;
|
2
src/components/AccountPermissions/index.ts
Normal file
2
src/components/AccountPermissions/index.ts
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
export { default } from "./AccountPermissions";
|
||||||
|
export * from "./AccountPermissions";
|
2
src/components/AccountStatus/index.ts
Normal file
2
src/components/AccountStatus/index.ts
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
export { default } from "./AccountStatus";
|
||||||
|
export * from "./AccountStatus";
|
|
@ -28,6 +28,10 @@ const shopInfo = gql`
|
||||||
includeTaxesInPrices
|
includeTaxesInPrices
|
||||||
name
|
name
|
||||||
trackInventoryByDefault
|
trackInventoryByDefault
|
||||||
|
permissions {
|
||||||
|
code
|
||||||
|
name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
// This file was automatically generated and should not be edited.
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
import { WeightUnitsEnum, LanguageCodeEnum } from "./../../../types/globalTypes";
|
import { WeightUnitsEnum, LanguageCodeEnum, PermissionEnum } from "./../../../types/globalTypes";
|
||||||
|
|
||||||
// ====================================================
|
// ====================================================
|
||||||
// GraphQL query operation: ShopInfo
|
// GraphQL query operation: ShopInfo
|
||||||
|
@ -32,6 +32,12 @@ export interface ShopInfo_shop_languages {
|
||||||
language: string;
|
language: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ShopInfo_shop_permissions {
|
||||||
|
__typename: "PermissionDisplay";
|
||||||
|
code: PermissionEnum;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
export interface ShopInfo_shop {
|
export interface ShopInfo_shop {
|
||||||
__typename: "Shop";
|
__typename: "Shop";
|
||||||
countries: (ShopInfo_shop_countries | null)[];
|
countries: (ShopInfo_shop_countries | null)[];
|
||||||
|
@ -44,6 +50,7 @@ export interface ShopInfo_shop {
|
||||||
includeTaxesInPrices: boolean;
|
includeTaxesInPrices: boolean;
|
||||||
name: string;
|
name: string;
|
||||||
trackInventoryByDefault: boolean | null;
|
trackInventoryByDefault: boolean | null;
|
||||||
|
permissions: (ShopInfo_shop_permissions | null)[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ShopInfo {
|
export interface ShopInfo {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { ShopInfo_shop_permissions } from "./components/Shop/types/ShopInfo";
|
||||||
import { Filter } from "./components/TableFilter";
|
import { Filter } from "./components/TableFilter";
|
||||||
import {
|
import {
|
||||||
FetchMoreProps,
|
FetchMoreProps,
|
||||||
|
@ -8,6 +9,7 @@ import {
|
||||||
SortPage,
|
SortPage,
|
||||||
TabPageProps
|
TabPageProps
|
||||||
} from "./types";
|
} from "./types";
|
||||||
|
import { PermissionEnum } from "./types/globalTypes";
|
||||||
|
|
||||||
const pageInfo = {
|
const pageInfo = {
|
||||||
hasNextPage: true,
|
hasNextPage: true,
|
||||||
|
@ -149,3 +151,49 @@ export const sortPageProps: SortPage<string> = {
|
||||||
asc: true
|
asc: true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const permissions: ShopInfo_shop_permissions[] = [
|
||||||
|
{
|
||||||
|
code: PermissionEnum.IMPERSONATE_USERS,
|
||||||
|
name: "Impersonate customers."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_DISCOUNTS,
|
||||||
|
name: "Manage sales and vouchers."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_MENUS,
|
||||||
|
name: "Manage navigation."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_ORDERS,
|
||||||
|
name: "Manage orders."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_PAGES,
|
||||||
|
name: "Manage pages."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_PRODUCTS,
|
||||||
|
name: "Manage products."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_SETTINGS,
|
||||||
|
name: "Manage settings."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_SHIPPING,
|
||||||
|
name: "Manage shipping."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_STAFF,
|
||||||
|
name: "Manage staff."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: PermissionEnum.MANAGE_USERS,
|
||||||
|
name: "Manage customers."
|
||||||
|
}
|
||||||
|
].map(perm => ({
|
||||||
|
__typename: "PermissionDisplay" as "PermissionDisplay",
|
||||||
|
...perm
|
||||||
|
}));
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
|
|
||||||
|
import AccountPermissions from "@saleor/components/AccountPermissions";
|
||||||
|
import StaffStatus from "@saleor/components/AccountStatus";
|
||||||
import AppHeader from "@saleor/components/AppHeader";
|
import AppHeader from "@saleor/components/AppHeader";
|
||||||
import CardSpacer from "@saleor/components/CardSpacer";
|
import CardSpacer from "@saleor/components/CardSpacer";
|
||||||
import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton";
|
import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton";
|
||||||
|
@ -9,16 +11,12 @@ import Form from "@saleor/components/Form";
|
||||||
import Grid from "@saleor/components/Grid";
|
import Grid from "@saleor/components/Grid";
|
||||||
import PageHeader from "@saleor/components/PageHeader";
|
import PageHeader from "@saleor/components/PageHeader";
|
||||||
import SaveButtonBar from "@saleor/components/SaveButtonBar";
|
import SaveButtonBar from "@saleor/components/SaveButtonBar";
|
||||||
|
import { ShopInfo_shop_permissions } from "@saleor/components/Shop/types/ShopInfo";
|
||||||
import { sectionNames } from "@saleor/intl";
|
import { sectionNames } from "@saleor/intl";
|
||||||
import { getUserName, maybe } from "../../../misc";
|
import { getUserName, maybe } from "../../../misc";
|
||||||
import { PermissionEnum } from "../../../types/globalTypes";
|
import { PermissionEnum } from "../../../types/globalTypes";
|
||||||
import {
|
import { StaffMemberDetails_user } from "../../types/StaffMemberDetails";
|
||||||
StaffMemberDetails_shop_permissions,
|
|
||||||
StaffMemberDetails_user
|
|
||||||
} from "../../types/StaffMemberDetails";
|
|
||||||
import StaffPermissions from "../StaffPermissions/StaffPermissions";
|
|
||||||
import StaffProperties from "../StaffProperties/StaffProperties";
|
import StaffProperties from "../StaffProperties/StaffProperties";
|
||||||
import StaffStatus from "../StaffStatus/StaffStatus";
|
|
||||||
|
|
||||||
interface FormData {
|
interface FormData {
|
||||||
hasFullAccess: boolean;
|
hasFullAccess: boolean;
|
||||||
|
@ -34,7 +32,7 @@ export interface StaffDetailsPageProps {
|
||||||
canEditStatus: boolean;
|
canEditStatus: boolean;
|
||||||
canRemove: boolean;
|
canRemove: boolean;
|
||||||
disabled: boolean;
|
disabled: boolean;
|
||||||
permissions: StaffMemberDetails_shop_permissions[];
|
permissions: ShopInfo_shop_permissions[];
|
||||||
saveButtonBarState: ConfirmButtonTransitionState;
|
saveButtonBarState: ConfirmButtonTransitionState;
|
||||||
staffMember: StaffMemberDetails_user;
|
staffMember: StaffMemberDetails_user;
|
||||||
onBack: () => void;
|
onBack: () => void;
|
||||||
|
@ -99,7 +97,7 @@ const StaffDetailsPage: React.StatelessComponent<StaffDetailsPageProps> = ({
|
||||||
</div>
|
</div>
|
||||||
{canEditStatus && (
|
{canEditStatus && (
|
||||||
<div>
|
<div>
|
||||||
<StaffPermissions
|
<AccountPermissions
|
||||||
data={data}
|
data={data}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
permissions={permissions}
|
permissions={permissions}
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
export { default } from "./StaffPermissions";
|
|
||||||
export * from "./StaffPermissions";
|
|
|
@ -1,2 +0,0 @@
|
||||||
export { default } from "./StaffStatus";
|
|
||||||
export * from "./StaffStatus";
|
|
|
@ -3,51 +3,6 @@ import { PermissionEnum } from "../types/globalTypes";
|
||||||
import { StaffList_staffUsers_edges_node } from "./types/StaffList";
|
import { StaffList_staffUsers_edges_node } from "./types/StaffList";
|
||||||
import { StaffMemberDetails_user } from "./types/StaffMemberDetails";
|
import { StaffMemberDetails_user } from "./types/StaffMemberDetails";
|
||||||
|
|
||||||
export const permissions = [
|
|
||||||
{
|
|
||||||
code: PermissionEnum.IMPERSONATE_USERS,
|
|
||||||
name: "Impersonate customers."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_DISCOUNTS,
|
|
||||||
name: "Manage sales and vouchers."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_MENUS,
|
|
||||||
name: "Manage navigation."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_ORDERS,
|
|
||||||
name: "Manage orders."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_PAGES,
|
|
||||||
name: "Manage pages."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_PRODUCTS,
|
|
||||||
name: "Manage products."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_SETTINGS,
|
|
||||||
name: "Manage settings."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_SHIPPING,
|
|
||||||
name: "Manage shipping."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_STAFF,
|
|
||||||
name: "Manage staff."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: PermissionEnum.MANAGE_USERS,
|
|
||||||
name: "Manage customers."
|
|
||||||
}
|
|
||||||
].map(perm => ({
|
|
||||||
__typename: "PermissionDisplay" as "PermissionDisplay",
|
|
||||||
...perm
|
|
||||||
}));
|
|
||||||
export const staffMembers: StaffList_staffUsers_edges_node[] = [
|
export const staffMembers: StaffList_staffUsers_edges_node[] = [
|
||||||
{
|
{
|
||||||
avatar: {
|
avatar: {
|
||||||
|
|
|
@ -57,12 +57,6 @@ const staffList = gql`
|
||||||
endCursor
|
endCursor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shop {
|
|
||||||
permissions {
|
|
||||||
code
|
|
||||||
name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
export const TypedStaffListQuery = TypedQuery<StaffList, StaffListVariables>(
|
export const TypedStaffListQuery = TypedQuery<StaffList, StaffListVariables>(
|
||||||
|
@ -75,12 +69,6 @@ export const staffMemberDetails = gql`
|
||||||
user(id: $id) {
|
user(id: $id) {
|
||||||
...StaffMemberDetailsFragment
|
...StaffMemberDetailsFragment
|
||||||
}
|
}
|
||||||
shop {
|
|
||||||
permissions {
|
|
||||||
code
|
|
||||||
name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
export const TypedStaffMemberDetailsQuery = TypedQuery<
|
export const TypedStaffMemberDetailsQuery = TypedQuery<
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
// This file was automatically generated and should not be edited.
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
import { StaffUserInput, PermissionEnum } from "./../../types/globalTypes";
|
import { StaffUserInput } from "./../../types/globalTypes";
|
||||||
|
|
||||||
// ====================================================
|
// ====================================================
|
||||||
// GraphQL query operation: StaffList
|
// GraphQL query operation: StaffList
|
||||||
|
@ -43,20 +43,8 @@ export interface StaffList_staffUsers {
|
||||||
pageInfo: StaffList_staffUsers_pageInfo;
|
pageInfo: StaffList_staffUsers_pageInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StaffList_shop_permissions {
|
|
||||||
__typename: "PermissionDisplay";
|
|
||||||
code: PermissionEnum;
|
|
||||||
name: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface StaffList_shop {
|
|
||||||
__typename: "Shop";
|
|
||||||
permissions: (StaffList_shop_permissions | null)[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface StaffList {
|
export interface StaffList {
|
||||||
staffUsers: StaffList_staffUsers | null;
|
staffUsers: StaffList_staffUsers | null;
|
||||||
shop: StaffList_shop | null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StaffListVariables {
|
export interface StaffListVariables {
|
||||||
|
|
|
@ -30,20 +30,8 @@ export interface StaffMemberDetails_user {
|
||||||
permissions: (StaffMemberDetails_user_permissions | null)[] | null;
|
permissions: (StaffMemberDetails_user_permissions | null)[] | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StaffMemberDetails_shop_permissions {
|
|
||||||
__typename: "PermissionDisplay";
|
|
||||||
code: PermissionEnum;
|
|
||||||
name: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface StaffMemberDetails_shop {
|
|
||||||
__typename: "Shop";
|
|
||||||
permissions: (StaffMemberDetails_shop_permissions | null)[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface StaffMemberDetails {
|
export interface StaffMemberDetails {
|
||||||
user: StaffMemberDetails_user | null;
|
user: StaffMemberDetails_user | null;
|
||||||
shop: StaffMemberDetails_shop | null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StaffMemberDetailsVariables {
|
export interface StaffMemberDetailsVariables {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import ActionDialog from "@saleor/components/ActionDialog";
|
||||||
import { WindowTitle } from "@saleor/components/WindowTitle";
|
import { WindowTitle } from "@saleor/components/WindowTitle";
|
||||||
import useNavigator from "@saleor/hooks/useNavigator";
|
import useNavigator from "@saleor/hooks/useNavigator";
|
||||||
import useNotifier from "@saleor/hooks/useNotifier";
|
import useNotifier from "@saleor/hooks/useNotifier";
|
||||||
|
import useShop from "@saleor/hooks/useShop";
|
||||||
import useUser from "@saleor/hooks/useUser";
|
import useUser from "@saleor/hooks/useUser";
|
||||||
import { commonMessages } from "@saleor/intl";
|
import { commonMessages } from "@saleor/intl";
|
||||||
import { getMutationState, maybe } from "../../misc";
|
import { getMutationState, maybe } from "../../misc";
|
||||||
|
@ -40,6 +41,7 @@ export const StaffDetails: React.StatelessComponent<OrderListProps> = ({
|
||||||
const notify = useNotifier();
|
const notify = useNotifier();
|
||||||
const user = useUser();
|
const user = useUser();
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
const shop = useShop();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TypedStaffMemberDetailsQuery
|
<TypedStaffMemberDetailsQuery
|
||||||
|
@ -163,7 +165,7 @@ export const StaffDetails: React.StatelessComponent<OrderListProps> = ({
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
permissions={maybe(() => data.shop.permissions)}
|
permissions={maybe(() => shop.permissions)}
|
||||||
staffMember={maybe(() => data.user)}
|
staffMember={maybe(() => data.user)}
|
||||||
saveButtonBarState={formTransitionState}
|
saveButtonBarState={formTransitionState}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -16,6 +16,7 @@ import SaveFilterTabDialog, {
|
||||||
} from "@saleor/components/SaveFilterTabDialog";
|
} from "@saleor/components/SaveFilterTabDialog";
|
||||||
import { APP_MOUNT_URI } from "@saleor/config";
|
import { APP_MOUNT_URI } from "@saleor/config";
|
||||||
import { configurationMenuUrl } from "@saleor/configuration";
|
import { configurationMenuUrl } from "@saleor/configuration";
|
||||||
|
import useShop from "@saleor/hooks/useShop";
|
||||||
import { commonMessages } from "@saleor/intl";
|
import { commonMessages } from "@saleor/intl";
|
||||||
import { getMutationState, maybe } from "@saleor/misc";
|
import { getMutationState, maybe } from "@saleor/misc";
|
||||||
import { ListViews } from "@saleor/types";
|
import { ListViews } from "@saleor/types";
|
||||||
|
@ -56,6 +57,7 @@ export const StaffList: React.StatelessComponent<StaffListProps> = ({
|
||||||
ListViews.STAFF_MEMBERS_LIST
|
ListViews.STAFF_MEMBERS_LIST
|
||||||
);
|
);
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
const shop = useShop();
|
||||||
|
|
||||||
const tabs = getFilterTabs();
|
const tabs = getFilterTabs();
|
||||||
|
|
||||||
|
@ -147,7 +149,7 @@ export const StaffList: React.StatelessComponent<StaffListProps> = ({
|
||||||
firstName: variables.firstName,
|
firstName: variables.firstName,
|
||||||
lastName: variables.lastName,
|
lastName: variables.lastName,
|
||||||
permissions: variables.fullAccess
|
permissions: variables.fullAccess
|
||||||
? data.shop.permissions.map(perm => perm.code)
|
? maybe(() => shop.permissions.map(perm => perm.code))
|
||||||
: undefined,
|
: undefined,
|
||||||
redirectUrl: urlJoin(
|
redirectUrl: urlJoin(
|
||||||
window.location.origin,
|
window.location.origin,
|
||||||
|
|
|
@ -2,10 +2,11 @@ import { Omit } from "@material-ui/core";
|
||||||
import { storiesOf } from "@storybook/react";
|
import { storiesOf } from "@storybook/react";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
|
import { permissions } from "@saleor/fixtures";
|
||||||
import StaffDetailsPage, {
|
import StaffDetailsPage, {
|
||||||
StaffDetailsPageProps
|
StaffDetailsPageProps
|
||||||
} from "../../../staff/components/StaffDetailsPage";
|
} from "../../../staff/components/StaffDetailsPage";
|
||||||
import { permissions, staffMember } from "../../../staff/fixtures";
|
import { staffMember } from "../../../staff/fixtures";
|
||||||
import Decorator from "../../Decorator";
|
import Decorator from "../../Decorator";
|
||||||
|
|
||||||
const props: Omit<StaffDetailsPageProps, "classes"> = {
|
const props: Omit<StaffDetailsPageProps, "classes"> = {
|
||||||
|
|
Loading…
Reference in a new issue