vxe-gantt 4.0.0-beta.2 → 4.0.0-beta.4

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 (41) hide show
  1. package/README.md +2 -2
  2. package/es/gantt/src/gantt-body.js +70 -36
  3. package/es/gantt/src/gantt-chart.js +80 -56
  4. package/es/gantt/src/gantt-view.js +62 -7
  5. package/es/gantt/src/gantt.js +24 -6
  6. package/es/gantt/style.css +37 -3
  7. package/es/gantt/style.min.css +1 -1
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/ui/index.js +7 -2
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-gantt/style.css +37 -3
  13. package/es/vxe-gantt/style.min.css +1 -1
  14. package/lib/gantt/src/gantt-body.js +104 -44
  15. package/lib/gantt/src/gantt-body.min.js +1 -1
  16. package/lib/gantt/src/gantt-chart.js +100 -60
  17. package/lib/gantt/src/gantt-chart.min.js +1 -1
  18. package/lib/gantt/src/gantt-view.js +79 -6
  19. package/lib/gantt/src/gantt-view.min.js +1 -1
  20. package/lib/gantt/src/gantt.js +31 -7
  21. package/lib/gantt/src/gantt.min.js +1 -1
  22. package/lib/gantt/style/style.css +37 -3
  23. package/lib/gantt/style/style.min.css +1 -1
  24. package/lib/index.umd.js +349 -140
  25. package/lib/index.umd.min.js +1 -1
  26. package/lib/style.css +1 -1
  27. package/lib/style.min.css +1 -1
  28. package/lib/ui/index.js +13 -2
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/log.js +1 -1
  31. package/lib/ui/src/log.min.js +1 -1
  32. package/lib/vxe-gantt/style/style.css +37 -3
  33. package/lib/vxe-gantt/style/style.min.css +1 -1
  34. package/package.json +3 -3
  35. package/packages/gantt/src/gantt-body.ts +79 -37
  36. package/packages/gantt/src/gantt-chart.ts +90 -61
  37. package/packages/gantt/src/gantt-view.ts +62 -7
  38. package/packages/gantt/src/gantt.ts +23 -5
  39. package/packages/ui/index.ts +9 -1
  40. package/styles/components/gantt-module/gantt-chart.scss +1 -0
  41. package/styles/components/gantt.scss +43 -8
package/README.md CHANGED
@@ -19,9 +19,9 @@
19
19
 
20
20
  * 版本说明
21
21
  * **V4**
22
- * [x] v4.0 基于 vue3.2+,只支持现代浏览器,不支持 IE
22
+ * [x] v4.0 基于 vue3.2+,适配 vxe-table 3.18+,只支持现代浏览器,不支持 IE
23
23
  * **V3**
24
- * [x] v3.0 基于 vue2.6~2.7,只支持现代浏览器,不支持 IE
24
+ * [x] v3.0 基于 vue2.6~2.7,适配 vxe-table 4.16+,只支持现代浏览器,不支持 IE
25
25
  * **V2**
26
26
  * [x] ~~v2.0 基于 vue2.6+,停止维护~~
27
27
  * **V1**
