@jiangood/open-admin 2.5.6 → 2.5.7

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.
@@ -125,7 +125,7 @@ export default (api) => {
125
125
  api.logger.info('formRegistryPath', importFrom);
126
126
  api.addEntryImports(() => ({
127
127
  source: importFrom,
128
- specifier: '{FormRegistryUtils}'
128
+ specifier: '{FormRegistry}'
129
129
  }));
130
130
 
131
131
  Utils.findFilesSync(api.paths.absSrcPath, /forms\/.*\.jsx$/).forEach(file => {
@@ -136,7 +136,7 @@ export default (api) => {
136
136
  specifier: name
137
137
  }));
138
138
 
139
- api.addEntryCodeAhead(() => `FormRegistryUtils.register("${name}", ${name});`);
139
+ api.addEntryCodeAhead(() => `FormRegistry.register("${name}", ${name});`);
140
140
  api.logger.info('新版本 formRegistry.register: ', name, file);
141
141
  });
142
142
  } catch (error) {
package/package.json CHANGED
@@ -36,5 +36,5 @@
36
36
  "dev": "umi dev",
37
37
  "build": "umi build"
38
38
  },
39
- "version": "2.5.6"
39
+ "version": "2.5.7"
40
40
  }
@@ -38,7 +38,7 @@
38
38
  "dev": "umi dev",
39
39
  "build": "umi build"
40
40
  },
41
- "version": "2.5.6"
41
+ "version": "2.5.7"
42
42
  },
43
43
  "pkgPath": "/home/runner/work/open-admin/open-admin/web/package.json",
44
44
  "plugins": {
@@ -51,7 +51,7 @@
51
51
  "config": {},
52
52
  "time": {
53
53
  "hooks": {},
54
- "register": 1
54
+ "register": 0
55
55
  },
56
56
  "enableBy": "register"
57
57
  },
@@ -98,7 +98,7 @@
98
98
  1
99
99
  ]
100
100
  },
101
- "register": 2
101
+ "register": 1
102
102
  },
103
103
  "enableBy": "register"
104
104
  },
@@ -115,7 +115,7 @@
115
115
  0
116
116
  ]
117
117
  },
118
- "register": 0
118
+ "register": 1
119
119
  },
120
120
  "enableBy": "register"
121
121
  },
@@ -142,10 +142,10 @@
142
142
  "time": {
143
143
  "hooks": {
144
144
  "modifyAppData": [
145
- 67
145
+ 69
146
146
  ]
147
147
  },
148
- "register": 22
148
+ "register": 21
149
149
  },
150
150
  "enableBy": "register"
151
151
  },
@@ -158,7 +158,7 @@
158
158
  "config": {},
159
159
  "time": {
160
160
  "hooks": {},
161
- "register": 0
161
+ "register": 1
162
162
  },
163
163
  "enableBy": "register"
164
164
  },
@@ -175,7 +175,7 @@
175
175
  0
176
176
  ],
177
177
  "onCheck": [
178
- 1
178
+ 0
179
179
  ]
180
180
  },
181
181
  "register": 1
@@ -1094,7 +1094,7 @@
1094
1094
  0
1095
1095
  ]
1096
1096
  },
1097
- "register": 0
1097
+ "register": 1
1098
1098
  },
1099
1099
  "enableBy": "register"
1100
1100
  },
@@ -1120,7 +1120,7 @@
1120
1120
  "config": {},
1121
1121
  "time": {
1122
1122
  "hooks": {},
1123
- "register": 94
1123
+ "register": 96
1124
1124
  },
1125
1125
  "enableBy": "register"
1126
1126
  },
@@ -1133,7 +1133,7 @@
1133
1133
  "config": {},
1134
1134
  "time": {
1135
1135
  "hooks": {},
1136
- "register": 27
1136
+ "register": 29
1137
1137
  },
1138
1138
  "enableBy": "config"
1139
1139
  },
