admin_lsac 1.2.1 → 1.2.3

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.
package/README.md CHANGED
@@ -18,7 +18,7 @@ You can import this component in the root file of your project (i.e index.js) or
18
18
 
19
19
  You need to create an array of schemas to pass it as props to the component.
20
20
 
21
- ### `<AdminPanel pages={your_array} />`
21
+ ### `<AdminPanel pages={your_array} basePath="where_is_admin_located" />`
22
22
 
23
23
  ## What is a schema?
24
24
 
package/dist/App.d.ts CHANGED
@@ -73,6 +73,7 @@ declare module "admin_lsac" {
73
73
  interface PageProps {
74
74
  pages: PageSchema[];
75
75
  selectedPage: PageSchema;
76
+ basePath: string;
76
77
  }
77
78
 
78
79
  export function Page(props: PageProps): React.ReactElement;
package/dist/App.js CHANGED
@@ -41,8 +41,8 @@ function AdminPanel(_a) {
41
41
  React.useEffect(function () {
42
42
  setPagesToDisplay(__spreadArray(__spreadArray([], pages, true), [page_1.page], false));
43
43
  }, []);
44
- return ((0, jsx_runtime_1.jsx)(react_1.ChakraProvider, { children: (0, jsx_runtime_1.jsxs)(react_router_dom_1.Routes, { children: [pagesToDisplay.map(function (page) { return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/").concat((0, schema_1.pageToUrl)(page)), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: page }, void 0) }, void 0)); }), pages[0] ?
45
- (0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/*"), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: pages[0] }, void 0) }, void 0)
44
+ return ((0, jsx_runtime_1.jsx)(react_1.ChakraProvider, { children: (0, jsx_runtime_1.jsxs)(react_router_dom_1.Routes, { children: [pagesToDisplay.map(function (page) { return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/").concat((0, schema_1.pageToUrl)(page)), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: page, basePath: basePath }, void 0) }, void 0)); }), pages[0] ?
45
+ (0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/*"), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: pages[0], basePath: basePath }, void 0) }, void 0)
46
46
  : null] }, void 0) }, void 0));
47
47
  }
48
48
  exports.default = AdminPanel;
package/dist/cjs/App.js CHANGED
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
5
  }) : (function(o, m, k, k2) {
10
6
  if (k2 === undefined) k2 = k;
11
7
  o[k2] = m[k];
@@ -45,8 +41,8 @@ function AdminPanel(_a) {
45
41
  React.useEffect(function () {
46
42
  setPagesToDisplay(__spreadArray(__spreadArray([], pages, true), [page_1.page], false));
47
43
  }, []);
48
- return ((0, jsx_runtime_1.jsx)(react_1.ChakraProvider, { children: (0, jsx_runtime_1.jsxs)(react_router_dom_1.Routes, { children: [pagesToDisplay.map(function (page) { return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/").concat((0, schema_1.pageToUrl)(page)), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: page }) })); }), pages[0] ?
49
- (0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/*"), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: pages[0] }) })
50
- : null] }) }));
44
+ return ((0, jsx_runtime_1.jsx)(react_1.ChakraProvider, { children: (0, jsx_runtime_1.jsxs)(react_router_dom_1.Routes, { children: [pagesToDisplay.map(function (page) { return ((0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/").concat((0, schema_1.pageToUrl)(page)), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: page, basePath: basePath }, void 0) }, void 0)); }), pages[0] ?
45
+ (0, jsx_runtime_1.jsx)(react_router_dom_1.Route, { path: "".concat(basePath, "/*"), element: (0, jsx_runtime_1.jsx)(Page_1.Page, { pages: pagesToDisplay, selectedPage: pages[0], basePath: basePath }, void 0) }, void 0)
46
+ : null] }, void 0) }, void 0));
51
47
  }
52
48
  exports.default = AdminPanel;
@@ -12,11 +12,7 @@ var __assign = (this && this.__assign) || function () {
12
12
  };
13
13
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
14
  if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20
16
  }) : (function(o, m, k, k2) {
21
17
  if (k2 === undefined) k2 = k;
22
18
  o[k2] = m[k];
@@ -48,7 +44,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
48
44
  function verb(n) { return function (v) { return step([n, v]); }; }
49
45
  function step(op) {
50
46
  if (f) throw new TypeError("Generator is already executing.");
51
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
47
+ while (_) try {
52
48
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
49
  if (y = 0, t) op = [op[0] & 2, t.value];
54
50
  switch (op[0]) {
@@ -111,15 +107,15 @@ function parseValidation(fields) {
111
107
  }, {});
112
108
  }
113
109
  function generateSingleField(formfield, fieldName, key) {
114
- return ((0, jsx_runtime_1.jsx)(formik_1.Field, { name: fieldName, children: function (_a) {
110
+ return ((0, jsx_runtime_1.jsx)(formik_1.Field, __assign({ name: fieldName }, { children: function (_a) {
115
111
  var _b;
116
112
  var field = _a.field, form = _a.form;
117
- return ((0, jsx_runtime_1.jsxs)(react_1.FormControl, { isInvalid: (0, formik_1.getIn)(form.touched, fieldName) && (0, formik_1.getIn)(form.errors, fieldName), children: [(0, jsx_runtime_1.jsx)(react_1.FormLabel, { marginTop: 2, children: formfield.label }), formfield.type === "string" || formfield.type === "number" ? ((0, jsx_runtime_1.jsx)(react_1.Input, __assign({}, field, { type: formfield.type === "number" ? "number" : "text", placeholder: "" }))) : formfield.type === "file" ? ((0, jsx_runtime_1.jsx)(react_1.Input, { type: "file", name: fieldName, onChange: function (event) {
113
+ return ((0, jsx_runtime_1.jsxs)(react_1.FormControl, __assign({ isInvalid: (0, formik_1.getIn)(form.touched, fieldName) && (0, formik_1.getIn)(form.errors, fieldName) }, { children: [(0, jsx_runtime_1.jsx)(react_1.FormLabel, __assign({ marginTop: 2 }, { children: formfield.label }), void 0), formfield.type === "string" || formfield.type === "number" ? ((0, jsx_runtime_1.jsx)(react_1.Input, __assign({}, field, { type: formfield.type === "number" ? "number" : "text", placeholder: "" }), void 0)) : formfield.type === "file" ? ((0, jsx_runtime_1.jsx)(react_1.Input, { type: "file", name: fieldName, onChange: function (event) {
118
114
  if (event.currentTarget.files != null) {
119
115
  form.setFieldValue(fieldName, event.currentTarget.files[0]);
120
116
  }
121
- } })) : ((0, jsx_runtime_1.jsxs)(react_1.Select, __assign({}, field, { defaultValue: "", children: [(0, jsx_runtime_1.jsx)("option", { disabled: true, value: "", children: "Select an option!" }), (_b = formfield.options) === null || _b === void 0 ? void 0 : _b.map(function (option, key) { return ((0, jsx_runtime_1.jsx)("option", { value: "".concat(option.value), children: option.display }, key)); })] }))), (0, jsx_runtime_1.jsx)(react_1.FormErrorMessage, { children: (0, formik_1.getIn)(form.errors, fieldName) })] }));
122
- } }, key));
117
+ } }, void 0)) : ((0, jsx_runtime_1.jsxs)(react_1.Select, __assign({}, field, { defaultValue: "" }, { children: [(0, jsx_runtime_1.jsx)("option", __assign({ disabled: true, value: "" }, { children: "Select an option!" }), void 0), (_b = formfield.options) === null || _b === void 0 ? void 0 : _b.map(function (option, key) { return ((0, jsx_runtime_1.jsx)("option", __assign({ value: "".concat(option.value) }, { children: option.display }), key)); })] }), void 0)), (0, jsx_runtime_1.jsx)(react_1.FormErrorMessage, { children: (0, formik_1.getIn)(form.errors, fieldName) }, void 0)] }), void 0));
118
+ } }), key));
123
119
  }
124
120
  function parseFields(fields, previous) {
125
121
  if (!fields) {
@@ -132,12 +128,12 @@ function parseFields(fields, previous) {
132
128
  return (0, jsx_runtime_1.jsx)(react_1.FormControl, { children: objectFields }, fieldName);
133
129
  }
134
130
  else if (formfield.type === "array") {
135
- return ((0, jsx_runtime_1.jsx)(formik_1.FieldArray, { name: fieldName, children: function (_a) {
131
+ return ((0, jsx_runtime_1.jsx)(formik_1.FieldArray, __assign({ name: fieldName }, { children: function (_a) {
136
132
  var remove = _a.remove, push = _a.push, form = _a.form;
137
- return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(react_1.FormLabel, { marginTop: 2, children: formfield.label }), (0, formik_1.getIn)(form.values, fieldName).length > 0 &&
138
- (0, formik_1.getIn)(form.values, fieldName).map(function (element, index) { return ((0, jsx_runtime_1.jsxs)(react_1.Box, { paddingLeft: 10, children: [(0, jsx_runtime_1.jsx)("h4", { children: (0, jsx_runtime_1.jsx)("b", { children: "".concat(fieldName, ".").concat(index) }) }), (0, jsx_runtime_1.jsx)(react_1.Box, { paddingLeft: 10, children: formfield.element.type === "object"
133
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(react_1.FormLabel, __assign({ marginTop: 2 }, { children: formfield.label }), void 0), (0, formik_1.getIn)(form.values, fieldName).length > 0 &&
134
+ (0, formik_1.getIn)(form.values, fieldName).map(function (element, index) { return ((0, jsx_runtime_1.jsxs)(react_1.Box, __assign({ paddingLeft: 10 }, { children: [(0, jsx_runtime_1.jsx)("h4", { children: (0, jsx_runtime_1.jsx)("b", { children: "".concat(fieldName, ".").concat(index) }, void 0) }, void 0), (0, jsx_runtime_1.jsx)(react_1.Box, __assign({ paddingLeft: 10 }, { children: formfield.element.type === "object"
139
135
  ? parseFields(formfield.element.fields, "".concat(fieldName, ".").concat(index))
140
- : generateSingleField(formfield.element, "".concat(fieldName, ".").concat(index), key) }), (0, jsx_runtime_1.jsxs)(react_1.Button, { type: "button", colorScheme: "red", marginY: 2, onClick: function () { return remove(index); }, children: ["Remove ", "".concat(fieldName, ".").concat(index)] })] })); }), (0, jsx_runtime_1.jsxs)(react_1.Button, { type: "button", marginY: 2, colorScheme: "blue", onClick: function () {
136
+ : generateSingleField(formfield.element, "".concat(fieldName, ".").concat(index), key) }), void 0), (0, jsx_runtime_1.jsxs)(react_1.Button, __assign({ type: "button", colorScheme: "red", marginY: 2, onClick: function () { return remove(index); } }, { children: ["Remove ", "".concat(fieldName, ".").concat(index)] }), void 0)] }), void 0)); }), (0, jsx_runtime_1.jsxs)(react_1.Button, __assign({ type: "button", marginY: 2, colorScheme: "blue", onClick: function () {
141
137
  var value = undefined;
142
138
  if (formfield.element.type === "object") {
143
139
  value = getInitialValues(formfield.element.fields);
@@ -146,8 +142,8 @@ function parseFields(fields, previous) {
146
142
  value = getInitialValues([formfield.element])[0];
147
143
  }
148
144
  push(value);
149
- }, children: ["Add ", fieldName] })] }));
150
- } }));
145
+ } }, { children: ["Add ", fieldName] }), void 0)] }, void 0));
146
+ } }), void 0));
151
147
  }
152
148
  else {
153
149
  return generateSingleField(formfield, fieldName, key);
@@ -231,8 +227,8 @@ function GenericForm(_a) {
231
227
  });
232
228
  }, []);
233
229
  if (!action.fields)
234
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
235
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(formik_1.Formik, { initialValues: initialValues, validationSchema: Yup.object(validationSchema), onSubmit: function (values) { return __awaiter(_this, void 0, void 0, function () {
230
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}, void 0);
231
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(formik_1.Formik, __assign({ initialValues: initialValues, validationSchema: Yup.object(validationSchema), onSubmit: function (values) { return __awaiter(_this, void 0, void 0, function () {
236
232
  var res, e_1, err;
237
233
  return __generator(this, function (_a) {
238
234
  switch (_a.label) {
@@ -265,9 +261,9 @@ function GenericForm(_a) {
265
261
  case 6: return [2 /*return*/];
266
262
  }
267
263
  });
268
- }); }, children: function (_a) {
264
+ }); } }, { children: function (_a) {
269
265
  var isSubmitting = _a.isSubmitting;
270
- return ((0, jsx_runtime_1.jsxs)(formik_1.Form, { children: [formFields, (0, jsx_runtime_1.jsx)(react_1.Button, { mt: 4, colorScheme: "teal", isLoading: isSubmitting, type: "submit", children: "Submit" })] }));
271
- } }) }));
266
+ return ((0, jsx_runtime_1.jsxs)(formik_1.Form, { children: [formFields, (0, jsx_runtime_1.jsx)(react_1.Button, __assign({ mt: 4, colorScheme: "teal", isLoading: isSubmitting, type: "submit" }, { children: "Submit" }), void 0)] }, void 0));
267
+ } }), void 0) }, void 0));
272
268
  }
