amis 1.9.0-beta.12 → 1.9.0-beta.15
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/lib/Schema.d.ts +4 -2
- package/lib/Schema.js.map +1 -1
- package/lib/SchemaRenderer.d.ts +2 -2
- package/lib/SchemaRenderer.js +3 -3
- package/lib/SchemaRenderer.js.map +2 -2
- package/lib/actions/Action.d.ts +8 -6
- package/lib/actions/Action.js.map +2 -2
- package/lib/actions/AjaxAction.d.ts +10 -7
- package/lib/actions/AjaxAction.js +27 -21
- package/lib/actions/AjaxAction.js.map +2 -2
- package/lib/actions/BreakAction.d.ts +2 -2
- package/lib/actions/BreakAction.js.map +1 -1
- package/lib/actions/BroadcastAction.d.ts +3 -3
- package/lib/actions/BroadcastAction.js +3 -2
- package/lib/actions/BroadcastAction.js.map +2 -2
- package/lib/actions/CmptAction.d.ts +2 -2
- package/lib/actions/CmptAction.js +7 -9
- package/lib/actions/CmptAction.js.map +2 -2
- package/lib/actions/ContinueAction.d.ts +2 -2
- package/lib/actions/ContinueAction.js.map +1 -1
- package/lib/actions/CopyAction.d.ts +7 -4
- package/lib/actions/CopyAction.js +8 -6
- package/lib/actions/CopyAction.js.map +2 -2
- package/lib/actions/CustomAction.d.ts +2 -2
- package/lib/actions/CustomAction.js.map +1 -1
- package/lib/actions/DialogAction.d.ts +14 -8
- package/lib/actions/DialogAction.js +6 -6
- package/lib/actions/DialogAction.js.map +2 -2
- package/lib/actions/DrawerAction.d.ts +3 -3
- package/lib/actions/DrawerAction.js.map +1 -1
- package/lib/actions/EmailAction.d.ts +10 -7
- package/lib/actions/EmailAction.js +4 -5
- package/lib/actions/EmailAction.js.map +2 -2
- package/lib/actions/LinkAction.d.ts +19 -11
- package/lib/actions/LinkAction.js +6 -5
- package/lib/actions/LinkAction.js.map +2 -2
- package/lib/actions/LoopAction.d.ts +6 -3
- package/lib/actions/LoopAction.js +22 -20
- package/lib/actions/LoopAction.js.map +2 -2
- package/lib/actions/PageAction.d.ts +8 -5
- package/lib/actions/PageAction.js +3 -2
- package/lib/actions/PageAction.js.map +2 -2
- package/lib/actions/ParallelAction.d.ts +2 -2
- package/lib/actions/ParallelAction.js.map +1 -1
- package/lib/actions/SwitchAction.d.ts +2 -2
- package/lib/actions/SwitchAction.js.map +1 -1
- package/lib/actions/ToastAction.d.ts +2 -2
- package/lib/actions/ToastAction.js +6 -4
- package/lib/actions/ToastAction.js.map +2 -2
- package/lib/components/Editor.d.ts +84 -84
- package/lib/components/InputBox.js +1 -1
- package/lib/components/InputBox.js.map +2 -2
- package/lib/components/Pagination.d.ts +1175 -0
- package/lib/components/Pagination.js +274 -0
- package/lib/components/Pagination.js.map +13 -0
- package/lib/components/PickerContainer.d.ts +1 -0
- package/lib/components/PickerContainer.js +3 -2
- package/lib/components/PickerContainer.js.map +2 -2
- package/lib/components/Rating.js +11 -9
- package/lib/components/Rating.js.map +2 -2
- package/lib/components/Select.js +3 -3
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Tag.d.ts +148 -0
- package/lib/components/Tag.js +96 -0
- package/lib/components/Tag.js.map +13 -0
- package/lib/components/TooltipWrapper.d.ts +25 -21
- package/lib/components/TooltipWrapper.js +11 -1
- package/lib/components/TooltipWrapper.js.map +2 -2
- package/lib/components/TransferDropDown.d.ts +85 -84
- package/lib/components/TransferDropDown.js +2 -2
- package/lib/components/TransferDropDown.js.map +2 -2
- package/lib/components/Tree.d.ts +84 -84
- package/lib/components/formula/VariableList.d.ts +1 -0
- package/lib/components/formula/VariableList.js.map +2 -2
- package/lib/components/icons.js +2 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/components/index.d.ts +4 -1
- package/lib/components/index.js +7 -1
- package/lib/components/index.js.map +2 -2
- package/lib/components/schema-editor/Array.d.ts +11 -0
- package/lib/components/schema-editor/Array.js +66 -0
- package/lib/components/schema-editor/Array.js.map +13 -0
- package/lib/components/schema-editor/Common.d.ts +29 -0
- package/lib/components/schema-editor/Common.js +69 -0
- package/lib/components/schema-editor/Common.js.map +13 -0
- package/lib/components/schema-editor/Item.d.ts +9 -0
- package/lib/components/schema-editor/Item.js +31 -0
- package/lib/components/schema-editor/Item.js.map +13 -0
- package/lib/components/schema-editor/Object.d.ts +44 -0
- package/lib/components/schema-editor/Object.js +191 -0
- package/lib/components/schema-editor/Object.js.map +13 -0
- package/lib/components/schema-editor/SchemaVariableList.d.ts +316 -0
- package/lib/components/schema-editor/SchemaVariableList.js +74 -0
- package/lib/components/schema-editor/SchemaVariableList.js.map +13 -0
- package/lib/components/schema-editor/SchemaVariableListPicker.d.ts +305 -0
- package/lib/components/schema-editor/SchemaVariableListPicker.js +32 -0
- package/lib/components/schema-editor/SchemaVariableListPicker.js.map +13 -0
- package/lib/components/schema-editor/index.d.ts +520 -0
- package/lib/components/schema-editor/index.js +118 -0
- package/lib/components/schema-editor/index.js.map +13 -0
- package/lib/components/table/Cell.d.ts +930 -0
- package/lib/components/table/Cell.js +36 -0
- package/lib/components/table/Cell.js.map +13 -0
- package/lib/components/table/HeadCellDropDown.d.ts +514 -0
- package/lib/components/table/HeadCellDropDown.js +52 -0
- package/lib/components/table/HeadCellDropDown.js.map +13 -0
- package/lib/components/table/HeadCellFilter.d.ts +771 -0
- package/lib/components/table/HeadCellFilter.js +106 -0
- package/lib/components/table/HeadCellFilter.js.map +13 -0
- package/lib/components/table/HeadCellSelect.d.ts +672 -0
- package/lib/components/table/HeadCellSelect.js +46 -0
- package/lib/components/table/HeadCellSelect.js.map +13 -0
- package/lib/components/table/HeadCellSort.d.ts +498 -0
- package/lib/components/table/HeadCellSort.js +67 -0
- package/lib/components/table/HeadCellSort.js.map +13 -0
- package/lib/components/table/index.d.ts +1355 -0
- package/lib/components/table/index.js +1095 -0
- package/lib/components/table/index.js.map +13 -0
- package/lib/env.d.ts +2 -4
- package/lib/env.js.map +2 -2
- package/lib/factory.js +0 -95
- package/lib/factory.js.map +2 -2
- package/lib/icons/dot.js +11 -0
- package/lib/index.d.ts +6 -1
- package/lib/index.js +9 -2
- package/lib/index.js.map +2 -2
- package/lib/locale/de-DE.js +18 -1
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +18 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +20 -1
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.js +0 -2
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/Carousel.d.ts +5 -1
- package/lib/renderers/Carousel.js +18 -5
- package/lib/renderers/Carousel.js.map +2 -2
- package/lib/renderers/Form/ButtonGroupSelect.d.ts +2 -0
- package/lib/renderers/Form/ButtonGroupSelect.js +7 -0
- package/lib/renderers/Form/ButtonGroupSelect.js.map +2 -2
- package/lib/renderers/Form/Checkbox.js +3 -4
- package/lib/renderers/Form/Checkbox.js.map +2 -2
- package/lib/renderers/Form/Checkboxes.d.ts +2 -1
- package/lib/renderers/Form/Checkboxes.js +19 -14
- package/lib/renderers/Form/Checkboxes.js.map +2 -2
- package/lib/renderers/Form/Combo.js +23 -4
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +126 -18
- package/lib/renderers/Form/Editor.d.ts +412 -112
- package/lib/renderers/Form/Editor.js +10 -1
- package/lib/renderers/Form/Editor.js.map +2 -2
- package/lib/renderers/Form/InputExcel.js +6 -1
- package/lib/renderers/Form/InputExcel.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +1 -2
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputTree.js +1 -1
- package/lib/renderers/Form/InputTree.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +0 -6
- package/lib/renderers/Form/JSONSchemaEditor.d.ts +41 -0
- package/lib/renderers/Form/JSONSchemaEditor.js +33 -0
- package/lib/renderers/Form/JSONSchemaEditor.js.map +13 -0
- package/lib/renderers/Form/ListSelect.d.ts +2 -0
- package/lib/renderers/Form/ListSelect.js +7 -0
- package/lib/renderers/Form/ListSelect.js.map +2 -2
- package/lib/renderers/Form/Options.js +1 -0
- package/lib/renderers/Form/Options.js.map +2 -2
- package/lib/renderers/Form/Select.js +12 -1
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/TabsTransfer.d.ts +1 -1
- package/lib/renderers/Form/TabsTransfer.js +2 -2
- package/lib/renderers/Form/TabsTransfer.js.map +2 -2
- package/lib/renderers/Form/TreeSelect.d.ts +4 -0
- package/lib/renderers/Form/TreeSelect.js +2 -2
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +10 -5
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/Pagination.d.ts +49 -30
- package/lib/renderers/Pagination.js +3 -132
- package/lib/renderers/Pagination.js.map +2 -2
- package/lib/renderers/Table/HeadCellSearchDropdown.js +0 -1
- package/lib/renderers/Table/HeadCellSearchDropdown.js.map +2 -2
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.d.ts +29 -0
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +158 -0
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.js.map +13 -0
- package/lib/renderers/Table-v2/TableCell.d.ts +6 -0
- package/lib/renderers/Table-v2/TableCell.js +28 -0
- package/lib/renderers/Table-v2/TableCell.js.map +13 -0
- package/lib/renderers/Table-v2/index.d.ts +256 -0
- package/lib/renderers/Table-v2/index.js +548 -0
- package/lib/renderers/Table-v2/index.js.map +13 -0
- package/lib/renderers/Tabs.js +1 -1
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Tag.d.ts +66 -0
- package/lib/renderers/Tag.js +53 -0
- package/lib/renderers/Tag.js.map +13 -0
- package/lib/renderers/Wizard.js +3 -3
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/schemaExtend.js +24 -30
- package/lib/schemaExtend.js.map +2 -2
- package/lib/store/combo.d.ts +140 -20
- package/lib/store/form.d.ts +56 -8
- package/lib/store/formItem.d.ts +3 -1
- package/lib/store/formItem.js +3 -1
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/index.js +2 -0
- package/lib/store/index.js.map +2 -2
- package/lib/store/table-v2.d.ts +308 -0
- package/lib/store/table-v2.js +452 -0
- package/lib/store/table-v2.js.map +13 -0
- package/lib/store/table.d.ts +112 -16
- package/lib/store/table.js +1 -1
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +1686 -120
- package/lib/themes/ang.css +1807 -208
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +1667 -101
- package/lib/themes/antd.css +1789 -201
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +1662 -97
- package/lib/themes/cxd.css +1983 -394
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +1667 -101
- package/lib/themes/dark.css +1789 -201
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +1662 -97
- package/lib/themes/default.css +1983 -394
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/DataSchema.d.ts +25 -0
- package/lib/utils/DataSchema.js +104 -0
- package/lib/utils/DataSchema.js.map +13 -0
- package/lib/utils/DataScope.d.ts +23 -0
- package/lib/utils/DataScope.js +140 -0
- package/lib/utils/DataScope.js.map +13 -0
- package/lib/utils/handleAction.js +1 -1
- package/lib/utils/handleAction.js.map +2 -2
- package/lib/utils/renderer-event.d.ts +8 -2
- package/lib/utils/renderer-event.js +102 -1
- package/lib/utils/renderer-event.js.map +2 -2
- package/package.json +3 -2
- package/schema.json +1476 -469
- package/scss/_properties.scss +69 -0
- package/scss/components/_button.scss +37 -39
- package/scss/components/_context-menu.scss +3 -18
- package/scss/components/_json-schema-editor.scss +126 -0
- package/scss/components/_pagination.scss +104 -23
- package/scss/components/_result-box.scss +2 -2
- package/scss/components/_table-v2.scss +912 -0
- package/scss/components/_tag.scss +177 -0
- package/scss/components/form/_selection.scss +1 -14
- package/scss/components/form/_text.scss +1 -1
- package/scss/themes/_antd-variables.scss +0 -13
- package/scss/themes/_common.scss +3 -0
- package/scss/themes/_cxd-variables.scss +7 -17
- package/scss/themes/_dark-variables.scss +0 -13
- package/scss/themes/cxd.scss +1 -1
- package/sdk/ang-ie11.css +2240 -227
- package/sdk/ang.css +2905 -859
- package/sdk/antd-ie11.css +2233 -220
- package/sdk/antd.css +2905 -870
- 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 +2223 -211
- package/sdk/cxd.css +2911 -875
- package/sdk/dark-ie11.css +2233 -220
- package/sdk/dark.css +2905 -870
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +18 -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 +2223 -211
- package/sdk/sdk.css +2911 -875
- package/sdk/sdk.js +1326 -1270
- 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 +7 -0
- package/src/SchemaRenderer.tsx +4 -5
- package/src/actions/Action.ts +7 -6
- package/src/actions/AjaxAction.ts +33 -24
- package/src/actions/BreakAction.ts +2 -2
- package/src/actions/BroadcastAction.ts +6 -5
- package/src/actions/CmptAction.ts +5 -6
- package/src/actions/ContinueAction.ts +2 -2
- package/src/actions/CopyAction.ts +14 -8
- package/src/actions/CustomAction.ts +2 -2
- package/src/actions/DialogAction.ts +16 -10
- package/src/actions/DrawerAction.ts +3 -3
- package/src/actions/EmailAction.ts +12 -12
- package/src/actions/LinkAction.ts +34 -14
- package/src/actions/LoopAction.ts +13 -8
- package/src/actions/PageAction.ts +9 -6
- package/src/actions/ParallelAction.ts +2 -2
- package/src/actions/SwitchAction.ts +2 -2
- package/src/actions/ToastAction.ts +9 -5
- package/src/components/InputBox.tsx +1 -0
- package/src/components/Pagination.tsx +446 -0
- package/src/components/PickerContainer.tsx +8 -5
- package/src/components/Rating.tsx +16 -9
- package/src/components/Select.tsx +3 -3
- package/src/components/Tag.tsx +179 -0
- package/src/components/TooltipWrapper.tsx +14 -1
- package/src/components/TransferDropDown.tsx +3 -0
- package/src/components/formula/VariableList.tsx +1 -0
- package/src/components/icons.tsx +2 -0
- package/src/components/index.tsx +7 -1
- package/src/components/schema-editor/Array.tsx +95 -0
- package/src/components/schema-editor/Common.tsx +138 -0
- package/src/components/schema-editor/Item.tsx +36 -0
- package/src/components/schema-editor/Object.tsx +299 -0
- package/src/components/schema-editor/SchemaVariableList.tsx +97 -0
- package/src/components/schema-editor/SchemaVariableListPicker.tsx +66 -0
- package/src/components/schema-editor/index.tsx +211 -0
- package/src/components/table/Cell.tsx +70 -0
- package/src/components/table/HeadCellDropDown.tsx +115 -0
- package/src/components/table/HeadCellFilter.tsx +193 -0
- package/src/components/table/HeadCellSelect.tsx +86 -0
- package/src/components/table/HeadCellSort.tsx +102 -0
- package/src/components/table/index.tsx +1681 -0
- package/src/env.tsx +7 -14
- package/src/factory.tsx +3 -106
- package/src/icons/dot.svg +11 -0
- package/src/index.tsx +8 -1
- package/src/locale/de-DE.ts +18 -1
- package/src/locale/en-US.ts +18 -1
- package/src/locale/zh-CN.ts +20 -1
- package/src/renderers/Action.tsx +1 -1
- package/src/renderers/Carousel.tsx +21 -6
- package/src/renderers/Form/ButtonGroupSelect.tsx +10 -1
- package/src/renderers/Form/Checkbox.tsx +4 -4
- package/src/renderers/Form/Checkboxes.tsx +31 -25
- package/src/renderers/Form/Combo.tsx +20 -4
- package/src/renderers/Form/Editor.tsx +15 -1
- package/src/renderers/Form/InputExcel.tsx +6 -1
- package/src/renderers/Form/InputFile.tsx +1 -2
- package/src/renderers/Form/InputTree.tsx +1 -1
- package/src/renderers/Form/JSONSchemaEditor.tsx +67 -0
- package/src/renderers/Form/ListSelect.tsx +9 -1
- package/src/renderers/Form/Options.tsx +1 -1
- package/src/renderers/Form/Select.tsx +7 -0
- package/src/renderers/Form/TabsTransfer.tsx +2 -2
- package/src/renderers/Form/TreeSelect.tsx +8 -1
- package/src/renderers/Form/wrapControl.tsx +11 -5
- package/src/renderers/Pagination.tsx +65 -253
- package/src/renderers/Table/HeadCellSearchDropdown.tsx +0 -1
- package/src/renderers/Table-v2/HeadCellSearchDropdown.tsx +244 -0
- package/src/renderers/Table-v2/TableCell.tsx +19 -0
- package/src/renderers/Table-v2/index.tsx +1140 -0
- package/src/renderers/Tabs.tsx +1 -1
- package/src/renderers/Tag.tsx +128 -0
- package/src/renderers/Wizard.tsx +3 -3
- package/src/schemaExtend.ts +24 -28
- package/src/store/formItem.ts +5 -1
- package/src/store/index.ts +2 -0
- package/src/store/table-v2.ts +646 -0
- package/src/store/table.ts +1 -1
- package/src/utils/DataSchema.ts +131 -0
- package/src/utils/DataScope.ts +190 -0
- package/src/utils/handleAction.ts +1 -1
- package/src/utils/renderer-event.ts +113 -2
@@ -0,0 +1,70 @@
|
|
1
|
+
/**
|
2
|
+
* @file table/BodyCell
|
3
|
+
* @author fex
|
4
|
+
*/
|
5
|
+
|
6
|
+
import React from 'react';
|
7
|
+
|
8
|
+
import {themeable, ThemeProps} from '../../theme';
|
9
|
+
import {LocaleProps, localeable} from '../../locale';
|
10
|
+
import {ColumnProps} from './index';
|
11
|
+
|
12
|
+
const zIndex = 1;
|
13
|
+
|
14
|
+
export interface Props extends ThemeProps, LocaleProps {
|
15
|
+
fixed?: string | boolean; // left | right
|
16
|
+
rowSpan?: number | any;
|
17
|
+
colSpan?: number | any;
|
18
|
+
key?: string | number;
|
19
|
+
className?: string;
|
20
|
+
children?: any;
|
21
|
+
tagName?: string;
|
22
|
+
style?: Object;
|
23
|
+
column?: ColumnProps;
|
24
|
+
wrapperComponent: any;
|
25
|
+
groupId?: string; // 表头分组随机生成的id
|
26
|
+
depth?: number; // 表头分组
|
27
|
+
}
|
28
|
+
|
29
|
+
export class BodyCell extends React.Component<Props> {
|
30
|
+
static defaultProps = {
|
31
|
+
fixed: '',
|
32
|
+
wrapperComponent: 'td',
|
33
|
+
rowSpan: null,
|
34
|
+
colSpan: null
|
35
|
+
};
|
36
|
+
|
37
|
+
render() {
|
38
|
+
const {
|
39
|
+
fixed,
|
40
|
+
rowSpan,
|
41
|
+
colSpan,
|
42
|
+
key,
|
43
|
+
children,
|
44
|
+
className,
|
45
|
+
column,
|
46
|
+
style,
|
47
|
+
groupId,
|
48
|
+
depth,
|
49
|
+
wrapperComponent: Component,
|
50
|
+
classnames: cx
|
51
|
+
} = this.props;
|
52
|
+
|
53
|
+
return (
|
54
|
+
<Component
|
55
|
+
key={key || null}
|
56
|
+
rowSpan={rowSpan && rowSpan > 1 ? rowSpan : null}
|
57
|
+
colSpan={colSpan && colSpan > 1 ? colSpan : null}
|
58
|
+
className={cx('Table-cell', className, {
|
59
|
+
[cx(`Table-cell-fix-${fixed}`)] : fixed,
|
60
|
+
[`text-${column?.align}`] : column?.align
|
61
|
+
})}
|
62
|
+
style={fixed ? {position: 'sticky', zIndex, ...style} : {...style}}
|
63
|
+
data-group-id={groupId || null}
|
64
|
+
data-depth={depth || null}
|
65
|
+
>{children}</Component>
|
66
|
+
);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
export default themeable(localeable(BodyCell));
|
@@ -0,0 +1,115 @@
|
|
1
|
+
/**
|
2
|
+
* @file table/HeadCellDropDown
|
3
|
+
* @author fex
|
4
|
+
*/
|
5
|
+
|
6
|
+
import React from 'react';
|
7
|
+
import {findDOMNode} from 'react-dom';
|
8
|
+
|
9
|
+
import {themeable, ThemeProps} from '../../theme';
|
10
|
+
import {LocaleProps, localeable} from '../../locale';
|
11
|
+
import Overlay from '../Overlay';
|
12
|
+
import PopOver from '../PopOver';
|
13
|
+
|
14
|
+
export interface FilterPayload {
|
15
|
+
closeDropdown?: boolean;
|
16
|
+
}
|
17
|
+
|
18
|
+
export interface FilterDropdownProps {
|
19
|
+
setSelectedKeys?: (keys: Array<string | number> | string) => void,
|
20
|
+
selectedKeys?: Array<string | number> | string,
|
21
|
+
confirm: (payload: FilterPayload) => void,
|
22
|
+
clearFilters?: () => void
|
23
|
+
}
|
24
|
+
|
25
|
+
export interface Props extends ThemeProps, LocaleProps {
|
26
|
+
filterIcon: Function | React.ReactNode; // 图标方法 返回ReactNode
|
27
|
+
className: string; // 图标样式
|
28
|
+
layerClassName: string; // 展开层样式
|
29
|
+
active: boolean; // 图标是否高亮
|
30
|
+
popOverContainer?: () => Element | Text | null;
|
31
|
+
filterDropdown: (payload: FilterDropdownProps) => JSX.Element | null ; // 菜单内容
|
32
|
+
selectedKeys?: Array<string | number> | string;
|
33
|
+
setSelectedKeys?: (keys: Array<string | number> | string) => void;
|
34
|
+
}
|
35
|
+
|
36
|
+
export interface State {
|
37
|
+
isOpened: boolean;
|
38
|
+
}
|
39
|
+
|
40
|
+
export class HeadCellDropDown extends React.Component<Props, State> {
|
41
|
+
constructor(props: Props) {
|
42
|
+
super(props);
|
43
|
+
|
44
|
+
this.state = {
|
45
|
+
isOpened: false
|
46
|
+
}
|
47
|
+
|
48
|
+
this.openLayer = this.openLayer.bind(this);
|
49
|
+
this.closeLayer = this.closeLayer.bind(this);
|
50
|
+
}
|
51
|
+
|
52
|
+
render() {
|
53
|
+
const {isOpened} = this.state;
|
54
|
+
const {
|
55
|
+
popOverContainer,
|
56
|
+
active,
|
57
|
+
className,
|
58
|
+
layerClassName,
|
59
|
+
filterIcon,
|
60
|
+
filterDropdown,
|
61
|
+
classnames: cx,
|
62
|
+
classPrefix: ns
|
63
|
+
} = this.props;
|
64
|
+
|
65
|
+
return (
|
66
|
+
<span
|
67
|
+
className={cx(
|
68
|
+
className,
|
69
|
+
active ? 'is-active' : ''
|
70
|
+
)}
|
71
|
+
>
|
72
|
+
<span onClick={this.openLayer}>
|
73
|
+
{filterIcon && typeof filterIcon === 'function'
|
74
|
+
? filterIcon(active) : (filterIcon || null)}
|
75
|
+
</span>
|
76
|
+
{
|
77
|
+
isOpened ? (
|
78
|
+
<Overlay
|
79
|
+
container={popOverContainer || (() => findDOMNode(this))}
|
80
|
+
placement="left-bottom-left-top right-bottom-right-top"
|
81
|
+
target={
|
82
|
+
popOverContainer ? () => findDOMNode(this)!.parentNode : null
|
83
|
+
}
|
84
|
+
show
|
85
|
+
>
|
86
|
+
<PopOver
|
87
|
+
classPrefix={ns}
|
88
|
+
onHide={this.closeLayer}
|
89
|
+
className={cx(layerClassName)}
|
90
|
+
overlay
|
91
|
+
>
|
92
|
+
{filterDropdown && typeof filterDropdown === 'function'
|
93
|
+
? filterDropdown({...this.props, confirm: (payload: FilterPayload) => {
|
94
|
+
if (!(payload && payload.closeDropdown === false)) {
|
95
|
+
this.closeLayer();
|
96
|
+
}
|
97
|
+
}}) : (filterDropdown || null)}
|
98
|
+
</PopOver>
|
99
|
+
</Overlay>)
|
100
|
+
: null
|
101
|
+
}
|
102
|
+
</span>
|
103
|
+
);
|
104
|
+
}
|
105
|
+
|
106
|
+
openLayer() {
|
107
|
+
this.setState({isOpened: true});
|
108
|
+
}
|
109
|
+
|
110
|
+
closeLayer() {
|
111
|
+
this.setState({isOpened: false});
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
export default themeable(localeable(HeadCellDropDown));
|
@@ -0,0 +1,193 @@
|
|
1
|
+
/**
|
2
|
+
* @file table/HeadCellFilter
|
3
|
+
* @author fex
|
4
|
+
*/
|
5
|
+
|
6
|
+
import React from 'react';
|
7
|
+
import {findDOMNode} from 'react-dom';
|
8
|
+
import isEqual from 'lodash/isEqual';
|
9
|
+
|
10
|
+
import {themeable, ThemeProps} from '../../theme';
|
11
|
+
import {LocaleProps, localeable} from '../../locale';
|
12
|
+
import HeadCellDropDown, {FilterDropdownProps, FilterPayload} from './HeadCellDropDown';
|
13
|
+
import CheckBox from '../Checkbox';
|
14
|
+
import Button from '../Button';
|
15
|
+
import {Icon} from '../icons';
|
16
|
+
|
17
|
+
export interface Props extends ThemeProps, LocaleProps {
|
18
|
+
column: any;
|
19
|
+
onFilter?: Function;
|
20
|
+
filteredValue?: Array<string>;
|
21
|
+
filterMultiple?: boolean;
|
22
|
+
popOverContainer?: () => Element | Text | null;
|
23
|
+
}
|
24
|
+
|
25
|
+
export interface OptionProps {
|
26
|
+
text: string;
|
27
|
+
value: string;
|
28
|
+
selected?: boolean;
|
29
|
+
children?: Array<OptionProps>;
|
30
|
+
}
|
31
|
+
|
32
|
+
export interface State {
|
33
|
+
options: Array<OptionProps>;
|
34
|
+
filteredValue: Array<string>;
|
35
|
+
}
|
36
|
+
|
37
|
+
export class HeadCellFilter extends React.Component<Props, State> {
|
38
|
+
static defaultProps = {
|
39
|
+
filteredValue: [],
|
40
|
+
filterMultiple: false
|
41
|
+
};
|
42
|
+
|
43
|
+
constructor(props: Props) {
|
44
|
+
super(props);
|
45
|
+
|
46
|
+
this.state = {
|
47
|
+
options: [],
|
48
|
+
filteredValue: props.filteredValue || []
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
alterOptions(options: Array<any>) {
|
53
|
+
options = options.map(option => ({
|
54
|
+
...option,
|
55
|
+
selected: this.state.filteredValue.indexOf(option.value) > -1
|
56
|
+
}));
|
57
|
+
|
58
|
+
return options;
|
59
|
+
}
|
60
|
+
|
61
|
+
componentDidMount() {
|
62
|
+
const {column} = this.props;
|
63
|
+
if (column.filters && column.filters.length > 0) {
|
64
|
+
this.setState({options: this.alterOptions(column.filters)});
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
componentDidUpdate(prevProps: Props, prevState: State) {
|
69
|
+
const {column} = this.props;
|
70
|
+
if (column.filters && column.filters.length > 0
|
71
|
+
&& !isEqual(prevState.filteredValue, this.state.filteredValue)) {
|
72
|
+
this.setState({options: this.alterOptions(column.filters)});
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
render() {
|
77
|
+
const {options} = this.state;
|
78
|
+
const {
|
79
|
+
column,
|
80
|
+
popOverContainer,
|
81
|
+
classnames: cx,
|
82
|
+
classPrefix: ns
|
83
|
+
} = this.props;
|
84
|
+
|
85
|
+
const filterProps = {
|
86
|
+
filterDropdown: (payload: FilterDropdownProps) => {
|
87
|
+
const {setSelectedKeys, selectedKeys, confirm, clearFilters} = payload
|
88
|
+
return options && options.length > 0 ? (
|
89
|
+
<ul className={cx('DropDown-menu')}>
|
90
|
+
{!column.filterMultiple
|
91
|
+
? options.map((option: any, index) => (
|
92
|
+
<li
|
93
|
+
key={index}
|
94
|
+
className={cx({
|
95
|
+
'is-active': option.selected
|
96
|
+
})}
|
97
|
+
onClick={() => this.handleClick(confirm, setSelectedKeys, [option.value])}
|
98
|
+
>
|
99
|
+
{option.text}
|
100
|
+
</li>
|
101
|
+
))
|
102
|
+
: options.map((option: any, index) => (
|
103
|
+
<li key={index}>
|
104
|
+
<CheckBox
|
105
|
+
classPrefix={ns}
|
106
|
+
onChange={e =>
|
107
|
+
this.handleCheck(confirm, setSelectedKeys, e
|
108
|
+
? [option.value] : option.value)}
|
109
|
+
checked={option.selected}
|
110
|
+
>
|
111
|
+
{option.text}
|
112
|
+
</CheckBox>
|
113
|
+
</li>
|
114
|
+
))}
|
115
|
+
{column.filterMultiple ? (
|
116
|
+
<li
|
117
|
+
key="dropDown-multiple-menu"
|
118
|
+
className={cx('DropDown-multiple-menu')}
|
119
|
+
>
|
120
|
+
<Button
|
121
|
+
size={'xs'}
|
122
|
+
level={'primary'}
|
123
|
+
onClick={() => this.handleConfirmClick(confirm)}
|
124
|
+
>确定</Button>
|
125
|
+
<Button
|
126
|
+
size={'xs'}
|
127
|
+
onClick={() => this.handleCancelClick(confirm, setSelectedKeys)}
|
128
|
+
>取消</Button>
|
129
|
+
</li>
|
130
|
+
) : null}
|
131
|
+
</ul>
|
132
|
+
) : null
|
133
|
+
},
|
134
|
+
setSelectedKeys: (keys: Array<string>) => this.setState({filteredValue: keys})
|
135
|
+
};
|
136
|
+
|
137
|
+
return (
|
138
|
+
<HeadCellDropDown
|
139
|
+
className={`${ns}TableCell-filterBtn`}
|
140
|
+
layerClassName={`${ns}TableCell-filterPopOver`}
|
141
|
+
filterIcon={<Icon icon="column-filter" className="icon" />}
|
142
|
+
active={column.filtered || options && options.some((item: any) => item.selected)}
|
143
|
+
popOverContainer={popOverContainer ? popOverContainer : () => findDOMNode(this)}
|
144
|
+
selectedKeys={this.state.filteredValue}
|
145
|
+
{...filterProps}
|
146
|
+
>
|
147
|
+
</HeadCellDropDown>
|
148
|
+
);
|
149
|
+
}
|
150
|
+
|
151
|
+
handleClick(
|
152
|
+
confirm: (payload?: FilterPayload) => void,
|
153
|
+
setSelectedKeys?: (keys?: (string | Array<string | number>)) => void,
|
154
|
+
selectedKeys?: Array<string>
|
155
|
+
) {
|
156
|
+
const {onFilter, column} = this.props;
|
157
|
+
|
158
|
+
setSelectedKeys && setSelectedKeys(selectedKeys);
|
159
|
+
|
160
|
+
onFilter && onFilter({[column.key] : selectedKeys});
|
161
|
+
confirm();
|
162
|
+
}
|
163
|
+
|
164
|
+
handleCheck(
|
165
|
+
confirm: (payload?: FilterPayload) => void,
|
166
|
+
setSelectedKeys?: ((keys: (string | Array<string | number>)) => void | undefined),
|
167
|
+
selectedKeys?: Array<string>
|
168
|
+
) {
|
169
|
+
const filteredValue = this.state.filteredValue;
|
170
|
+
// 选中
|
171
|
+
if (Array.isArray(selectedKeys)) {
|
172
|
+
setSelectedKeys && setSelectedKeys([...filteredValue, ...selectedKeys]);
|
173
|
+
} else { // 取消选中
|
174
|
+
setSelectedKeys && setSelectedKeys(filteredValue.filter(v => v !== selectedKeys));
|
175
|
+
}
|
176
|
+
}
|
177
|
+
|
178
|
+
handleConfirmClick(confirm: (payload?: FilterPayload) => void) {
|
179
|
+
const {onFilter, column} = this.props;
|
180
|
+
onFilter && onFilter({[column.key] : this.state.filteredValue});
|
181
|
+
confirm();
|
182
|
+
}
|
183
|
+
|
184
|
+
handleCancelClick(
|
185
|
+
confirm: (payload?: FilterPayload) => void,
|
186
|
+
setSelectedKeys?: ((keys: (string | Array<string | number>)) => void | undefined)
|
187
|
+
) {
|
188
|
+
setSelectedKeys && setSelectedKeys([]);
|
189
|
+
confirm();
|
190
|
+
}
|
191
|
+
}
|
192
|
+
|
193
|
+
export default themeable(localeable(HeadCellFilter));
|
@@ -0,0 +1,86 @@
|
|
1
|
+
/**
|
2
|
+
* @file table/HeadCellSelect
|
3
|
+
* @author fex
|
4
|
+
*/
|
5
|
+
|
6
|
+
import React from 'react';
|
7
|
+
import {findDOMNode} from 'react-dom';
|
8
|
+
|
9
|
+
import {themeable, ThemeProps} from '../../theme';
|
10
|
+
import {LocaleProps, localeable} from '../../locale';
|
11
|
+
import HeadCellDropDown, {FilterPayload} from './HeadCellDropDown';
|
12
|
+
import {RowSelectionOptionProps} from './index';
|
13
|
+
import {Icon} from '../icons';
|
14
|
+
|
15
|
+
export interface Props extends ThemeProps, LocaleProps {
|
16
|
+
selections: Array<RowSelectionOptionProps>;
|
17
|
+
keys: Array<string | number> | string;
|
18
|
+
popOverContainer?: () => Element | Text | null;
|
19
|
+
}
|
20
|
+
|
21
|
+
export interface State {
|
22
|
+
key: Array<string | number> | string;
|
23
|
+
}
|
24
|
+
|
25
|
+
export class HeadCellSelect extends React.Component<Props, State> {
|
26
|
+
static defaultProps = {
|
27
|
+
selections: []
|
28
|
+
};
|
29
|
+
|
30
|
+
constructor(props: Props) {
|
31
|
+
super(props);
|
32
|
+
|
33
|
+
this.state = {
|
34
|
+
key: ''
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
render() {
|
39
|
+
const {
|
40
|
+
selections,
|
41
|
+
keys: allKeys,
|
42
|
+
popOverContainer,
|
43
|
+
classnames: cx,
|
44
|
+
classPrefix: ns
|
45
|
+
} = this.props;
|
46
|
+
|
47
|
+
return (
|
48
|
+
<HeadCellDropDown
|
49
|
+
className={`${ns}TableCell-selectionBtn`}
|
50
|
+
layerClassName={`${ns}TableCell-selectionPopOver`}
|
51
|
+
filterIcon={<Icon icon="left-arrow" className="icon" />}
|
52
|
+
active={false}
|
53
|
+
popOverContainer={popOverContainer ? popOverContainer : () => findDOMNode(this)}
|
54
|
+
filterDropdown={({setSelectedKeys, selectedKeys, confirm, clearFilters}) => {
|
55
|
+
return <ul className={cx('DropDown-menu')}>
|
56
|
+
{selections.map((item, index) => (
|
57
|
+
<li
|
58
|
+
key={index}
|
59
|
+
onClick={() => {
|
60
|
+
item.onSelect && item.onSelect(allKeys);
|
61
|
+
this.handleClick(confirm, setSelectedKeys, item.key);
|
62
|
+
}}>
|
63
|
+
{item.text}
|
64
|
+
</li>
|
65
|
+
))}
|
66
|
+
</ul> ;
|
67
|
+
}}
|
68
|
+
setSelectedKeys={keys => this.setState({key: keys})}
|
69
|
+
selectedKeys={this.state.key}
|
70
|
+
>
|
71
|
+
</HeadCellDropDown>
|
72
|
+
);
|
73
|
+
}
|
74
|
+
|
75
|
+
handleClick(
|
76
|
+
confirm: (payload?: FilterPayload) => void,
|
77
|
+
setSelectedKeys?: (keys?: Array<string | number> | string) => void | undefined,
|
78
|
+
selectedKeys?: Array<string> | string
|
79
|
+
) {
|
80
|
+
setSelectedKeys && setSelectedKeys(selectedKeys);
|
81
|
+
|
82
|
+
confirm();
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
export default themeable(localeable(HeadCellSelect));
|
@@ -0,0 +1,102 @@
|
|
1
|
+
/**
|
2
|
+
* @file table/HeadCellSort
|
3
|
+
* @author fex
|
4
|
+
*/
|
5
|
+
|
6
|
+
import React from 'react';
|
7
|
+
|
8
|
+
import {themeable, ThemeProps} from '../../theme';
|
9
|
+
import {LocaleProps, localeable} from '../../locale';
|
10
|
+
import {Icon} from '../icons';
|
11
|
+
|
12
|
+
export interface Props extends ThemeProps, LocaleProps {
|
13
|
+
column: any;
|
14
|
+
onSort?: Function;
|
15
|
+
}
|
16
|
+
|
17
|
+
export interface State {
|
18
|
+
order: string; // 升序还是降序
|
19
|
+
orderBy: string; // 一次只能按一列排序 当前列的key
|
20
|
+
}
|
21
|
+
|
22
|
+
export class HeadCellSort extends React.Component<Props, State> {
|
23
|
+
constructor(props: Props) {
|
24
|
+
super(props);
|
25
|
+
|
26
|
+
this.state = {
|
27
|
+
order: '',
|
28
|
+
orderBy: ''
|
29
|
+
};
|
30
|
+
}
|
31
|
+
|
32
|
+
render() {
|
33
|
+
const {
|
34
|
+
column,
|
35
|
+
onSort,
|
36
|
+
classnames: cx
|
37
|
+
} = this.props;
|
38
|
+
|
39
|
+
return (
|
40
|
+
<span
|
41
|
+
className={cx('TableCell-sortBtn')}
|
42
|
+
onClick={() => {
|
43
|
+
const callback = () => {
|
44
|
+
if (onSort) {
|
45
|
+
onSort({
|
46
|
+
orderBy: this.state.orderBy,
|
47
|
+
order: this.state.order
|
48
|
+
});
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
let sortPayload = {};
|
53
|
+
if (column.key === this.state.orderBy) {
|
54
|
+
if (this.state.order === 'descend') {
|
55
|
+
// 降序改为取消
|
56
|
+
sortPayload = {orderBy: '', order: 'ascend'};
|
57
|
+
} else {
|
58
|
+
// 升序之后降序
|
59
|
+
sortPayload = {order: 'descend'};
|
60
|
+
}
|
61
|
+
} else {
|
62
|
+
// 默认先升序
|
63
|
+
sortPayload = {orderBy: column.key, order: 'ascend'};
|
64
|
+
}
|
65
|
+
|
66
|
+
this.setState(sortPayload, callback);
|
67
|
+
}}
|
68
|
+
>
|
69
|
+
<i
|
70
|
+
className={cx(
|
71
|
+
'TableCell-sortBtn--down',
|
72
|
+
this.state.orderBy === column.key && this.state.order === 'descend'
|
73
|
+
? 'is-active'
|
74
|
+
: ''
|
75
|
+
)}
|
76
|
+
>
|
77
|
+
<Icon icon="sort-desc" className="icon" />
|
78
|
+
</i>
|
79
|
+
<i
|
80
|
+
className={cx(
|
81
|
+
'TableCell-sortBtn--up',
|
82
|
+
this.state.orderBy === column.key && this.state.order === 'ascend'
|
83
|
+
? 'is-active'
|
84
|
+
: ''
|
85
|
+
)}
|
86
|
+
>
|
87
|
+
<Icon icon="sort-asc" className="icon" />
|
88
|
+
</i>
|
89
|
+
<i
|
90
|
+
className={cx(
|
91
|
+
'TableCell-sortBtn--default',
|
92
|
+
this.state.orderBy === column.key ? '' : 'is-active'
|
93
|
+
)}
|
94
|
+
>
|
95
|
+
<Icon icon="sort-default" className="icon" />
|
96
|
+
</i>
|
97
|
+
</span>
|
98
|
+
);
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
export default themeable(localeable(HeadCellSort));
|