@@ -1160,10 +1160,10 @@
1160
1160
  "time": {
1161
1161
  "hooks": {
1162
1162
  "modifyAppData": [
1163
- 0
1163
+ 1
1164
1164
  ]
1165
1165
  },
1166
- "register": 1
1166
+ "register": 0
1167
1167
  },
1168
1168
  "enableBy": "register"
1169
1169
  },
@@ -1176,7 +1176,7 @@
1176
1176
  "config": {},
1177
1177
  "time": {
1178
1178
  "hooks": {},
1179
- "register": 0
1179
+ "register": 1
1180
1180
  },
1181
1181
  "enableBy": "register"
1182
1182
  },
@@ -1214,7 +1214,7 @@
1214
1214
  "config": {},
1215
1215
  "time": {
1216
1216
  "hooks": {},
1217
- "register": 1
1217
+ "register": 0
1218
1218
  },
1219
1219
  "enableBy": "config"
1220
1220
  },
@@ -1227,7 +1227,7 @@
1227
1227
  "config": {},
1228
1228
  "time": {
1229
1229
  "hooks": {},
1230
- "register": 0
1230
+ "register": 1
1231
1231
  }
1232
1232
  },
1233
1233
  "./node_modules/@umijs/preset-umi/dist/features/overrides/overrides": {
@@ -1239,7 +1239,7 @@
1239
1239
  "config": {},
1240
1240
  "time": {
1241
1241
  "hooks": {},
1242
- "register": 1
1242
+ "register": 0
1243
1243
  },
1244
1244
  "enableBy": "register"
1245
1245
  },
@@ -1252,7 +1252,7 @@
1252
1252
  "config": {},
1253
1253
  "time": {
1254
1254
  "hooks": {},
1255
- "register": 0
1255
+ "register": 1
1256
1256
  },
1257
1257
  "enableBy": "config"
1258
1258
  },
@@ -1266,10 +1266,10 @@
1266
1266
  "time": {
1267
1267
  "hooks": {
1268
1268
  "modifyConfig": [
1269
- 0
1269
+ 1
1270
1270
  ]
1271
1271
  },
1272
- "register": 2
1272
+ "register": 1
1273
1273
  }
1274
1274
  },
1275
1275
  "./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill": {
@@ -1307,7 +1307,7 @@
1307
1307
  "config": {},
1308
1308
  "time": {
1309
1309
  "hooks": {},
1310
- "register": 0
1310
+ "register": 1
1311
1311
  },
1312
1312
  "enableBy": "config"
1313
1313
  },
@@ -1320,7 +1320,7 @@
1320
1320
  "config": {},
1321
1321
  "time": {
1322
1322
  "hooks": {},
1323
- "register": 1
1323
+ "register": 0
1324
1324
  },
1325
1325
  "enableBy": "config"
1326
1326
  },
@@ -1333,7 +1333,7 @@
1333
1333
  "config": {},
1334
1334
  "time": {
1335
1335
  "hooks": {},
1336
- "register": 0
1336
+ "register": 1
1337
1337
  },
1338
1338
  "enableBy": "register"
1339
1339
  },
@@ -1372,7 +1372,7 @@
1372
1372
  "config": {},
1373
1373
  "time": {
1374
1374
  "hooks": {},
1375
- "register": 1
1375
+ "register": 0
1376
1376
  }
1377
1377
  },
1378
1378
  "./node_modules/@umijs/preset-umi/dist/features/ssr/ssr": {
@@ -1397,7 +1397,7 @@
1397
1397
  "config": {},
1398
1398
  "time": {
1399
1399
  "hooks": {},
1400
- "register": 1
1400
+ "register": 2
1401
1401
  },
1402
1402
  "enableBy": "register"
1403
1403
  },
@@ -1423,7 +1423,7 @@
1423
1423
  "config": {},
1424
1424
  "time": {
1425
1425
  "hooks": {},
1426
- "register": 3
1426
+ "register": 2
1427
1427
  },