273
269
  exports.GenericForm = GenericForm;
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
15
  };
@@ -18,13 +29,13 @@ var export_to_csv_1 = require("export-to-csv");
18
29
  var sweetalert2_1 = __importDefault(require("sweetalert2"));
19
30
  var MenuItem_1 = __importDefault(require("@mui/material/MenuItem"));
20
31
  function Header(_a) {
21
- var pages = _a.pages, data = _a.data;
32
+ var pages = _a.pages, data = _a.data, basePath = _a.basePath;
22
33
  var nav = (0, react_router_1.useNavigate)();
23
- return ((0, jsx_runtime_1.jsx)(react_3.Box, { background: "blue.50", padding: 1, children: (0, jsx_runtime_1.jsxs)(react_3.Stack, { margin: 3, direction: "row", justifyContent: "space-between", alignItems: "center", children: [(0, jsx_runtime_1.jsx)(react_3.Stack, { margin: 4, gap: 10, direction: "row", alignItems: "center", children: pages.map(function (p) { return ((0, jsx_runtime_1.jsx)(react_3.Box, { as: "a", href: (0, schema_1.pageToUrl)(p), children: p.name })); }) }), (0, jsx_runtime_1.jsx)(react_3.Stack, { direction: "row", children: (0, jsx_runtime_1.jsx)(react_3.Button, { colorScheme: "red", onClick: function () {
34
+ return ((0, jsx_runtime_1.jsx)(react_3.Box, __assign({ background: "blue.50", padding: 1 }, { children: (0, jsx_runtime_1.jsxs)(react_3.Stack, __assign({ margin: 3, direction: "row", justifyContent: "space-between", alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ margin: 4, gap: 10, direction: "row", alignItems: "center" }, { children: pages.map(function (p) { return ((0, jsx_runtime_1.jsx)(react_3.Box, __assign({ as: "a", href: "".concat(basePath, "/").concat((0, schema_1.pageToUrl)(p)) }, { children: p.name }), void 0)); }) }), void 0), (0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ direction: "row" }, { children: (0, jsx_runtime_1.jsx)(react_3.Button, __assign({ colorScheme: "red", onClick: function () {
24
35
  var filename = prompt("Enter filename:");
25
36
  if (filename)
26
37
  exportToCSV(data, filename);
27
- }, children: "Export Data" }) })] }) }));
38
+ } }, { children: "Export Data" }), void 0) }), void 0)] }), void 0) }), void 0));
28
39
  }
