muffin-admin 1.30.0 → 1.31.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.
- package/Makefile +7 -0
- package/dist/admin.js +82 -0
- package/dist/authprovider.js +250 -0
- package/dist/buttons/ActionButton.js +110 -0
- package/dist/buttons/LinkButton.js +44 -0
- package/dist/dashboard.js +70 -0
- package/dist/dataprovider.js +379 -0
- package/dist/fields/AvatarField.js +46 -0
- package/dist/fields/FKField.js +43 -0
- package/dist/fields/JsonField.js +51 -0
- package/dist/hooks/useAction.js +17 -0
- package/dist/index.js +20 -0
- package/dist/inputs/FKInput.js +53 -0
- package/dist/inputs/JsonInput.js +82 -0
- package/dist/resources.js +57 -0
- package/dist/ui.js +95 -0
- package/dist/utils.js +67 -0
- package/dist/views/create.js +25 -0
- package/dist/views/edit.js +53 -0
- package/dist/views/list.js +83 -0
- package/dist/views/show.js +36 -0
- package/dist/web.js +33 -0
- package/package.json +12 -3
- package/webpack.config.js +7 -6
- package/.babelrc +0 -5
- package/admin.jsx +0 -60
- package/authprovider.js +0 -84
- package/buttons/ActionButton.jsx +0 -99
- package/buttons/LinkButton.jsx +0 -21
- package/dashboard.jsx +0 -74
- package/dataprovider.js +0 -94
- package/fields/AvatarField.jsx +0 -34
- package/fields/FKField.jsx +0 -28
- package/fields/JsonField.jsx +0 -25
- package/hooks/useAction.js +0 -9
- package/index.js +0 -15
- package/inputs/FKInput.jsx +0 -42
- package/inputs/JsonInput.jsx +0 -62
- package/resources.jsx +0 -37
- package/ui.jsx +0 -107
- package/utils.js +0 -39
- package/views/create.jsx +0 -30
- package/views/edit.jsx +0 -42
- package/views/list.jsx +0 -86
- package/views/show.jsx +0 -43
package/Makefile
CHANGED
|
@@ -3,6 +3,13 @@ all: node_modules
|
|
|
3
3
|
|
|
4
4
|
node_modules: package.json
|
|
5
5
|
npm install
|
|
6
|
+
touch node_modules
|
|
7
|
+
|
|
8
|
+
npm: node_modules
|
|
9
|
+
$(CURDIR)/node_modules/.bin/babel src --out-dir dist
|
|
10
|
+
|
|
11
|
+
pypi:
|
|
12
|
+
$(CURDIR)/node_modules/.bin/webpack
|
|
6
13
|
|
|
7
14
|
watch: node_modules
|
|
8
15
|
$(CURDIR)/node_modules/.bin/webpack --watch
|
package/dist/admin.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
|
|
11
|
+
var _reactAdmin = require("react-admin");
|
|
12
|
+
|
|
13
|
+
var _material = require("@mui/material");
|
|
14
|
+
|
|
15
|
+
var icons = _interopRequireWildcard(require("@mui/icons-material"));
|
|
16
|
+
|
|
17
|
+
var _authprovider = _interopRequireDefault(require("./authprovider"));
|
|
18
|
+
|
|
19
|
+
var _dataprovider = _interopRequireDefault(require("./dataprovider"));
|
|
20
|
+
|
|
21
|
+
var _utils = require("./utils");
|
|
22
|
+
|
|
23
|
+
require("./dashboard");
|
|
24
|
+
|
|
25
|
+
require("./resources");
|
|
26
|
+
|
|
27
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
28
|
+
|
|
29
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
30
|
+
|
|
31
|
+
// Initialize the admin
|
|
32
|
+
(0, _utils.setupAdmin)('admin', function (props) {
|
|
33
|
+
var apiUrl = props.apiUrl,
|
|
34
|
+
auth = props.auth,
|
|
35
|
+
adminProps = props.adminProps,
|
|
36
|
+
appBarLinks = props.appBarLinks,
|
|
37
|
+
dashboard = props.dashboard,
|
|
38
|
+
resources = props.resources;
|
|
39
|
+
|
|
40
|
+
var appBar = function appBar(props) {
|
|
41
|
+
return /*#__PURE__*/_react["default"].createElement(_reactAdmin.AppBar, props, /*#__PURE__*/_react["default"].createElement(_material.Typography, {
|
|
42
|
+
variant: "h6",
|
|
43
|
+
color: "inherit",
|
|
44
|
+
id: "react-admin-title",
|
|
45
|
+
style: {
|
|
46
|
+
flex: 1,
|
|
47
|
+
textOverflow: 'ellipsis',
|
|
48
|
+
whiteSpace: 'nowrap',
|
|
49
|
+
overflow: 'hidden'
|
|
50
|
+
}
|
|
51
|
+
}), appBarLinks.map(function (info) {
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
|
|
53
|
+
key: info.url,
|
|
54
|
+
title: info.title
|
|
55
|
+
}, /*#__PURE__*/_react["default"].createElement(_material.IconButton, {
|
|
56
|
+
color: "inherit",
|
|
57
|
+
href: info.url
|
|
58
|
+
}, /*#__PURE__*/_react["default"].createElement(_material.SvgIcon, {
|
|
59
|
+
component: icons[info.icon]
|
|
60
|
+
})));
|
|
61
|
+
}));
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
return /*#__PURE__*/_react["default"].createElement(_reactAdmin.Admin, (0, _extends2["default"])({
|
|
65
|
+
authProvider: (0, _utils.processAdmin)('auth', auth),
|
|
66
|
+
dataProvider: (0, _utils.processAdmin)('data', apiUrl),
|
|
67
|
+
dashboard: (0, _utils.processAdmin)('dashboard', dashboard),
|
|
68
|
+
loginPage: (0, _utils.processAdmin)('login', auth),
|
|
69
|
+
layout: function layout(props) {
|
|
70
|
+
return /*#__PURE__*/_react["default"].createElement(_reactAdmin.Layout, (0, _extends2["default"])({
|
|
71
|
+
appBar: appBar
|
|
72
|
+
}, props));
|
|
73
|
+
}
|
|
74
|
+
}, adminProps), (0, _utils.processAdmin)('resources', resources));
|
|
75
|
+
}); // Initialize authentication and data providers
|
|
76
|
+
|
|
77
|
+
(0, _utils.setupAdmin)('auth', _authprovider["default"]);
|
|
78
|
+
(0, _utils.setupAdmin)('data', _dataprovider["default"]); // Initialize login page
|
|
79
|
+
|
|
80
|
+
(0, _utils.setupAdmin)('login', function () {
|
|
81
|
+
return _reactAdmin.Login;
|
|
82
|
+
});
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _jsCookie = _interopRequireDefault(require("js-cookie"));
|
|
15
|
+
|
|
16
|
+
var _utils = require("./utils");
|
|
17
|
+
|
|
18
|
+
(0, _utils.setupAdmin)('auth-get', function (_ref) {
|
|
19
|
+
var storage = _ref.storage;
|
|
20
|
+
return function (name) {
|
|
21
|
+
return storage == 'localstorage' ? localStorage.getItem(name) : _jsCookie["default"].get(name);
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
(0, _utils.setupAdmin)('auth-set', function (_ref2) {
|
|
25
|
+
var storage = _ref2.storage;
|
|
26
|
+
return function (name, value) {
|
|
27
|
+
if (storage == 'localstorage') {
|
|
28
|
+
localStorage.setItem(name, value);
|
|
29
|
+
_utils.requestHeaders['Authorization'] = value;
|
|
30
|
+
} else _jsCookie["default"].set(name, value);
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
var _default = function _default(props) {
|
|
35
|
+
var identityURL = props.identityURL,
|
|
36
|
+
authorizeURL = props.authorizeURL,
|
|
37
|
+
logoutURL = props.logoutURL,
|
|
38
|
+
required = props.required,
|
|
39
|
+
storage_name = props.storage_name;
|
|
40
|
+
var authGet = (0, _utils.processAdmin)('auth-get', props);
|
|
41
|
+
var authSet = (0, _utils.processAdmin)('auth-set', props); // Initialize request headers
|
|
42
|
+
|
|
43
|
+
authSet(storage_name, authGet(storage_name));
|
|
44
|
+
|
|
45
|
+
var getIdentity = /*#__PURE__*/function () {
|
|
46
|
+
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
47
|
+
var _yield$makeRequest, json;
|
|
48
|
+
|
|
49
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
50
|
+
while (1) {
|
|
51
|
+
switch (_context.prev = _context.next) {
|
|
52
|
+
case 0:
|
|
53
|
+
if (!identityURL) {
|
|
54
|
+
_context.next = 6;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
_context.next = 3;
|
|
59
|
+
return (0, _utils.makeRequest)(identityURL);
|
|
60
|
+
|
|
61
|
+
case 3:
|
|
62
|
+
_yield$makeRequest = _context.sent;
|
|
63
|
+
json = _yield$makeRequest.json;
|
|
64
|
+
return _context.abrupt("return", json);
|
|
65
|
+
|
|
66
|
+
case 6:
|
|
67
|
+
case "end":
|
|
68
|
+
return _context.stop();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, _callee);
|
|
72
|
+
}));
|
|
73
|
+
|
|
74
|
+
return function getIdentity() {
|
|
75
|
+
return _ref3.apply(this, arguments);
|
|
76
|
+
};
|
|
77
|
+
}();
|
|
78
|
+
|
|
79
|
+
if (required) return {
|
|
80
|
+
login: function () {
|
|
81
|
+
var _login = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(data) {
|
|
82
|
+
var _yield$makeRequest2, json;
|
|
83
|
+
|
|
84
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
85
|
+
while (1) {
|
|
86
|
+
switch (_context2.prev = _context2.next) {
|
|
87
|
+
case 0:
|
|
88
|
+
if (authorizeURL) {
|
|
89
|
+
_context2.next = 2;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
throw {
|
|
94
|
+
message: 'Authorization is not supported'
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
case 2:
|
|
98
|
+
_context2.next = 4;
|
|
99
|
+
return (0, _utils.makeRequest)(authorizeURL, {
|
|
100
|
+
data: data,
|
|
101
|
+
method: 'POST'
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
case 4:
|
|
105
|
+
_yield$makeRequest2 = _context2.sent;
|
|
106
|
+
json = _yield$makeRequest2.json;
|
|
107
|
+
authSet(storage_name, json);
|
|
108
|
+
|
|
109
|
+
case 7:
|
|
110
|
+
case "end":
|
|
111
|
+
return _context2.stop();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}, _callee2);
|
|
115
|
+
}));
|
|
116
|
+
|
|
117
|
+
function login(_x) {
|
|
118
|
+
return _login.apply(this, arguments);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return login;
|
|
122
|
+
}(),
|
|
123
|
+
checkError: function () {
|
|
124
|
+
var _checkError = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(error) {
|
|
125
|
+
var status;
|
|
126
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
127
|
+
while (1) {
|
|
128
|
+
switch (_context3.prev = _context3.next) {
|
|
129
|
+
case 0:
|
|
130
|
+
status = error.status;
|
|
131
|
+
|
|
132
|
+
if (!(status == 401 || status == 403)) {
|
|
133
|
+
_context3.next = 4;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Clean storage
|
|
138
|
+
authSet(storage_name, '');
|
|
139
|
+
throw {
|
|
140
|
+
message: 'Invalid authorization',
|
|
141
|
+
redirectTo: logoutURL,
|
|
142
|
+
logoutUser: !logoutURL
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
case 4:
|
|
146
|
+
case "end":
|
|
147
|
+
return _context3.stop();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}, _callee3);
|
|
151
|
+
}));
|
|
152
|
+
|
|
153
|
+
function checkError(_x2) {
|
|
154
|
+
return _checkError.apply(this, arguments);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return checkError;
|
|
158
|
+
}(),
|
|
159
|
+
checkAuth: function () {
|
|
160
|
+
var _checkAuth = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(data) {
|
|
161
|
+
var auth, user;
|
|
162
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
163
|
+
while (1) {
|
|
164
|
+
switch (_context4.prev = _context4.next) {
|
|
165
|
+
case 0:
|
|
166
|
+
auth = authGet(storage_name);
|
|
167
|
+
|
|
168
|
+
if (auth) {
|
|
169
|
+
_context4.next = 3;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
throw {
|
|
174
|
+
message: 'Authorization required'
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
case 3:
|
|
178
|
+
if (identityURL) {
|
|
179
|
+
_context4.next = 5;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return _context4.abrupt("return", auth);
|
|
184
|
+
|
|
185
|
+
case 5:
|
|
186
|
+
_context4.next = 7;
|
|
187
|
+
return getIdentity();
|
|
188
|
+
|
|
189
|
+
case 7:
|
|
190
|
+
user = _context4.sent;
|
|
191
|
+
|
|
192
|
+
if (user) {
|
|
193
|
+
_context4.next = 10;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
throw {
|
|
198
|
+
message: 'Authorization required'
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
case 10:
|
|
202
|
+
return _context4.abrupt("return", user);
|
|
203
|
+
|
|
204
|
+
case 11:
|
|
205
|
+
case "end":
|
|
206
|
+
return _context4.stop();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}, _callee4);
|
|
210
|
+
}));
|
|
211
|
+
|
|
212
|
+
function checkAuth(_x3) {
|
|
213
|
+
return _checkAuth.apply(this, arguments);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return checkAuth;
|
|
217
|
+
}(),
|
|
218
|
+
logout: function () {
|
|
219
|
+
var _logout = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
220
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
221
|
+
while (1) {
|
|
222
|
+
switch (_context5.prev = _context5.next) {
|
|
223
|
+
case 0:
|
|
224
|
+
// Clean storage
|
|
225
|
+
authSet(storage_name, '');
|
|
226
|
+
if (logoutURL) window.location = logoutURL;
|
|
227
|
+
|
|
228
|
+
case 2:
|
|
229
|
+
case "end":
|
|
230
|
+
return _context5.stop();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}, _callee5);
|
|
234
|
+
}));
|
|
235
|
+
|
|
236
|
+
function logout() {
|
|
237
|
+
return _logout.apply(this, arguments);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return logout;
|
|
241
|
+
}(),
|
|
242
|
+
getIdentity: getIdentity,
|
|
243
|
+
getPermissions: function getPermissions(data) {
|
|
244
|
+
var role = authGet(storage_name + '_role');
|
|
245
|
+
return role ? Promise.resolve(role) : Promise.reject();
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = exports.BulkActionButton = exports.ActionButton = void 0;
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _reactAdmin = require("react-admin");
|
|
15
|
+
|
|
16
|
+
var icons = _interopRequireWildcard(require("@mui/icons-material"));
|
|
17
|
+
|
|
18
|
+
var _useAction = _interopRequireDefault(require("../hooks/useAction"));
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
var BulkActionButton = function BulkActionButton(_ref) {
|
|
25
|
+
var label = _ref.label,
|
|
26
|
+
icon = _ref.icon,
|
|
27
|
+
title = _ref.title,
|
|
28
|
+
action = _ref.action,
|
|
29
|
+
resource = _ref.resource,
|
|
30
|
+
selectedIds = _ref.selectedIds;
|
|
31
|
+
var refresh = (0, _reactAdmin.useRefresh)(),
|
|
32
|
+
unselectAll = (0, _reactAdmin.useUnselectAll)(resource),
|
|
33
|
+
notify = (0, _reactAdmin.useNotify)(),
|
|
34
|
+
Icon = icons[icon];
|
|
35
|
+
var mutation = (0, _useAction["default"])(resource, action);
|
|
36
|
+
|
|
37
|
+
var onClick = function onClick() {
|
|
38
|
+
mutation.mutate({
|
|
39
|
+
action: action,
|
|
40
|
+
ids: selectedIds
|
|
41
|
+
}, {
|
|
42
|
+
onSuccess: function onSuccess(_ref2) {
|
|
43
|
+
var data = _ref2.data;
|
|
44
|
+
if (data && data.message) notify(data.message, {
|
|
45
|
+
type: 'success'
|
|
46
|
+
});
|
|
47
|
+
refresh();
|
|
48
|
+
unselectAll();
|
|
49
|
+
},
|
|
50
|
+
onError: function onError(err) {
|
|
51
|
+
notify(typeof err === 'string' ? err : err.message, {
|
|
52
|
+
type: 'error'
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return /*#__PURE__*/_react["default"].createElement(_reactAdmin.Button, {
|
|
59
|
+
label: label,
|
|
60
|
+
title: title,
|
|
61
|
+
onClick: onClick,
|
|
62
|
+
disabled: mutation.isLoading
|
|
63
|
+
}, Icon && /*#__PURE__*/_react["default"].createElement(Icon, null));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
exports.BulkActionButton = BulkActionButton;
|
|
67
|
+
|
|
68
|
+
var ActionButton = function ActionButton(props) {
|
|
69
|
+
var icon = props.icon,
|
|
70
|
+
label = props.label,
|
|
71
|
+
title = props.title,
|
|
72
|
+
resource = props.resource,
|
|
73
|
+
action = props.action;
|
|
74
|
+
var record = (0, _reactAdmin.useRecordContext)();
|
|
75
|
+
var mutation = (0, _useAction["default"])(resource, action);
|
|
76
|
+
var refresh = (0, _reactAdmin.useRefresh)(),
|
|
77
|
+
notify = (0, _reactAdmin.useNotify)(),
|
|
78
|
+
Icon = icons[icon];
|
|
79
|
+
|
|
80
|
+
var onClick = function onClick() {
|
|
81
|
+
mutation.mutate({
|
|
82
|
+
record: record
|
|
83
|
+
}, {
|
|
84
|
+
onSuccess: function onSuccess(_ref3) {
|
|
85
|
+
var data = _ref3.data;
|
|
86
|
+
refresh();
|
|
87
|
+
if (data && data.redirectTo) window.location = data.redirectTo;
|
|
88
|
+
if (data && data.message) notify(data.message, {
|
|
89
|
+
type: 'success'
|
|
90
|
+
});
|
|
91
|
+
},
|
|
92
|
+
onError: function onError(error) {
|
|
93
|
+
notify(typeof error === 'string' ? error : error.message, {
|
|
94
|
+
type: 'error'
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
return /*#__PURE__*/_react["default"].createElement(_reactAdmin.Button, {
|
|
101
|
+
label: label,
|
|
102
|
+
title: title,
|
|
103
|
+
onClick: onClick,
|
|
104
|
+
disabled: mutation.isLoading
|
|
105
|
+
}, Icon && /*#__PURE__*/_react["default"].createElement(Icon, null));
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
exports.ActionButton = ActionButton;
|
|
109
|
+
var _default = ActionButton;
|
|
110
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _reactAdmin = require("react-admin");
|
|
15
|
+
|
|
16
|
+
var _reactRouterDom = require("react-router-dom");
|
|
17
|
+
|
|
18
|
+
var icons = _interopRequireWildcard(require("@mui/icons-material"));
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
var LinkButton = function LinkButton(_ref) {
|
|
25
|
+
var label = _ref.label,
|
|
26
|
+
icon = _ref.icon,
|
|
27
|
+
title = _ref.title,
|
|
28
|
+
resource = _ref.resource,
|
|
29
|
+
filters = _ref.filters;
|
|
30
|
+
var Icon = icons[icon] || icon;
|
|
31
|
+
var linkParams = {
|
|
32
|
+
pathname: "/".concat(resource),
|
|
33
|
+
search: filters ? "filter=".concat(JSON.stringify(filters)) : undefined
|
|
34
|
+
};
|
|
35
|
+
return /*#__PURE__*/_react["default"].createElement(_reactAdmin.Button, {
|
|
36
|
+
label: label,
|
|
37
|
+
title: title,
|
|
38
|
+
component: _reactRouterDom.Link,
|
|
39
|
+
to: linkParams
|
|
40
|
+
}, Icon && /*#__PURE__*/_react["default"].createElement(Icon, null));
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
var _default = LinkButton;
|
|
44
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _material = require("@mui/material");
|
|
8
|
+
|
|
9
|
+
var _utils = require("./utils");
|
|
10
|
+
|
|
11
|
+
// import ReactJSON from "react-json-view";
|
|
12
|
+
var AdminTableView = function AdminTableView(_ref) {
|
|
13
|
+
var src = _ref.src;
|
|
14
|
+
return /*#__PURE__*/_react["default"].createElement(_material.Table, null, /*#__PURE__*/_react["default"].createElement(_material.TableBody, null, src.map(function (row, idx) {
|
|
15
|
+
return /*#__PURE__*/_react["default"].createElement(_material.TableRow, {
|
|
16
|
+
key: idx,
|
|
17
|
+
hover: true
|
|
18
|
+
}, row.map(function (cell, idx) {
|
|
19
|
+
return /*#__PURE__*/_react["default"].createElement(_material.TableCell, {
|
|
20
|
+
key: idx
|
|
21
|
+
}, cell);
|
|
22
|
+
}));
|
|
23
|
+
})));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
var AdminCard = function AdminCard(_ref2) {
|
|
27
|
+
var src = _ref2.src;
|
|
28
|
+
|
|
29
|
+
if (Array.isArray(src)) {
|
|
30
|
+
return /*#__PURE__*/_react["default"].createElement(_material.Grid, {
|
|
31
|
+
container: true,
|
|
32
|
+
item: true,
|
|
33
|
+
spacing: 2
|
|
34
|
+
}, src.map(function (card, idx) {
|
|
35
|
+
return /*#__PURE__*/_react["default"].createElement(AdminCard, {
|
|
36
|
+
key: idx,
|
|
37
|
+
src: card
|
|
38
|
+
});
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var title = src.title,
|
|
43
|
+
value = src.value;
|
|
44
|
+
return /*#__PURE__*/_react["default"].createElement(_material.Grid, {
|
|
45
|
+
item: true,
|
|
46
|
+
xs: true
|
|
47
|
+
}, /*#__PURE__*/_react["default"].createElement(_material.Card, null, /*#__PURE__*/_react["default"].createElement(_material.CardContent, null, /*#__PURE__*/_react["default"].createElement(_material.Typography, {
|
|
48
|
+
variant: "h5",
|
|
49
|
+
component: "h2",
|
|
50
|
+
m: 2,
|
|
51
|
+
style: {
|
|
52
|
+
textAlign: 'center'
|
|
53
|
+
}
|
|
54
|
+
}, title), Array.isArray(value) && /*#__PURE__*/_react["default"].createElement(AdminTableView, {
|
|
55
|
+
src: value
|
|
56
|
+
}) || /*#__PURE__*/_react["default"].createElement("pre", null, JSON.stringify(value, null, 2)))));
|
|
57
|
+
}; // Process dashboard
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
(0, _utils.setupAdmin)('dashboard', function (props) {
|
|
61
|
+
if (!props) return;
|
|
62
|
+
return function () {
|
|
63
|
+
return /*#__PURE__*/_react["default"].createElement(_material.Grid, {
|
|
64
|
+
container: true,
|
|
65
|
+
spacing: 1
|
|
66
|
+
}, /*#__PURE__*/_react["default"].createElement(AdminCard, {
|
|
67
|
+
src: props
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
});
|