1428
1428
  "enableBy": "config"
1429
1429
  },
@@ -1553,7 +1553,7 @@
1553
1553
  "config": {},
1554
1554
  "time": {
1555
1555
  "hooks": {},
1556
- "register": 2
1556
+ "register": 3
1557
1557
  }
1558
1558
  },
1559
1559
  "./node_modules/@umijs/preset-umi/dist/features/mako/mako": {
@@ -1578,7 +1578,7 @@
1578
1578
  "config": {},
1579
1579
  "time": {
1580
1580
  "hooks": {},
1581
- "register": 1
1581
+ "register": 0
1582
1582
  }
1583
1583
  },
1584
1584
  "./node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian": {
@@ -1602,7 +1602,7 @@
1602
1602
  "config": {},
1603
1603
  "time": {
1604
1604
  "hooks": {},
1605
- "register": 27
1605
+ "register": 28
1606
1606
  }
1607
1607
  },
1608
1608
  "./node_modules/@umijs/preset-umi/dist/features/forget/forget": {
@@ -1653,7 +1653,7 @@
1653
1653
  "config": {},
1654
1654
  "time": {
1655
1655
  "hooks": {},
1656
- "register": 41
1656
+ "register": 43
1657
1657
  },
1658
1658
  "enableBy": "register"
1659
1659
  },
@@ -1666,7 +1666,7 @@
1666
1666
  "config": {},
1667
1667
  "time": {
1668
1668
  "hooks": {},
1669
- "register": 17
1669
+ "register": 18
1670
1670
  }
1671
1671
  },
1672
1672
  "./node_modules/@umijs/preset-umi/dist/commands/help": {
@@ -1860,7 +1860,7 @@
1860
1860
  "config": {},
1861
1861
  "time": {
1862
1862
  "hooks": {},
1863
- "register": 0
1863
+ "register": 1
1864
1864
  },
1865
1865
  "enableBy": "register"
1866
1866
  },
@@ -1873,7 +1873,7 @@
1873
1873
  "config": {},
1874
1874
  "time": {
1875
1875
  "hooks": {},
1876
- "register": 1
1876
+ "register": 0
1877
1877
  },
1878
1878
  "enableBy": "register"
1879
1879
  },
@@ -1912,7 +1912,7 @@
1912
1912
  "config": {},
1913
1913
  "time": {
1914
1914
  "hooks": {},
1915
- "register": 21
1915
+ "register": 23
1916
1916
  },
1917
1917
  "enableBy": "register"
1918
1918
  },
@@ -1925,7 +1925,7 @@
1925
1925
  "config": {},
1926
1926
  "time": {
1927
1927
  "hooks": {},
1928
- "register": 1
1928
+ "register": 0
1929
1929
  },
1930
1930
  "enableBy": "register"
1931
1931
  },
@@ -1951,7 +1951,7 @@
1951
1951
  "config": {},
1952
1952
  "time": {
1953
1953
  "hooks": {},
1954
- "register": 0
1954
+ "register": 1
1955
1955
  },
1956
1956
  "enableBy": "register"
1957
1957
  },
@@ -2165,7 +2165,7 @@
2165
2165
  "parentId": "@@/global-layout",
2166
2166
  "file": "about.jsx",
2167
2167
  "absPath": "/about",