29
40
  function exportToCSV(data, filename) {
30
41
  var formatImageData = function (obj) {
@@ -54,7 +65,7 @@ function exportToCSV(data, filename) {
54
65
  }
55
66
  function Page(_a) {
56
67
  var _b;
57
- var pages = _a.pages, selectedPage = _a.selectedPage;
68
+ var pages = _a.pages, selectedPage = _a.selectedPage, basePath = _a.basePath;
58
69
  var _c = (0, react_3.useDisclosure)(), isOpen = _c.isOpen, onOpen = _c.onOpen, onClose = _c.onClose;
59
70
  var _d = (0, react_1.useState)({}), selectedAction = _d[0], setSelectedAction = _d[1];
60
71
  var _e = (0, react_1.useState)([]), data = _e[0], setData = _e[1];
@@ -70,14 +81,14 @@ function Page(_a) {
70
81
  return selectedPage.tableFields.map(function (field) { return field.access(table_data); });
71
82
  }));
72
83
  }, [data]);
73
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Header, { pages: pages, data: data }), (0, jsx_runtime_1.jsx)(react_4.ThemeProvider, { theme: (0, styles_1.createTheme)(), children: (0, jsx_runtime_1.jsx)(material_react_table_1.MaterialReactTable, { columns: selectedPage.tableFields.map(function (field, index) { return ({
84
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Header, { pages: pages, data: data, basePath: basePath }, void 0), (0, jsx_runtime_1.jsx)(react_4.ThemeProvider, __assign({ theme: (0, styles_1.createTheme)() }, { children: (0, jsx_runtime_1.jsx)(material_react_table_1.MaterialReactTable, { columns: selectedPage.tableFields.map(function (field, index) { return ({
74
85
  accessorFn: function (row) { return row[index]; },
75
86
  header: field.name,
76
- }); }), data: displayData, muiTableContainerProps: { sx: { maxHeight: "70vh" } }, enableColumnResizing: true, enableColumnPinning: true, enableGlobalFilterModes: true, enablePagination: true, paginationDisplayMode: "pages", enableRowVirtualization: true, rowVirtualizerOptions: { overscan: 20 }, renderTopToolbarCustomActions: function () { return ((0, jsx_runtime_1.jsx)(react_2.ChakraProvider, { children: (0, jsx_runtime_1.jsx)(react_3.Stack, { margin: 0, padding: 3, direction: "row", children: selectedPage.actions.map(function (action) { return ((0, jsx_runtime_1.jsx)(react_3.Button, { colorScheme: "blue", onClick: function () {
87
+ }); }), data: displayData, muiTableContainerProps: { sx: { maxHeight: "70vh" } }, enableColumnResizing: true, enableColumnPinning: true, enableGlobalFilterModes: true, enablePagination: true, paginationDisplayMode: "pages", enableRowVirtualization: true, rowVirtualizerOptions: { overscan: 20 }, renderTopToolbarCustomActions: function () { return ((0, jsx_runtime_1.jsx)(react_2.ChakraProvider, { children: (0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ margin: 0, padding: 3, direction: "row" }, { children: selectedPage.actions.map(function (action) { return ((0, jsx_runtime_1.jsx)(react_3.Button, __assign({ colorScheme: "blue", onClick: function () {
77
88
  setSelectedAction(action);
78
89
  onOpen();
79
- }, children: action.name })); }) }) })); }, enableRowActions: true, renderRowActionMenuItems: function (obj) {
80
- return selectedPage.rowActions.map(function (rowAction) { return ((0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: function () {
90
+ } }, { children: action.name }), void 0)); }) }), void 0) }, void 0)); }, enableRowActions: true, renderRowActionMenuItems: function (obj) {
91
+ return selectedPage.rowActions.map(function (rowAction) { return ((0, jsx_runtime_1.jsx)(MenuItem_1.default, __assign({ onClick: function () {
81
92
  setSelectedAction(rowAction);
82
93
  setRowId(obj.row.original[0]);
83
94
  onOpen();
@@ -85,11 +96,11 @@ function Page(_a) {
85
96
  if (rowActionsMenu) {
86
97
  rowActionsMenu.remove();
87
98
  }
88
- }, children: rowAction.name + " " + obj.row.original[0] })); });
89
- } }) }), (0, jsx_runtime_1.jsxs)(react_3.Modal, { size: "6xl", isOpen: isOpen, onClose: onClose, children: [(0, jsx_runtime_1.jsx)(react_3.ModalOverlay, {}), (0, jsx_runtime_1.jsxs)(react_3.ModalContent, { children: [(0, jsx_runtime_1.jsx)(react_3.ModalHeader, { children: selectedAction.name }), (0, jsx_runtime_1.jsx)(react_3.ModalCloseButton, {}), (0, jsx_runtime_1.jsxs)(react_3.ModalBody, { children: [selectedAction.fields && ((_b = selectedAction.fields) === null || _b === void 0 ? void 0 : _b.length) > 0 ? ((0, jsx_runtime_1.jsx)(GenericForm_1.GenericForm, { action: selectedAction, onClose: onClose, rowId: rowId })) : ((0, jsx_runtime_1.jsx)(react_3.Button, { colorScheme: "blue", mr: 3, onClick: function () {
99
+ } }, { children: rowAction.name + " " + obj.row.original[0] }), void 0)); });
100
+ } }, void 0) }), void 0), (0, jsx_runtime_1.jsxs)(react_3.Modal, __assign({ size: "6xl", isOpen: isOpen, onClose: onClose }, { children: [(0, jsx_runtime_1.jsx)(react_3.ModalOverlay, {}, void 0), (0, jsx_runtime_1.jsxs)(react_3.ModalContent, { children: [(0, jsx_runtime_1.jsx)(react_3.ModalHeader, { children: selectedAction.name }, void 0), (0, jsx_runtime_1.jsx)(react_3.ModalCloseButton, {}, void 0), (0, jsx_runtime_1.jsxs)(react_3.ModalBody, { children: [selectedAction.fields && ((_b = selectedAction.fields) === null || _b === void 0 ? void 0 : _b.length) > 0 ? ((0, jsx_runtime_1.jsx)(GenericForm_1.GenericForm, { action: selectedAction, onClose: onClose, rowId: rowId }, void 0)) : ((0, jsx_runtime_1.jsx)(react_3.Button, __assign({ colorScheme: "blue", mr: 3, onClick: function () {
90
101
  selectedAction.onSubmit(rowId);
91
102
  onClose();
92
103
  window.location.reload();
93
- }, children: "Confirm Action" })), (0, jsx_runtime_1.jsx)(react_3.Button, { colorScheme: "red", mr: 3, onClick: onClose, children: "Close" })] })] })] })] }));
104
+ } }, { children: "Confirm Action" }), void 0)), (0, jsx_runtime_1.jsx)(react_3.Button, __assign({ colorScheme: "red", mr: 3, onClick: onClose }, { children: "Close" }), void 0)] }, void 0)] }, void 0)] }), void 0)] }, void 0));
94
105
  }
