amis 1.9.1-beta.12 → 1.9.1-beta.18
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/Select.js +2 -2
- package/lib/components/Select.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +44 -40
- package/lib/components/formula/Editor.js +16 -5
- package/lib/components/formula/Editor.js.map +2 -2
- package/lib/components/formula/Picker.d.ts +88 -41
- package/lib/components/formula/Picker.js +50 -24
- package/lib/components/formula/Picker.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/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 +6 -2
- package/lib/renderers/Form/InputFormula.js +4 -3
- package/lib/renderers/Form/InputFormula.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/wrapControl.js +10 -10
- package/lib/renderers/Form/wrapControl.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/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 +59 -17
- package/lib/themes/ang.css +54 -12
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +59 -17
- package/lib/themes/antd.css +54 -12
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +210 -168
- package/lib/themes/cxd.css +55 -13
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +59 -17
- package/lib/themes/dark.css +54 -12
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +210 -168
- package/lib/themes/default.css +55 -13
- 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 +4 -3
- package/lib/utils/formula.js.map +2 -2
- package/package.json +2 -2
- package/schema.json +22 -14
- package/scss/components/_formula.scss +45 -4
- package/scss/components/_modal.scss +1 -1
- package/scss/components/form/_checks.scss +47 -44
- package/scss/components/form/_icon-picker.scss +10 -6
- package/scss/components/form/_select.scss +3 -2
- package/scss/components/form/_switch.scss +1 -0
- package/scss/components/form/_text.scss +2 -0
- package/scss/themes/_cxd-variables.scss +1 -1
- package/sdk/ang-ie11.css +66 -17
- package/sdk/ang.css +61 -12
- package/sdk/antd-ie11.css +66 -17
- package/sdk/antd.css +61 -12
- 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 +217 -168
- package/sdk/cxd.css +62 -13
- package/sdk/dark-ie11.css +66 -17
- package/sdk/dark.css +61 -12
- package/sdk/exceljs.js +1 -1
- 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 +217 -168
- package/sdk/sdk.css +62 -13
- package/sdk/sdk.js +1342 -1338
- 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/Select.tsx +3 -6
- package/src/components/formula/Editor.tsx +51 -23
- package/src/components/formula/Picker.tsx +68 -12
- 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/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 +11 -3
- package/src/renderers/Form/InputTree.tsx +7 -0
- package/src/renderers/Form/Picker.tsx +11 -1
- package/src/renderers/Form/wrapControl.tsx +10 -10
- package/src/renderers/Service.tsx +0 -1
- package/src/renderers/Steps.tsx +5 -5
- 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 +5 -3
@@ -778,10 +778,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
|
|
778
778
|
})}
|
779
779
|
onClick={this.removeItem.bind(this, index)}
|
780
780
|
>
|
781
|
-
<Icon
|
782
|
-
icon="close"
|
783
|
-
className="icon"
|
784
|
-
/>
|
781
|
+
<Icon icon="close" className="icon" />
|
785
782
|
</span>
|
786
783
|
</div>
|
787
784
|
</TooltipWrapper>
|
@@ -1026,7 +1023,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
|
|
1026
1023
|
</div>
|
1027
1024
|
) : null}
|
1028
1025
|
|
1029
|
-
<div ref={this.menuItemRef} className={cx('Select-option
|
1026
|
+
<div ref={this.menuItemRef} className={cx('Select-option hidden')}>
|
1030
1027
|
{multiple ? (
|
1031
1028
|
<Checkbox size="sm">Placeholder</Checkbox>
|
1032
1029
|
) : (
|
@@ -1083,7 +1080,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
|
|
1083
1080
|
overlay
|
1084
1081
|
className={cx('Select-popover')}
|
1085
1082
|
style={{
|
1086
|
-
|
1083
|
+
width: this.target ? this.target.offsetWidth : 'auto'
|
1087
1084
|
}}
|
1088
1085
|
onHide={this.close}
|
1089
1086
|
>
|
@@ -55,6 +55,11 @@ export interface FormulaEditorProps extends ThemeProps, LocaleProps {
|
|
55
55
|
*/
|
56
56
|
variableMode?: 'tabs' | 'tree';
|
57
57
|
|
58
|
+
/**
|
59
|
+
* 只展示变量,不需要其他面板
|
60
|
+
*/
|
61
|
+
onlyVariable?: boolean;
|
62
|
+
|
58
63
|
/**
|
59
64
|
* 函数集合,默认不需要传,即 amis-formula 里面那个函数
|
60
65
|
* 如果有扩充,则需要传。
|
@@ -221,6 +226,19 @@ export class FormulaEditor extends React.Component<
|
|
221
226
|
|
222
227
|
@autobind
|
223
228
|
handleVariableSelect(item: VariableItem) {
|
229
|
+
const {onlyVariable, evalMode} = this.props;
|
230
|
+
|
231
|
+
// 只展示变量时,选择即提交
|
232
|
+
if (onlyVariable) {
|
233
|
+
const onChange = this.props.onChange;
|
234
|
+
const value = item.value
|
235
|
+
? evalMode
|
236
|
+
? item.value
|
237
|
+
: '${' + item.value + '}'
|
238
|
+
: '';
|
239
|
+
return onChange?.(value);
|
240
|
+
}
|
241
|
+
|
224
242
|
this.editorPlugin?.insertContent(
|
225
243
|
{
|
226
244
|
key: item.value,
|
@@ -248,6 +266,7 @@ export class FormulaEditor extends React.Component<
|
|
248
266
|
value,
|
249
267
|
functions,
|
250
268
|
variableMode,
|
269
|
+
onlyVariable,
|
251
270
|
translate: __,
|
252
271
|
classnames: cx,
|
253
272
|
variableClassName,
|
@@ -267,23 +286,30 @@ export class FormulaEditor extends React.Component<
|
|
267
286
|
'is-focused': focused
|
268
287
|
})}
|
269
288
|
>
|
270
|
-
|
271
|
-
<
|
272
|
-
{
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
289
|
+
{onlyVariable ? null : (
|
290
|
+
<section className={cx(`FormulaEditor-content`)}>
|
291
|
+
<header className={cx(`FormulaEditor-header`)}>
|
292
|
+
{__(header || 'FormulaEditor.title')}
|
293
|
+
</header>
|
294
|
+
|
295
|
+
<CodeMirrorEditor
|
296
|
+
className={cx('FormulaEditor-editor')}
|
297
|
+
value={value}
|
298
|
+
onChange={this.handleOnChange}
|
299
|
+
editorFactory={this.editorFactory}
|
300
|
+
editorDidMount={this.handleEditorMounted}
|
301
|
+
onFocus={this.handleFocus}
|
302
|
+
onBlur={this.handleBlur}
|
303
|
+
/>
|
304
|
+
</section>
|
305
|
+
)}
|
306
|
+
|
307
|
+
<section
|
308
|
+
className={cx(
|
309
|
+
'FormulaEditor-settings',
|
310
|
+
onlyVariable ? 'only-variable' : ''
|
311
|
+
)}
|
312
|
+
>
|
287
313
|
<div className={cx('FormulaEditor-panel')}>
|
288
314
|
{variableMode !== 'tabs' ? (
|
289
315
|
<div className={cx('FormulaEditor-panel-header')}>
|
@@ -310,12 +336,14 @@ export class FormulaEditor extends React.Component<
|
|
310
336
|
</div>
|
311
337
|
</div>
|
312
338
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
339
|
+
{onlyVariable ? null : (
|
340
|
+
<FuncList
|
341
|
+
className={functionClassName}
|
342
|
+
title={__('FormulaEditor.function')}
|
343
|
+
data={functionList}
|
344
|
+
onSelect={this.handleFunctionSelect}
|
345
|
+
/>
|
346
|
+
)}
|
319
347
|
</section>
|
320
348
|
</div>
|
321
349
|
);
|
@@ -17,6 +17,7 @@ import {themeable} from '../../theme';
|
|
17
17
|
import {localeable} from '../../locale';
|
18
18
|
import type {SchemaIcon} from '../../Schema';
|
19
19
|
import {parse, Evaluator} from 'amis-formula';
|
20
|
+
import Input from '../Input';
|
20
21
|
|
21
22
|
export interface FormulaPickerProps extends FormulaEditorProps {
|
22
23
|
// 新的属性?
|
@@ -35,13 +36,18 @@ export interface FormulaPickerProps extends FormulaEditorProps {
|
|
35
36
|
/**
|
36
37
|
* 控件模式
|
37
38
|
*/
|
38
|
-
mode?: 'button' | 'input-button';
|
39
|
+
mode?: 'button' | 'input-button' | 'input-group';
|
39
40
|
|
40
41
|
/**
|
41
42
|
* 边框模式,全边框,还是半边框,或者没边框。
|
42
43
|
*/
|
43
44
|
borderMode?: 'full' | 'half' | 'none';
|
44
45
|
|
46
|
+
/**
|
47
|
+
* 只展示变量,不需要其他面板
|
48
|
+
*/
|
49
|
+
onlyVariable?: boolean;
|
50
|
+
|
45
51
|
/**
|
46
52
|
* 按钮Label,inputMode为button时生效
|
47
53
|
*/
|
@@ -132,7 +138,8 @@ export class FormulaPicker extends React.Component<
|
|
132
138
|
}
|
133
139
|
|
134
140
|
static defaultProps = {
|
135
|
-
evalMode: true
|
141
|
+
evalMode: true,
|
142
|
+
onlyVariable: false
|
136
143
|
};
|
137
144
|
|
138
145
|
state: FormulaPickerState = {
|
@@ -173,8 +180,19 @@ export class FormulaPicker extends React.Component<
|
|
173
180
|
this.setState({value}, () => this.handleConfirm());
|
174
181
|
}
|
175
182
|
|
183
|
+
@autobind
|
184
|
+
handleInputGroupChange(e: React.ChangeEvent<HTMLInputElement>) {
|
185
|
+
const onChange = this.props.onChange;
|
186
|
+
onChange && onChange(e.currentTarget.value);
|
187
|
+
}
|
188
|
+
|
176
189
|
@autobind
|
177
190
|
handleEditorChange(value: string) {
|
191
|
+
const {onlyVariable} = this.props;
|
192
|
+
if (onlyVariable) {
|
193
|
+
return this.confirm(value);
|
194
|
+
}
|
195
|
+
|
178
196
|
this.setState({
|
179
197
|
editorValue: value,
|
180
198
|
isError: false
|
@@ -185,6 +203,10 @@ export class FormulaPicker extends React.Component<
|
|
185
203
|
handleEditorConfirm() {
|
186
204
|
const {translate: __} = this.props;
|
187
205
|
const value = this.state.editorValue;
|
206
|
+
this.confirm(value);
|
207
|
+
}
|
208
|
+
|
209
|
+
confirm(value: string) {
|
188
210
|
const validate = this.validate(value);
|
189
211
|
|
190
212
|
if (validate === true) {
|
@@ -237,13 +259,11 @@ export class FormulaPicker extends React.Component<
|
|
237
259
|
const {translate: __} = this.props;
|
238
260
|
|
239
261
|
try {
|
240
|
-
|
262
|
+
parse(value, {
|
241
263
|
evalMode: this.props.evalMode,
|
242
264
|
allowFilter: false
|
243
265
|
});
|
244
266
|
|
245
|
-
new Evaluator({}).evalute(ast);
|
246
|
-
|
247
267
|
return true;
|
248
268
|
} catch (e) {
|
249
269
|
if (/\s(\d+:\d+)$/.test(e.message)) {
|
@@ -276,6 +296,7 @@ export class FormulaPicker extends React.Component<
|
|
276
296
|
functions,
|
277
297
|
children,
|
278
298
|
variableMode,
|
299
|
+
onlyVariable,
|
279
300
|
...rest
|
280
301
|
} = this.props;
|
281
302
|
const {isOpened, value, editorValue, isError} = this.state;
|
@@ -291,8 +312,14 @@ export class FormulaPicker extends React.Component<
|
|
291
312
|
setState: this.updateState
|
292
313
|
})
|
293
314
|
) : (
|
294
|
-
<div
|
295
|
-
{
|
315
|
+
<div
|
316
|
+
className={cx(
|
317
|
+
'FormulaPicker',
|
318
|
+
className,
|
319
|
+
mode === 'input-group' ? 'is-input-group' : ''
|
320
|
+
)}
|
321
|
+
>
|
322
|
+
{mode === 'button' && (
|
296
323
|
<Button
|
297
324
|
className={cx('FormulaPicker-action', 'w-full')}
|
298
325
|
level={level}
|
@@ -321,7 +348,8 @@ export class FormulaPicker extends React.Component<
|
|
321
348
|
{__(btnLabel || 'FormulaEditor.btnLabel')}
|
322
349
|
</span>
|
323
350
|
</Button>
|
324
|
-
)
|
351
|
+
)}
|
352
|
+
{mode === 'input-button' && (
|
325
353
|
<>
|
326
354
|
<ResultBox
|
327
355
|
className={cx(
|
@@ -362,6 +390,29 @@ export class FormulaPicker extends React.Component<
|
|
362
390
|
</Button>
|
363
391
|
</>
|
364
392
|
)}
|
393
|
+
{mode === 'input-group' && (
|
394
|
+
<>
|
395
|
+
<Input
|
396
|
+
className={cx('FormulaPicker-input')}
|
397
|
+
onChange={this.handleInputGroupChange}
|
398
|
+
placeholder={allowInput ? placeholder : ''}
|
399
|
+
autoComplete="off"
|
400
|
+
value={value}
|
401
|
+
disabled={disabled}
|
402
|
+
readOnly={!allowInput}
|
403
|
+
/>
|
404
|
+
|
405
|
+
<a
|
406
|
+
className={cx(`FormulaPicker-toggler`)}
|
407
|
+
onClick={this.handleClick}
|
408
|
+
>
|
409
|
+
<Icon
|
410
|
+
icon={onlyVariable ? 'ellipsis-v' : 'function'}
|
411
|
+
className="icon"
|
412
|
+
/>
|
413
|
+
</a>
|
414
|
+
</>
|
415
|
+
)}
|
365
416
|
</div>
|
366
417
|
)}
|
367
418
|
<Modal
|
@@ -379,6 +430,7 @@ export class FormulaPicker extends React.Component<
|
|
379
430
|
variables={this.state.variables ?? variables}
|
380
431
|
functions={this.state.functions ?? functions}
|
381
432
|
variableMode={this.state.variableMode ?? variableMode}
|
433
|
+
onlyVariable={onlyVariable}
|
382
434
|
value={editorValue}
|
383
435
|
onChange={this.handleEditorChange}
|
384
436
|
/>
|
@@ -391,10 +443,14 @@ export class FormulaPicker extends React.Component<
|
|
391
443
|
</span>
|
392
444
|
</div>
|
393
445
|
) : null}
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
446
|
+
{onlyVariable ? null : (
|
447
|
+
<>
|
448
|
+
<Button onClick={this.close}>{__('cancel')}</Button>
|
449
|
+
<Button onClick={this.handleEditorConfirm} level="primary">
|
450
|
+
{__('confirm')}
|
451
|
+
</Button>
|
452
|
+
</>
|
453
|
+
)}
|
398
454
|
</Modal.Footer>
|
399
455
|
</Modal>
|
400
456
|
</>
|
@@ -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/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': '编辑详情',
|