bananas-commerce-admin 0.17.22 → 0.18.2

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.
@@ -14,6 +14,7 @@ export const NavRailRoutes = ({ navigation }) => {
14
14
  useEffect(() => {
15
15
  const newRoutes = Object.values(navigation)
16
16
  .filter((entry) => Boolean(entry && entry?.route))
17
+ .filter((entry) => !entry.route.hideNavItem)
17
18
  .map((entry) => entry.route);
18
19
  setCustomRoutes(newRoutes);
19
20
  }, [navigation, setCustomRoutes]);
@@ -27,6 +28,8 @@ export const NavRailRoutes = ({ navigation }) => {
27
28
  continue;
28
29
  if (navInfo.group && !hasGroup(user, navInfo.group))
29
30
  continue;
31
+ if (navInfo.excludedGroup && hasGroup(user, navInfo.excludedGroup))
32
+ continue;
30
33
  let title = navInfo.title;
31
34
  let icon = navInfo.icon;
32
35
  let route;
@@ -1 +1 @@
1
- {"version":3,"file":"NavRailRoutes.js","sourceRoot":"","sources":["../../../../src/components/NavRail/NavRailRoutes.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NavRailRoutes.js","sourceRoot":"","sources":["../../../../src/components/NavRail/NavRailRoutes.tsx"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ export const RouterContextProvider = ({ children, ...props }) => {
33
33
  action,
34
34
  title,
35
35
  navigation,
36
+ showInNavigation: navigation,
36
37
  path,
37
38
  page,
38
39
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RouterContext.js","sourceRoot":"","sources":["../../../src/contexts/RouterContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouterContext.js","sourceRoot":"","sources":["../../../src/contexts/RouterContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import React, { useState } from "react";
2
+ import ShoppingCartOutlinedIcon from "@mui/icons-material/ShoppingCartOutlined";
3
+ import Button from "@mui/material/Button";
4
+ import Card from "@mui/material/Card";
5
+ import CardContent from "@mui/material/CardContent";
6
+ import CardHeader from "@mui/material/CardHeader";
7
+ import Stack from "@mui/material/Stack";
8
+ import { useTheme } from "@mui/material/styles";
9
+ import Typography from "@mui/material/Typography";
10
+ import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon";
11
+ import { DatePicker } from "@mui/x-date-pickers/DatePicker";
12
+ import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
13
+ import { useSnackbar } from "notistack";
14
+ import { useApi } from "../../../contexts/ApiContext";
15
+ export const PayoutCard = () => {
16
+ const theme = useTheme();
17
+ const api = useApi();
18
+ const { enqueueSnackbar } = useSnackbar();
19
+ const [startDate, setStartDate] = useState(null);
20
+ const [endDate, setEndDate] = useState(null);
21
+ const generateReport = () => {
22
+ if (startDate === null || endDate === null) {
23
+ enqueueSnackbar("You need to enter both a start date and an end date to generate a report", {
24
+ variant: "error",
25
+ });
26
+ return;
27
+ }
28
+ const operation = api.operations["report.payout:create"];
29
+ const url = new URL(operation.server + operation.endpoint);
30
+ url.searchParams.set("start_date", startDate.toISODate());
31
+ url.searchParams.set("end_date", endDate.toISODate());
32
+ const a = document.createElement("a");
33
+ a.href = url.toString();
34
+ a.click();
35
+ a.remove();
36
+ enqueueSnackbar(`Downloading report...`, { variant: "success" });
37
+ };
38
+ return (React.createElement(Card, { sx: {
39
+ maxWidth: 450,
40
+ } },
41
+ React.createElement(CardHeader, { avatar: React.createElement(ShoppingCartOutlinedIcon, null), sx: {
42
+ borderBottomWidth: 1,
43
+ borderBottomStyle: "solid",
44
+ borderBottomColor: theme.palette.divider,
45
+ }, title: React.createElement(Typography, { variant: "h6" },
46
+ React.createElement("b", null, "Export Payouts")) }),
47
+ React.createElement(CardContent, null,
48
+ React.createElement(LocalizationProvider, { adapterLocale: "sv-SE", dateAdapter: AdapterLuxon },
49
+ React.createElement(Stack, { gap: 2 },
50
+ React.createElement(Typography, null, "Generate and download a report of all paid payouts between the two selected dates."),
51
+ React.createElement(Stack, { alignItems: "center", direction: "row", gap: 2 },
52
+ React.createElement(DatePicker, { label: "Start", onChange: (date) => setStartDate(date) }),
53
+ "-",
54
+ React.createElement(DatePicker, { label: "End", onChange: (date) => setEndDate(date) })),
55
+ React.createElement(Button, { color: "success", variant: "contained", onClick: generateReport }, "Download"))))));
56
+ };
57
+ export default PayoutCard;
58
+ //# sourceMappingURL=PayoutCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PayoutCard.js","sourceRoot":"","sources":["../../../../../src/extensions/report/components/PayoutCard.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@ import React from "react";
2
2
  import { Header } from "../../../components/Header";
3
3
  import { Page } from "../../../components/Page";
4
4
  import { TitleBar } from "../../../components/TitleBar";
5
- import Content, { RightColumn } from "../../../containers/Content";
5
+ import Content, { TwoColumn } from "../../../containers/Content";
6
6
  import { useApi } from "../../../contexts/ApiContext";
7
+ import PayoutCard from "../components/PayoutCard";
7
8
  import PurchaseCard from "../components/PurchaseCard";
8
9
  export const ReportPage = () => {
9
10
  const api = useApi();
@@ -11,7 +12,9 @@ export const ReportPage = () => {
11
12
  React.createElement(Header, null,
12
13
  React.createElement(TitleBar, { title: "Reports" })),
13
14
  React.createElement(Content, { layout: "fixedWidth" },
14
- React.createElement(RightColumn, null, api.operations["report.purchase:create"] && React.createElement(PurchaseCard, null)))));
15
+ React.createElement(TwoColumn, null,
16
+ api.operations["report.purchase:create"] && React.createElement(PurchaseCard, null),
17
+ api.operations["report.payout:create"] && React.createElement(PayoutCard, null)))));
15
18
  };
16
19
  export default ReportPage;
17
20
  //# sourceMappingURL=report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../../../src/extensions/report/pages/report.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAkB,GAAG,EAAE;IAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,MAAM;YACL,oBAAC,QAAQ,IAAC,KAAK,EAAC,SAAS,GAAG,CACrB;QAET,oBAAC,OAAO,IAAC,MAAM,EAAC,YAAY;YAC1B,oBAAC,WAAW,QAAE,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,oBAAC,YAAY,OAAG,CAAe,CACjF,CACL,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../../../src/extensions/report/pages/report.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAkB,GAAG,EAAE;IAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,MAAM;YACL,oBAAC,QAAQ,IAAC,KAAK,EAAC,SAAS,GAAG,CACrB;QAET,oBAAC,OAAO,IAAC,MAAM,EAAC,YAAY;YAC1B,oBAAC,SAAS;gBACP,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,oBAAC,YAAY,OAAG;gBAC5D,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,oBAAC,UAAU,OAAG,CAC/C,CACJ,CACL,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
package/dist/esm/index.js CHANGED
@@ -72,4 +72,5 @@ export * as mui from "./mui";
72
72
  export * as themes from "./themes";
73
73
  export * as types from "./types";
74
74
  export { contribute } from "./util/contribute";
75
+ export { hasGroup } from "./util/has_group";
75
76
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
@@ -6,7 +6,10 @@ export interface RouteInfo {
6
6
  view: string;
7
7
  action: string;
8
8
  title: string;
9
+ /** Whether this route should be used for navigation in the router context */
9
10
  navigation: boolean;
11
+ /** Whether this route should be shown in the navigation */
12
+ hideNavItem?: boolean;
10
13
  path: string;
11
14
  page: string;
12
15
  }
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const PayoutCard: React.FC;
3
+ export default PayoutCard;
@@ -73,3 +73,4 @@ export type { RouterExtension } from "./router/Router";
73
73
  export * as themes from "./themes";
74
74
  export * as types from "./types";
75
75
  export { contribute } from "./util/contribute";
76
+ export { hasGroup } from "./util/has_group";
@@ -43,6 +43,11 @@ export interface NavigationItem {
43
43
  * Will return `null` if the user is not in the group.
44
44
  */
45
45
  group?: string;
46
+ /**
47
+ * Django user group string, currently only supports a single group.
48
+ * Will hide the navigation item if the user is in the group.
49
+ */
50
+ excludedGroup?: string;
46
51
  }
47
52
  /**
48
53
  * A map of navigation overrides for the application.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bananas-commerce-admin",
3
- "version": "0.17.22",
3
+ "version": "0.18.2",
4
4
  "description": "What's this, an admin for apes?",
5
5
  "keywords": [
6
6
  "admin",
@@ -24,6 +24,7 @@ export const NavRailRoutes: React.FC<NavRailRoutesProps> = ({ navigation }) => {
24
24
  useEffect(() => {
25
25
  const newRoutes = Object.values(navigation)
26
26
  .filter((entry): entry is { route: RouteInfo } => Boolean(entry && entry?.route))
27
+ .filter((entry) => !entry.route.hideNavItem)
27
28
  .map((entry) => entry.route);
28
29
  setCustomRoutes(newRoutes);
29
30
  }, [navigation, setCustomRoutes]);
@@ -38,6 +39,7 @@ export const NavRailRoutes: React.FC<NavRailRoutesProps> = ({ navigation }) => {
38
39
 
39
40
  if (navInfo.permission && !hasPermission(user, navInfo.permission)) continue;
40
41
  if (navInfo.group && !hasGroup(user, navInfo.group)) continue;
42
+ if (navInfo.excludedGroup && hasGroup(user, navInfo.excludedGroup)) continue;
41
43
 
42
44
  let title = navInfo.title;
43
45
  let icon = navInfo.icon;
@@ -20,7 +20,10 @@ export interface RouteInfo {
20
20
  view: string;
21
21
  action: string;
22
22
  title: string;
23
+ /** Whether this route should be used for navigation in the router context */
23
24
  navigation: boolean;
25
+ /** Whether this route should be shown in the navigation */
26
+ hideNavItem?: boolean;
24
27
  path: string;
25
28
  page: string;
26
29
  }
@@ -79,6 +82,7 @@ export const RouterContextProvider: React.FC<
79
82
  action,
80
83
  title,
81
84
  navigation,
85
+ showInNavigation: navigation,
82
86
  path,
83
87
  page,
84
88
  });
