@kdcloudjs/table 1.0.2 → 1.1.0

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.
Files changed (71) hide show
  1. package/dist/@kdcloudjs/table.css +1 -1
  2. package/dist/@kdcloudjs/table.js +271 -187
  3. package/dist/@kdcloudjs/table.js.map +1 -1
  4. package/dist/@kdcloudjs/table.min.css +1 -1
  5. package/dist/@kdcloudjs/table.min.js +7 -7
  6. package/dist/@kdcloudjs/table.min.js.map +1 -1
  7. package/es/table/base/calculations.js +1 -1
  8. package/es/table/base/empty.js +2 -2
  9. package/es/table/base/header.js +7 -11
  10. package/es/table/base/html-table.js +13 -22
  11. package/es/table/base/styles.d.ts +10 -0
  12. package/es/table/base/styles.js +13 -3
  13. package/es/table/common-views.js +2 -2
  14. package/es/table/pipeline/features/columnDrag.js +62 -21
  15. package/es/table/pipeline/features/contextMenu.js +37 -22
  16. package/es/table/pipeline/features/multiSelect.js +85 -79
  17. package/es/table/pipeline/features/rowDetail.js +2 -1
  18. package/es/table/pipeline/features/rowGrouping.js +2 -1
  19. package/es/table/pipeline/features/treeMode.js +3 -2
  20. package/es/table/pipeline/pipeline.d.ts +4 -0
  21. package/es/table/pipeline/pipeline.js +17 -0
  22. package/es/table/pivot/pivot-utils/convert-utils.js +4 -2
  23. package/lib/table/base/calculations.js +1 -1
  24. package/lib/table/base/empty.js +2 -2
  25. package/lib/table/base/header.js +8 -11
  26. package/lib/table/base/html-table.js +14 -22
  27. package/lib/table/base/styles.d.ts +10 -0
  28. package/lib/table/base/styles.js +13 -3
  29. package/lib/table/common-views.js +1 -1
  30. package/lib/table/pipeline/features/columnDrag.js +63 -22
  31. package/lib/table/pipeline/features/contextMenu.js +37 -22
  32. package/lib/table/pipeline/features/multiSelect.js +81 -75
  33. package/lib/table/pipeline/features/rowDetail.js +3 -1
  34. package/lib/table/pipeline/features/rowGrouping.js +3 -1
  35. package/lib/table/pipeline/features/treeMode.js +4 -2
  36. package/lib/table/pipeline/pipeline.d.ts +4 -0
  37. package/lib/table/pipeline/pipeline.js +17 -0
  38. package/lib/table/pivot/pivot-utils/convert-utils.js +6 -2
  39. package/package.json +1 -1
  40. package/es/table/pipeline/features/__test__/multiSelect.test.d.ts +0 -1
  41. package/es/table/pipeline/features/__test__/multiSelect.test.js +0 -152
  42. package/es/table/pipeline/features/__test__/rowDetail.test.d.ts +0 -1
  43. package/es/table/pipeline/features/__test__/rowDetail.test.js +0 -223
  44. package/es/table/pipeline/features/__test__/rowGrouping.test.d.ts +0 -1
  45. package/es/table/pipeline/features/__test__/rowGrouping.test.js +0 -120
  46. package/es/table/pipeline/features/__test__/singleSelect.test.d.ts +0 -1
  47. package/es/table/pipeline/features/__test__/singleSelect.test.js +0 -191
  48. package/es/table/pipeline/features/__test__/sort.test.d.ts +0 -1
  49. package/es/table/pipeline/features/__test__/sort.test.js +0 -213
  50. package/es/table/pipeline/features/__test__/tips.test.d.ts +0 -1
  51. package/es/table/pipeline/features/__test__/tips.test.js +0 -123
  52. package/es/table/pipeline/features/__test__/treeMode.test.d.ts +0 -1
  53. package/es/table/pipeline/features/__test__/treeMode.test.js +0 -202
  54. package/es/table/pipeline/features/filter/__test__/Filter.test.d.ts +0 -1
  55. package/es/table/pipeline/features/filter/__test__/Filter.test.js +0 -29
  56. package/lib/table/pipeline/features/__test__/multiSelect.test.d.ts +0 -1
  57. package/lib/table/pipeline/features/__test__/multiSelect.test.js +0 -163
  58. package/lib/table/pipeline/features/__test__/rowDetail.test.d.ts +0 -1
  59. package/lib/table/pipeline/features/__test__/rowDetail.test.js +0 -230
  60. package/lib/table/pipeline/features/__test__/rowGrouping.test.d.ts +0 -1
  61. package/lib/table/pipeline/features/__test__/rowGrouping.test.js +0 -129
  62. package/lib/table/pipeline/features/__test__/singleSelect.test.d.ts +0 -1
  63. package/lib/table/pipeline/features/__test__/singleSelect.test.js +0 -201
  64. package/lib/table/pipeline/features/__test__/sort.test.d.ts +0 -1
  65. package/lib/table/pipeline/features/__test__/sort.test.js +0 -220
  66. package/lib/table/pipeline/features/__test__/tips.test.d.ts +0 -1
  67. package/lib/table/pipeline/features/__test__/tips.test.js +0 -133
  68. package/lib/table/pipeline/features/__test__/treeMode.test.d.ts +0 -1
  69. package/lib/table/pipeline/features/__test__/treeMode.test.js +0 -206
  70. package/lib/table/pipeline/features/filter/__test__/Filter.test.d.ts +0 -1
  71. package/lib/table/pipeline/features/filter/__test__/Filter.test.js +0 -36