95
106
  exports.Page = Page;
package/dist/cjs/index.js CHANGED
@@ -11,7 +11,7 @@ var App_1 = __importDefault(require("./App"));
11
11
  var reportWebVitals_1 = __importDefault(require("./reportWebVitals"));
12
12
  var event_1 = require("./pages/event");
13
13
  var root = client_1.default.createRoot(document.getElementById("root"));
14
- root.render((0, jsx_runtime_1.jsx)(react_1.default.StrictMode, { children: (0, jsx_runtime_1.jsx)(App_1.default, { pages: [event_1.event], basePath: "" }) }));
14
+ root.render((0, jsx_runtime_1.jsx)(react_1.default.StrictMode, { children: (0, jsx_runtime_1.jsx)(App_1.default, { pages: [event_1.event], basePath: "" }, void 0) }, void 0));
15
15
  // If you want to start measuring performance in your app, pass a function
16
16
  // to log results (for example: reportWebVitals(console.log))
17
17
  // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ while (_) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
5
  }) : (function(o, m, k, k2) {
10
6
  if (k2 === undefined) k2 = k;
11
7
  o[k2] = m[k];
@@ -37,7 +33,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
33
  function verb(n) { return function (v) { return step([n, v]); }; }
38
34
  function step(op) {
39
35
  if (f) throw new TypeError("Generator is already executing.");
40
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
36
+ while (_) try {
41
37
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
38
  if (y = 0, t) op = [op[0] & 2, t.value];
43
39
  switch (op[0]) {
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
5
  }) : (function(o, m, k, k2) {
10
6
  if (k2 === undefined) k2 = k;
11
7
  o[k2] = m[k];
@@ -4,6 +4,6 @@ exports.pages = void 0;
4
4
  var event_1 = require("../pages/event");
5
5
  var page_1 = require("../pages/page");
6
6
  exports.pages = [
7
- event_1.event, // example schema
7
+ event_1.event,
8
8
  page_1.page,
9
9
  ];
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pageToUrl = void 0;
4
4
  function pageToUrl(page) {
5
- return "/".concat(page.name.toLowerCase().replace(" ", "_"));
5
+ return "".concat(page.name.toLowerCase().replace(" ", "_"));
6
6
  }
7
7
  exports.pageToUrl = pageToUrl;
@@ -29,9 +29,9 @@ var export_to_csv_1 = require("export-to-csv");
29
29
  var sweetalert2_1 = __importDefault(require("sweetalert2"));
30
30
  var MenuItem_1 = __importDefault(require("@mui/material/MenuItem"));
31
31
  function Header(_a) {
32
- var pages = _a.pages, data = _a.data;
32
+ var pages = _a.pages, data = _a.data, basePath = _a.basePath;
33
33
  var nav = (0, react_router_1.useNavigate)();
34
- return ((0, jsx_runtime_1.jsx)(react_3.Box, __assign({ background: "blue.50", padding: 1 }, { children: (0, jsx_runtime_1.jsxs)(react_3.Stack, __assign({ margin: 3, direction: "row", justifyContent: "space-between", alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ margin: 4, gap: 10, direction: "row", alignItems: "center" }, { children: pages.map(function (p) { return ((0, jsx_runtime_1.jsx)(react_3.Box, __assign({ as: "a", href: (0, schema_1.pageToUrl)(p) }, { children: p.name }), void 0)); }) }), void 0), (0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ direction: "row" }, { children: (0, jsx_runtime_1.jsx)(react_3.Button, __assign({ colorScheme: "red", onClick: function () {
34
+ return ((0, jsx_runtime_1.jsx)(react_3.Box, __assign({ background: "blue.50", padding: 1 }, { children: (0, jsx_runtime_1.jsxs)(react_3.Stack, __assign({ margin: 3, direction: "row", justifyContent: "space-between", alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ margin: 4, gap: 10, direction: "row", alignItems: "center" }, { children: pages.map(function (p) { return ((0, jsx_runtime_1.jsx)(react_3.Box, __assign({ as: "a", href: "".concat(basePath, "/").concat((0, schema_1.pageToUrl)(p)) }, { children: p.name }), void 0)); }) }), void 0), (0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ direction: "row" }, { children: (0, jsx_runtime_1.jsx)(react_3.Button, __assign({ colorScheme: "red", onClick: function () {
35
35
  var filename = prompt("Enter filename:");
36
36
  if (filename)
37
37
  exportToCSV(data, filename);
@@ -65,7 +65,7 @@ function exportToCSV(data, filename) {
65
65
  }
66
66
  function Page(_a) {
67
67
  var _b;
68
- var pages = _a.pages, selectedPage = _a.selectedPage;
68
+ var pages = _a.pages, selectedPage = _a.selectedPage, basePath = _a.basePath;
69
69
  var _c = (0, react_3.useDisclosure)(), isOpen = _c.isOpen, onOpen = _c.onOpen, onClose = _c.onClose;
70
70
  var _d = (0, react_1.useState)({}), selectedAction = _d[0], setSelectedAction = _d[1];
71
71
  var _e = (0, react_1.useState)([]), data = _e[0], setData = _e[1];
@@ -81,7 +81,7 @@ function Page(_a) {
81
81
  return selectedPage.tableFields.map(function (field) { return field.access(table_data); });
82
82
  }));
83
83
  }, [data]);
84
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Header, { pages: pages, data: data }, void 0), (0, jsx_runtime_1.jsx)(react_4.ThemeProvider, __assign({ theme: (0, styles_1.createTheme)() }, { children: (0, jsx_runtime_1.jsx)(material_react_table_1.MaterialReactTable, { columns: selectedPage.tableFields.map(function (field, index) { return ({
84
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Header, { pages: pages, data: data, basePath: basePath }, void 0), (0, jsx_runtime_1.jsx)(react_4.ThemeProvider, __assign({ theme: (0, styles_1.createTheme)() }, { children: (0, jsx_runtime_1.jsx)(material_react_table_1.MaterialReactTable, { columns: selectedPage.tableFields.map(function (field, index) { return ({
85
85
  accessorFn: function (row) { return row[index]; },
86
86
  header: field.name,
87
87
  }); }), data: displayData, muiTableContainerProps: { sx: { maxHeight: "70vh" } }, enableColumnResizing: true, enableColumnPinning: true, enableGlobalFilterModes: true, enablePagination: true, paginationDisplayMode: "pages", enableRowVirtualization: true, rowVirtualizerOptions: { overscan: 20 }, renderTopToolbarCustomActions: function () { return ((0, jsx_runtime_1.jsx)(react_2.ChakraProvider, { children: (0, jsx_runtime_1.jsx)(react_3.Stack, __assign({ margin: 0, padding: 3, direction: "row" }, { children: selectedPage.actions.map(function (action) { return ((0, jsx_runtime_1.jsx)(react_3.Button, __assign({ colorScheme: "blue", onClick: function () {
package/dist/esm/App.js CHANGED
@@ -20,8 +20,8 @@ function AdminPanel(_a) {
20
20
  React.useEffect(function () {
21
21
  setPagesToDisplay(__spreadArray(__spreadArray([], pages, true), [page], false));
22
22
  }, []);
23
- return (_jsx(ChakraProvider, { children: _jsxs(Routes, { children: [pagesToDisplay.map(function (page) { return (_jsx(Route, { path: "".concat(basePath, "/").concat(pageToUrl(page)), element: _jsx(Page, { pages: pagesToDisplay, selectedPage: page }, void 0) }, void 0)); }), pages[0] ?
24
- _jsx(Route, { path: "".concat(basePath, "/*"), element: _jsx(Page, { pages: pagesToDisplay, selectedPage: pages[0] }, void 0) }, void 0)
23
+ return (_jsx(ChakraProvider, { children: _jsxs(Routes, { children: [pagesToDisplay.map(function (page) { return (_jsx(Route, { path: "".concat(basePath, "/").concat(pageToUrl(page)), element: _jsx(Page, { pages: pagesToDisplay, selectedPage: page, basePath: basePath }, void 0) }, void 0)); }), pages[0] ?
24
+ _jsx(Route, { path: "".concat(basePath, "/*"), element: _jsx(Page, { pages: pagesToDisplay, selectedPage: pages[0], basePath: basePath }, void 0) }, void 0)
25
25
  : null] }, void 0) }, void 0));
26
26
  }
27
27
  export default AdminPanel;
@@ -23,9 +23,9 @@ import { mkConfig, generateCsv, download } from "export-to-csv";
23
23
  import Swal from "sweetalert2";
24
24
  import MenuItem from "@mui/material/MenuItem";
25
25
  function Header(_a) {
26
- var pages = _a.pages, data = _a.data;
26
+ var pages = _a.pages, data = _a.data, basePath = _a.basePath;
27
27
  var nav = useNavigate();
28
- return (_jsx(Box, __assign({ background: "blue.50", padding: 1 }, { children: _jsxs(Stack, __assign({ margin: 3, direction: "row", justifyContent: "space-between", alignItems: "center" }, { children: [_jsx(Stack, __assign({ margin: 4, gap: 10, direction: "row", alignItems: "center" }, { children: pages.map(function (p) { return (_jsx(Box, __assign({ as: "a", href: pageToUrl(p) }, { children: p.name }), void 0)); }) }), void 0), _jsx(Stack, __assign({ direction: "row" }, { children: _jsx(Button, __assign({ colorScheme: "red", onClick: function () {
28
+ return (_jsx(Box, __assign({ background: "blue.50", padding: 1 }, { children: _jsxs(Stack, __assign({ margin: 3, direction: "row", justifyContent: "space-between", alignItems: "center" }, { children: [_jsx(Stack, __assign({ margin: 4, gap: 10, direction: "row", alignItems: "center" }, { children: pages.map(function (p) { return (_jsx(Box, __assign({ as: "a", href: "".concat(basePath, "/").concat(pageToUrl(p)) }, { children: p.name }), void 0)); }) }), void 0), _jsx(Stack, __assign({ direction: "row" }, { children: _jsx(Button, __assign({ colorScheme: "red", onClick: function () {
29
29
  var filename = prompt("Enter filename:");
30
30
  if (filename)
31
31
  exportToCSV(data, filename);
@@ -59,7 +59,7 @@ function exportToCSV(data, filename) {
59
59
  }
60
60
  export function Page(_a) {
61
61
  var _b;
62
- var pages = _a.pages, selectedPage = _a.selectedPage;
62
+ var pages = _a.pages, selectedPage = _a.selectedPage, basePath = _a.basePath;
63
63
  var _c = useDisclosure(), isOpen = _c.isOpen, onOpen = _c.onOpen, onClose = _c.onClose;
64
64
  var _d = useState({}), selectedAction = _d[0], setSelectedAction = _d[1];
65
65
  var _e = useState([]), data = _e[0], setData = _e[1];
@@ -75,7 +75,7 @@ export function Page(_a) {
75
75
  return selectedPage.tableFields.map(function (field) { return field.access(table_data); });
76
76
  }));
77
77
  }, [data]);
78
- return (_jsxs(_Fragment, { children: [_jsx(Header, { pages: pages, data: data }, void 0), _jsx(ThemeProvider, __assign({ theme: createTheme() }, { children: _jsx(MaterialReactTable, { columns: selectedPage.tableFields.map(function (field, index) { return ({
78
+ return (_jsxs(_Fragment, { children: [_jsx(Header, { pages: pages, data: data, basePath: basePath }, void 0), _jsx(ThemeProvider, __assign({ theme: createTheme() }, { children: _jsx(MaterialReactTable, { columns: selectedPage.tableFields.map(function (field, index) { return ({
79
79
  accessorFn: function (row) { return row[index]; },
80
80
  header: field.name,
81
81
  }); }), data: displayData, muiTableContainerProps: { sx: { maxHeight: "70vh" } }, enableColumnResizing: true, enableColumnPinning: true, enableGlobalFilterModes: true, enablePagination: true, paginationDisplayMode: "pages", enableRowVirtualization: true, rowVirtualizerOptions: { overscan: 20 }, renderTopToolbarCustomActions: function () { return (_jsx(ChakraProvider, { children: _jsx(Stack, __assign({ margin: 0, padding: 3, direction: "row" }, { children: selectedPage.actions.map(function (action) { return (_jsx(Button, __assign({ colorScheme: "blue", onClick: function () {
@@ -1,3 +1,3 @@
1
1
  export function pageToUrl(page) {
2
- return "/".concat(page.name.toLowerCase().replace(" ", "_"));
2
+ return "".concat(page.name.toLowerCase().replace(" ", "_"));
3
3
  }
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pageToUrl = void 0;
4
4
  function pageToUrl(page) {
5
- return "/".concat(page.name.toLowerCase().replace(" ", "_"));
5
+ return "".concat(page.name.toLowerCase().replace(" ", "_"));
6
6
  }
7
7
  exports.pageToUrl = pageToUrl;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "admin_lsac",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "Generic Admin Panel created for storing events' data",
5
5
  "private": false,
6
6
  "dependencies": {
package/src/App.tsx CHANGED
@@ -80,13 +80,13 @@ function AdminPanel({ pages, basePath }: { pages: PageSchema[], basePath: string
80
80
  {pagesToDisplay.map((page) => (
81
81
  <Route
82
82
  path={`${basePath}/${pageToUrl(page)}`}
83
- element={<Page pages={pagesToDisplay} selectedPage={page} />}
83
+ element={<Page pages={pagesToDisplay} selectedPage={page} basePath={basePath} />}
84
84
  />
85
85
  ))}
86
86
  {pages[0] ?
87
87
  <Route
88
88
  path={`${basePath}/*`}
89
- element={<Page pages={pagesToDisplay} selectedPage={pages[0]} />}
89
+ element={<Page pages={pagesToDisplay} selectedPage={pages[0]} basePath={basePath} />}
90
90
  />
91
91
  : null}
92
92
  </Routes>
@@ -22,7 +22,7 @@ import { mkConfig, generateCsv, download } from "export-to-csv";
22
22
  import Swal from "sweetalert2";
23
23
  import MenuItem from "@mui/material/MenuItem";
24
24
 
25
- function Header({ pages, data }: { pages: PageSchema[]; data: any[] }) {
25
+ function Header({ pages, data, basePath }: { pages: PageSchema[]; data: any[], basePath: string }) {
26
26
  const nav = useNavigate();
27
27
  return (
28
28
  <Box background="blue.50" padding={1}>
@@ -34,7 +34,7 @@ function Header({ pages, data }: { pages: PageSchema[]; data: any[] }) {
34
34
  >
35
35
  <Stack margin={4} gap={10} direction="row" alignItems="center">
36
36
  {pages.map((p) => (
37
- <Box as="a" href={pageToUrl(p)}>
37
+ <Box as="a" href={`${basePath}/${pageToUrl(p)}`}>
38
38
  {p.name}
39
39
  </Box>
40
40
  ))}
@@ -87,9 +87,11 @@ function exportToCSV(data: any[], filename: string) {
87
87
  export function Page({
88
88
  pages,
89
89
  selectedPage,
90
+ basePath
90
91
  }: {
91
92
  pages: PageSchema[];
92
93
  selectedPage: PageSchema;
94
+ basePath: string;
93
95
  }) {
94
96
  const { isOpen, onOpen, onClose } = useDisclosure();
95
97
  const [selectedAction, setSelectedAction] = useState({} as Action);
@@ -113,7 +115,7 @@ export function Page({
113
115
 
114
116
  return (
115
117
  <>
116
- <Header pages={pages} data={data} />
118
+ <Header pages={pages} data={data} basePath={basePath} />
117
119
 
118
120
  <ThemeProvider theme={createTheme()}>
119
121
  <MaterialReactTable
@@ -148,7 +150,7 @@ export function Page({
148
150
  </ChakraProvider>
149
151
  )}
150
152
  enableRowActions
151
- renderRowActionMenuItems={(obj) => {
153
+ renderRowActionMenuItems={(obj: any) => {
152
154
  return selectedPage.rowActions.map((rowAction) => (
153
155
  <MenuItem
154
156
  onClick={() => {
@@ -64,5 +64,5 @@ export interface PageSchema {
64
64
  }
65
65
 
66
66
  export function pageToUrl(page: PageSchema): string {
67
- return `/${page.name.toLowerCase().replace(" ", "_")}`;
67
+ return `${page.name.toLowerCase().replace(" ", "_")}`;
68
68
  }