@@ -0,0 +1,88 @@
1
+ import React, { useState } from "react";
2
+
3
+ import ShoppingCartOutlinedIcon from "@mui/icons-material/ShoppingCartOutlined";
4
+ import Button from "@mui/material/Button";
5
+ import Card from "@mui/material/Card";
6
+ import CardContent from "@mui/material/CardContent";
7
+ import CardHeader from "@mui/material/CardHeader";
8
+ import Stack from "@mui/material/Stack";
9
+ import { useTheme } from "@mui/material/styles";
10
+ import Typography from "@mui/material/Typography";
11
+ import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon";
12
+ import { DatePicker } from "@mui/x-date-pickers/DatePicker";
13
+ import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
14
+
15
+ import { DateTime } from "luxon";
16
+ import { useSnackbar } from "notistack";
17
+
18
+ import { useApi } from "../../../contexts/ApiContext";
19
+
20
+ export const PayoutCard: React.FC = () => {
21
+ const theme = useTheme();
22
+ const api = useApi();
23
+ const { enqueueSnackbar } = useSnackbar();
24
+ const [startDate, setStartDate] = useState<DateTime | null>(null);
25
+ const [endDate, setEndDate] = useState<DateTime | null>(null);
26
+
27
+ const generateReport = () => {
28
+ if (startDate === null || endDate === null) {
29
+ enqueueSnackbar("You need to enter both a start date and an end date to generate a report", {
30
+ variant: "error",
31
+ });
32
+ return;
33
+ }
34
+
35
+ const operation = api.operations["report.payout:create"];
36
+ const url = new URL(operation.server + operation.endpoint);
37
+ url.searchParams.set("start_date", startDate.toISODate()!);
38
+ url.searchParams.set("end_date", endDate.toISODate()!);
39
+
40
+ const a = document.createElement("a");
41
+ a.href = url.toString();
42
+ a.click();
43
+ a.remove();
44
+
45
+ enqueueSnackbar(`Downloading report...`, { variant: "success" });
46
+ };
47
+
48
+ return (
49
+ <Card
50
+ sx={{
51
+ maxWidth: 450,
52
+ }}
53
+ >
54
+ <CardHeader
55
+ avatar={<ShoppingCartOutlinedIcon />}
56
+ sx={{
57
+ borderBottomWidth: 1,
58
+ borderBottomStyle: "solid",
59
+ borderBottomColor: theme.palette.divider,
60
+ }}
61
+ title={
62
+ <Typography variant="h6">
63
+ <b>Export Payouts</b>
64
+ </Typography>
65
+ }
66
+ />
67
+ <CardContent>
68
+ <LocalizationProvider adapterLocale="sv-SE" dateAdapter={AdapterLuxon}>
69
+ <Stack gap={2}>
70
+ <Typography>
71
+ Generate and download a report of all paid payouts between the two selected dates.
72
+ </Typography>
73
+ <Stack alignItems="center" direction="row" gap={2}>
74
+ <DatePicker label="Start" onChange={(date) => setStartDate(date as DateTime)} />
75
+ -
76
+ <DatePicker label="End" onChange={(date) => setEndDate(date as DateTime)} />
77
+ </Stack>
78
+ <Button color="success" variant="contained" onClick={generateReport}>
79
+ Download
80
+ </Button>
81
+ </Stack>
82
+ </LocalizationProvider>
83
+ </CardContent>
84
+ </Card>
85
+ );
86
+ };
87
+
88
+ export default PayoutCard;
@@ -3,9 +3,10 @@ import React from "react";
3
3
  import { Header } from "../../../components/Header";