@@ -13,47 +13,81 @@ export default defineVxeComponent({
13
13
  const refBodyTable = ref();
14
14
  const refBodyXSpace = ref();
15
15
  const refBodyYSpace = ref();
16
- const renderRows = () => {
17
- const $xeTable = $xeGanttView.internalData.xeTable;
18
- const tableInternalData = $xeTable ? $xeTable.internalData : {};
19
- const fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData || {};
20
- let cellOpts = {};
21
- let rowOpts = {};
22
- let defaultRowHeight = 0;
23
- if ($xeTable) {
24
- const { computeCellOpts, computeRowOpts, computeDefaultRowHeight } = $xeTable.getComputeMaps();
25
- cellOpts = computeCellOpts.value;
26
- rowOpts = computeRowOpts.value;
27
- defaultRowHeight = computeDefaultRowHeight.value;
28
- }
29
- const { tableData, tableColumn } = reactData;
16
+ const renderColumn = ($xeTable, row, rowid, $rowIndex, column, $columnIndex) => {
17
+ const tableInternalData = $xeTable.internalData;
18
+ const { fullAllDataRowIdData } = tableInternalData;
19
+ const { computeCellOpts, computeRowOpts, computeDefaultRowHeight } = $xeTable.getComputeMaps();
20
+ const cellOpts = computeCellOpts.value;
21
+ const rowOpts = computeRowOpts.value;
22
+ const defaultRowHeight = computeDefaultRowHeight.value;
23
+ const rowRest = fullAllDataRowIdData[rowid] || {};
24
+ const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
25
+ return h('td', {
26
+ key: $columnIndex,
27
+ class: 'vxe-gantt-view--body-column',
28
+ style: {
29
+ height: `${cellHeight}px`
30
+ },
31
+ onClick(evnt) {
32
+ $xeGantt.handleTaskCellClickEvent(evnt, { row, column });
33
+ },
34
+ onDblclick(evnt) {
35
+ $xeGantt.handleTaskCellDblclickEvent(evnt, { row, column });
36
+ }
37
+ });
38
+ };
39
+ const renderRows = ($xeTable, tableData) => {
40
+ const tableProps = $xeTable.props;
41
+ const { treeConfig, stripe, highlightHoverRow } = tableProps;
42
+ const tableReactData = $xeTable.reactData;
43
+ const { treeExpandedFlag } = tableReactData;
44
+ const tableInternalData = $xeTable.internalData;
45
+ const { fullAllDataRowIdData, treeExpandedMaps } = tableInternalData;
46
+ const { computeTreeOpts, computeRowOpts } = $xeTable.getComputeMaps();
47
+ const rowOpts = computeRowOpts.value;
48
+ const treeOpts = computeTreeOpts.value;
49
+ const { transform } = treeOpts;
50
+ const childrenField = treeOpts.children || treeOpts.childrenField;
51
+ const { tableColumn, scrollYLoad } = reactData;
30
52
  const trVNs = [];
31
- tableData.forEach((row, rIndex) => {
32
- const rowid = $xeTable ? $xeTable.getRowid(row) : '';
53
+ tableData.forEach((row, $rowIndex) => {
54
+ const rowid = $xeTable.getRowid(row);
33
55
  const rowRest = fullAllDataRowIdData[rowid] || {};
34
- const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
35
- trVNs.push(h('tr', {
36
- key: rIndex
37
- }, tableColumn.map((column, cIndex) => {
38
- return h('td', {
39
- key: cIndex,
40
- class: 'vxe-gantt-view--body-column',
41
- style: {
42
- height: `${cellHeight}px`
43
- },
44
- onClick(evnt) {
45
- $xeGantt.handleTaskCellClickEvent(evnt, { row });
46
- },
47
- onDblclick(evnt) {
48
- $xeGantt.handleTaskCellDblclickEvent(evnt, { row });
49
- }
50
- });
51
- })));
56
+ const trOns = {};
57
+ let rowIndex = $rowIndex;
58
+ let _rowIndex = -1;
59
+ if (rowRest) {
60
+ rowIndex = rowRest.index;
61
+ _rowIndex = rowRest._index;
62
+ }
63
+ // 当前行事件
64
+ if (rowOpts.isHover || highlightHoverRow) {
65
+ trOns.onMouseenter = (evnt) => {
66
+ $xeTable.triggerHoverEvent(evnt, { row, rowIndex });
67
+ };
68
+ trOns.onMouseleave = () => {
69
+ $xeTable.clearHoverRow();
70
+ };
71
+ }
72
+ trVNs.push(h('tr', Object.assign({ key: treeConfig ? rowid : $rowIndex, class: ['vxe-gantt-view--body-row', {
73
+ 'row--stripe': stripe && (_rowIndex + 1) % 2 === 0
74
+ }], rowid }, trOns), tableColumn.map((column, $columnIndex) => renderColumn($xeTable, row, rowid, $rowIndex, column, $columnIndex))));
75
+ let isExpandTree = false;
76
+ let rowChildren = [];
77
+ if (treeConfig && !scrollYLoad && !transform) {
78
+ rowChildren = row[childrenField];
79
+ isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
80
+ }
81
+ // 如果是树形表格
82
+ if (isExpandTree) {
83
+ trVNs.push(...renderRows($xeTable, rowChildren));
84
+ }
52
85
  });
53
86
  return trVNs;
54
87
  };
55
88
  const renderVN = () => {
56
- const { tableColumn, viewCellWidth } = reactData;
89
+ const $xeTable = $xeGanttView.internalData.xeTable;
90
+ const { tableData, tableColumn, viewCellWidth } = reactData;
57
91
  return h('div', {
58
92
  ref: refElem,
59
93
  class: 'vxe-gantt-view--body-wrapper'
@@ -83,7 +117,7 @@ export default defineVxeComponent({
83
117
  }
84
118
  });
85
119
  })),
86
- h('tbody', {}, renderRows())
120
+ h('tbody', {}, $xeTable ? renderRows($xeTable, tableData) : [])
87
121
  ]),
88
122
  h(GanttViewChartComponent)
89
123
  ])