2168
- "__content": "import React from \"react\";\nimport {HttpUtils, Page} from \"../framework\";\n\nexport default class extends React.Component {\n\n state = {\n buildInfo: null,\n }\n\n componentDidMount() {\n HttpUtils.get('/admin/lib-info').then(data => {\n this.setState({buildInfo: data})\n }).catch(e => {\n console.error('[About] 加载版本信息失败:', e);\n })\n }\n\n render() {\n const {buildInfo} = this.state;\n\n return (\n <Page title=\"关于\" description=\"了解系统版本与相关信息\">\n <h1>关于</h1>\n {buildInfo && (\n <div style={{marginTop: '3em', color: 'rgba(0,0,0,0.45)', fontSize: 12}}>\n 依赖库版本 v{buildInfo.version} / {buildInfo.buildTime}\n </div>\n )}\n </Page>\n );\n }\n}\n",
2168
+ "__content": "import React from \"react\";\nimport {Page} from \"../framework\";\n\nexport default class extends React.Component {\n\n render() {\n return <Page title=\"关于\" description=\"了解系统版本与相关信息\">\n <h1>关于</h1>\n </Page>\n }\n}\n",
2169
2169
  "__isJSFile": true,
2170
2170
  "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/about.jsx"
2171
2171
  },
@@ -9,7 +9,7 @@ import { createPluginManager } from './core/plugin';
9
9
  import { createHistory } from './core/history';
10
10
  import Loading from '/home/runner/work/open-admin/open-admin/web/src/loading.jsx';
11
11
  import { ApplyPluginsType } from 'umi';
12
- import {FormRegistryUtils} from '/home/runner/work/open-admin/open-admin/web/src/framework';
12
+ import {FormRegistry} from '/home/runner/work/open-admin/open-admin/web/src/framework';
13
13
 
14
14
  const publicPath = "./";
15
15
  const runtimePublicPath = false;