4
4
  import { Page } from "../../../components/Page";
5
5
  import { TitleBar } from "../../../components/TitleBar";
6
- import Content, { RightColumn } from "../../../containers/Content";
6
+ import Content, { TwoColumn } from "../../../containers/Content";
7
7
  import { useApi } from "../../../contexts/ApiContext";
8
8
  import { PageComponent } from "../../../types";
9
+ import PayoutCard from "../components/PayoutCard";
9
10
  import PurchaseCard from "../components/PurchaseCard";
10
11
 
11
12
  export const ReportPage: PageComponent = () => {
@@ -18,7 +19,10 @@ export const ReportPage: PageComponent = () => {
18
19
  </Header>
19
20
 
20
21
  <Content layout="fixedWidth">
21
- <RightColumn>{api.operations["report.purchase:create"] && <PurchaseCard />}</RightColumn>
22
+ <TwoColumn>
23
+ {api.operations["report.purchase:create"] && <PurchaseCard />}
24
+ {api.operations["report.payout:create"] && <PayoutCard />}
25
+ </TwoColumn>
22
26
  </Content>
23
27
  </Page>
24
28
  );
package/src/index.ts CHANGED
@@ -73,3 +73,4 @@ export type { RouterExtension } from "./router/Router";
73
73
  export * as themes from "./themes";
74
74
  export * as types from "./types";
75
75
  export { contribute } from "./util/contribute";
76
+ export { hasGroup } from "./util/has_group";
@@ -50,6 +50,11 @@ export interface NavigationItem {
50
50
  * Will return `null` if the user is not in the group.
51
51
  */
52
52
  group?: string;
53
+ /**
54
+ * Django user group string, currently only supports a single group.
55
+ * Will hide the navigation item if the user is in the group.
56
+ */
57
+ excludedGroup?: string;
53
58
  }
54
59
 
55
60
  /**