@@ -1,213 +0,0 @@
1
- import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
2
- import { sort } from '../sort';
3
- import { useTablePipeline } from '../../pipeline';
4
- import { mount } from 'enzyme';
5
- import { renderHook } from '@testing-library/react-hooks';
6
- var dataSource = [{
7
- id: '1',
8
- prov: '湖北省',
9
- confirm: 54406,
10
- cure: 4793,
11
- dead: 1457,
12
- t: '2020-02-15 19:52:02'
13
- }, {
14
- id: '2',
15
- prov: '广东省',
16
- confirm: 1294,
17
- cure: 409,
18
- dead: 2,
19
- t: '2020-02-15 19:52:02'
20
- }, {
21
- id: '3',
22
- prov: '河南省',
23
- confirm: 1212,
24
- cure: 390,
25
- dead: 13,
26
- t: '2020-02-15 19:52:02'
27
- }, {
28
- id: '4',
29
- prov: '浙江省',
30
- confirm: 1000,
31
- cure: 428,
32
- dead: 0,
33
- t: '2020-02-15 19:52:02'
34
- }, {
35
- id: '5',
36
- prov: '湖南省',
37
- confirm: 1000,
38
- cure: 417,
39
- dead: 2,
40
- t: '2020-02-15 19:52:02'
41
- }];
42
- var columns = [{
43
- code: 'prov',
44
- name: '省份',
45
- width: 150,
46
- features: {
47
- sortable: true
48
- }
49
- }, {
50
- code: 'confirm',
51
- name: '确诊',
52
- width: 100,
53
- align: 'right',
54
- features: {
55
- sortable: true
56
- }
57
- }, {
58
- code: 'cure',
59
- name: '治愈',
60
- width: 100,
61
- align: 'right',
62
- features: {
63
- sortable: true
64
- }
65
- }, {
66
- code: 'dead',
67
- name: '死亡',
68
- width: 100,
69
- align: 'right',
70
- features: {
71
- sortable: true
72
- }
73
- }, {
74
- code: 't',
75
- name: '更新时间',
76
- width: 180,
77
- features: {
78
- sortable: true
79
- }
80
- }];
81
- describe('sort 单元测试', function () {
82
- var opts = {
83
- defaultSorts: [{
84
- code: 'cure',
85
- order: 'asc'
86
- }],
87
- highlightColumnWhenActive: true,
88
- mode: 'single',
89
- keepDataSource: false,
90
- onChangeSorts: jest.fn()
91
- };
92
- var newPipeline = null;
93
- beforeEach(function () {
94
- var _renderHook = renderHook(function () {
95
- return useTablePipeline({
96
- primaryKey: 'id'
97
- }).input({
98
- dataSource: dataSource,
99
- columns: columns
100
- });
101
- }),
102
- result = _renderHook.result;
103
-
104
- var tablePipeline = result.current;
105
- newPipeline = sort(opts)(tablePipeline);
106
- });
107
- afterEach(function () {
108
- newPipeline = null;
109
- opts.onChangeSorts.mockClear();
110
- });
111
- it('初始化数据', function () {
112
- // 默认cure列升序排序
113
- expect(newPipeline.getDataSource()[0]).toEqual({
114
- id: '3',
115
- prov: '河南省',
116
- confirm: 1212,
117
- cure: 390,
118
- dead: 13,
119
- t: '2020-02-15 19:52:02'
120
- });
121
- });
122
- it('列头单元格渲染', function () {
123
- var col = newPipeline.getColumns();
124
- var wrapper = mount(col[0].title);
125
- expect(_findInstanceProperty(wrapper).call(wrapper, 'SortIcon').length).toBe(1); // 列头单元格
126
-
127
- var div = _findInstanceProperty(wrapper).call(wrapper, 'div').at(0);
128
-
129
- div.simulate('click');
130
- expect(opts.onChangeSorts).toBeCalledWith([{
131
- code: 'prov',
132
- order: 'desc'
133
- }], {
134
- code: 'prov',
135
- order: 'desc'
136
- });
137
- expect(1).toBe(1);
138
- });
139
- it('getCellProps', function () {
140
- var col = newPipeline.getColumns();
141
- var cellProps = col[2].getCellProps(4793, newPipeline.getDataSource()[0], 0);
142
- expect(cellProps.style).toEqual({
143
- background: 'var(--highlight-bgcolor)'
144
- });
145
- });
146
- it('keepDataSource为true,数据不变', function () {
147
- var _renderHook2 = renderHook(function () {
148
- return useTablePipeline({
149
- primaryKey: 'id'
150
- }).input({
151
- dataSource: dataSource,
152
- columns: columns
153
- });
154
- }),
155
- result = _renderHook2.result;
156
-
157
- var tablePipeline = result.current;
158
- opts.keepDataSource = true;
159
- var newPipeline = sort(opts)(tablePipeline);
160
- expect(newPipeline.getDataSource()[0].id).toBe('1');
161
- opts.keepDataSource = false;
162
- });
163
- it('多列排序', function () {
164
- var _renderHook3 = renderHook(function () {
165
- return useTablePipeline({
166
- primaryKey: 'id'
167
- }).input({
168
- dataSource: dataSource,
169
- columns: columns
170
- });
171
- }),
172
- result = _renderHook3.result;
173
-
174
- var tablePipeline = result.current;
175
- opts.defaultSorts = [{
176
- code: 'confirm',
177
- order: 'desc'
178
- }, {
179
- code: 'cure',
180
- order: 'asc'
181
- }];
182
- opts.mode = 'multiple';
183
- var newPipeline = sort(opts)(tablePipeline); // confirm 降序,cure升序
184
-
185
- expect(newPipeline.getDataSource()[3].confirm).toBe(1000);
186
- expect(newPipeline.getDataSource()[3].cure).toBe(417);
187
- expect(newPipeline.getDataSource()[4].confirm).toBe(1000);
188
- expect(newPipeline.getDataSource()[4].cure).toBe(428);
189
- var col = newPipeline.getColumns();
190
- var confirmWrapper = mount(col[1].title); // 列头单元格
191
-
192
- var div = _findInstanceProperty(confirmWrapper).call(confirmWrapper, 'div').at(0);
193
-
194
- div.simulate('click'); // confirm 列初始是降序,点击后是升序
195
- // calls[0][1]表示第1次调用的第二个参数
196
-
197
- expect(opts.onChangeSorts.mock.calls[0][1]).toEqual({
198
- code: 'confirm',
199
- order: 'asc'
200
- });
201
- opts.onChangeSorts.mockClear();
202
- var cureWrapper = mount(col[2].title);
203
-
204
- var div1 = _findInstanceProperty(cureWrapper).call(cureWrapper, 'div').at(0);
205
-
206
- div1.simulate('click'); // confirm 列初始是升序,点击后没有排序
207
-
208
- expect(opts.onChangeSorts.mock.calls[0][1]).toEqual({
209
- code: 'cure',
210
- order: 'none'
211
- });
212
- });
213
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,123 +0,0 @@
1
- import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
2
- import { tips } from '../tips';
3
- import { useTablePipeline } from '../../pipeline';
4
- import { mount } from 'enzyme';
5
- import { renderHook } from '@testing-library/react-hooks';
6
- import React from 'react';
7
- var dataSource = [{
8
- id: '1',
9
- prov: '湖北省',
10
- confirm: 54406,
11
- cure: 4793,
12
- dead: 1457,
13
- t: '2020-02-15 19:52:02'
14
- }, {
15
- id: '2',
16
- prov: '广东省',
17
- confirm: 1294,
18
- cure: 409,
19
- dead: 2,
20
- t: '2020-02-15 19:52:02'
21
- }, {
22
- id: '3',
23
- prov: '河南省',
24
- confirm: 1212,
25
- cure: 390,
26
- dead: 13,
27
- t: '2020-02-15 19:52:02'
28
- }, {
29
- id: '4',
30
- prov: '浙江省',
31
- confirm: 1000,
32
- cure: 428,
33
- dead: 0,
34
- t: '2020-02-15 19:52:02'
35
- }, {
36
- id: '5',
37
- prov: '湖南省',
38
- confirm: 1000,
39
- cure: 417,
40
- dead: 2,
41
- t: '2020-02-15 19:52:02'
42
- }];
43
- var columns = [{
44
- code: 'prov',
45
- name: '省份',
46
- width: 150,
47
- features: {
48
- tips: '省份信息'
49
- }
50
- }, {
51
- code: 'confirm',
52
- name: '确诊',
53
- width: 100,
54
- align: 'right',
55
- features: {
56
- tips: '确诊数量'
57
- }
58
- }, {
59
- code: 'cure',
60
- name: '治愈',
61
- width: 100,
62
- align: 'right'
63
- }, {
64
- code: 'dead',
65
- name: '死亡',
66
- width: 100,
67
- align: 'right'
68
- }, {
69
- code: 't',
70
- name: '更新时间',
71
- width: 180
72
- }];
73
-
74
- function Tooltip(_ref) {
75
- var title = _ref.title,
76
- children = _ref.children;
77
- return /*#__PURE__*/React.createElement("div", null, title);
78
- }
79
-
80
- describe('tips 单元测试', function () {
81
- var newPipeline = null;
82
- beforeEach(function () {
83
- var _renderHook = renderHook(function () {
84
- return useTablePipeline({
85
- primaryKey: 'id',
86
- components: {
87
- Tooltip: Tooltip
88
- }
89
- }).input({
90
- dataSource: dataSource,
91
- columns: columns
92
- });
93
- }),
94
- result = _renderHook.result;
95
-
96
- var tablePipeline = result.current;
97
- newPipeline = tips()(tablePipeline);
98
- });
99
- afterEach(function () {
100
- newPipeline = null;
101
- });
102
- it('初始化时存在Tooltip组件', function () {
103
- var col = newPipeline.getColumns();
104
- var wrapper = mount(col[0].title);
105
- expect(_findInstanceProperty(wrapper).call(wrapper, 'Tooltip').length).toBe(1);
106
- });
107
- it('不传Tooltip', function () {
108
- var _renderHook2 = renderHook(function () {
109
- return useTablePipeline({
110
- primaryKey: 'id'
111
- }).input({
112
- dataSource: dataSource,
113
- columns: columns
114
- });
115
- }),
116
- result = _renderHook2.result;
117
-
118
- var tablePipeline = result.current;
119
- expect(function () {
120
- return tips()(tablePipeline);
121
- }).toThrow(Error);
122
- });
123
- });
@@ -1,202 +0,0 @@
1
- import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
2
- import { treeMode } from '../treeMode';
3
- import { useTablePipeline } from '../../pipeline';
4
- import { mount } from 'enzyme';
5
- import { renderHook } from '@testing-library/react-hooks';
6
-
7
- function makeChildren(prefix) {
8
- return [{
9
- id: "".concat(prefix, "-1"),
10
- title: '二级标题',
11
- dept: '应用部',
12
- dest: '云南大理',
13
- guide: 'Douglas Lee',
14
- children: [{
15
- id: "".concat(prefix, "-1-1"),
16
- title: '三级标题',
17
- dept: '平台大前端-UED',
18
- dest: '云南大理',
19
- guide: 'Douglas Lee'
20
- }, {
21
- id: "".concat(prefix, "-1-2"),
22
- title: '三级标题',
23
- dept: '平台大前端-前端',
24
- dest: '云南大理',
25
- guide: 'Douglas Lee'
26
- }]
27
- }, {
28
- id: "".concat(prefix, "-2"),
29
- title: '二级标题',
30
- dept: '应用部',
31
- dest: '云南大理',
32
- guide: 'Douglas Lee',
33
- children: [{
34
- id: "".concat(prefix, "-2-1"),
35
- title: '三级标题',
36
- dept: '平台大前端-UED',
37
- dest: '云南大理',
38
- guide: 'Douglas Lee'
39
- }, {
40
- id: "".concat(prefix, "-2-2"),
41
- title: '三级标题',
42
- dept: '平台大前端-前端',
43
- dest: '云南大理',
44
- guide: 'Douglas Lee'
45
- }]
46
- }, {
47
- id: "".concat(prefix, "-3"),
48
- title: '二级标题',
49
- dept: '应用部',
50
- dest: '云南大理',
51
- guide: 'Douglas Lee'
52
- }];
53
- }
54
-
55
- var dataSource = [{
56
- id: '1',
57
- title: '一级标题',
58
- dept: '云苍穹-前端',
59
- dest: 'South Maddison',
60
- guide: 'Don Moreno',
61
- children: makeChildren('1')
62
- }, {
63
- id: '2',
64
- title: '一级标题',
65
- dept: '云苍穹-模型',
66
- dest: 'Emilhaven',
67
- guide: 'Douglas Richards',
68
- children: makeChildren('2')
69
- }, {
70
- id: '3',
71
- title: '一级标题',
72
- dept: '云苍穹-基础',
73
- dest: '云南大理',
74
- guide: 'Douglas Lee',
75
- children: makeChildren('3')
76
- }, {
77
- id: '4',
78
- title: '一级标题',
79
- dept: '云苍穹-体验',
80
- dest: '杭州千岛湖',
81
- guide: 'Eric Castillo',
82
- children: makeChildren('4')
83
- }, {
84
- id: '5',
85
- title: '一级标题',
86
- dept: '云苍穹-运营',
87
- dest: 'East Karl',
88
- guide: 'Herbert Patton'
89
- }];
90
- var columns = [{
91
- code: 'title',
92
- name: '标题',
93
- width: 200,
94
- getCellProps: function getCellProps() {
95
- return {
96
- style: {
97
- background: 'red'
98
- }
99
- };
100
- }
101
- }, {
102
- code: 'dept',
103
- name: '部门名称',
104
- width: 180
105
- }, {
106
- code: 'dest',
107
- name: '团建目的地',
108
- width: 160
109
- }, {
110
- code: 'guide',
111
- name: '当地导游',
112
- width: 160
113
- }];
114
- describe('treeMode 单元测试', function () {
115
- var opts = {
116
- openKeys: ['4', '4-2'],
117
- clickArea: 'content',
118
- onChangeOpenKeys: jest.fn()
119
- };
120
- var newPipeline = null;
121
- beforeEach(function () {
122
- var _renderHook = renderHook(function () {
123
- return useTablePipeline({
124
- primaryKey: 'id'
125
- }).input({
126
- dataSource: dataSource,
127
- columns: columns
128
- });
129
- }),
130
- result = _renderHook.result;
131
-
132
- var tablePipeline = result.current;
133
- newPipeline = treeMode(opts)(tablePipeline);
134
- });
135
- afterEach(function () {
136
- newPipeline = null;
137
- opts.onChangeOpenKeys.mockClear();
138
- });
139
- it('初始化展示', function () {
140
- // 5 + 3 + 2
141
- expect(newPipeline.getDataSource().length).toBe(10);
142
- });
143
- it('展开图标单元格渲染', function () {
144
- var col = newPipeline.getColumns();
145
- var wrapper = mount(col[0].render('一级标题', newPipeline.getDataSource()[0], 0));
146
- expect(_findInstanceProperty(wrapper).call(wrapper, 'CaretRightIcon').length).toBe(1);
147
-
148
- var div = _findInstanceProperty(wrapper).call(wrapper, 'div').at(0);
149
-
150
- div.simulate('click');
151
- expect(opts.onChangeOpenKeys).toHaveBeenCalled();
152
- expect(opts.onChangeOpenKeys).toBeCalledWith(['4', '4-2', '1'], '1', 'expand');
153
- opts.onChangeOpenKeys.mockClear(); // 展开列点击
154
-
155
- var expandColWrapper = mount(col[0].render('一级标题', newPipeline.getDataSource()[3], 3));
156
-
157
- var div1 = _findInstanceProperty(expandColWrapper).call(expandColWrapper, 'div').at(0);
158
-
159
- div1.simulate('click');
160
- expect(opts.onChangeOpenKeys).toBeCalledWith(['4-2'], '4', 'collapse'); // 叶子节点渲染
161
-
162
- var leafWrapper = mount(col[0].render('一级标题', newPipeline.getDataSource()[9], 9));
163
- expect(_findInstanceProperty(leafWrapper).call(leafWrapper, '.expansion-cell.leaf').length).toBe(2);
164
- });
165
- it('getCellProps', function () {
166
- var col = newPipeline.getColumns(); // clickArea: 'content' 取默认的cellProps
167
-
168
- expect(col[0].getCellProps()).toEqual({
169
- style: {
170
- background: 'red'
171
- }
172
- });
173
- });
174
- it('clickArea 为cell', function () {
175
- var _renderHook2 = renderHook(function () {
176
- return useTablePipeline({
177
- primaryKey: 'id'
178
- }).input({
179
- dataSource: dataSource,
180
- columns: columns
181
- });
182
- }),
183
- result = _renderHook2.result;
184
-
185
- var tablePipeline = result.current;
186
- opts.clickArea = 'cell';
187
- var newPipeline = treeMode(opts)(tablePipeline);
188
- var col = newPipeline.getColumns();
189
- var cellProps = col[0].getCellProps('一级标题', newPipeline.getDataSource()[0], 0);
190
- expect(cellProps.style).toEqual({
191
- background: 'red',
192
- cursor: 'pointer'
193
- });
194
- cellProps.onClick();
195
- expect(opts.onChangeOpenKeys).toHaveBeenCalled(); // 叶子节点cellProps
196
-
197
- var leafCellProps = col[0].getCellProps('一级标题', newPipeline.getDataSource()[9], 9);
198
- expect(leafCellProps.style).toEqual({
199
- background: 'red'
200
- });
201
- });
202
- });
@@ -1,29 +0,0 @@
1
- import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
2
- import React from 'react';
3
- import { mount } from 'enzyme';
4
- import { Classes } from '../../../../base/styles';
5
- import Filter from '../Filter';
6
- import DefaultFilterContent from '../DefaultFilterContent';
7
- var NAME = 'Filter';
8
- var setFilter = jest.fn();
9
- var setFilterModel = jest.fn();
10
- describe("".concat(NAME), function () {
11
- it('render and test event', function () {
12
- var wrapper = mount( /*#__PURE__*/React.createElement(Filter, {
13
- setFilter: setFilter,
14
- setFilterModel: setFilterModel,
15
- filterModel: {
16
- filter: []
17
- },
18
- stopClickEventPropagation: true,
19
- isFilterActive: true
20
- }));
21
-
22
- _findInstanceProperty(wrapper).call(wrapper, ".".concat(Classes.filterIcon)).at(0).simulate('click');
23
-
24
- _findInstanceProperty(wrapper).call(wrapper, 'div').at(0).simulate('mousedown');
25
-
26
- expect(_findInstanceProperty(wrapper).call(wrapper, DefaultFilterContent).length).toBe(1);
27
- wrapper.unmount();
28
- });
29
- });