@@ -21,17 +21,25 @@ export const ContextMenu: React.FC<ContextMenuProps> = ({ x, y, items, onClick,
21
21
  const ref = useRef<HTMLDivElement>(null);
22
22
 
23
23
  useEffect(() => {
24
- const handler = (e: MouseEvent) => {
24
+ const handleMouseDown = (e: MouseEvent) => {
25
25
  if (ref.current && !ref.current.contains(e.target as Node)) {
26
26
  onClose();
27
27
  }
28
28
  };
29
+ const handleScroll = () => onClose();
30
+ const handleKeyDown = (e: KeyboardEvent) => {
31
+ if (e.key === 'Escape') onClose();
32
+ };
29
33
  const timer = setTimeout(() => {
30
- document.addEventListener('mousedown', handler);
34
+ document.addEventListener('mousedown', handleMouseDown);
35
+ document.addEventListener('scroll', handleScroll, true);
36
+ document.addEventListener('keydown', handleKeyDown);
31
37
  }, 0);
32
38
  return () => {
33
39
  clearTimeout(timer);
34
- document.removeEventListener('mousedown', handler);
40
+ document.removeEventListener('mousedown', handleMouseDown);
41
+ document.removeEventListener('scroll', handleScroll, true);
42
+ document.removeEventListener('keydown', handleKeyDown);
35
43
  };
36
44
  }, [onClose]);
37
45
 
@@ -25,10 +25,9 @@ export class FieldBoolean extends React.Component {
25
25
 
26
26
  switch (type) {
27
27
  case 'radio':
28
- return <Radio.Group value={v} onChange={onChange}>
28
+ return <Radio.Group value={v} onChange={e => onChange && onChange(e.target.value)}>
29
29
  <Radio value={true}>是</Radio>
30
30
  <Radio value={false}>否</Radio>
31
- <Radio value={undefined}>不确定</Radio>
32
31
  </Radio.Group>;
33
32
  case 'checkbox':
34
33
  return <Checkbox
@@ -43,7 +42,7 @@ export class FieldBoolean extends React.Component {
43
42
  {value: false, label: '否'},
44
43
  ]}
45
44
  value={v}
46
- onChange={onChange}
45
+ onChange={value => onChange && onChange(value)}
47
46
  style={{width: '100%'}}
48
47
  allowClear={true}
49
48
  placeholder={'请选择'}
@@ -51,7 +50,7 @@ export class FieldBoolean extends React.Component {
51
50
  case 'switch':
52
51
  return <Switch
53
52
  checked={v}
54
- onChange={onChange}
53
+ onChange={checked => onChange && onChange(checked)}
55
54
  />;
56
55
  default:
57
56
  return null;
@@ -77,27 +77,6 @@ export class FieldDate extends React.Component {
77
77
 
78
78
  }
79
79
 
80
- static getDefaultValue(type) {
81
- const year = dayjs().format("YYYY");
82
- const month = dayjs().format("YYYY-MM");
83
- const quarter = dayjs().format("YYYY-QQ");
84
-
85
- switch (type) {
86
- case 'YYYY':
87
- case 'YEAR':
88
- return year;
89
- case 'YYYY-MM':
90
- case 'YEAR_MONTH':
91
- return month;
92
- case 'YYYY-QQ':
93
- case 'YEAR_QUARTER':
94
- return quarter;
95
- default:
96
- return null;
97
- }
98
-
99
- }
100
-
101
80
  strToDate(value, fmt) {
102
81
  if (value != null && value !== '') {
103
82
  const type = typeof value;
@@ -15,7 +15,7 @@ export class FieldEditor extends React.Component {
15
15
 
16
16
  return (
17
17
  <TinyMceEditor
18
- initialValue={value}
18
+ value={value}
19
19
  tinymceScriptSrc={jsUrl}
20
20
  init={{
21
21
  min_height: 300,
@@ -40,9 +40,9 @@ export class FieldEditor extends React.Component {
40
40
  });
41
41
  },
42
42
  }}
43
- onChange={e => {
43
+ onEditorChange={content => {
44
44
  if (onChange) {
45
- onChange(e.target.getContent());
45
+ onChange(content);
46
46
  }
47
47
  }}
48
48
  />
@@ -56,7 +56,7 @@ export class FieldTable extends React.Component {
56
56
  };
57
57
 
58
58
  onCellChange = (index, dataIndex, e) => {
59
- let {dataSource} = this.state;
59
+ const {dataSource} = this.state;
60
60
  const row = dataSource[index];
61
61
 
62
62
  let v = e;
@@ -64,10 +64,9 @@ export class FieldTable extends React.Component {
64
64
  v = e.target.value;
65
65
  }
66
66
 
67
- row[dataIndex] = v;
68
-
69
- dataSource = [...dataSource];
70
- this.setState({dataSource}, this.notifyParent);
67
+ const next = [...dataSource];
68
+ next[index] = {...row, [dataIndex]: v};
69
+ this.setState({dataSource: next}, this.notifyParent);
71
70
  };
72
71
 
73
72
  add = () => {
@@ -28,6 +28,13 @@ export class FieldUploadFile extends React.Component {
28
28
  this.state.fileList = this.convertInputToComponentValue(this.state.value);
29
29
  }
30
30
 
31
+ componentDidUpdate(prevProps) {
32
+ const next = {};
33
+ if (this.props.maxCount !== prevProps.maxCount) next.maxCount = this.props.maxCount;
34
+ if (this.props.cropImage !== prevProps.cropImage) next.cropImage = this.props.cropImage;
35
+ if (Object.keys(next).length > 0) this.setState(next);
36
+ }
37
+
31
38
  convertInputToComponentValue(value) {
32
39
  const list = [];
33
40
  if (value && value.length > 0) {
@@ -20,11 +20,12 @@ export class TreeUtils {
20
20
  return undefined;
21
21
  }
22
22
 
23
- static _getChild(treeNode, buffer) {
23
+ /** @private */
24
+ static getChildRecursive(treeNode, buffer) {
24
25
  if (treeNode.children != null && treeNode.children.length > 0) {
25
26
  treeNode.children.forEach((c) => {
26
27
  buffer.push(c);
27
- TreeUtils._getChild(c, buffer);
28
+ TreeUtils.getChildRecursive(c, buffer);
28
29
  });
29
30
  }
30
31
  return buffer;
@@ -35,7 +36,7 @@ export class TreeUtils {
35
36
  if (treeNodeList != null) {
36
37
  treeNodeList.forEach((t) => {
37
38
  buffer.push(t);
38
- TreeUtils._getChild(t, buffer);
39
+ TreeUtils.getChildRecursive(t, buffer);
39
40
  });
40
41
  }
41
42
  return buffer;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import {Carousel, Empty} from 'antd';
3
+ import {UrlUtils} from '../../utils';
3
4
 
4
5
 
5
6
  export class ViewFile extends React.Component {
@@ -14,7 +15,7 @@ export class ViewFile extends React.Component {
14
15
 
15
16
  const arr = fileId.split(',');
16
17
 
17
- const urlList = arr.map(id => 'admin/sysFile/preview/' + id);
18
+ const urlList = arr.map(id => UrlUtils.contextPath('/admin/sysFile/preview/' + id));
18
19
  const height = this.props.height;
19
20
 
20
21
  if(urlList.length === 1){
@@ -1,10 +1,8 @@
1
1
  import {Avatar, Dropdown} from "antd";
2
2
  import React from "react";
3
3
  import {history} from "umi";
4
- import {DeviceUtils, HttpUtils, MessageUtils, PageUtils, GlobalData} from "../../framework";
4
+ import {DeviceUtils, HttpUtils, MessageUtils, PageUtils, GlobalData} from "../../framework";
5
5
 
6
-
7
- const ID = 'header-right';
8
6
  export class HeaderRight extends React.Component {
9
7
 
10
8
  state = {
@@ -12,7 +10,6 @@ export class HeaderRight extends React.Component {
12
10
  };
13
11
 
14
12
  componentDidMount() {
15
- document.dispatchEvent(new CustomEvent('componentDidMount', {detail: ID}))
16
13
  if (DeviceUtils.isMobileDevice()) {
17
14
  this.setState({isMobileDevice: true})
18
15
  }
@@ -61,7 +61,8 @@ function isPublicPage(pathname, search) {
61
61
  }
62
62
 
63
63
  export function Layouts() {
64
- const {pathname, search} = useLocation();
64
+ const location = useLocation();
65
+ const {pathname, search} = location;
65
66
  const [siteInfoLoaded, setSiteInfoLoaded] = useState(false);
66
67
  const [loginChecked, setLoginChecked] = useState(false);
67
68
 
@@ -96,7 +97,7 @@ export function Layouts() {
96
97
  console.error('[Layout] 初始化应用失败');
97
98
  PageUtils.redirectToLogin();
98
99
  });
99
- }, [pathname]);
100
+ }, [location]);
100
101
 
101
102
  if (isPublic) return <ErrorBoundary minimal><AppWrapper><Outlet/></AppWrapper></ErrorBoundary>;
102
103
 
@@ -1,32 +1,11 @@
1
1
  import React from "react";
2
- import {HttpUtils, Page} from "../framework";
2
+ import {Page} from "../framework";
3
3
 
4
4
  export default class extends React.Component {
5
5
 
6
- state = {
7
- buildInfo: null,
8
- }
9
-
10
- componentDidMount() {
11
- HttpUtils.get('/admin/lib-info').then(data => {
12
- this.setState({buildInfo: data})
13
- }).catch(e => {
14
- console.error('[About] 加载版本信息失败:', e);
15
- })
16
- }
17
-
18
6
  render() {
19
- const {buildInfo} = this.state;
20
-
21
- return (
22
- <Page title="关于" description="了解系统版本与相关信息">
23
- <h1>关于</h1>
24
- {buildInfo && (
25
- <div style={{marginTop: '3em', color: 'rgba(0,0,0,0.45)', fontSize: 12}}>
26
- 依赖库版本 v{buildInfo.version} / {buildInfo.buildTime}
27
- </div>
28
- )}
29
- </Page>
30
- );
7
+ return <Page title="关于" description="了解系统版本与相关信息">
8
+ <h1>关于</h1>
9
+ </Page>
31
10
  }
32
11
  }