amis 1.3.5-beta.6 → 1.4.2-beta.1
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 +1 -1
- package/lib/Schema.d.ts +17 -0
- package/lib/Schema.js.map +1 -1
- package/lib/components/Alert.js +3 -1
- package/lib/components/Alert.js.map +2 -2
- package/lib/components/Badge.d.ts +16 -3
- package/lib/components/Badge.js +53 -4
- package/lib/components/Badge.js.map +2 -2
- package/lib/components/Button.d.ts +24 -22
- package/lib/components/Button.js +13 -7
- package/lib/components/Button.js.map +2 -2
- package/lib/components/Checkbox.d.ts +1 -1
- package/lib/components/Checkbox.js +1 -1
- package/lib/components/Checkbox.js.map +2 -2
- package/lib/components/Collapse.js +1 -1
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/DatePicker.js +1 -1
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.js +1 -1
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/Drawer.js +1 -1
- package/lib/components/Drawer.js.map +2 -2
- package/lib/components/InputBox.js +1 -1
- package/lib/components/InputBox.js.map +2 -2
- package/lib/components/Link.d.ts +91 -0
- package/lib/components/Link.js +44 -0
- package/lib/components/Link.js.map +13 -0
- package/lib/components/Modal.js +1 -1
- package/lib/components/Modal.js.map +2 -2
- package/lib/components/MonthRangePicker.js +1 -1
- package/lib/components/MonthRangePicker.js.map +2 -2
- package/lib/components/RichText.d.ts +6 -1
- package/lib/components/RichText.js +207 -8
- package/lib/components/RichText.js.map +2 -2
- package/lib/components/Select.d.ts +7 -0
- package/lib/components/Select.js +3 -0
- package/lib/components/Select.js.map +2 -2
- package/lib/components/SparkLine.d.ts +85 -84
- package/lib/components/SparkLine.js +2 -2
- package/lib/components/SparkLine.js.map +2 -2
- package/lib/components/Steps.d.ts +3 -3
- package/lib/components/Steps.js.map +1 -1
- package/lib/components/Toast.js +2 -2
- package/lib/components/Toast.js.map +2 -2
- package/lib/components/Tree.js +5 -3
- package/lib/components/Tree.js.map +2 -2
- package/lib/components/WithRemoteConfig.d.ts +8 -0
- package/lib/components/WithRemoteConfig.js +28 -2
- package/lib/components/WithRemoteConfig.js.map +2 -2
- package/lib/components/calendar/DaysView.js +2 -2
- package/lib/components/calendar/DaysView.js.map +2 -2
- package/lib/components/condition-builder/Field.js +0 -1
- package/lib/components/condition-builder/Field.js.map +2 -2
- package/lib/components/condition-builder/Value.js +2 -1
- package/lib/components/condition-builder/Value.js.map +2 -2
- package/lib/components/condition-builder/types.d.ts +5 -0
- package/lib/components/condition-builder/types.js.map +1 -1
- package/lib/components/icons.js +14 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/factory.d.ts +5 -1
- package/lib/factory.js +9 -4
- package/lib/factory.js.map +2 -2
- package/lib/helper.css.map +1 -1
- package/lib/icons/clock.js +10 -0
- package/lib/icons/loading-outline.js +7 -0
- package/lib/icons/status-close.js +11 -0
- package/lib/icons/status-fail.js +11 -0
- package/lib/icons/status-info.js +10 -0
- package/lib/icons/status-success.js +11 -0
- package/lib/icons/status-warning.js +10 -0
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +3 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +4 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +5 -2
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +16 -1
- package/lib/renderers/Action.js +5 -5
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/CRUD.d.ts +2 -2
- package/lib/renderers/CRUD.js +32 -26
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Collapse.d.ts +1 -1
- package/lib/renderers/Collapse.js +7 -3
- package/lib/renderers/Collapse.js.map +2 -2
- package/lib/renderers/Dialog.d.ts +0 -252
- package/lib/renderers/Dialog.js +1 -4
- package/lib/renderers/Dialog.js.map +2 -2
- package/lib/renderers/Drawer.js +0 -3
- package/lib/renderers/Drawer.js.map +2 -2
- package/lib/renderers/DropDownButton.d.ts +13 -1
- package/lib/renderers/DropDownButton.js +9 -5
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Form/ButtonGroupSelect.js +3 -0
- package/lib/renderers/Form/ButtonGroupSelect.js.map +2 -2
- package/lib/renderers/Form/Checkbox.d.ts +5 -0
- package/lib/renderers/Form/Checkbox.js +4 -0
- package/lib/renderers/Form/Checkbox.js.map +2 -2
- package/lib/renderers/Form/Combo.js +2 -2
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +0 -2
- package/lib/renderers/Form/Editor.d.ts +0 -2
- package/lib/renderers/Form/Editor.js +1 -1
- package/lib/renderers/Form/Editor.js.map +2 -2
- package/lib/renderers/Form/InputExcel.d.ts +5 -0
- package/lib/renderers/Form/InputExcel.js +24 -3
- package/lib/renderers/Form/InputExcel.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +2 -2
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.d.ts +8 -0
- package/lib/renderers/Form/InputImage.js +7 -4
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputTable.d.ts +23 -5
- package/lib/renderers/Form/InputTable.js +32 -3
- package/lib/renderers/Form/InputTable.js.map +2 -2
- package/lib/renderers/Form/Options.js +6 -3
- package/lib/renderers/Form/Options.js.map +2 -2
- package/lib/renderers/Form/Picker.js +2 -2
- package/lib/renderers/Form/Picker.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +2 -2
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/IFrame.js +2 -2
- package/lib/renderers/IFrame.js.map +2 -2
- package/lib/renderers/Image.d.ts +1 -0
- package/lib/renderers/Image.js +15 -1
- package/lib/renderers/Image.js.map +2 -2
- package/lib/renderers/Json.js +5 -1
- package/lib/renderers/Json.js.map +2 -2
- package/lib/renderers/Link.d.ts +16 -3
- package/lib/renderers/Link.js +16 -13
- package/lib/renderers/Link.js.map +2 -2
- package/lib/renderers/Log.d.ts +2 -2
- package/lib/renderers/Log.js +7 -1
- package/lib/renderers/Log.js.map +2 -2
- package/lib/renderers/Nav.d.ts +81 -25
- package/lib/renderers/Nav.js +272 -29
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Page.js +4 -1
- package/lib/renderers/Page.js.map +2 -2
- package/lib/renderers/Service.d.ts +10 -1
- package/lib/renderers/Service.js +85 -3
- package/lib/renderers/Service.js.map +2 -2
- package/lib/renderers/SparkLine.d.ts +4 -0
- package/lib/renderers/SparkLine.js.map +2 -2
- package/lib/renderers/Steps.d.ts +4 -4
- package/lib/renderers/Steps.js +5 -2
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
- package/lib/renderers/Table/ColumnToggler.js +216 -0
- package/lib/renderers/Table/ColumnToggler.js.map +13 -0
- package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
- package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
- package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
- package/lib/renderers/Table/TableBody.d.ts +5 -1
- package/lib/renderers/Table/TableBody.js +5 -1
- package/lib/renderers/Table/TableBody.js.map +2 -2
- package/lib/renderers/Table/TableCell.js +3 -1
- package/lib/renderers/Table/TableCell.js.map +2 -2
- package/lib/renderers/Table/TableContent.d.ts +1 -1
- package/lib/renderers/Table/TableContent.js +4 -0
- package/lib/renderers/Table/TableContent.js.map +2 -2
- package/lib/renderers/Table/index.d.ts +22 -4
- package/lib/renderers/Table/index.js +196 -81
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/store/app.d.ts +0 -1
- package/lib/store/combo.d.ts +0 -2
- package/lib/store/crud.d.ts +3 -3
- package/lib/store/crud.js +41 -36
- package/lib/store/crud.js.map +2 -2
- package/lib/store/form.d.ts +0 -1
- package/lib/store/modal.d.ts +1 -1
- package/lib/store/modal.js +4 -0
- package/lib/store/modal.js.map +2 -2
- package/lib/store/root.d.ts +0 -1
- package/lib/store/service.d.ts +0 -1
- package/lib/store/service.js +0 -13
- package/lib/store/service.js.map +2 -2
- package/lib/store/table.d.ts +258 -3
- package/lib/store/table.js +83 -7
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +941 -98
- package/lib/themes/ang.css +941 -98
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +941 -98
- package/lib/themes/antd.css +941 -98
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +1580 -411
- package/lib/themes/cxd.css +1580 -411
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +941 -98
- package/lib/themes/dark.css +941 -98
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +1580 -411
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/api.js +16 -4
- package/lib/utils/api.js.map +2 -2
- package/lib/utils/attachmentAdpator.d.ts +7 -0
- package/lib/utils/attachmentAdpator.js +82 -0
- package/lib/utils/attachmentAdpator.js.map +13 -0
- package/lib/utils/handleAction.d.ts +7 -0
- package/lib/utils/handleAction.js +30 -0
- package/lib/utils/handleAction.js.map +13 -0
- package/lib/utils/helper.d.ts +1 -1
- package/lib/utils/helper.js +3 -3
- package/lib/utils/helper.js.map +2 -2
- package/lib/utils/tpl-builtin.d.ts +1 -1
- package/lib/utils/tpl-builtin.js +25 -15
- package/lib/utils/tpl-builtin.js.map +2 -2
- package/lib/utils/validations.js +62 -5
- package/lib/utils/validations.js.map +2 -2
- package/package.json +1 -2
- package/schema.json +633 -273
- package/scss/_mixins.scss +29 -0
- package/scss/_properties.scss +64 -13
- package/scss/_utilities.scss +4 -0
- package/scss/components/_badge.scss +67 -2
- package/scss/components/_button.scss +34 -3
- package/scss/components/_collapse.scss +26 -8
- package/scss/components/_column-toggler.scss +234 -0
- package/scss/components/_dropdown.scss +2 -1
- package/scss/components/_image-gallery.scss +1 -1
- package/scss/components/_images.scss +2 -1
- package/scss/components/_link.scss +6 -0
- package/scss/components/_markdown.scss +266 -0
- package/scss/components/_nav.scss +236 -154
- package/scss/components/_page.scss +5 -4
- package/scss/components/_progress.scss +2 -0
- package/scss/components/_spinner.scss +6 -2
- package/scss/components/_steps.scss +1 -1
- package/scss/components/_table.scss +25 -1
- package/scss/components/form/_color.scss +1 -0
- package/scss/components/form/_date-range.scss +2 -0
- package/scss/components/form/_date.scss +2 -0
- package/scss/components/form/_fieldset.scss +1 -2
- package/scss/components/form/_file.scss +5 -4
- package/scss/components/form/_group.scss +4 -0
- package/scss/components/form/_image.scss +7 -2
- package/scss/components/form/_list.scss +1 -0
- package/scss/components/form/_location.scss +1 -1
- package/scss/components/form/_text.scss +13 -0
- package/scss/components/form/_textarea.scss +10 -0
- package/scss/components/form/_transfer.scss +2 -0
- package/scss/themes/_common.scss +3 -0
- package/scss/themes/_cxd-colors.scss +56 -0
- package/scss/themes/_cxd-variables.scss +217 -92
- package/scss/themes/cxd.scss +366 -0
- package/sdk/ang-ie11.css +1192 -176
- package/sdk/ang.css +1175 -118
- package/sdk/antd-ie11.css +1177 -163
- package/sdk/antd.css +1175 -118
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +67 -67
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +2538 -1222
- package/sdk/cxd.css +1825 -401
- package/sdk/dark-ie11.css +1192 -176
- package/sdk/dark.css +1175 -118
- package/sdk/exceljs.js +1 -1
- package/sdk/helper.css.map +1 -1
- package/sdk/ie11-patch.css +1 -0
- package/sdk/locale/de-DE.js +3 -0
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +22 -24
- package/sdk/rich-text.js +62 -64
- package/sdk/sdk-ie11.css +2538 -1222
- package/sdk/sdk.css +1825 -401
- package/sdk/sdk.js +1139 -1113
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/Schema.ts +18 -0
- package/src/components/Alert.tsx +3 -1
- package/src/components/Badge.tsx +124 -21
- package/src/components/Button.tsx +23 -7
- package/src/components/Checkbox.tsx +5 -2
- package/src/components/Collapse.tsx +14 -9
- package/src/components/DatePicker.tsx +1 -1
- package/src/components/DateRangePicker.tsx +23 -11
- package/src/components/Drawer.tsx +3 -2
- package/src/components/InputBox.tsx +1 -1
- package/src/components/Link.tsx +94 -0
- package/src/components/Modal.tsx +3 -2
- package/src/components/MonthRangePicker.tsx +10 -2
- package/src/components/RichText.tsx +244 -3
- package/src/components/Select.tsx +4 -0
- package/src/components/SparkLine.tsx +4 -1
- package/src/components/Steps.tsx +3 -3
- package/src/components/Toast.tsx +5 -5
- package/src/components/Tree.tsx +6 -8
- package/src/components/WithRemoteConfig.tsx +37 -2
- package/src/components/calendar/DaysView.tsx +2 -2
- package/src/components/condition-builder/Field.tsx +1 -2
- package/src/components/condition-builder/Value.tsx +3 -0
- package/src/components/condition-builder/types.ts +6 -0
- package/src/components/icons.tsx +15 -0
- package/src/factory.tsx +13 -3
- package/src/icons/clock.svg +1 -0
- package/src/icons/loading-outline.svg +4 -0
- package/src/icons/status-close.svg +10 -0
- package/src/icons/status-fail.svg +10 -0
- package/src/icons/status-info.svg +8 -0
- package/src/icons/status-success.svg +10 -0
- package/src/icons/status-warning.svg +8 -0
- package/src/locale/de-DE.ts +3 -0
- package/src/locale/en-US.ts +4 -1
- package/src/locale/zh-CN.ts +5 -2
- package/src/renderers/Action.tsx +71 -13
- package/src/renderers/CRUD.tsx +44 -59
- package/src/renderers/Collapse.tsx +6 -2
- package/src/renderers/Dialog.tsx +1 -5
- package/src/renderers/Drawer.tsx +0 -4
- package/src/renderers/DropDownButton.tsx +34 -12
- package/src/renderers/Form/ButtonGroupSelect.tsx +3 -0
- package/src/renderers/Form/Checkbox.tsx +8 -0
- package/src/renderers/Form/Combo.tsx +2 -3
- package/src/renderers/Form/Editor.tsx +19 -20
- package/src/renderers/Form/InputExcel.tsx +28 -3
- package/src/renderers/Form/InputFile.tsx +2 -1
- package/src/renderers/Form/InputImage.tsx +28 -10
- package/src/renderers/Form/InputTable.tsx +88 -9
- package/src/renderers/Form/Options.tsx +16 -5
- package/src/renderers/Form/Picker.tsx +3 -2
- package/src/renderers/Form/wrapControl.tsx +2 -2
- package/src/renderers/IFrame.tsx +2 -1
- package/src/renderers/Image.tsx +10 -0
- package/src/renderers/Json.tsx +10 -1
- package/src/renderers/Link.tsx +36 -11
- package/src/renderers/Log.tsx +16 -3
- package/src/renderers/Nav.tsx +340 -56
- package/src/renderers/Page.tsx +3 -1
- package/src/renderers/Service.tsx +101 -3
- package/src/renderers/SparkLine.tsx +5 -0
- package/src/renderers/Steps.tsx +12 -9
- package/src/renderers/Table/ColumnToggler.tsx +544 -0
- package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
- package/src/renderers/Table/TableBody.tsx +3 -2
- package/src/renderers/Table/TableCell.tsx +16 -1
- package/src/renderers/Table/TableContent.tsx +3 -1
- package/src/renderers/Table/index.tsx +240 -60
- package/src/store/crud.ts +34 -38
- package/src/store/modal.ts +4 -0
- package/src/store/service.ts +0 -19
- package/src/store/table.ts +103 -4
- package/src/utils/api.ts +24 -4
- package/src/utils/attachmentAdpator.ts +90 -0
- package/src/utils/handleAction.ts +41 -0
- package/src/utils/helper.ts +4 -3
- package/src/utils/tpl-builtin.ts +48 -17
- package/src/utils/validations.ts +80 -12
package/src/renderers/Link.tsx
CHANGED
@@ -4,6 +4,7 @@ import {BaseSchema, SchemaTpl} from '../Schema';
|
|
4
4
|
import {getPropValue} from '../utils/helper';
|
5
5
|
import {filter} from '../utils/tpl';
|
6
6
|
import {BadgeSchema, withBadge} from '../components/Badge';
|
7
|
+
import Link from '../components/Link';
|
7
8
|
|
8
9
|
/**
|
9
10
|
* Link 链接展示控件。
|
@@ -29,16 +30,32 @@ export interface LinkSchema extends BaseSchema {
|
|
29
30
|
* 角标
|
30
31
|
*/
|
31
32
|
badge?: BadgeSchema;
|
33
|
+
|
34
|
+
/**
|
35
|
+
* a标签原生target属性
|
36
|
+
*/
|
37
|
+
htmlTarget?: string;
|
38
|
+
|
39
|
+
/**
|
40
|
+
* 图标
|
41
|
+
*/
|
42
|
+
icon?: string;
|
43
|
+
|
44
|
+
/**
|
45
|
+
* 图标位置
|
46
|
+
*/
|
47
|
+
position?: string;
|
32
48
|
}
|
33
49
|
|
34
50
|
export interface LinkProps
|
35
51
|
extends RendererProps,
|
36
52
|
Omit<LinkSchema, 'type' | 'className'> {}
|
37
53
|
|
38
|
-
export class
|
54
|
+
export class LinkCmpt extends React.Component<LinkProps, object> {
|
39
55
|
static defaultProps = {
|
40
|
-
|
41
|
-
|
56
|
+
blank: true,
|
57
|
+
disabled: false,
|
58
|
+
htmlTarget: '_self'
|
42
59
|
};
|
43
60
|
|
44
61
|
render() {
|
@@ -48,25 +65,33 @@ export class LinkField extends React.Component<LinkProps, object> {
|
|
48
65
|
href,
|
49
66
|
classnames: cx,
|
50
67
|
blank,
|
68
|
+
disabled,
|
51
69
|
htmlTarget,
|
52
70
|
data,
|
53
71
|
render,
|
54
72
|
translate: __,
|
55
|
-
title
|
73
|
+
title,
|
74
|
+
icon,
|
75
|
+
position
|
56
76
|
} = this.props;
|
57
77
|
|
58
78
|
let value = getPropValue(this.props);
|
59
79
|
const finnalHref = href ? filter(href, data, '| raw') : '';
|
80
|
+
const text = body ? render('body', body) : finnalHref || value || __('link');
|
60
81
|
|
61
82
|
return (
|
62
|
-
<
|
63
|
-
|
64
|
-
|
65
|
-
|
83
|
+
<Link
|
84
|
+
className={className}
|
85
|
+
href={href}
|
86
|
+
body={text}
|
87
|
+
blank={blank}
|
88
|
+
disabled={disabled}
|
66
89
|
title={title}
|
90
|
+
htmlTarget={htmlTarget}
|
91
|
+
icon={icon}
|
92
|
+
position={position}
|
67
93
|
>
|
68
|
-
|
69
|
-
</a>
|
94
|
+
</Link>
|
70
95
|
);
|
71
96
|
}
|
72
97
|
}
|
@@ -76,4 +101,4 @@ export class LinkField extends React.Component<LinkProps, object> {
|
|
76
101
|
})
|
77
102
|
// @ts-ignore 类型没搞定
|
78
103
|
@withBadge
|
79
|
-
export class LinkFieldRenderer extends
|
104
|
+
export class LinkFieldRenderer extends LinkCmpt {}
|
package/src/renderers/Log.tsx
CHANGED
@@ -6,7 +6,7 @@ import {Renderer, RendererProps} from '../factory';
|
|
6
6
|
import {BaseSchema, SchemaTpl} from '../Schema';
|
7
7
|
import Ansi from 'ansi-to-react';
|
8
8
|
import {filter} from '../utils/tpl';
|
9
|
-
import {buildApi} from '../utils/api';
|
9
|
+
import {buildApi, isApiOutdated} from '../utils/api';
|
10
10
|
|
11
11
|
/**
|
12
12
|
* 日志展示组件
|
@@ -14,7 +14,7 @@ import {buildApi} from '../utils/api';
|
|
14
14
|
*/
|
15
15
|
export interface LogSchema extends BaseSchema {
|
16
16
|
/**
|
17
|
-
* 指定为
|
17
|
+
* 指定为 log 链接展示控件
|
18
18
|
*/
|
19
19
|
type: 'log';
|
20
20
|
|
@@ -100,10 +100,20 @@ export class Log extends React.Component<LogProps, LogState> {
|
|
100
100
|
}
|
101
101
|
}
|
102
102
|
|
103
|
-
componentDidUpdate() {
|
103
|
+
componentDidUpdate(prevProps: LogProps) {
|
104
104
|
if (this.autoScroll && this.logRef && this.logRef.current) {
|
105
105
|
this.logRef.current.scrollTop = this.logRef.current.scrollHeight;
|
106
106
|
}
|
107
|
+
if (
|
108
|
+
isApiOutdated(
|
109
|
+
prevProps.source,
|
110
|
+
this.props.source,
|
111
|
+
prevProps.data,
|
112
|
+
this.props.data
|
113
|
+
)
|
114
|
+
) {
|
115
|
+
this.loadLogs();
|
116
|
+
}
|
107
117
|
}
|
108
118
|
|
109
119
|
// 如果向上滚动就停止自动滚动,除非滚到底部
|
@@ -118,6 +128,9 @@ export class Log extends React.Component<LogProps, LogState> {
|
|
118
128
|
const {source, data, env, translate: __, encoding} = this.props;
|
119
129
|
// 因为这里返回结果是流式的,和普通 api 请求不一样,如果直接用 fetcher 经过 responseAdaptor 可能会导致出错,所以就直接 fetch 了
|
120
130
|
const api = buildApi(source, data);
|
131
|
+
if (!api.url) {
|
132
|
+
return;
|
133
|
+
}
|
121
134
|
const res = await fetch(api.url);
|
122
135
|
if (res.status === 200) {
|
123
136
|
const body = res.body;
|
package/src/renderers/Nav.tsx
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
import React from 'react';
|
2
|
+
import {findDOMNode} from 'react-dom';
|
2
3
|
import {Renderer, RendererEnv, RendererProps} from '../factory';
|
3
4
|
import getExprProperties from '../utils/filter-schema';
|
4
5
|
import {filter, evalExpression} from '../utils/tpl';
|
5
6
|
import {
|
7
|
+
guid,
|
6
8
|
autobind,
|
7
9
|
createObject,
|
8
10
|
findTree,
|
9
11
|
isUnfolded,
|
10
12
|
mapTree,
|
11
13
|
someTree,
|
12
|
-
spliceTree
|
14
|
+
spliceTree,
|
15
|
+
findTreeIndex
|
13
16
|
} from '../utils/helper';
|
14
17
|
import {ScopedContext, IScopedContext} from '../Scoped';
|
15
18
|
import {themeable, ThemeProps} from '../theme';
|
@@ -22,6 +25,8 @@ import {
|
|
22
25
|
} from '../components/WithRemoteConfig';
|
23
26
|
import {Payload} from '../types';
|
24
27
|
import Spinner from '../components/Spinner';
|
28
|
+
import {isEffectiveApi} from '../utils/api';
|
29
|
+
import {Badge, BadgeSchema} from '../components/Badge';
|
25
30
|
|
26
31
|
export type NavItemSchema = {
|
27
32
|
/**
|
@@ -81,6 +86,31 @@ export interface NavSchema extends BaseSchema {
|
|
81
86
|
* true 为垂直排列,false 为水平排列类似如 tabs。
|
82
87
|
*/
|
83
88
|
stacked?: boolean;
|
89
|
+
|
90
|
+
/**
|
91
|
+
* 更多操作菜单列表
|
92
|
+
*/
|
93
|
+
itemActions?: SchemaCollection;
|
94
|
+
|
95
|
+
/**
|
96
|
+
* 可拖拽
|
97
|
+
*/
|
98
|
+
draggable?: boolean;
|
99
|
+
|
100
|
+
/**
|
101
|
+
* 保存排序的 api
|
102
|
+
*/
|
103
|
+
saveOrderApi?: SchemaApi;
|
104
|
+
|
105
|
+
/**
|
106
|
+
* 角标
|
107
|
+
*/
|
108
|
+
itemBadge?: BadgeSchema;
|
109
|
+
|
110
|
+
/**
|
111
|
+
* 仅允许同层级拖拽
|
112
|
+
*/
|
113
|
+
dragOnSameLevel?: boolean;
|
84
114
|
}
|
85
115
|
|
86
116
|
export interface Link {
|
@@ -97,23 +127,44 @@ export interface Link {
|
|
97
127
|
loading?: boolean;
|
98
128
|
loaded?: boolean;
|
99
129
|
[propName: string]: any;
|
130
|
+
itemBadge?: BadgeSchema;
|
100
131
|
}
|
101
132
|
export interface Links extends Array<Link> {}
|
102
133
|
|
103
134
|
export interface NavigationState {
|
104
|
-
links
|
135
|
+
links?: Links;
|
105
136
|
error?: string;
|
137
|
+
dropIndicator?: {
|
138
|
+
top: number;
|
139
|
+
left: number;
|
140
|
+
width: number;
|
141
|
+
height?: number;
|
142
|
+
opacity?: number;
|
143
|
+
};
|
106
144
|
}
|
107
145
|
|
108
146
|
export interface NavigationProps
|
109
147
|
extends ThemeProps,
|
110
148
|
Omit<NavSchema, 'type' | 'className'> {
|
111
149
|
onSelect?: (item: Link) => void | false;
|
112
|
-
onToggle?: (item: Link) => void;
|
150
|
+
onToggle?: (item: Link, forceFold?: boolean) => void;
|
151
|
+
onDragUpdate?: (dropInfo: IDropInfo) => void;
|
113
152
|
togglerClassName?: string;
|
114
153
|
links?: Array<Link>;
|
115
154
|
loading?: boolean;
|
116
|
-
render: RendererProps['render']
|
155
|
+
render: RendererProps['render'];
|
156
|
+
env: RendererEnv;
|
157
|
+
data: Object;
|
158
|
+
reload?: any;
|
159
|
+
}
|
160
|
+
|
161
|
+
export interface IDropInfo {
|
162
|
+
dragLink: Link | null;
|
163
|
+
nodeId: string;
|
164
|
+
position: string;
|
165
|
+
rect: DOMRect;
|
166
|
+
height: number;
|
167
|
+
left: number;
|
117
168
|
}
|
118
169
|
|
119
170
|
export class Navigation extends React.Component<
|
@@ -124,14 +175,154 @@ export class Navigation extends React.Component<
|
|
124
175
|
indentSize: 24
|
125
176
|
};
|
126
177
|
|
178
|
+
dragNode: {
|
179
|
+
node: HTMLElement;
|
180
|
+
link: Link | null;
|
181
|
+
} | null;
|
182
|
+
dropInfo: IDropInfo | null;
|
183
|
+
startPoint: {
|
184
|
+
y: number;
|
185
|
+
x: number;
|
186
|
+
} = {
|
187
|
+
y: 0,
|
188
|
+
x: 0
|
189
|
+
};
|
190
|
+
state: NavigationState = {};
|
191
|
+
|
127
192
|
@autobind
|
128
193
|
handleClick(link: Link) {
|
129
194
|
this.props.onSelect?.(link);
|
130
195
|
}
|
131
196
|
|
132
197
|
@autobind
|
133
|
-
toggleLink(target: Link) {
|
134
|
-
this.props.onToggle?.(target);
|
198
|
+
toggleLink(target: Link, forceFold?: boolean) {
|
199
|
+
this.props.onToggle?.(target, forceFold);
|
200
|
+
}
|
201
|
+
|
202
|
+
@autobind
|
203
|
+
getDropInfo(e: DragEvent, id: string, depth: number): IDropInfo {
|
204
|
+
const {dragOnSameLevel, indentSize} = this.props;
|
205
|
+
let rect = (e.target as HTMLElement).getBoundingClientRect();
|
206
|
+
const dragLink = this.dragNode?.link as Link;
|
207
|
+
const {top, height, width} = rect;
|
208
|
+
let {clientY, clientX} = e;
|
209
|
+
const left = depth * (parseInt(indentSize as any, 10) ?? 24);
|
210
|
+
const deltaX = left + width * .2;
|
211
|
+
let position;
|
212
|
+
if (clientY >= top + height / 2 ) {
|
213
|
+
position = 'bottom';
|
214
|
+
} else {
|
215
|
+
position = 'top';
|
216
|
+
}
|
217
|
+
if (!dragOnSameLevel && position === 'bottom' && clientX >= this.startPoint.x + deltaX) {
|
218
|
+
position = 'self';
|
219
|
+
}
|
220
|
+
return {
|
221
|
+
nodeId: id,
|
222
|
+
dragLink,
|
223
|
+
position,
|
224
|
+
rect,
|
225
|
+
height,
|
226
|
+
left
|
227
|
+
};
|
228
|
+
}
|
229
|
+
@autobind
|
230
|
+
updateDropIndicator(e: DragEvent) {
|
231
|
+
const {dragOnSameLevel} = this.props;
|
232
|
+
const target = e.target as HTMLElement; // a标签
|
233
|
+
const targetId = target.getAttribute('data-id') as string;
|
234
|
+
const targetDepth = Number(target.getAttribute('data-depth'));
|
235
|
+
if (dragOnSameLevel
|
236
|
+
&& this.dragNode?.node.parentElement !== target.parentElement?.parentElement
|
237
|
+
) {
|
238
|
+
this.setState({dropIndicator: undefined});
|
239
|
+
this.dropInfo = null;
|
240
|
+
return;
|
241
|
+
}
|
242
|
+
this.dropInfo = this.getDropInfo(e, targetId, targetDepth);
|
243
|
+
let {position, rect, dragLink, height, left} = this.dropInfo;
|
244
|
+
if (targetId === dragLink?.__id) {
|
245
|
+
this.setState({dropIndicator: undefined});
|
246
|
+
this.dropInfo = null;
|
247
|
+
return;
|
248
|
+
}
|
249
|
+
const ul = (findDOMNode(this) as HTMLElement).firstChild as HTMLElement;
|
250
|
+
if (position === 'self') {
|
251
|
+
this.setState({
|
252
|
+
dropIndicator: {
|
253
|
+
top: rect.top - ul.getBoundingClientRect().top,
|
254
|
+
left,
|
255
|
+
width: ul.getBoundingClientRect().width - left,
|
256
|
+
height,
|
257
|
+
opacity: .2
|
258
|
+
}
|
259
|
+
});
|
260
|
+
} else {
|
261
|
+
this.setState({
|
262
|
+
dropIndicator: {
|
263
|
+
top: (position === 'bottom' ? rect.top + rect.height : rect.top) - ul.getBoundingClientRect().top,
|
264
|
+
left,
|
265
|
+
width: ul.getBoundingClientRect().width - left
|
266
|
+
}
|
267
|
+
});
|
268
|
+
}
|
269
|
+
}
|
270
|
+
|
271
|
+
@autobind
|
272
|
+
handleDragStart(link: Link) {
|
273
|
+
return (e: React.DragEvent) => {
|
274
|
+
e.stopPropagation();
|
275
|
+
const currentTarget = e.currentTarget as HTMLElement;
|
276
|
+
e.dataTransfer.effectAllowed = 'copyMove';
|
277
|
+
e.dataTransfer.setDragImage(currentTarget, 0, 0);
|
278
|
+
this.dragNode = {
|
279
|
+
node: currentTarget,
|
280
|
+
link: link
|
281
|
+
};
|
282
|
+
this.dropInfo = null;
|
283
|
+
this.startPoint = {
|
284
|
+
x: e.clientX,
|
285
|
+
y: e.clientY
|
286
|
+
};
|
287
|
+
currentTarget.addEventListener('dragend', this.handleDragEnd);
|
288
|
+
document.body.addEventListener('dragover', this.handleDragOver);
|
289
|
+
};
|
290
|
+
}
|
291
|
+
|
292
|
+
@autobind
|
293
|
+
handleDragOver(e: DragEvent) {
|
294
|
+
e.preventDefault();
|
295
|
+
e.stopPropagation();
|
296
|
+
if (!this.dragNode) {
|
297
|
+
return;
|
298
|
+
}
|
299
|
+
const target = e.target as HTMLElement;
|
300
|
+
const id = target.getAttribute('data-id');
|
301
|
+
if (!id) {
|
302
|
+
return;
|
303
|
+
}
|
304
|
+
this.updateDropIndicator(e);
|
305
|
+
}
|
306
|
+
|
307
|
+
@autobind
|
308
|
+
handleDragEnd(e: DragEvent) {
|
309
|
+
e.preventDefault();
|
310
|
+
e.stopPropagation();
|
311
|
+
this.setState({
|
312
|
+
dropIndicator: undefined
|
313
|
+
});
|
314
|
+
const currentTarget = e.currentTarget as HTMLElement;
|
315
|
+
const id = currentTarget.getAttribute('data-id');
|
316
|
+
let nodeId = this.dropInfo?.nodeId;
|
317
|
+
if (!this.dropInfo || !nodeId || id === nodeId) {
|
318
|
+
return;
|
319
|
+
}
|
320
|
+
currentTarget.removeEventListener('dragend', this.handleDragEnd);
|
321
|
+
document.body.removeEventListener('dragover', this.handleDragOver);
|
322
|
+
|
323
|
+
this.props.onDragUpdate?.(this.dropInfo);
|
324
|
+
this.dragNode = null;
|
325
|
+
this.dropInfo = null;
|
135
326
|
}
|
136
327
|
|
137
328
|
renderItem(link: Link, index: number, depth = 1) {
|
@@ -139,72 +330,107 @@ export class Navigation extends React.Component<
|
|
139
330
|
return null;
|
140
331
|
}
|
141
332
|
const isActive: boolean = !!link.active;
|
142
|
-
const {
|
333
|
+
const {
|
334
|
+
disabled,
|
335
|
+
togglerClassName,
|
336
|
+
classnames: cx,
|
337
|
+
indentSize,
|
338
|
+
render,
|
339
|
+
itemActions,
|
340
|
+
draggable,
|
341
|
+
links,
|
342
|
+
itemBadge,
|
343
|
+
data: defaultData
|
344
|
+
} = this.props;
|
143
345
|
const hasSub =
|
144
346
|
(link.defer && !link.loaded) || (link.children && link.children.length);
|
145
|
-
|
146
347
|
return (
|
147
348
|
<li
|
148
|
-
key={
|
349
|
+
key={link.__id}
|
350
|
+
data-id={link.__id}
|
149
351
|
className={cx('Nav-item', link.className, {
|
150
352
|
'is-disabled': disabled || link.disabled || link.loading,
|
151
353
|
'is-active': isActive,
|
152
354
|
'is-unfolded': link.unfolded,
|
153
355
|
'has-sub': hasSub
|
154
356
|
})}
|
357
|
+
onDragStart={this.handleDragStart(link)}
|
155
358
|
>
|
156
|
-
<
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
359
|
+
<Badge classnames={cx} badge={itemBadge} data={createObject(defaultData, link)}>
|
360
|
+
<a
|
361
|
+
data-id={link.__id}
|
362
|
+
data-depth={depth}
|
363
|
+
onClick={this.handleClick.bind(this, link)}
|
364
|
+
style={{paddingLeft: depth * (parseInt(indentSize as any, 10) ?? 24)}}
|
365
|
+
>
|
366
|
+
{!disabled && draggable && links && links.length > 1 ? (
|
367
|
+
<div className={cx('Nav-itemDrager')}
|
368
|
+
draggable
|
369
|
+
onMouseDown={e => {this.toggleLink(link, true); e.stopPropagation()}}
|
370
|
+
>
|
371
|
+
<Icon icon="drag-bar" className="icon" />
|
372
|
+
</div>
|
373
|
+
) : null}
|
374
|
+
{link.loading ? (
|
375
|
+
<Spinner
|
376
|
+
size="sm"
|
377
|
+
show
|
378
|
+
icon="reload"
|
379
|
+
spinnerClassName={cx('Nav-spinner')}
|
380
|
+
/>
|
381
|
+
) : hasSub ? (
|
382
|
+
<span
|
383
|
+
onClick={() => this.toggleLink(link)}
|
384
|
+
className={cx('Nav-itemToggler', togglerClassName)}
|
385
|
+
>
|
386
|
+
<Icon icon="caret" className="icon" />
|
387
|
+
</span>
|
388
|
+
) : null}
|
389
|
+
{generateIcon(cx, link.icon, 'Nav-itemIcon')}
|
390
|
+
{
|
391
|
+
link.label && (typeof link.label === 'string'
|
392
|
+
? link.label
|
393
|
+
: render('inline', link.label as SchemaCollection))
|
394
|
+
}
|
395
|
+
</a>
|
161
396
|
{
|
162
|
-
|
163
|
-
|
164
|
-
|
397
|
+
// 更多操作
|
398
|
+
itemActions
|
399
|
+
? <div className={cx('Nav-item-atcions')}>
|
400
|
+
{
|
401
|
+
render('inline', itemActions, {data: createObject(defaultData, link)})
|
402
|
+
}
|
403
|
+
</div> : null
|
165
404
|
}
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
/>
|
175
|
-
) : hasSub ? (
|
176
|
-
<span
|
177
|
-
onClick={() => this.toggleLink(link)}
|
178
|
-
className={cx('Nav-itemToggler', togglerClassName)}
|
179
|
-
>
|
180
|
-
<Icon icon="caret" className="icon" />
|
181
|
-
</span>
|
182
|
-
) : null}
|
183
|
-
|
184
|
-
{Array.isArray(link.children) && link.children.length ? (
|
185
|
-
<ul className={cx('Nav-subItems')}>
|
186
|
-
{link.children.map((link, index) =>
|
187
|
-
this.renderItem(link, index, depth + 1)
|
188
|
-
)}
|
189
|
-
</ul>
|
190
|
-
) : null}
|
405
|
+
{Array.isArray(link.children) && link.children.length ? (
|
406
|
+
<ul className={cx('Nav-subItems')}>
|
407
|
+
{link.children.map((link, index) =>
|
408
|
+
this.renderItem(link, index, depth + 1)
|
409
|
+
)}
|
410
|
+
</ul>
|
411
|
+
) : null}
|
412
|
+
</Badge>
|
191
413
|
</li>
|
192
414
|
);
|
193
415
|
}
|
194
416
|
|
195
417
|
render(): JSX.Element {
|
196
418
|
const {className, stacked, classnames: cx, links, loading} = this.props;
|
197
|
-
|
419
|
+
const {dropIndicator} = this.state;
|
198
420
|
return (
|
199
|
-
<
|
200
|
-
className={cx('Nav', className, stacked ? 'Nav--stacked' : 'Nav--tabs')}
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
421
|
+
<div className={cx('Nav')}>
|
422
|
+
<ul className={cx('Nav-list', className, stacked ? 'Nav-list--stacked' : 'Nav-list--tabs')}>
|
423
|
+
{Array.isArray(links)
|
424
|
+
? links.map((item, index) => this.renderItem(item, index))
|
425
|
+
: null}
|
426
|
+
|
427
|
+
<Spinner show={!!loading} overlay icon="reload" />
|
428
|
+
</ul>
|
429
|
+
{(dropIndicator
|
430
|
+
? <div className={cx('Nav-dropIndicator')} style={dropIndicator} />
|
431
|
+
: null
|
432
|
+
)}
|
433
|
+
</div>
|
208
434
|
);
|
209
435
|
}
|
210
436
|
}
|
@@ -253,7 +479,8 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
|
|
253
479
|
link.hasOwnProperty('to') &&
|
254
480
|
env &&
|
255
481
|
env.isCurrentUrl(filter(link.to as string, data))
|
256
|
-
))
|
482
|
+
)),
|
483
|
+
__id: guid()
|
257
484
|
};
|
258
485
|
|
259
486
|
item.unfolded =
|
@@ -310,12 +537,14 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
|
|
310
537
|
data?: any;
|
311
538
|
unfoldedField?: string;
|
312
539
|
foldedField?: string;
|
540
|
+
reload?: any;
|
313
541
|
}
|
314
542
|
> {
|
315
543
|
constructor(props: any) {
|
316
544
|
super(props);
|
317
545
|
this.toggleLink = this.toggleLink.bind(this);
|
318
546
|
this.handleSelect = this.handleSelect.bind(this);
|
547
|
+
this.dragUpdate = this.dragUpdate.bind(this);
|
319
548
|
}
|
320
549
|
|
321
550
|
componentDidMount() {
|
@@ -332,7 +561,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
|
|
332
561
|
}
|
333
562
|
}
|
334
563
|
|
335
|
-
toggleLink(target: Link) {
|
564
|
+
toggleLink(target: Link, forceFold?: boolean) {
|
336
565
|
const {config, updateConfig, deferLoad} = this.props;
|
337
566
|
|
338
567
|
if (target.defer && !target.loaded) {
|
@@ -343,7 +572,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
|
|
343
572
|
target === link
|
344
573
|
? {
|
345
574
|
...link,
|
346
|
-
unfolded: !link.unfolded
|
575
|
+
unfolded: forceFold ? false : !link.unfolded
|
347
576
|
}
|
348
577
|
: link
|
349
578
|
),
|
@@ -352,6 +581,60 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
|
|
352
581
|
}
|
353
582
|
}
|
354
583
|
|
584
|
+
async dragUpdate(dropInfo: IDropInfo) {
|
585
|
+
let links = this.props.config;
|
586
|
+
const {nodeId, dragLink, position} = dropInfo;
|
587
|
+
if (dragLink) {
|
588
|
+
// 删除原节点
|
589
|
+
const sourceIdx = findTreeIndex(links, link => link.__id === dragLink.__id) as number[];
|
590
|
+
links = spliceTree(links, sourceIdx, 1);
|
591
|
+
|
592
|
+
if (position === 'self') {
|
593
|
+
// 插入到对应节点的children中
|
594
|
+
mapTree(links, (link) => {
|
595
|
+
if (link.__id === nodeId) {
|
596
|
+
if (!link.children) {
|
597
|
+
link.children = [];
|
598
|
+
}
|
599
|
+
link.children.push(dragLink);
|
600
|
+
}
|
601
|
+
return link;
|
602
|
+
})
|
603
|
+
} else {
|
604
|
+
// 找到需要插入的节点
|
605
|
+
const idx = findTreeIndex(links, link => link.__id === nodeId) as number[];
|
606
|
+
// 插入节点之后
|
607
|
+
if (position === 'bottom') {
|
608
|
+
idx.push(idx.pop() as number + 1);
|
609
|
+
}
|
610
|
+
links = spliceTree(links, idx, 0, dragLink);
|
611
|
+
}
|
612
|
+
}
|
613
|
+
this.props.updateConfig(links, 'update');
|
614
|
+
await this.saveOrder(mapTree(links, (link: Link) => {
|
615
|
+
// 清除内部加的字段
|
616
|
+
for (let key in link) {
|
617
|
+
if (/^__.*$/.test(key)) {
|
618
|
+
delete link[key];
|
619
|
+
}
|
620
|
+
}
|
621
|
+
return link;
|
622
|
+
}));
|
623
|
+
}
|
624
|
+
|
625
|
+
async saveOrder(links: Links) {
|
626
|
+
const {saveOrderApi, env, data, reload} = this.props;
|
627
|
+
if (saveOrderApi && isEffectiveApi(saveOrderApi)) {
|
628
|
+
await env.fetcher(saveOrderApi as SchemaApi,
|
629
|
+
createObject(data, {data: links}),
|
630
|
+
{method: 'post'}
|
631
|
+
);
|
632
|
+
reload();
|
633
|
+
} else {
|
634
|
+
env.alert('NAV saveOrderApi is required!');
|
635
|
+
}
|
636
|
+
}
|
637
|
+
|
355
638
|
handleSelect(link: Link) {
|
356
639
|
const {onSelect, env, data} = this.props;
|
357
640
|
if (onSelect && onSelect(link) === false) {
|
@@ -372,7 +655,6 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
|
|
372
655
|
|
373
656
|
render() {
|
374
657
|
const {loading, config, deferLoad, updateConfig, ...rest} = this.props;
|
375
|
-
|
376
658
|
return (
|
377
659
|
<ThemedNavigation
|
378
660
|
{...rest}
|
@@ -381,6 +663,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
|
|
381
663
|
disabled={loading}
|
382
664
|
onSelect={this.handleSelect}
|
383
665
|
onToggle={this.toggleLink}
|
666
|
+
onDragUpdate={this.dragUpdate}
|
384
667
|
/>
|
385
668
|
);
|
386
669
|
}
|
@@ -442,6 +725,7 @@ export class NavigationRenderer extends React.Component<RendererProps> {
|
|
442
725
|
return (
|
443
726
|
<ConditionBuilderWithRemoteOptions
|
444
727
|
{...rest}
|
728
|
+
reload={this.reload}
|
445
729
|
remoteConfigRef={this.remoteConfigRef}
|
446
730
|
/>
|
447
731
|
);
|
package/src/renderers/Page.tsx
CHANGED
@@ -371,6 +371,8 @@ export default class Page extends React.Component<PageProps> {
|
|
371
371
|
JSON.stringify(props.cssVars) !== JSON.stringify(prevProps.cssVars)
|
372
372
|
) {
|
373
373
|
this.updateVarStyle();
|
374
|
+
} else if (props.defaultData !== prevProps.defaultData) {
|
375
|
+
store.reInitData(props.defaultData);
|
374
376
|
}
|
375
377
|
}
|
376
378
|
|
@@ -663,7 +665,7 @@ export default class Page extends React.Component<PageProps> {
|
|
663
665
|
onAction: this.handleAction,
|
664
666
|
onQuery: initApi ? this.handleQuery : undefined,
|
665
667
|
onChange: this.handleChange,
|
666
|
-
|
668
|
+
pageLoading: store.loading
|
667
669
|
};
|
668
670
|
|
669
671
|
const hasAside = Array.isArray(regions)
|