amis 1.9.1-beta.12 → 1.9.1-beta.21
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -1
- package/lib/components/AssociatedSelection.d.ts +40 -40
- package/lib/components/Badge.d.ts +1 -1
- package/lib/components/Badge.js.map +1 -1
- package/lib/components/ChainedSelection.d.ts +40 -40
- package/lib/components/GroupedSelection.d.ts +40 -40
- package/lib/components/GroupedSelection.js +3 -2
- package/lib/components/GroupedSelection.js.map +2 -2
- package/lib/components/PickerContainer.d.ts +1 -0
- package/lib/components/PickerContainer.js +4 -4
- package/lib/components/PickerContainer.js.map +2 -2
- package/lib/components/Radios.d.ts +10 -10
- package/lib/components/ResultBox.d.ts +44 -40
- package/lib/components/ResultBox.js +40 -6
- package/lib/components/ResultBox.js.map +2 -2
- package/lib/components/ResultList.d.ts +43 -53
- package/lib/components/ResultList.js +34 -22
- package/lib/components/ResultList.js.map +2 -2
- package/lib/components/ResultTableList.d.ts +40 -40
- package/lib/components/ResultTableList.js +16 -17
- package/lib/components/ResultTableList.js.map +2 -2
- package/lib/components/ResultTreeList.d.ts +40 -40
- package/lib/components/Select.d.ts +498 -294
- package/lib/components/Select.js +58 -10
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Selection.d.ts +41 -40
- package/lib/components/Selection.js.map +2 -2
- package/lib/components/TableSelection.d.ts +42 -40
- package/lib/components/TableSelection.js +7 -2
- package/lib/components/TableSelection.js.map +2 -2
- package/lib/components/TabsTransfer.d.ts +2 -2
- package/lib/components/TabsTransfer.js.map +1 -1
- package/lib/components/TooltipWrapper.d.ts +1 -1
- package/lib/components/TooltipWrapper.js.map +2 -2
- package/lib/components/Transfer.d.ts +40 -40
- package/lib/components/Transfer.js +1 -1
- package/lib/components/Transfer.js.map +2 -2
- package/lib/components/TransferDropDown.d.ts +43 -40
- package/lib/components/TransferDropDown.js +2 -2
- package/lib/components/TransferDropDown.js.map +2 -2
- package/lib/components/TreeSelection.d.ts +40 -40
- package/lib/components/TreeSelection.js +3 -2
- package/lib/components/TreeSelection.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +45 -41
- package/lib/components/formula/Editor.js +8 -2
- package/lib/components/formula/Editor.js.map +2 -2
- package/lib/components/formula/Picker.d.ts +43 -41
- package/lib/components/formula/Picker.js +40 -20
- package/lib/components/formula/Picker.js.map +2 -2
- package/lib/components/formula/VariableList.d.ts +2 -0
- package/lib/components/formula/VariableList.js +15 -5
- package/lib/components/formula/VariableList.js.map +2 -2
- package/lib/components/index.d.ts +3 -1
- package/lib/components/index.js +5 -1
- package/lib/components/index.js.map +2 -2
- package/lib/components/schema-editor/SchemaVariableList.d.ts +1 -0
- package/lib/components/schema-editor/SchemaVariableList.js +2 -2
- package/lib/components/schema-editor/SchemaVariableList.js.map +2 -2
- package/lib/components/schema-editor/SchemaVariableListPicker.d.ts +1 -0
- package/lib/components/schema-editor/SchemaVariableListPicker.js +2 -2
- package/lib/components/schema-editor/SchemaVariableListPicker.js.map +2 -2
- package/lib/components/table/HeadCellFilter.js +4 -1
- package/lib/components/table/HeadCellFilter.js.map +2 -2
- package/lib/components/table/HeadCellSort.js +30 -24
- package/lib/components/table/HeadCellSort.js.map +2 -2
- package/lib/components/table/index.d.ts +6 -3
- package/lib/components/table/index.js +72 -86
- package/lib/components/table/index.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +1 -1
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +1 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +1 -1
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +21 -4
- package/lib/renderers/Action.js +44 -20
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/Breadcrumb.js +2 -2
- package/lib/renderers/Breadcrumb.js.map +2 -2
- package/lib/renderers/CRUD.js +3 -0
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Form/InputFormula.d.ts +5 -1
- package/lib/renderers/Form/InputFormula.js +2 -2
- package/lib/renderers/Form/InputFormula.js.map +2 -2
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputTag.d.ts +8 -0
- package/lib/renderers/Form/InputTag.js +2 -2
- package/lib/renderers/Form/InputTag.js.map +2 -2
- package/lib/renderers/Form/InputTree.d.ts +4 -0
- package/lib/renderers/Form/InputTree.js +2 -2
- package/lib/renderers/Form/InputTree.js.map +2 -2
- package/lib/renderers/Form/Picker.d.ts +1 -1
- package/lib/renderers/Form/Picker.js +38 -23
- package/lib/renderers/Form/Picker.js.map +2 -2
- package/lib/renderers/Form/Select.d.ts +19 -0
- package/lib/renderers/Form/Select.js +2 -2
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/Transfer.d.ts +1 -0
- package/lib/renderers/Form/Transfer.js +4 -0
- package/lib/renderers/Form/Transfer.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +10 -10
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/QRCode.d.ts +16 -0
- package/lib/renderers/QRCode.js +25 -1
- package/lib/renderers/QRCode.js.map +2 -2
- package/lib/renderers/Service.js +0 -1
- package/lib/renderers/Service.js.map +2 -2
- package/lib/renderers/Steps.d.ts +2 -2
- package/lib/renderers/Steps.js +1 -1
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/exportExcel.js +50 -36
- package/lib/renderers/Table/exportExcel.js.map +2 -2
- package/lib/renderers/Table/index.js +2 -1
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.d.ts +1 -1
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +38 -24
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.js.map +2 -2
- package/lib/renderers/Table-v2/index.d.ts +10 -4
- package/lib/renderers/Table-v2/index.js +109 -58
- package/lib/renderers/Table-v2/index.js.map +2 -2
- package/lib/renderers/Tabs.d.ts +6 -2
- package/lib/renderers/Tabs.js +21 -0
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/store/table-v2.d.ts +210 -4
- package/lib/store/table-v2.js +82 -5
- package/lib/store/table-v2.js.map +2 -2
- package/lib/themes/ang-ie11.css +140 -44
- package/lib/themes/ang.css +140 -33
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +140 -44
- package/lib/themes/antd.css +140 -33
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +297 -197
- package/lib/themes/cxd.css +151 -38
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +140 -44
- package/lib/themes/dark.css +140 -33
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +297 -197
- package/lib/themes/default.css +151 -38
- package/lib/themes/default.css.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/formula.js +7 -5
- package/lib/utils/formula.js.map +2 -2
- package/lib/utils/helper.d.ts +1 -0
- package/lib/utils/helper.js +11 -1
- package/lib/utils/helper.js.map +2 -2
- package/package.json +2 -2
- package/schema.json +103 -35
- package/scss/_properties.scss +11 -6
- package/scss/components/_formula.scss +45 -4
- package/scss/components/_modal.scss +1 -1
- package/scss/components/_result-box.scss +34 -2
- package/scss/components/form/_checks.scss +47 -44
- package/scss/components/form/_date.scss +28 -19
- package/scss/components/form/_icon-picker.scss +10 -6
- package/scss/components/form/_select.scss +77 -34
- package/scss/components/form/_selection.scss +9 -6
- package/scss/components/form/_switch.scss +1 -0
- package/scss/components/form/_text.scss +2 -0
- package/scss/components/form/_transfer.scss +2 -1
- package/scss/themes/_cxd-variables.scss +3 -1
- package/scss/themes/cxd.scss +9 -6
- package/sdk/ang-ie11.css +159 -46
- package/sdk/ang.css +159 -35
- package/sdk/antd-ie11.css +159 -46
- package/sdk/antd.css +159 -35
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +317 -199
- package/sdk/cxd.css +171 -40
- package/sdk/dark-ie11.css +159 -46
- package/sdk/dark.css +159 -35
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +2 -2
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +16 -16
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +317 -199
- package/sdk/sdk.css +171 -40
- package/sdk/sdk.js +1353 -1351
- 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/components/Badge.tsx +1 -1
- package/src/components/GroupedSelection.tsx +3 -2
- package/src/components/PickerContainer.tsx +13 -8
- package/src/components/ResultBox.tsx +95 -11
- package/src/components/ResultList.tsx +48 -51
- package/src/components/ResultTableList.tsx +32 -33
- package/src/components/Select.tsx +138 -17
- package/src/components/Selection.tsx +1 -0
- package/src/components/TableSelection.tsx +15 -8
- package/src/components/TabsTransfer.tsx +2 -2
- package/src/components/TooltipWrapper.tsx +20 -14
- package/src/components/Transfer.tsx +0 -4
- package/src/components/TransferDropDown.tsx +9 -1
- package/src/components/TreeSelection.tsx +2 -1
- package/src/components/formula/Editor.tsx +17 -2
- package/src/components/formula/Picker.tsx +44 -7
- package/src/components/formula/VariableList.tsx +36 -2
- package/src/components/index.tsx +4 -0
- package/src/components/schema-editor/SchemaVariableList.tsx +4 -2
- package/src/components/schema-editor/SchemaVariableListPicker.tsx +4 -1
- package/src/components/table/HeadCellFilter.tsx +4 -1
- package/src/components/table/HeadCellSort.tsx +1 -1
- package/src/components/table/index.tsx +66 -90
- package/src/locale/de-DE.ts +2 -2
- package/src/locale/en-US.ts +2 -2
- package/src/locale/zh-CN.ts +1 -1
- package/src/renderers/Action.tsx +64 -19
- package/src/renderers/Breadcrumb.tsx +11 -12
- package/src/renderers/CRUD.tsx +2 -0
- package/src/renderers/Form/InputFormula.tsx +9 -2
- package/src/renderers/Form/InputImage.tsx +4 -2
- package/src/renderers/Form/InputTag.tsx +14 -0
- package/src/renderers/Form/InputTree.tsx +7 -0
- package/src/renderers/Form/Picker.tsx +11 -1
- package/src/renderers/Form/Select.tsx +32 -1
- package/src/renderers/Form/Transfer.tsx +6 -0
- package/src/renderers/Form/wrapControl.tsx +10 -10
- package/src/renderers/QRCode.tsx +50 -1
- package/src/renderers/Service.tsx +0 -1
- package/src/renderers/Steps.tsx +5 -5
- package/src/renderers/Table/exportExcel.ts +29 -12
- package/src/renderers/Table/index.tsx +9 -7
- package/src/renderers/Table-v2/HeadCellSearchDropdown.tsx +14 -9
- package/src/renderers/Table-v2/index.tsx +130 -58
- package/src/renderers/Tabs.tsx +33 -3
- package/src/store/table-v2.ts +104 -7
- package/src/types.ts +2 -1
- package/src/utils/formula.ts +7 -5
- package/src/utils/helper.ts +12 -2
@@ -6,6 +6,7 @@ import Tabs, {Tab} from '../Tabs';
|
|
6
6
|
import TreeSelection from '../TreeSelection';
|
7
7
|
import SearchBox from '../SearchBox';
|
8
8
|
import {findTree} from '../../utils/helper';
|
9
|
+
import {Badge} from '../Badge';
|
9
10
|
|
10
11
|
import type {VariableItem} from './Editor';
|
11
12
|
import type {ItemRenderStates} from '../Selection';
|
@@ -20,7 +21,9 @@ export interface VariableListProps extends ThemeProps {
|
|
20
21
|
selectMode?: 'list' | 'tree' | 'tabs';
|
21
22
|
tabsMode?: TabsMode;
|
22
23
|
itemRender?: (option: Option, states: ItemRenderStates) => JSX.Element;
|
24
|
+
placeholderRender?: (props: any) => JSX.Element | null;
|
23
25
|
onSelect?: (item: VariableItem) => void;
|
26
|
+
selfVariableName?: string;
|
24
27
|
}
|
25
28
|
|
26
29
|
function VariableList(props: VariableListProps) {
|
@@ -32,7 +35,9 @@ function VariableList(props: VariableListProps) {
|
|
32
35
|
classPrefix: themePrefix,
|
33
36
|
itemClassName,
|
34
37
|
selectMode,
|
35
|
-
onSelect
|
38
|
+
onSelect,
|
39
|
+
placeholderRender,
|
40
|
+
selfVariableName
|
36
41
|
} = props;
|
37
42
|
const [filterVars, setFilterVars] = React.useState(list);
|
38
43
|
const classPrefix = `${themePrefix}FormulaEditor-VariableList`;
|
@@ -42,7 +47,32 @@ function VariableList(props: VariableListProps) {
|
|
42
47
|
: (option: Option, states: ItemRenderStates): JSX.Element => {
|
43
48
|
return (
|
44
49
|
<span className={cx(`${classPrefix}-item`, itemClassName)}>
|
45
|
-
|
50
|
+
{
|
51
|
+
option.label && option.label === selfVariableName && (
|
52
|
+
<Badge
|
53
|
+
classnames={cx}
|
54
|
+
badge={{
|
55
|
+
mode: "text",
|
56
|
+
text: "self",
|
57
|
+
offset: [
|
58
|
+
15,
|
59
|
+
2
|
60
|
+
]
|
61
|
+
}}
|
62
|
+
>
|
63
|
+
<label>
|
64
|
+
{option.label}
|
65
|
+
</label>
|
66
|
+
</Badge>
|
67
|
+
)
|
68
|
+
}
|
69
|
+
{
|
70
|
+
option.label && option.label !== selfVariableName && (
|
71
|
+
<label>
|
72
|
+
{option.label}
|
73
|
+
</label>
|
74
|
+
)
|
75
|
+
}
|
46
76
|
{option?.tag ? (
|
47
77
|
<span className={cx(`${classPrefix}-item-tag`)}>
|
48
78
|
{option.tag}
|
@@ -90,9 +120,11 @@ function VariableList(props: VariableListProps) {
|
|
90
120
|
classPrefix={`${classPrefix}-sub-`}
|
91
121
|
className={cx(`${classPrefix}-sub`)}
|
92
122
|
itemRender={itemRender}
|
123
|
+
placeholderRender={placeholderRender}
|
93
124
|
selectMode={item.selectMode}
|
94
125
|
data={item.children!}
|
95
126
|
onSelect={onSelect}
|
127
|
+
selfVariableName={selfVariableName}
|
96
128
|
/>
|
97
129
|
</Tab>
|
98
130
|
))}
|
@@ -102,6 +134,7 @@ function VariableList(props: VariableListProps) {
|
|
102
134
|
{renderSearchBox()}
|
103
135
|
<TreeSelection
|
104
136
|
itemRender={itemRender}
|
137
|
+
placeholderRender={placeholderRender}
|
105
138
|
className={cx(`${classPrefix}-base`, 'is-scrollable')}
|
106
139
|
multiple={false}
|
107
140
|
options={filterVars}
|
@@ -113,6 +146,7 @@ function VariableList(props: VariableListProps) {
|
|
113
146
|
{renderSearchBox()}
|
114
147
|
<GroupedSelection
|
115
148
|
itemRender={itemRender}
|
149
|
+
placeholderRender={placeholderRender}
|
116
150
|
className={cx(`${classPrefix}-base`, 'is-scrollable')}
|
117
151
|
multiple={false}
|
118
152
|
options={filterVars}
|
package/src/components/index.tsx
CHANGED
@@ -61,7 +61,9 @@ import PullRefresh from './PullRefresh';
|
|
61
61
|
import Table from './table';
|
62
62
|
import SchemaVariableListPicker from './schema-editor/SchemaVariableListPicker';
|
63
63
|
import SchemaVariableList from './schema-editor/SchemaVariableList';
|
64
|
+
import VariableList from './formula/VariableList';
|
64
65
|
import FormulaPicker from './formula/Picker';
|
66
|
+
import PickerContainer from './PickerContainer';
|
65
67
|
import InputJSONSchema from './json-schema';
|
66
68
|
|
67
69
|
export {
|
@@ -128,6 +130,8 @@ export {
|
|
128
130
|
Table,
|
129
131
|
SchemaVariableListPicker,
|
130
132
|
SchemaVariableList,
|
133
|
+
VariableList,
|
134
|
+
PickerContainer,
|
131
135
|
FormulaPicker,
|
132
136
|
InputJSONSchema
|
133
137
|
};
|
@@ -13,6 +13,7 @@ export interface SchemaVariableListProps extends LocaleProps, ThemeProps {
|
|
13
13
|
value?: string;
|
14
14
|
onSelect?: (value: string, schema: JSONSchema) => void;
|
15
15
|
selectMode?: 'list' | 'tree' | 'tabs';
|
16
|
+
placeholderRender?: (props: any) => JSX.Element | null;
|
16
17
|
beforeBuildVariables?: (dataSchema: DataSchema) => void;
|
17
18
|
}
|
18
19
|
|
@@ -77,15 +78,16 @@ export class SchemaVariableList extends React.Component<
|
|
77
78
|
}
|
78
79
|
|
79
80
|
render() {
|
80
|
-
const {selectMode} = this.props;
|
81
|
+
const {selectMode, value, placeholderRender} = this.props;
|
81
82
|
|
82
83
|
return (
|
83
84
|
<VariableList
|
84
85
|
data={this.state.variables}
|
85
|
-
value={
|
86
|
+
value={value}
|
86
87
|
onSelect={this.handleSelect}
|
87
88
|
selectMode={selectMode || 'tree'}
|
88
89
|
itemRender={this.itemRender}
|
90
|
+
placeholderRender={placeholderRender}
|
89
91
|
/>
|
90
92
|
);
|
91
93
|
}
|
@@ -17,6 +17,7 @@ export interface SchemaVariableListPickerProps extends SchemaVariableListProps {
|
|
17
17
|
onConfirm?: (value?: any) => void;
|
18
18
|
onCancel?: () => void;
|
19
19
|
onPickerOpen?: (props: any) => any;
|
20
|
+
placeholderRender?: (props: any) => JSX.Element | null;
|
20
21
|
}
|
21
22
|
|
22
23
|
export class SchemaVariableListPicker extends React.Component<SchemaVariableListPickerProps> {
|
@@ -31,7 +32,8 @@ export class SchemaVariableListPicker extends React.Component<SchemaVariableList
|
|
31
32
|
title,
|
32
33
|
selectMode,
|
33
34
|
beforeBuildVariables,
|
34
|
-
onPickerOpen
|
35
|
+
onPickerOpen,
|
36
|
+
placeholderRender
|
35
37
|
} = this.props;
|
36
38
|
|
37
39
|
return (
|
@@ -51,6 +53,7 @@ export class SchemaVariableListPicker extends React.Component<SchemaVariableList
|
|
51
53
|
schemas={stateSchemas ?? schemas}
|
52
54
|
selectMode={selectMode}
|
53
55
|
beforeBuildVariables={beforeBuildVariables}
|
56
|
+
placeholderRender={placeholderRender}
|
54
57
|
/>
|
55
58
|
) : (
|
56
59
|
<></>
|
@@ -180,7 +180,10 @@ export class HeadCellFilter extends React.Component<Props, State> {
|
|
180
180
|
const payload = {[column.key]: selectedKeys};
|
181
181
|
|
182
182
|
if (onFilter) {
|
183
|
-
const prevented = await onFilter(
|
183
|
+
const prevented = await onFilter({
|
184
|
+
filterName: column.key,
|
185
|
+
filterValue: selectedKeys?.join(',')
|
186
|
+
});
|
184
187
|
if (prevented) {
|
185
188
|
return;
|
186
189
|
}
|
@@ -10,7 +10,6 @@ import find from 'lodash/find';
|
|
10
10
|
import isEqual from 'lodash/isEqual';
|
11
11
|
import filter from 'lodash/filter';
|
12
12
|
import intersection from 'lodash/intersection';
|
13
|
-
import cloneDeep from 'lodash/cloneDeep';
|
14
13
|
import Sortable from 'sortablejs';
|
15
14
|
|
16
15
|
import {themeable, ClassNamesFn, ThemeProps} from '../../theme';
|
@@ -325,12 +324,15 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
325
324
|
constructor(props: TableProps) {
|
326
325
|
super(props);
|
327
326
|
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
327
|
+
if (props.rowSelection) {
|
328
|
+
const selectedResult = this.getSelectedRows(
|
329
|
+
props.dataSource,
|
330
|
+
props.rowSelection?.selectedRowKeys
|
331
|
+
);
|
332
|
+
|
333
|
+
this.selectedRows = selectedResult.selectedRows;
|
334
|
+
this.unSelectedRows = selectedResult.unSelectedRows;
|
335
|
+
}
|
334
336
|
|
335
337
|
this.state = {
|
336
338
|
selectedRowKeys: props.rowSelection
|
@@ -361,6 +363,8 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
361
363
|
tdColumns: Array<TdProps>;
|
362
364
|
// 表格当前选中行
|
363
365
|
selectedRows: Array<any>;
|
366
|
+
// 表格当前未选中行
|
367
|
+
unSelectedRows: Array<any>;
|
364
368
|
// 拖拽排序
|
365
369
|
sortable: Sortable;
|
366
370
|
// 记录点击起始横坐标
|
@@ -393,6 +397,7 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
393
397
|
selectedRowKeys: Array<string | number>
|
394
398
|
) {
|
395
399
|
const selectedRows: Array<any> = [];
|
400
|
+
const unSelectedRows: Array<any> = [];
|
396
401
|
dataSource.forEach(data => {
|
397
402
|
if (
|
398
403
|
find(
|
@@ -401,10 +406,12 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
401
406
|
)
|
402
407
|
) {
|
403
408
|
selectedRows.push(data);
|
409
|
+
} else {
|
410
|
+
unSelectedRows.push(data);
|
404
411
|
}
|
405
412
|
});
|
406
413
|
|
407
|
-
return selectedRows;
|
414
|
+
return {selectedRows, unSelectedRows};
|
408
415
|
}
|
409
416
|
|
410
417
|
updateTableBodyFixed() {
|
@@ -498,10 +505,12 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
498
505
|
// 选择项发生了变化触发
|
499
506
|
if (!isEqual(prevState.selectedRowKeys, this.state.selectedRowKeys)) {
|
500
507
|
// 更新保存的已选择行数据
|
501
|
-
|
508
|
+
const selectedResult = this.getSelectedRows(
|
502
509
|
this.state.dataSource,
|
503
510
|
this.state.selectedRowKeys
|
504
511
|
);
|
512
|
+
this.selectedRows = selectedResult.selectedRows;
|
513
|
+
this.unSelectedRows = selectedResult.unSelectedRows;
|
505
514
|
|
506
515
|
const {rowSelection} = this.props;
|
507
516
|
rowSelection &&
|
@@ -526,10 +535,12 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
526
535
|
this.setState({
|
527
536
|
selectedRowKeys: this.props.rowSelection.selectedRowKeys
|
528
537
|
});
|
529
|
-
|
538
|
+
const selectedResult = this.getSelectedRows(
|
530
539
|
this.state.dataSource,
|
531
540
|
this.state.selectedRowKeys
|
532
541
|
);
|
542
|
+
this.selectedRows = selectedResult.selectedRows;
|
543
|
+
this.unSelectedRows = selectedResult.unSelectedRows;
|
533
544
|
}
|
534
545
|
}
|
535
546
|
|
@@ -599,37 +610,6 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
599
610
|
this.destroyDragging();
|
600
611
|
}
|
601
612
|
|
602
|
-
exchange(fromIndex: number, toIndex: number, item: any) {
|
603
|
-
const {scroll, headSummary} = this.props;
|
604
|
-
// 如果有头部总结行 fromIndex就会+1
|
605
|
-
if ((!scroll || (scroll && !scroll.y)) && headSummary) {
|
606
|
-
fromIndex = fromIndex - 1;
|
607
|
-
}
|
608
|
-
|
609
|
-
const index = toIndex - fromIndex;
|
610
|
-
|
611
|
-
const levels = item.getAttribute('row-levels');
|
612
|
-
const rowIndex = +item.getAttribute('row-index');
|
613
|
-
|
614
|
-
const dataSource = cloneDeep(this.state.dataSource);
|
615
|
-
const levelsArray = levels ? levels.split(',') : [];
|
616
|
-
const childrenColumnName = this.getChildrenColumnName();
|
617
|
-
let data: Array<any> = dataSource;
|
618
|
-
let i = 0;
|
619
|
-
while (i < levelsArray.length) {
|
620
|
-
data = data[levelsArray[i]][childrenColumnName];
|
621
|
-
i++;
|
622
|
-
}
|
623
|
-
|
624
|
-
if (data && data.length > 0) {
|
625
|
-
const row = cloneDeep(data[rowIndex]);
|
626
|
-
data.splice(rowIndex, 1);
|
627
|
-
data.splice(rowIndex + index, 0, row);
|
628
|
-
}
|
629
|
-
|
630
|
-
return data;
|
631
|
-
}
|
632
|
-
|
633
613
|
initDragging() {
|
634
614
|
const {classnames: cx, onDrag} = this.props;
|
635
615
|
|
@@ -666,14 +646,9 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
666
646
|
return;
|
667
647
|
}
|
668
648
|
|
669
|
-
const
|
670
|
-
|
671
|
-
|
672
|
-
const prevented = await onDrag(data);
|
673
|
-
if (prevented) {
|
674
|
-
return;
|
675
|
-
}
|
676
|
-
}
|
649
|
+
const rowLevels = e.item.getAttribute('row-levels');
|
650
|
+
|
651
|
+
onDrag && onDrag(e.oldIndex, e.newIndex, rowLevels ? rowLevels.split(',') : []);
|
677
652
|
}
|
678
653
|
});
|
679
654
|
}
|
@@ -1037,9 +1012,8 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1037
1012
|
const selectedRowKeys = value ? allRowKeys : [];
|
1038
1013
|
if (onSelectAll) {
|
1039
1014
|
const prevented = await onSelectAll(
|
1040
|
-
value,
|
1041
|
-
selectedRowKeys,
|
1042
1015
|
selectedRows,
|
1016
|
+
value ? [] : selectedRows,
|
1043
1017
|
changeRows
|
1044
1018
|
);
|
1045
1019
|
if (prevented) {
|
@@ -1152,9 +1126,16 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1152
1126
|
);
|
1153
1127
|
}
|
1154
1128
|
|
1155
|
-
onRowClick(event: React.ChangeEvent<any>, record?: any, rowIndex?: number) {
|
1129
|
+
async onRowClick(event: React.ChangeEvent<any>, record?: any, rowIndex?: number) {
|
1156
1130
|
const {rowSelection, onRow} = this.props;
|
1157
1131
|
|
1132
|
+
if (onRow && onRow.onRowClick) {
|
1133
|
+
const prevented = await onRow.onRowClick(event, record, rowIndex);
|
1134
|
+
if (prevented) {
|
1135
|
+
return;
|
1136
|
+
}
|
1137
|
+
}
|
1138
|
+
|
1158
1139
|
if (rowSelection && rowSelection.type && rowSelection.rowClick) {
|
1159
1140
|
const defaultKey = this.getRowSelectionKeyField();
|
1160
1141
|
|
@@ -1165,10 +1146,6 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1165
1146
|
|
1166
1147
|
this.selectedSingleRow(!isSelected, record);
|
1167
1148
|
}
|
1168
|
-
|
1169
|
-
if (record && onRow) {
|
1170
|
-
onRow.onRowClick && onRow.onRowClick(event, record, rowIndex);
|
1171
|
-
}
|
1172
1149
|
}
|
1173
1150
|
|
1174
1151
|
onRowMouseEnter(
|
@@ -1350,42 +1327,41 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1350
1327
|
const defaultKey = this.getRowSelectionKeyField();
|
1351
1328
|
const isRadio = rowSelection && rowSelection.type === 'radio';
|
1352
1329
|
|
1353
|
-
|
1354
|
-
const prevented = await onSelect(
|
1355
|
-
data,
|
1356
|
-
value,
|
1357
|
-
this.selectedRows,
|
1358
|
-
this.state.selectedRowKeys
|
1359
|
-
);
|
1360
|
-
if (prevented) {
|
1361
|
-
return;
|
1362
|
-
}
|
1363
|
-
}
|
1364
|
-
|
1330
|
+
let selectedRowKeys = [];
|
1365
1331
|
if (value) {
|
1366
1332
|
if (isRadio) {
|
1367
|
-
|
1333
|
+
selectedRowKeys = [data[defaultKey]];
|
1368
1334
|
} else {
|
1369
|
-
|
1370
|
-
selectedRowKeys
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
].filter((key, i, a) => a.indexOf(key) === i)
|
1375
|
-
}));
|
1335
|
+
selectedRowKeys = [
|
1336
|
+
...this.state.selectedRowKeys,
|
1337
|
+
data[defaultKey],
|
1338
|
+
...this.getDataChildrenKeys(data)
|
1339
|
+
].filter((key, i, a) => a.indexOf(key) === i)
|
1376
1340
|
}
|
1377
1341
|
} else {
|
1378
1342
|
if (!isRadio) {
|
1379
|
-
this.
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1343
|
+
selectedRowKeys = this.state.selectedRowKeys.filter(
|
1344
|
+
key =>
|
1345
|
+
![data[defaultKey], ...this.getDataChildrenKeys(data)].includes(
|
1346
|
+
key
|
1347
|
+
)
|
1348
|
+
)
|
1349
|
+
}
|
1350
|
+
}
|
1351
|
+
|
1352
|
+
if (onSelect) {
|
1353
|
+
const selectedResult = this.getSelectedRows(this.state.dataSource, selectedRowKeys);
|
1354
|
+
const prevented = await onSelect(
|
1355
|
+
selectedResult.selectedRows,
|
1356
|
+
selectedRowKeys,
|
1357
|
+
selectedResult.unSelectedRows
|
1358
|
+
);
|
1359
|
+
if (prevented) {
|
1360
|
+
return;
|
1387
1361
|
}
|
1388
1362
|
}
|
1363
|
+
|
1364
|
+
this.setState({selectedRowKeys});
|
1389
1365
|
}
|
1390
1366
|
|
1391
1367
|
renderRow(data: any, rowIndex: number, levels: Array<number>) {
|
@@ -1396,6 +1372,7 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1396
1372
|
draggable,
|
1397
1373
|
indentSize,
|
1398
1374
|
rowClassName,
|
1375
|
+
keyField,
|
1399
1376
|
lineHeight // 是否设置了固定行高
|
1400
1377
|
} = this.props;
|
1401
1378
|
|
@@ -1515,10 +1492,11 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1515
1492
|
key => key === data[defaultKey]
|
1516
1493
|
);
|
1517
1494
|
const hasChildrenChecked = this.hasCheckedChildrenRows(data);
|
1495
|
+
const isRadio = rowSelection && rowSelection.type === 'radio';
|
1518
1496
|
|
1519
1497
|
return [
|
1520
1498
|
<tr
|
1521
|
-
key={rowIndex}
|
1499
|
+
key={`${data[keyField || 'key'] || rowIndex}`} // 可能会拖拽排序,就不能用rowIndex作为key了,否则显示会有问题
|
1522
1500
|
row-index={rowIndex}
|
1523
1501
|
row-levels={levels.join(',')}
|
1524
1502
|
className={cx(
|
@@ -1546,8 +1524,8 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1546
1524
|
<CheckBox
|
1547
1525
|
name={'Table-checkbox'}
|
1548
1526
|
type={rowSelection.type || 'checkbox'}
|
1549
|
-
partial={hasChildrenChecked && !isChecked}
|
1550
|
-
checked={hasChildrenChecked || isChecked}
|
1527
|
+
partial={!isRadio && hasChildrenChecked && !isChecked}
|
1528
|
+
checked={isRadio ? isChecked : (hasChildrenChecked || isChecked)}
|
1551
1529
|
onChange={(value, shift) => {
|
1552
1530
|
if (!(rowSelection && rowSelection.rowClick)) {
|
1553
1531
|
this.selectedSingleRow(value, data);
|
@@ -1603,9 +1581,7 @@ export class Table extends React.PureComponent<TableProps, TableState> {
|
|
1603
1581
|
</Cell>
|
1604
1582
|
</tr>
|
1605
1583
|
) : (
|
1606
|
-
this.state.dataSource.map((data, index) =>
|
1607
|
-
return this.renderRow(data, index, []);
|
1608
|
-
})
|
1584
|
+
this.state.dataSource.map((data, index) => this.renderRow(data, index, []))
|
1609
1585
|
)}
|
1610
1586
|
</tbody>
|
1611
1587
|
);
|
package/src/locale/de-DE.ts
CHANGED
@@ -132,7 +132,7 @@ register('de-DE', {
|
|
132
132
|
'File.retry': 'Wiederholen',
|
133
133
|
'File.start': 'Hochladen beginnen',
|
134
134
|
'File.upload': 'Hochladen',
|
135
|
-
'Image.upload':'Hochladen',
|
135
|
+
'Image.upload': 'Hochladen',
|
136
136
|
'File.uploadFailed': 'Zurückgegebene Daten der Upload-API sind leer',
|
137
137
|
'File.uploading': 'Wird hochgeladen...',
|
138
138
|
'FormItem.autoUpdateloadFaild': 'Die Schnittstelle hat einen Fehler zurückgegeben, bitte sorgfältig prüfen',
|
@@ -333,5 +333,5 @@ register('de-DE', {
|
|
333
333
|
'JSONSchema.description': 'Description',
|
334
334
|
'JSONSchema.key': 'Key',
|
335
335
|
'JSONSchema.array_items': 'Items',
|
336
|
-
'TimeNow': 'Jetzt'
|
336
|
+
'TimeNow': 'Jetzt'
|
337
337
|
});
|
package/src/locale/en-US.ts
CHANGED
@@ -134,7 +134,7 @@ register('en-US', {
|
|
134
134
|
'File.sizeLimit': 'The maximum file size is {{maxSize}} B',
|
135
135
|
'File.start': 'Start upload',
|
136
136
|
'File.upload': 'Upload',
|
137
|
-
'Image.upload':'Upload image',
|
137
|
+
'Image.upload': 'Upload image',
|
138
138
|
'File.uploadFailed': 'return data of udpload api is empty',
|
139
139
|
'File.uploading': 'Uploading',
|
140
140
|
'FormItem.autoUpdateloadFaild': 'return data of autoUpdate api is error',
|
@@ -336,5 +336,5 @@ register('en-US', {
|
|
336
336
|
'JSONSchema.description': 'Description',
|
337
337
|
'JSONSchema.key': 'Key',
|
338
338
|
'JSONSchema.array_items': 'Items',
|
339
|
-
'TimeNow': 'Now'
|
339
|
+
'TimeNow': 'Now'
|
340
340
|
});
|
package/src/locale/zh-CN.ts
CHANGED
@@ -202,7 +202,7 @@ register('zh-CN', {
|
|
202
202
|
'Select.clearAll': '移除所有',
|
203
203
|
'Select.createLabel': '新增选项',
|
204
204
|
'Select.placeholder': '请选择',
|
205
|
-
'Select.searchPromptText': '
|
205
|
+
'Select.searchPromptText': '搜索',
|
206
206
|
'sort': '排序',
|
207
207
|
'SubForm.button': '设置',
|
208
208
|
'SubForm.editDetail': '编辑详情',
|
package/src/renderers/Action.tsx
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import hotkeys from 'hotkeys-js';
|
3
|
+
import omit from 'lodash/omit';
|
4
|
+
import pick from 'lodash/pick';
|
3
5
|
import {Renderer, RendererProps} from '../factory';
|
4
6
|
import {filter} from '../utils/tpl';
|
5
7
|
import Button from '../components/Button';
|
6
|
-
import
|
7
|
-
import
|
8
|
+
import {ScopedContext} from '../Scoped';
|
9
|
+
import {isObject} from '../utils/helper';
|
10
|
+
|
11
|
+
import type {IScopedContext} from '../Scoped';
|
12
|
+
import type {Action as ICmptAction} from '../types';
|
8
13
|
|
9
14
|
export interface ButtonSchema extends BaseSchema {
|
10
15
|
/**
|
@@ -407,7 +412,8 @@ const ActionProps = [
|
|
407
412
|
'copyFormat',
|
408
413
|
'payload',
|
409
414
|
'requireSelected',
|
410
|
-
'countDown'
|
415
|
+
'countDown',
|
416
|
+
'fileName'
|
411
417
|
];
|
412
418
|
import {filterContents} from './Remark';
|
413
419
|
import {ClassNamesFn, themeable, ThemeProps} from '../theme';
|
@@ -431,7 +437,6 @@ import {generateIcon} from '../utils/icon';
|
|
431
437
|
import {BadgeSchema, withBadge} from '../components/Badge';
|
432
438
|
import {normalizeApi, str2AsyncFunction} from '../utils/api';
|
433
439
|
import {TooltipWrapper} from '../components/TooltipWrapper';
|
434
|
-
import handleAction from '../utils/handleAction';
|
435
440
|
|
436
441
|
// 构造一个假的 React 事件避免可能的报错,主要用于快捷键功能
|
437
442
|
// 来自 https://stackoverflow.com/questions/27062455/reactjs-can-i-create-my-own-syntheticevent
|
@@ -851,28 +856,68 @@ export class Action extends React.Component<ActionProps, ActionState> {
|
|
851
856
|
|
852
857
|
export default themeable(Action);
|
853
858
|
|
859
|
+
export type ActionRendererProps = RendererProps &
|
860
|
+
Omit<ActionProps, 'onAction' | 'isCurrentUrl' | 'tooltipContainer'> & {
|
861
|
+
onAction: (
|
862
|
+
e: React.MouseEvent<any> | string | void | null,
|
863
|
+
action: object,
|
864
|
+
data: any
|
865
|
+
) => void;
|
866
|
+
btnDisabled?: boolean;
|
867
|
+
};
|
868
|
+
|
854
869
|
@Renderer({
|
855
870
|
type: 'action'
|
856
871
|
})
|
857
872
|
// @ts-ignore 类型没搞定
|
858
873
|
@withBadge
|
859
|
-
export class ActionRenderer extends React.Component<
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
874
|
+
export class ActionRenderer extends React.Component<ActionRendererProps> {
|
875
|
+
static contextType = ScopedContext;
|
876
|
+
|
877
|
+
constructor(props: ActionRendererProps, scoped: IScopedContext) {
|
878
|
+
super(props);
|
879
|
+
|
880
|
+
scoped.registerComponent(this);
|
881
|
+
}
|
882
|
+
|
883
|
+
componentWillUnmount() {
|
884
|
+
const scoped = this.context as IScopedContext;
|
885
|
+
scoped.unRegisterComponent(this);
|
886
|
+
}
|
887
|
+
|
888
|
+
/**
|
889
|
+
* 动作处理
|
890
|
+
*/
|
891
|
+
doAction(
|
892
|
+
action: ICmptAction,
|
893
|
+
args: {
|
894
|
+
value?: string | {[key: string]: string};
|
895
|
+
}
|
896
|
+
) {
|
897
|
+
const actionType = action?.actionType;
|
898
|
+
|
899
|
+
if (actionType === 'click') {
|
900
|
+
this.handleAction(actionType, action);
|
868
901
|
}
|
869
|
-
|
902
|
+
}
|
903
|
+
|
870
904
|
@autobind
|
871
|
-
async handleAction(
|
905
|
+
async handleAction(
|
906
|
+
e: React.MouseEvent<any> | string | void | null,
|
907
|
+
action: any
|
908
|
+
) {
|
872
909
|
const {env, onAction, data, ignoreConfirm, dispatchEvent} = this.props;
|
910
|
+
let mergedData = data;
|
911
|
+
|
912
|
+
if (action?.actionType === 'click' && isObject(action?.args)) {
|
913
|
+
mergedData = createObject(data, action.args);
|
914
|
+
}
|
873
915
|
|
874
916
|
// 触发渲染器事件
|
875
|
-
const rendererEvent = await dispatchEvent(
|
917
|
+
const rendererEvent = await dispatchEvent(
|
918
|
+
e as React.MouseEvent<any> | string,
|
919
|
+
mergedData
|
920
|
+
);
|
876
921
|
|
877
922
|
// 阻止原有动作执行
|
878
923
|
if (rendererEvent?.prevented) {
|
@@ -880,14 +925,14 @@ export class ActionRenderer extends React.Component<
|
|
880
925
|
}
|
881
926
|
|
882
927
|
if (!ignoreConfirm && action.confirmText && env.confirm) {
|
883
|
-
let confirmed = await env.confirm(filter(action.confirmText,
|
928
|
+
let confirmed = await env.confirm(filter(action.confirmText, mergedData));
|
884
929
|
if (confirmed) {
|
885
|
-
await onAction(e, action,
|
930
|
+
await onAction(e, action, mergedData);
|
886
931
|
} else if (action.countDown) {
|
887
932
|
throw new Error('cancel');
|
888
933
|
}
|
889
934
|
} else {
|
890
|
-
await onAction(e, action,
|
935
|
+
await onAction(e, action, mergedData);
|
891
936
|
}
|
892
937
|
}
|
893
938
|
|