@@ -13,75 +13,99 @@ export default defineVxeComponent({
13
13
  const { reactData, internalData } = $xeGanttView;
14
14
  const { computeProgressField, computeTitleField, computeTaskBarOpts } = $xeGantt.getComputeMaps();
15
15
  const refElem = ref();
16
- const renderVN = () => {
17
- const $xeTable = $xeGanttView.internalData.xeTable;
18
- const tableInternalData = $xeTable ? $xeTable.internalData : {};
19
- const fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData || {};
20
- let cellOpts = {};
21
- let rowOpts = {};
22
- let defaultRowHeight = 0;
23
- if ($xeTable) {
24
- const { computeCellOpts, computeRowOpts, computeDefaultRowHeight } = $xeTable.getComputeMaps();
25
- cellOpts = computeCellOpts.value;
26
- rowOpts = computeRowOpts.value;
27
- defaultRowHeight = computeDefaultRowHeight.value;
28
- }
29
- const { tableData } = reactData;
16
+ const renderTaskBar = ($xeTable, row, rowid, $rowIndex) => {
17
+ const tableProps = $xeTable.props;
18
+ const { treeConfig } = tableProps;
19
+ const tableInternalData = $xeTable.internalData;
20
+ const { fullAllDataRowIdData } = tableInternalData;
21
+ const { computeCellOpts, computeRowOpts, computeDefaultRowHeight } = $xeTable.getComputeMaps();
22
+ const cellOpts = computeCellOpts.value;
23
+ const rowOpts = computeRowOpts.value;
24
+ const defaultRowHeight = computeDefaultRowHeight.value;
30
25
  const titleField = computeTitleField.value;
31
26
  const progressField = computeProgressField.value;
32
27
  const taskBarOpts = computeTaskBarOpts.value;
33
28
  const { showProgress, showContent, contentMethod, barStyle } = taskBarOpts;
34
29
  const { round } = barStyle || {};
35
- const trVNs = [];
36
- tableData.forEach((row, rIndex) => {
37
- const rowid = $xeTable ? $xeTable.getRowid(row) : '';
38
- const rowRest = fullAllDataRowIdData[rowid] || {};
39
- const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
40
- let title = getStringValue(XEUtils.get(row, titleField));
41
- const progressValue = showProgress ? Math.min(100, Math.max(0, XEUtils.toNumber(XEUtils.get(row, progressField)))) : 0;
42
- if (contentMethod) {
43
- title = getStringValue(contentMethod({ row, title }));
30
+ const rowRest = fullAllDataRowIdData[rowid] || {};
31
+ const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
32
+ let title = getStringValue(XEUtils.get(row, titleField));
33
+ const progressValue = showProgress ? Math.min(100, Math.max(0, XEUtils.toNumber(XEUtils.get(row, progressField)))) : 0;
34
+ if (contentMethod) {
35
+ title = getStringValue(contentMethod({ row, title }));
36
+ }
37
+ return h('div', {
38
+ key: treeConfig ? rowid : $rowIndex,
39
+ rowid,
40
+ class: ['vxe-gantt-view--chart-row', {
41
+ 'is--round': round
42
+ }],
43
+ style: {
44
+ height: `${cellHeight}px`
44
45
  }
45
- trVNs.push(h('div', {
46
- key: rIndex,
46
+ }, [
47
+ h('div', {
48
+ class: 'vxe-gantt-view--chart-bar',
47
49
  rowid,
48
- class: ['vxe-gantt-view--chart-row', {
49
- 'is--round': round
50
- }],
51
- style: {
52
- height: `${cellHeight}px`
50
+ onClick(evnt) {
51
+ $xeGantt.handleTaskBarClickEvent(evnt, { row });
52
+ },
53
+ onDblclick(evnt) {
54
+ $xeGantt.handleTaskBarDblclickEvent(evnt, { row });
53
55
  }
54
56
  }, [
55
- h('div', {
56
- class: 'vxe-gantt-view--chart-bar',
57
- rowid,
58
- onClick(evnt) {
59
- $xeGantt.handleTaskBarClickEvent(evnt, { row });
60
- },
61
- onDblclick(evnt) {
62
- $xeGantt.handleTaskBarDblclickEvent(evnt, { row });
63
- }
64
- }, [
65
- showProgress
66
- ? h('div', {
67
- class: 'vxe-gantt-view--chart-progress',
68
- style: {
69
- width: `${progressValue || 0}%`
70
- }
71
- })
72
- : renderEmptyElement($xeGantt),
73
- showContent
74
- ? h('div', {
75
- class: 'vxe-gantt-view--chart-content'
76
- }, title)
77
- : renderEmptyElement($xeGantt)
78
- ])
79
- ]));
57
+ showProgress
58
+ ? h('div', {
59
+ class: 'vxe-gantt-view--chart-progress',
60
+ style: {
61
+ width: `${progressValue || 0}%`
62
+ }
63
+ })
64
+ : renderEmptyElement($xeGantt),
65
+ showContent
66
+ ? h('div', {
67
+ class: 'vxe-gantt-view--chart-content'
68
+ }, title)
69
+ : renderEmptyElement($xeGantt)
70
+ ])
71
+ ]);
72
+ };
73
+ const renderRows = ($xeTable, tableData) => {
74
+ const tableProps = $xeTable.props;
75
+ const { treeConfig } = tableProps;
76
+ const tableReactData = $xeTable.reactData;
77
+ const { treeExpandedFlag } = tableReactData;
78
+ const tableInternalData = $xeTable.internalData;
79
+ const { treeExpandedMaps } = tableInternalData;
80
+ const { computeTreeOpts } = $xeTable.getComputeMaps();
81
+ const treeOpts = computeTreeOpts.value;
82
+ const { transform } = treeOpts;
83
+ const childrenField = treeOpts.children || treeOpts.childrenField;
84
+ const { scrollYLoad } = reactData;
85
+ const trVNs = [];
86
+ tableData.forEach((row, $rowIndex) => {
87
+ const rowid = $xeTable ? $xeTable.getRowid(row) : '';
88
+ trVNs.push(renderTaskBar($xeTable, row, rowid, $rowIndex));
89
+ let isExpandTree = false;
90
+ let rowChildren = [];
91
+ if (treeConfig && !scrollYLoad && !transform) {
92
+ rowChildren = row[childrenField];
93
+ isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
94
+ }
95
+ // 如果是树形表格
96
+ if (isExpandTree) {
97
+ trVNs.push(...renderRows($xeTable, rowChildren));
98
+ }
80
99
  });
100
+ return trVNs;
101
+ };
102
+ const renderVN = () => {
103
+ const $xeTable = $xeGanttView.internalData.xeTable;
104
+ const { tableData } = reactData;
81
105
  return h('div', {
82
106
  ref: refElem,
83
107
  class: 'vxe-gantt-view--chart-wrapper'
84
- }, trVNs);
108
+ }, $xeTable ? renderRows($xeTable, tableData) : []);
85
109
  };
86
110
  onMounted(() => {
87
111
  const { elemStore } = internalData;
@@ -1,6 +1,6 @@
1
1
  import { h, ref, reactive, nextTick, inject, watch, provide, onMounted, onUnmounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
- import { setScrollTop, setScrollLeft } from '../../ui/src/dom';
3
+ import { setScrollTop, setScrollLeft, removeClass, addClass } from '../../ui/src/dom';
4
4
  import { VxeUI } from '@vxe-ui/core';
5
5
  import { getRefElem } from './util';
6
6
  import XEUtils from 'xe-utils';
@@ -108,6 +108,8 @@ export default defineVxeComponent({
108
108
  getComputeMaps: () => computeMaps
109
109
  };
110
110
  const handleParseColumn = () => {
111
+ const ganttProps = $xeGantt.props;
112
+ const { treeConfig } = ganttProps;
111
113
  const { minViewDate, maxViewDate } = reactData;
112
114
  const taskViewOpts = computeTaskViewOpts.value;
113
115
  const fullCols = [];
@@ -159,10 +161,14 @@ export default defineVxeComponent({
159
161
  if ($xeTable) {
160
162
  const startField = computeStartField.value;
161
163
  const endField = computeEndField.value;
164
+ const { computeTreeOpts } = $xeTable.getComputeMaps();
162
165
  const tableInternalData = $xeTable.internalData;
163
- const { afterFullData } = tableInternalData;
166
+ const { afterFullData, afterTreeFullData } = tableInternalData;
167
+ const treeOpts = computeTreeOpts.value;
168
+ const { transform } = treeOpts;
169
+ const childrenField = treeOpts.children || treeOpts.childrenField;
164
170
  const ctMaps = {};
165
- afterFullData.forEach(row => {
171
+ const handleParseRender = (row) => {
166
172
  const rowid = $xeTable.getRowid(row);
167
173
  const startValue = XEUtils.get(row, startField);
168
174
  const endValue = XEUtils.get(row, endField);
@@ -178,7 +184,13 @@ export default defineVxeComponent({
178
184
  oWidthSize
179
185
  };
180
186
  }
181
- });
187
+ };
188
+ if (treeConfig) {
189
+ XEUtils.eachTree(afterTreeFullData, handleParseRender, { children: transform ? treeOpts.mapChildrenField : childrenField });
190
+ }
191
+ else {
192
+ afterFullData.forEach(handleParseRender);
193
+ }
182
194
  internalData.chartMaps = ctMaps;
183
195
  }
184
196
  }
@@ -189,6 +201,8 @@ export default defineVxeComponent({
189
201
  reactData.headerGroups = groupCols;
190
202
  };
191
203
  const handleUpdateData = () => {
204
+ const ganttProps = $xeGantt.props;
205
+ const { treeConfig } = ganttProps;
192
206
  const $xeTable = internalData.xeTable;
193
207
  const sdMaps = {};
194
208
  const edMaps = {};
@@ -197,9 +211,13 @@ export default defineVxeComponent({
197
211
  if ($xeTable) {
198
212
  const startField = computeStartField.value;
199
213
  const endField = computeEndField.value;
214
+ const { computeTreeOpts } = $xeTable.getComputeMaps();
200
215
  const tableInternalData = $xeTable.internalData;
201
- const { afterFullData } = tableInternalData;
202
- afterFullData.forEach(row => {
216
+ const { afterFullData, afterTreeFullData } = tableInternalData;
217
+ const treeOpts = computeTreeOpts.value;
218
+ const { transform } = treeOpts;
219
+ const childrenField = treeOpts.children || treeOpts.childrenField;
220
+ const handleMinMaxData = (row) => {
203
221
  const startValue = XEUtils.get(row, startField);
204
222
  const endValue = XEUtils.get(row, endField);
205
223
  if (startValue && endValue) {
@@ -212,7 +230,13 @@ export default defineVxeComponent({
212
230
  maxDate = endDate;
213
231
  }
214
232
  }
215
- });
233
+ };
234
+ if (treeConfig) {
235
+ XEUtils.eachTree(afterTreeFullData, handleMinMaxData, { children: transform ? treeOpts.mapChildrenField : childrenField });
236
+ }
237
+ else {
238
+ afterFullData.forEach(handleMinMaxData);
239
+ }
216
240
  }
217
241
  reactData.minViewDate = minDate;
218
242
  reactData.maxViewDate = maxDate;
@@ -359,6 +383,7 @@ export default defineVxeComponent({
359
383
  const handleLazyRecalculate = () => {
360
384
  calcScrollbar();
361
385
  updateStyle();
386
+ updateChart();
362
387
  return nextTick();
363
388
  };
364
389
  const updateScrollXSpace = () => {
@@ -524,6 +549,36 @@ export default defineVxeComponent({
524
549
  const ganttViewPrivateMethods = {
525
550
  handleUpdateStyle: updateStyle,
526
551
  handleLazyRecalculate,
552
+ handleUpdateCurrentRow(row) {
553
+ const $xeTable = internalData.xeTable;
554
+ const el = refElem.value;
555
+ if ($xeTable && el) {
556
+ if (row) {
557
+ const tableProps = $xeTable.props;
558
+ const { highlightCurrentRow } = tableProps;
559
+ const { computeRowOpts } = $xeTable.getComputeMaps();
560
+ const rowOpts = computeRowOpts.value;
561
+ if (rowOpts.isCurrent || highlightCurrentRow) {
562
+ XEUtils.arrayEach(el.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${$xeTable.getRowid(row)}"]`), elem => addClass(elem, 'row--current'));
563
+ }
564
+ }
565
+ else {
566
+ XEUtils.arrayEach(el.querySelectorAll('.vxe-gantt-view--body-row.row--current'), elem => removeClass(elem, 'row--current'));
567
+ }
568
+ }
569
+ },
570
+ handleUpdateHoverRow(row) {
571
+ const $xeTable = internalData.xeTable;
572
+ const el = refElem.value;
573
+ if ($xeTable && el) {
574
+ if (row) {
575
+ XEUtils.arrayEach(el.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${$xeTable.getRowid(row)}"]`), elem => addClass(elem, 'row--hover'));
576
+ }
577
+ else {
578
+ XEUtils.arrayEach(el.querySelectorAll('.vxe-gantt-view--body-row.row--hover'), elem => removeClass(elem, 'row--hover'));
579
+ }
580
+ }
581
+ },
527
582
  triggerHeaderScrollEvent(evnt) {
528
583
  const { elemStore, inVirtualScroll, inBodyScroll, inFooterScroll } = internalData;
529
584
  if (inVirtualScroll) {
@@ -1307,6 +1307,22 @@ export default defineVxeComponent({
1307
1307
  $xeGantt.dispatchEvent('zoom', { type: reactData.isZMax ? 'max' : 'revert' }, evnt);
1308
1308
  },
1309
1309
  handleTaskCellClickEvent(evnt, params) {
1310
+ const $xeTable = refTable.value;
1311
+ if ($xeTable) {
1312
+ const tableProps = $xeTable.props;
1313
+ const { highlightCurrentRow } = tableProps;
1314
+ const { computeRowOpts } = $xeTable.getComputeMaps();
1315
+ const rowOpts = computeRowOpts.value;
1316
+ const { row } = params;
1317
+ // 如果是当前行
1318
+ if (rowOpts.isCurrent || highlightCurrentRow) {
1319
+ $xeTable.triggerCurrentRowEvent(evnt, Object.assign({
1320
+ $table: $xeTable,
1321
+ rowIndex: $xeTable.getRowIndex(row),
1322
+ $rowIndex: $xeTable.getVMRowIndex(row)
1323
+ }, params));
1324
+ }
1325
+ }
1310
1326
  $xeGantt.dispatchEvent('task-cell-click', params, evnt);
1311
1327
  },
1312
1328
  handleTaskCellDblclickEvent(evnt, params) {
@@ -1400,7 +1416,8 @@ export default defineVxeComponent({
1400
1416
  const renderToolbar = () => {
1401
1417
  const { toolbarConfig } = props;
1402
1418
  const toolbarOpts = computeToolbarOpts.value;
1403
- if ((toolbarConfig && isEnableConf(toolbarOpts)) || slots.toolbar) {
1419
+ const toolbarSlot = slots.toolbar;
1420
+ if ((toolbarConfig && isEnableConf(toolbarOpts)) || toolbarSlot) {
1404
1421
  let slotVNs = [];
1405
1422
  if (slots.toolbar) {
1406
1423
  slotVNs = slots.toolbar({ $grid: null, $gantt: $xeGantt });
@@ -1574,16 +1591,17 @@ export default defineVxeComponent({
1574
1591
  if (!enabled) {
1575
1592
  return renderEmptyElement($xeGantt);
1576
1593
  }
1594
+ const isResize = resize && showLeftView && showRightView;
1577
1595
  const ons = {};
1578
- if (resize) {
1596
+ if (isResize) {
1579
1597
  ons.onMousedown = dragSplitEvent;
1580
1598
  }
1581
1599
  return h('div', {
1582
- class: ['vxe-gantt--view-split-bar', Object.assign({ 'is--resize': resize }, ons)]
1600
+ class: ['vxe-gantt--view-split-bar', {
1601
+ 'is--resize': isResize
1602
+ }]
1583
1603
  }, [
1584
- h('div', {
1585
- class: 'vxe-gantt--view-split-bar-handle'
1586
- }),
1604
+ h('div', Object.assign({ class: 'vxe-gantt--view-split-bar-handle' }, ons)),
1587
1605
  showCollapseTableButton || showCollapseTaskButton
1588
1606
  ? h('div', {
1589
1607
  class: 'vxe-gantt--view-split-bar-btn-wrapper'
@@ -40,6 +40,7 @@
40
40
  width: 100%;
41
41
  height: 100%;
42
42
  background-color: rgba(0, 0, 0, 0.1);
43
+ pointer-events: none;
43
44
  }
44
45
 
45
46
  .vxe-gantt-view--chart-progress {
@@ -186,9 +187,6 @@
186
187
  border: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
187
188
  }
188
189
 
189
- .vxe-gantt.border--default .vxe-gantt-view--header-wrapper, .vxe-gantt.border--full .vxe-gantt-view--header-wrapper, .vxe-gantt.border--outer .vxe-gantt-view--header-wrapper {
190
- background-color: var(--vxe-ui-table-header-background-color);
191
- }
192
190
  .vxe-gantt.border--full .vxe-gantt-view--header-column,
193
191
  .vxe-gantt.border--full .vxe-gantt-view--body-column,
194
192
  .vxe-gantt.border--full .vxe-gantt-view--footer-column {
@@ -269,6 +267,22 @@
269
267
  width: calc(100% + var(--vxe-ui-table-border-width));
270
268
  border-left: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
271
269
  }
270
+ .vxe-gantt.border--default .vxe-gantt-view--header-column,
271
+ .vxe-gantt.border--default .vxe-gantt-view--body-column,
272
+ .vxe-gantt.border--default .vxe-gantt-view--footer-column, .vxe-gantt.border--inner .vxe-gantt-view--header-column,
273
+ .vxe-gantt.border--inner .vxe-gantt-view--body-column,
274
+ .vxe-gantt.border--inner .vxe-gantt-view--footer-column {
275
+ background-image: linear-gradient(var(--vxe-ui-table-border-color), var(--vxe-ui-table-border-color));
276
+ background-repeat: no-repeat;
277
+ background-size: 100% var(--vxe-ui-table-border-width);
278
+ background-position: right bottom;
279
+ }
280
+ .vxe-gantt.border--inner .vxe-gantt--border-line {
281
+ border-width: 0 0 1px 0;
282
+ }
283
+ .vxe-gantt.border--none .vxe-gantt--border-line {
284
+ display: none;
285
+ }
272
286
 
273
287
  /*分割条*/
274
288
  .vxe-gantt--view-split-bar {
@@ -553,6 +567,10 @@
553
567
  width: var(--vxe-ui-gantt-view-default-cell-width);
554
568
  }
555
569
 
570
+ .vxe-gantt-view--header-wrapper {
571
+ background-color: var(--vxe-ui-table-header-background-color);
572
+ }
573
+
556
574
  .vxe-gantt-view--header-wrapper,
557
575
  .vxe-gantt-view--body-wrapper {
558
576
  overflow: hidden;
@@ -592,6 +610,22 @@
592
610
  white-space: nowrap;
593
611
  }
594
612
 
613
+ .vxe-gantt-view--body-row.row--stripe {
614
+ background-color: var(--vxe-ui-table-row-striped-background-color);
615
+ }
616
+ .vxe-gantt-view--body-row.row--current {
617
+ background-color: var(--vxe-ui-table-row-current-background-color);
618
+ }
619
+ .vxe-gantt-view--body-row.row--hover {
620
+ background-color: var(--vxe-ui-table-row-hover-background-color);
621
+ }
622
+ .vxe-gantt-view--body-row.row--hover.row--stripe {
623
+ background-color: var(--vxe-ui-table-row-hover-striped-background-color);
624
+ }
625
+ .vxe-gantt-view--body-row.row--hover.row--current {
626
+ background-color: var(--vxe-ui-table-row-hover-current-background-color);
627
+ }
628
+
595
629
  .vxe-gantt-view.mode--day .vxe-gantt-view--header-column {
596
630
  height: 50%;
597
631
  }
@@ -1 +1 @@
1
- @charset "UTF-8";.vxe-gantt-view--chart-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar>.vxe-gantt-view--chart-progress{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius) 0 0 var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-bar{display:flex;flex-direction:row;align-items:center;position:absolute;top:50%;left:0;color:#fff;transform:translateY(-50%);height:var(--vxe-ui-gantt-view-chart-bar-height);background-color:var(--vxe-ui-gantt-view-task-bar-background-color);pointer-events:all}.vxe-gantt-view--chart-bar:hover::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.1)}.vxe-gantt-view--chart-progress{flex-shrink:0;width:0;height:100%;text-align:left;background-color:var(--vxe-ui-gantt-view-task-bar-completed-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--chart-content{position:absolute;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em;padding:0 .6em}.vxe-gantt{position:relative;overflow:auto;display:flex;flex-direction:column}.vxe-gantt.is--loading:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:var(--vxe-ui-loading-background-color)}.vxe-gantt.is--loading>.vxe-gantt-view .vxe-loading{background-color:transparent}.vxe-gantt.is--maximize{position:fixed;top:0;left:0;width:100%;height:100%;padding:.5em 1em;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt.is--split-drag{cursor:col-resize}.vxe-gantt.is--split-drag .vxe-gantt--table-wrapper::after,.vxe-gantt.is--split-drag .vxe-gantt--view-wrapper::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:0 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt .vxe-gantt--bottom-wrapper,.vxe-gantt .vxe-gantt--form-wrapper,.vxe-gantt .vxe-gantt--top-wrapper{position:relative}.vxe-gantt .vxe-gantt--gantt-container{position:relative;display:flex;flex-direction:row}.vxe-gantt .vxe-gantt--left-wrapper,.vxe-gantt .vxe-gantt--right-wrapper{flex-shrink:0;overflow:auto;outline:0}.vxe-gantt .vxe-gantt--table-wrapper,.vxe-gantt .vxe-gantt--view-wrapper{display:none;position:relative;flex-grow:1;overflow:hidden}.vxe-gantt .vxe-gantt--view-split-bar{flex-shrink:0;width:var(--vxe-ui-gantt-view-split-bar-width);background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt.show--left .vxe-gantt--table-wrapper{display:block}.vxe-gantt.show--left.show--right .vxe-gantt--table-wrapper{flex-grow:unset;flex-shrink:0;width:var(--vxe-ui-gantt-view-table-default-width)}.vxe-gantt.show--right .vxe-gantt--view-wrapper{display:block}.vxe-gantt--layout-body-wrapper{display:flex;flex-direction:row;overflow:auto;flex-grow:1}.vxe-gantt--layout-body-content-wrapper{flex-grow:1;overflow:hidden}.vxe-gantt--layout-aside-left-wrapper,.vxe-gantt--layout-footer-wrapper,.vxe-gantt--layout-header-wrapper{flex-shrink:0;overflow:auto}.vxe-gantt--border-line{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none;border:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--header-wrapper,.vxe-gantt.border--full .vxe-gantt-view--header-wrapper,.vxe-gantt.border--outer .vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt.border--full .vxe-gantt-view--body-column,.vxe-gantt.border--full .vxe-gantt-view--footer-column,.vxe-gantt.border--full .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color)),linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:var(--vxe-ui-table-border-width) 100%,100% var(--vxe-ui-table-border-width);background-position:right top,right bottom}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:0;border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{border-bottom-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-wrapper::after{content:"";position:absolute;left:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after{top:0;border-bottom:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after{bottom:0;height:calc(100% + var(--vxe-ui-table-border-width));border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before{width:calc(100% + 1px);left:-1px}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-wrapper::after,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-wrapper::after{content:"";position:absolute;top:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sy-pos--left .vxe-gantt-view--scroll-y-wrapper::after,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-wrapper::after{left:0;border-right:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-wrapper::after,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-wrapper::after{right:0;width:calc(100% + var(--vxe-ui-table-border-width));border-left:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt--view-split-bar{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt--view-split-bar-handle{position:absolute;top:0;left:0;width:100%;height:100%;z-index:13}.vxe-gantt--view-split-bar-btn-wrapper{display:flex;flex-direction:column;align-items:center;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:15;pointer-events:none}.vxe-gantt--view-split-bar-btn-wrapper>div{margin-top:1em}.vxe-gantt--view-split-bar-btn-wrapper>div:first-child{margin-top:0}.vxe-gantt--view-split-bar-left-btn,.vxe-gantt--view-split-bar-right-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:.5em;height:var(--vxe-ui-gantt-view-split-bar-height);width:var(--vxe-ui-gantt-view-split-bar-width);color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-gantt-view-handle-background-color);border:1px solid var(--vxe-ui-input-border-color);pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s ease-in-out}.vxe-gantt--view-split-bar-left-btn:hover,.vxe-gantt--view-split-bar-right-btn:hover{background-color:var(--vxe-ui-font-primary-lighten-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index:18;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:col-resize}.vxe-gantt--resizable-split-tip:before{content:"";display:block;height:100%;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-tip-number{position:absolute;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.vxe-gantt--resizable-split-number-left,.vxe-gantt--resizable-split-number-right{position:absolute;padding:.25em .25em;font-size:12px;border-radius:var(--vxe-ui-border-radius);white-space:nowrap;color:#fff;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-number-left{right:0}.vxe-gantt--resizable-split-number-right{left:1px}.vxe-gantt.is--loading>.vxe-gantt-view--scroll-x-virtual{visibility:hidden}.vxe-gantt.is--loading>.vxe-gantt-view--layout-wrapper>.vxe-gantt-view--scroll-y-virtual{visibility:hidden}.vxe-gantt .vxe-gantt-view--scroll-x-virtual{height:0}.vxe-gantt .vxe-gantt-view--scroll-y-virtual{width:0}.vxe-gantt .vxe-gantt-view--scroll-x-virtual,.vxe-gantt .vxe-gantt-view--scroll-y-virtual{visibility:hidden;position:relative;flex-shrink:0;z-index:7}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{width:100%;left:0;bottom:0}.vxe-gantt .vxe-gantt-view--scroll-x-handle{overflow-y:hidden;overflow-x:scroll;height:18px}.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{height:100%}.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{width:100%;height:100%;right:0;top:0}.vxe-gantt .vxe-gantt-view--scroll-y-handle{overflow-y:scroll;overflow-x:hidden;width:18px;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-space{height:1px}.vxe-gantt .vxe-gantt-view--scroll-y-space{width:1px}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{display:none;position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{bottom:0;width:0;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner::before,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:var(--vxe-ui-table-border-width);border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner{left:0}.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{right:0}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner{right:1px}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner::before{border-right:0}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner{bottom:1px}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner::before{border-bottom:0}.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{top:0;right:0;width:100%;height:0}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner{margin-top:-1px}.vxe-gantt-view--layout-wrapper{display:flex;flex-direction:row;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt-view--viewport-wrapper{position:relative;overflow:hidden;flex-grow:1}.vxe-gantt-view--render-vars{width:0;height:0;overflow:hidden}.vxe-gantt-view--column-info{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view{flex-grow:1;overflow:hidden}.vxe-gantt-view .vxe-body--x-space{width:100%;height:1px;margin-bottom:-1px}.vxe-gantt-view .vxe-body--y-space{width:0;float:left}.vxe-gantt-view--body-table,.vxe-gantt-view--header-table{border:0;border-spacing:0;border-collapse:separate;table-layout:fixed}.vxe-gantt-view--body-table col,.vxe-gantt-view--header-table col{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view--body-wrapper,.vxe-gantt-view--header-wrapper{overflow:hidden}.vxe-gantt-view--header-inner-wrapper{overflow-y:hidden;overflow-x:scroll}.vxe-gantt-view--body-inner-wrapper{overflow-y:auto;overflow-x:auto}.vxe-gantt-view--body-inner-wrapper,.vxe-gantt-view--header-inner-wrapper{position:relative;width:100%;height:100%;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.vxe-gantt-view--header-column{text-align:center;font-size:1em}.vxe-gantt-view--body-column,.vxe-gantt-view--footer-column,.vxe-gantt-view--header-column{position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view.mode--day .vxe-gantt-view--header-column{height:50%}.vxe-gantt{font-size:var(--vxe-ui-font-size-default)}.vxe-gantt.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-gantt.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-gantt.size--mini{font-size:var(--vxe-ui-font-size-mini)}
1
+ @charset "UTF-8";.vxe-gantt-view--chart-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar>.vxe-gantt-view--chart-progress{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius) 0 0 var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-bar{display:flex;flex-direction:row;align-items:center;position:absolute;top:50%;left:0;color:#fff;transform:translateY(-50%);height:var(--vxe-ui-gantt-view-chart-bar-height);background-color:var(--vxe-ui-gantt-view-task-bar-background-color);pointer-events:all}.vxe-gantt-view--chart-bar:hover::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.1);pointer-events:none}.vxe-gantt-view--chart-progress{flex-shrink:0;width:0;height:100%;text-align:left;background-color:var(--vxe-ui-gantt-view-task-bar-completed-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--chart-content{position:absolute;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em;padding:0 .6em}.vxe-gantt{position:relative;overflow:auto;display:flex;flex-direction:column}.vxe-gantt.is--loading:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:var(--vxe-ui-loading-background-color)}.vxe-gantt.is--loading>.vxe-gantt-view .vxe-loading{background-color:transparent}.vxe-gantt.is--maximize{position:fixed;top:0;left:0;width:100%;height:100%;padding:.5em 1em;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt.is--split-drag{cursor:col-resize}.vxe-gantt.is--split-drag .vxe-gantt--table-wrapper::after,.vxe-gantt.is--split-drag .vxe-gantt--view-wrapper::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:0 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt .vxe-gantt--bottom-wrapper,.vxe-gantt .vxe-gantt--form-wrapper,.vxe-gantt .vxe-gantt--top-wrapper{position:relative}.vxe-gantt .vxe-gantt--gantt-container{position:relative;display:flex;flex-direction:row}.vxe-gantt .vxe-gantt--left-wrapper,.vxe-gantt .vxe-gantt--right-wrapper{flex-shrink:0;overflow:auto;outline:0}.vxe-gantt .vxe-gantt--table-wrapper,.vxe-gantt .vxe-gantt--view-wrapper{display:none;position:relative;flex-grow:1;overflow:hidden}.vxe-gantt .vxe-gantt--view-split-bar{flex-shrink:0;width:var(--vxe-ui-gantt-view-split-bar-width);background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt.show--left .vxe-gantt--table-wrapper{display:block}.vxe-gantt.show--left.show--right .vxe-gantt--table-wrapper{flex-grow:unset;flex-shrink:0;width:var(--vxe-ui-gantt-view-table-default-width)}.vxe-gantt.show--right .vxe-gantt--view-wrapper{display:block}.vxe-gantt--layout-body-wrapper{display:flex;flex-direction:row;overflow:auto;flex-grow:1}.vxe-gantt--layout-body-content-wrapper{flex-grow:1;overflow:hidden}.vxe-gantt--layout-aside-left-wrapper,.vxe-gantt--layout-footer-wrapper,.vxe-gantt--layout-header-wrapper{flex-shrink:0;overflow:auto}.vxe-gantt--border-line{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none;border:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--full .vxe-gantt-view--body-column,.vxe-gantt.border--full .vxe-gantt-view--footer-column,.vxe-gantt.border--full .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color)),linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:var(--vxe-ui-table-border-width) 100%,100% var(--vxe-ui-table-border-width);background-position:right top,right bottom}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:0;border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{border-bottom-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-wrapper::after{content:"";position:absolute;left:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-wrapper::after{top:0;border-bottom:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper::after{bottom:0;height:calc(100% + var(--vxe-ui-table-border-width));border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before{width:calc(100% + 1px);left:-1px}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-wrapper::after,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-wrapper::after{content:"";position:absolute;top:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sy-pos--left .vxe-gantt-view--scroll-y-wrapper::after,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-wrapper::after{left:0;border-right:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-wrapper::after,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-wrapper::after{right:0;width:calc(100% + var(--vxe-ui-table-border-width));border-left:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--body-column,.vxe-gantt.border--default .vxe-gantt-view--footer-column,.vxe-gantt.border--default .vxe-gantt-view--header-column,.vxe-gantt.border--inner .vxe-gantt-view--body-column,.vxe-gantt.border--inner .vxe-gantt-view--footer-column,.vxe-gantt.border--inner .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:100% var(--vxe-ui-table-border-width);background-position:right bottom}.vxe-gantt.border--inner .vxe-gantt--border-line{border-width:0 0 1px 0}.vxe-gantt.border--none .vxe-gantt--border-line{display:none}.vxe-gantt--view-split-bar{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt--view-split-bar-handle{position:absolute;top:0;left:0;width:100%;height:100%;z-index:13}.vxe-gantt--view-split-bar-btn-wrapper{display:flex;flex-direction:column;align-items:center;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:15;pointer-events:none}.vxe-gantt--view-split-bar-btn-wrapper>div{margin-top:1em}.vxe-gantt--view-split-bar-btn-wrapper>div:first-child{margin-top:0}.vxe-gantt--view-split-bar-left-btn,.vxe-gantt--view-split-bar-right-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:.5em;height:var(--vxe-ui-gantt-view-split-bar-height);width:var(--vxe-ui-gantt-view-split-bar-width);color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-gantt-view-handle-background-color);border:1px solid var(--vxe-ui-input-border-color);pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s ease-in-out}.vxe-gantt--view-split-bar-left-btn:hover,.vxe-gantt--view-split-bar-right-btn:hover{background-color:var(--vxe-ui-font-primary-lighten-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index:18;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:col-resize}.vxe-gantt--resizable-split-tip:before{content:"";display:block;height:100%;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-tip-number{position:absolute;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.vxe-gantt--resizable-split-number-left,.vxe-gantt--resizable-split-number-right{position:absolute;padding:.25em .25em;font-size:12px;border-radius:var(--vxe-ui-border-radius);white-space:nowrap;color:#fff;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-number-left{right:0}.vxe-gantt--resizable-split-number-right{left:1px}.vxe-gantt.is--loading>.vxe-gantt-view--scroll-x-virtual{visibility:hidden}.vxe-gantt.is--loading>.vxe-gantt-view--layout-wrapper>.vxe-gantt-view--scroll-y-virtual{visibility:hidden}.vxe-gantt .vxe-gantt-view--scroll-x-virtual{height:0}.vxe-gantt .vxe-gantt-view--scroll-y-virtual{width:0}.vxe-gantt .vxe-gantt-view--scroll-x-virtual,.vxe-gantt .vxe-gantt-view--scroll-y-virtual{visibility:hidden;position:relative;flex-shrink:0;z-index:7}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{width:100%;left:0;bottom:0}.vxe-gantt .vxe-gantt-view--scroll-x-handle{overflow-y:hidden;overflow-x:scroll;height:18px}.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{height:100%}.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{width:100%;height:100%;right:0;top:0}.vxe-gantt .vxe-gantt-view--scroll-y-handle{overflow-y:scroll;overflow-x:hidden;width:18px;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-space{height:1px}.vxe-gantt .vxe-gantt-view--scroll-y-space{width:1px}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{display:none;position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{bottom:0;width:0;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner::before,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:var(--vxe-ui-table-border-width);border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner{left:0}.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{right:0}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner{right:1px}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner::before{border-right:0}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner{bottom:1px}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner::before{border-bottom:0}.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{top:0;right:0;width:100%;height:0}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner{margin-top:-1px}.vxe-gantt-view--layout-wrapper{display:flex;flex-direction:row;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt-view--viewport-wrapper{position:relative;overflow:hidden;flex-grow:1}.vxe-gantt-view--render-vars{width:0;height:0;overflow:hidden}.vxe-gantt-view--column-info{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view{flex-grow:1;overflow:hidden}.vxe-gantt-view .vxe-body--x-space{width:100%;height:1px;margin-bottom:-1px}.vxe-gantt-view .vxe-body--y-space{width:0;float:left}.vxe-gantt-view--body-table,.vxe-gantt-view--header-table{border:0;border-spacing:0;border-collapse:separate;table-layout:fixed}.vxe-gantt-view--body-table col,.vxe-gantt-view--header-table col{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt-view--body-wrapper,.vxe-gantt-view--header-wrapper{overflow:hidden}.vxe-gantt-view--header-inner-wrapper{overflow-y:hidden;overflow-x:scroll}.vxe-gantt-view--body-inner-wrapper{overflow-y:auto;overflow-x:auto}.vxe-gantt-view--body-inner-wrapper,.vxe-gantt-view--header-inner-wrapper{position:relative;width:100%;height:100%;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.vxe-gantt-view--header-column{text-align:center;font-size:1em}.vxe-gantt-view--body-column,.vxe-gantt-view--footer-column,.vxe-gantt-view--header-column{position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--body-row.row--stripe{background-color:var(--vxe-ui-table-row-striped-background-color)}.vxe-gantt-view--body-row.row--current{background-color:var(--vxe-ui-table-row-current-background-color)}.vxe-gantt-view--body-row.row--hover{background-color:var(--vxe-ui-table-row-hover-background-color)}.vxe-gantt-view--body-row.row--hover.row--stripe{background-color:var(--vxe-ui-table-row-hover-striped-background-color)}.vxe-gantt-view--body-row.row--hover.row--current{background-color:var(--vxe-ui-table-row-hover-current-background-color)}.vxe-gantt-view.mode--day .vxe-gantt-view--header-column{height:50%}.vxe-gantt{font-size:var(--vxe-ui-font-size-default)}.vxe-gantt.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-gantt.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-gantt.size--mini{font-size:var(--vxe-ui-font-size-mini)}