vxe-gantt 4.1.18 → 4.1.19

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 (44) hide show
  1. package/es/gantt/src/emits.js +4 -1
  2. package/es/gantt/src/gantt-chart.js +75 -53
  3. package/es/gantt/src/gantt-view.js +19 -9
  4. package/es/gantt/src/gantt.js +79 -39
  5. package/es/gantt/src/util.js +0 -3
  6. package/es/gantt/style.css +16 -2
  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 +2 -1
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-gantt/style.css +16 -2
  13. package/es/vxe-gantt/style.min.css +1 -1
  14. package/lib/gantt/src/emits.js +1 -1
  15. package/lib/gantt/src/emits.min.js +1 -1
  16. package/lib/gantt/src/gantt-chart.js +72 -44
  17. package/lib/gantt/src/gantt-chart.min.js +1 -1
  18. package/lib/gantt/src/gantt-view.js +19 -9
  19. package/lib/gantt/src/gantt-view.min.js +1 -1
  20. package/lib/gantt/src/gantt.js +89 -38
  21. package/lib/gantt/src/gantt.min.js +1 -1
  22. package/lib/gantt/src/util.js +0 -4
  23. package/lib/gantt/src/util.min.js +1 -1
  24. package/lib/gantt/style/style.css +16 -2
  25. package/lib/gantt/style/style.min.css +1 -1
  26. package/lib/index.umd.js +180 -91
  27. package/lib/index.umd.min.js +1 -1
  28. package/lib/style.css +1 -1
  29. package/lib/style.min.css +1 -1
  30. package/lib/ui/index.js +2 -1
  31. package/lib/ui/index.min.js +1 -1
  32. package/lib/ui/src/log.js +1 -1
  33. package/lib/ui/src/log.min.js +1 -1
  34. package/lib/vxe-gantt/style/style.css +16 -2
  35. package/lib/vxe-gantt/style/style.min.css +1 -1
  36. package/package.json +2 -2
  37. package/packages/gantt/src/emits.ts +4 -1
  38. package/packages/gantt/src/gantt-chart.ts +78 -53
  39. package/packages/gantt/src/gantt-view.ts +19 -9
  40. package/packages/gantt/src/gantt.ts +84 -40
  41. package/packages/gantt/src/util.ts +0 -4
  42. package/packages/ui/index.ts +1 -0
  43. package/styles/components/gantt-module/gantt-chart.scss +14 -2
  44. package/styles/theme/base.scss +1 -0
@@ -14,5 +14,8 @@ export const ganttEmits = [
14
14
  'task-move-end',
15
15
  'task-resize-start',
16
16
  'task-resize-drag',
17
- 'task-resize-end'
17
+ 'task-resize-end',
18
+ 'task-link-click',
19
+ 'task-link-dblclick',
20
+ 'task-link-remove'
18
21
  ];
@@ -12,15 +12,14 @@ export default defineVxeComponent({
12
12
  setup() {
13
13
  const $xeGantt = inject('$xeGantt', {});
14
14
  const $xeGanttView = inject('$xeGanttView', {});
15
- const { props: ganttProps, internalData: ganttInternalData } = $xeGantt;
15
+ const { props: ganttProps, reactData: ganttReactData, internalData: ganttInternalData } = $xeGantt;
16
16
  const { reactData: ganttViewReactData, internalData: ganttViewInternalData } = $xeGanttView;
17
17
  const { computeProgressField, computeTitleField, computeTypeField, computeTaskBarOpts, computeScaleUnit, computeTaskLinkOpts, computeTaskBarMilestoneOpts } = $xeGantt.getComputeMaps();
18
18
  const refElem = ref();
19
19
  const refTaskWrapperElem = ref();
20
- const reflineWrapperElem = ref();
20
+ const refChartBeforeWrapperElem = ref();
21
+ const refChartAfterWrapperElem = ref();
21
22
  const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex) => {
22
- const tableProps = $xeTable.props;
23
- const { treeConfig } = tableProps;
24
23
  const tableReactData = $xeTable.reactData;
25
24
  const { resizeHeightFlag } = tableReactData;
26
25
  const tableInternalData = $xeTable.internalData;
@@ -32,6 +31,7 @@ export default defineVxeComponent({
32
31
  const ganttSlots = $xeGantt.context.slots;
33
32
  const taskBarSlot = ganttSlots.taskBar || ganttSlots['task-bar'];
34
33
  const { taskBarMilestoneConfig } = ganttProps;
34
+ const { activeLink, activeBarRowid } = ganttReactData;
35
35
  const titleField = computeTitleField.value;
36
36
  const progressField = computeProgressField.value;
37
37
  const typeField = computeTypeField.value;
@@ -75,21 +75,9 @@ export default defineVxeComponent({
75
75
  rowIndex,
76
76
  _rowIndex
77
77
  };
78
- const ons = {
79
- onClick(evnt) {
80
- $xeGantt.handleTaskBarClickEvent(evnt, barParams);
81
- },
82
- onDblclick(evnt) {
83
- $xeGantt.handleTaskBarDblclickEvent(evnt, barParams);
84
- },
85
- onMousedown(evnt) {
86
- if ($xeGantt.handleTaskBarMousedownEvent) {
87
- $xeGantt.handleTaskBarMousedownEvent(evnt, barParams);
88
- }
89
- }
90
- };
78
+ const ctOns = {};
91
79
  if (showTooltip) {
92
- ons.onMouseover = (evnt) => {
80
+ ctOns.onMouseover = (evnt) => {
93
81
  const { dragBarRow } = ganttInternalData;
94
82
  const ttParams = Object.assign({ $event: evnt }, ctParams);
95
83
  if (!dragBarRow) {
@@ -97,7 +85,7 @@ export default defineVxeComponent({
97
85
  }
98
86
  $xeGantt.dispatchEvent('task-bar-mouseenter', ttParams, evnt);
99
87
  };
100
- ons.onMouseleave = (evnt) => {
88
+ ctOns.onMouseleave = (evnt) => {
101
89
  const { dragBarRow } = ganttInternalData;
102
90
  const ttParams = Object.assign({ $event: evnt }, ctParams);
103
91
  if (!dragBarRow) {
@@ -112,23 +100,19 @@ export default defineVxeComponent({
112
100
  isMilestone,
113
101
  title,
114
102
  vbStyle,
115
- vpStyle
103
+ vpStyle,
104
+ rowid,
105
+ ctOns
116
106
  });
117
107
  }
118
108
  else if (taskBarSlot) {
119
- cbVNs.push(h('div', {
120
- key: 'cbc',
121
- class: 'vxe-gantt-view--chart-custom-bar-content'
122
- }, $xeGantt.callSlot(taskBarSlot, barParams)));
109
+ cbVNs.push(h('div', Object.assign({ key: 'cbc', class: 'vxe-gantt-view--chart-custom-bar-content-wrapper' }, ctOns), $xeGantt.callSlot(taskBarSlot, barParams)));
123
110
  }
124
111
  else {
125
112
  if (isMilestone) {
126
113
  const { icon, iconStatus, iconStyle } = taskBarMilestoneOpts;
127
114
  const tbmParams = { $gantt: $xeGantt, row };
128
- cbVNs.push(h('div', {
129
- key: 'vcm',
130
- class: 'vxe-gantt-view--chart-milestone-wrapper'
131
- }, [
115
+ cbVNs.push(h('div', Object.assign({ key: 'vcm', class: 'vxe-gantt-view--chart-milestone-wrapper' }, ctOns), [
132
116
  h('div', {
133
117
  class: ['vxe-gantt-view--chart-milestone-icon', iconStatus ? `theme--${XEUtils.isFunction(iconStatus) ? iconStatus(tbmParams) : iconStatus}` : ''],
134
118
  style: iconStyle ? Object.assign({}, XEUtils.isFunction(iconStyle) ? iconStyle(tbmParams) : iconStyle) : undefined
@@ -145,22 +129,25 @@ export default defineVxeComponent({
145
129
  ]));
146
130
  }
147
131
  else {
148
- cbVNs.push(showProgress
149
- ? h('div', {
150
- key: 'vcp',
151
- class: 'vxe-gantt-view--chart-progress',
152
- style: vpStyle
153
- })
154
- : renderEmptyElement($xeGantt), showContent
155
- ? h('div', {
156
- key: 'vcc',
157
- class: 'vxe-gantt-view--chart-content'
158
- }, title)
159
- : renderEmptyElement($xeGantt));
132
+ cbVNs.push(h('div', Object.assign({ key: 'vbc', class: 'vxe-gantt-view--chart-bar-content-wrapper' }, ctOns), [
133
+ showProgress
134
+ ? h('div', {
135
+ key: 'vcp',
136
+ class: 'vxe-gantt-view--chart-progress',
137
+ style: vpStyle
138
+ })
139
+ : renderEmptyElement($xeGantt),
140
+ showContent
141
+ ? h('div', {
142
+ key: 'vcc',
143
+ class: 'vxe-gantt-view--chart-content'
144
+ }, title)
145
+ : renderEmptyElement($xeGantt)
146
+ ]));
160
147
  }
161
148
  }
162
149
  return h('div', {
163
- key: treeConfig ? rowid : $rowIndex,
150
+ key: rowid,
164
151
  rowid,
165
152
  class: ['vxe-gantt-view--chart-row', `is--${gettaskType(typeValue)}`, {
166
153
  'is--round': round,
@@ -173,7 +160,25 @@ export default defineVxeComponent({
173
160
  $xeGantt.handleTaskBarContextmenuEvent(evnt, ctParams);
174
161
  }
175
162
  }, [
176
- h('div', Object.assign({ class: [taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', `is--${gettaskType(typeValue)}`], style: vbStyle, rowid }, ons), cbVNs)
163
+ h('div', {
164
+ class: [taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', `is--${gettaskType(typeValue)}`, {
165
+ 'is--active': activeBarRowid === rowid,
166
+ 'active--link': activeLink && (rowid === `${activeLink.from}` || rowid === `${activeLink.to}`)
167
+ }],
168
+ style: vbStyle,
169
+ rowid,
170
+ onClick(evnt) {
171
+ $xeGantt.handleTaskBarClickEvent(evnt, barParams);
172
+ },
173
+ onDblclick(evnt) {
174
+ $xeGantt.handleTaskBarDblclickEvent(evnt, barParams);
175
+ },
176
+ onMousedown(evnt) {
177
+ if ($xeGantt.handleTaskBarMousedownEvent) {
178
+ $xeGantt.handleTaskBarMousedownEvent(evnt, barParams);
179
+ }
180
+ }
181
+ }, cbVNs)
177
182
  ]);
178
183
  };
179
184
  const renderTaskRows = ($xeTable, tableData) => {
@@ -214,38 +219,55 @@ export default defineVxeComponent({
214
219
  };
215
220
  const renderVN = () => {
216
221
  const $xeTable = ganttViewInternalData.xeTable;
222
+ const { dragLinkFromStore } = ganttReactData;
217
223
  const { tableData } = ganttViewReactData;
218
224
  const taskLinkOpts = computeTaskLinkOpts.value;
219
- const { showArrow } = taskLinkOpts;
225
+ const taskBarOpts = computeTaskBarOpts.value;
226
+ const { isCurrent, isHover } = taskLinkOpts;
227
+ const { linkCreatable } = taskBarOpts;
220
228
  return h('div', {
221
229
  ref: refElem,
222
- class: 'vxe-gantt-view--chart-wrapper'
230
+ class: ['vxe-gantt-view--chart-wrapper', {
231
+ 'is--cl-drag': dragLinkFromStore.rowid
232
+ }]
223
233
  }, [
224
- $xeGantt.renderGanttTaskLines
234
+ $xeGantt.renderGanttTaskChartBefores
225
235
  ? h('div', {
226
- ref: reflineWrapperElem,
227
- class: ['vxe-gantt-view--chart-line-wrapper', {
228
- 'show-arrow': showArrow
236
+ ref: refChartBeforeWrapperElem,
237
+ class: ['vxe-gantt-view--chart-before-wrapper', {
238
+ 'link--current': isCurrent,
239
+ 'link--hover': isHover
229
240
  }]
230
- }, $xeTable && isEnableConf(taskLinkOpts) ? $xeGantt.renderGanttTaskLines() : [])
241
+ }, $xeTable && isEnableConf(taskLinkOpts) ? $xeGantt.renderGanttTaskChartBefores() : [])
231
242
  : renderEmptyElement($xeGantt),
232
243
  h('div', {
233
244
  ref: refTaskWrapperElem,
234
- class: 'vxe-gantt-view--chart-task-wrapper'
235
- }, $xeTable ? renderTaskRows($xeTable, tableData) : [])
245
+ class: ['vxe-gantt-view--chart-task-wrapper', {
246
+ 'link--current': isCurrent,
247
+ 'link--create': linkCreatable
248
+ }]
249
+ }, $xeTable ? renderTaskRows($xeTable, tableData) : []),
250
+ $xeGantt.renderGanttTaskChartAfters
251
+ ? h('div', {
252
+ ref: refChartAfterWrapperElem,
253
+ class: 'vxe-gantt-view--chart-after-wrapper'
254
+ }, $xeTable && isEnableConf(taskLinkOpts) ? $xeGantt.renderGanttTaskChartAfters() : [])
255
+ : renderEmptyElement($xeGantt)
236
256
  ]);
237
257
  };
238
258
  onMounted(() => {
239
259
  const { elemStore } = ganttViewInternalData;
240
260
  const prefix = 'main-chart-';
241
261
  elemStore[`${prefix}task-wrapper`] = refTaskWrapperElem;
242
- elemStore[`${prefix}line-wrapper`] = reflineWrapperElem;
262
+ elemStore[`${prefix}before-wrapper`] = refChartBeforeWrapperElem;
263
+ elemStore[`${prefix}after-wrapper`] = refChartAfterWrapperElem;
243
264
  });
244
265
  onUnmounted(() => {
245
266
  const { elemStore } = ganttViewInternalData;
246
267
  const prefix = 'main-chart-';
247
268
  elemStore[`${prefix}task-wrapper`] = null;
248
- elemStore[`${prefix}line-wrapper`] = null;
269
+ elemStore[`${prefix}before-wrapper`] = null;
270
+ elemStore[`${prefix}after-wrapper`] = null;
249
271
  });
250
272
  return renderVN;
251
273
  }
@@ -897,7 +897,7 @@ export default defineVxeComponent({
897
897
  reactData.scrollXWidth = viewTableWidth;
898
898
  return Promise.all([
899
899
  updateTaskChart(),
900
- $xeGantt.handleUpdateTaskLink ? $xeGantt.handleUpdateTaskLink($xeGanttView) : null
900
+ $xeGantt.handleUpdateTaskLinkStyle ? $xeGantt.handleUpdateTaskLinkStyle($xeGanttView) : null
901
901
  ]);
902
902
  };
903
903
  const handleRecalculateStyle = () => {
@@ -1046,10 +1046,15 @@ export default defineVxeComponent({
1046
1046
  if (scrollXSpaceEl) {
1047
1047
  scrollXSpaceEl.style.width = `${scrollXWidth}px`;
1048
1048
  }
1049
- const lineWrapper = getRefElem(elemStore['main-chart-line-wrapper']);
1050
- const svgElem = lineWrapper ? lineWrapper.firstElementChild : null;
1051
- if (svgElem) {
1052
- svgElem.style.width = `${scrollXWidth}px`;
1049
+ const beforeWrapper = getRefElem(elemStore['main-chart-before-wrapper']);
1050
+ const beforeSvgElem = beforeWrapper ? beforeWrapper.firstElementChild : null;
1051
+ if (beforeSvgElem) {
1052
+ beforeSvgElem.style.width = `${scrollXWidth}px`;
1053
+ }
1054
+ const afterWrapper = getRefElem(elemStore['main-chart-after-wrapper']);
1055
+ const afterSvgElem = afterWrapper ? afterWrapper.firstElementChild : null;
1056
+ if (afterSvgElem) {
1057
+ afterSvgElem.style.width = `${scrollXWidth}px`;
1053
1058
  }
1054
1059
  calcScrollbar();
1055
1060
  return nextTick();
@@ -1102,10 +1107,15 @@ export default defineVxeComponent({
1102
1107
  if (scrollYSpaceEl) {
1103
1108
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
1104
1109
  }
1105
- const lineWrapper = getRefElem(elemStore['main-chart-line-wrapper']);
1106
- const svgElem = lineWrapper ? lineWrapper.firstElementChild : null;
1107
- if (svgElem) {
1108
- svgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
1110
+ const beforeWrapper = getRefElem(elemStore['main-chart-before-wrapper']);
1111
+ const beforeSvgElem = beforeWrapper ? beforeWrapper.firstElementChild : null;
1112
+ if (beforeSvgElem) {
1113
+ beforeSvgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
1114
+ }
1115
+ const afterWrapper = getRefElem(elemStore['main-chart-after-wrapper']);
1116
+ const afterSvgElem = afterWrapper ? afterWrapper.firstElementChild : null;
1117
+ if (afterSvgElem) {
1118
+ afterSvgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
1109
1119
  }
1110
1120
  reactData.scrollYTop = scrollYTop;
1111
1121
  reactData.scrollYHeight = scrollYHeight;
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, provide, reactive, onUnmounted, watch, nextTick, onMounted } from 'vue';
1
+ import { h, ref, computed, provide, reactive, onBeforeUnmount, onUnmounted, watch, nextTick, onMounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
4
  import { getLastZIndex, nextZIndex, isEnableConf, formatText } from '../../ui/src/utils';
@@ -21,9 +21,52 @@ function createInternalData() {
21
21
  linkFromKeyMaps: {},
22
22
  linkUniqueMaps: {},
23
23
  uFoot: false,
24
- resizeTableWidth: 0
25
- // barTipTimeout: null
26
- // dragBarRow: null
24
+ resizeTableWidth: 0,
25
+ // barTipTimeout: null,
26
+ // dragBarRow: null,
27
+ // dragLineRow: null,
28
+ dragLinkToStore: {
29
+ rowid: null,
30
+ type: 0
31
+ }
32
+ };
33
+ }
34
+ function createReactData() {
35
+ var _a;
36
+ return {
37
+ tableLoading: false,
38
+ proxyInited: false,
39
+ isZMax: false,
40
+ tableLinks: [],
41
+ tableData: [],
42
+ filterData: [],
43
+ formData: {},
44
+ sortData: [],
45
+ footerData: [],
46
+ tZindex: 0,
47
+ tablePage: {
48
+ total: 0,
49
+ pageSize: ((_a = getConfig().pager) === null || _a === void 0 ? void 0 : _a.pageSize) || 10,
50
+ currentPage: 1
51
+ },
52
+ showLeftView: true,
53
+ showRightView: true,
54
+ taskScaleList: [],
55
+ barTipStore: {
56
+ row: null,
57
+ content: '',
58
+ visible: false,
59
+ params: null
60
+ },
61
+ dragLinkFromStore: {
62
+ rowid: null,
63
+ type: 0
64
+ },
65
+ activeBarRowid: null,
66
+ activeLink: null,
67
+ isActiveCeLe: false,
68
+ linkList: [],
69
+ upLinkFlag: 0
27
70
  };
28
71
  }
29
72
  const viewTypeLevelMaps = {
@@ -49,7 +92,6 @@ export default defineVxeComponent({
49
92
  } }),
50
93
  emits: ganttEmits,
51
94
  setup(props, context) {
52
- var _a;
53
95
  const { slots, emit } = context;
54
96
  const xID = XEUtils.uniqueId();
55
97
  // 使用已安装的组件,如果未安装则不渲染
@@ -59,34 +101,7 @@ export default defineVxeComponent({
59
101
  const VxeToolbarComponent = VxeUI.getComponent('VxeToolbar');
60
102
  const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
61
103
  const { computeSize } = useFns.useSize(props);
62
- const reactData = reactive({
63
- tableLoading: false,
64
- proxyInited: false,
65
- isZMax: false,
66
- tableLinks: [],
67
- tableData: [],
68
- filterData: [],
69
- formData: {},
70
- sortData: [],
71
- footerData: [],
72
- tZindex: 0,
73
- tablePage: {
74
- total: 0,
75
- pageSize: ((_a = getConfig().pager) === null || _a === void 0 ? void 0 : _a.pageSize) || 10,
76
- currentPage: 1
77
- },
78
- showLeftView: true,
79
- showRightView: true,
80
- taskScaleList: [],
81
- barTipStore: {
82
- row: null,
83
- content: '',
84
- visible: false,
85
- params: null
86
- },
87
- linkList: [],
88
- upLinkFlag: 0
89
- });
104
+ const reactData = reactive(createReactData());
90
105
  const internalData = createInternalData();
91
106
  const refElem = ref();
92
107
  const refTable = ref();
@@ -197,6 +212,10 @@ export default defineVxeComponent({
197
212
  const { scales } = taskViewOpts;
198
213
  return scales;
199
214
  });
215
+ const computeTaskLinkStyle = computed(() => {
216
+ const { lineType, lineWidth, lineStatus, lineColor } = computeTaskLinkOpts.value;
217
+ return `${lineType || ''}_${lineWidth || ''}_${lineStatus || ''}_${lineColor || ''}`;
218
+ });
200
219
  const computeTitleField = computed(() => {
201
220
  const taskOpts = computeTaskOpts.value;
202
221
  return taskOpts.titleField || 'title';
@@ -1646,21 +1665,34 @@ export default defineVxeComponent({
1646
1665
  $xeTable.handleToggleCheckRowEvent(evnt, params);
1647
1666
  }
1648
1667
  }
1668
+ reactData.isActiveCeLe = false;
1669
+ reactData.activeBarRowid = null;
1670
+ reactData.activeLink = null;
1649
1671
  $xeGantt.dispatchEvent('task-cell-click', params, evnt);
1650
1672
  },
1651
1673
  handleTaskCellDblclickEvent(evnt, params) {
1652
1674
  $xeGantt.dispatchEvent('task-cell-dblclick', params, evnt);
1653
1675
  },
1654
1676
  handleTaskBarClickEvent(evnt, params) {
1677
+ const $xeTable = refTable.value;
1678
+ const taskBarOpts = computeTaskBarOpts.value;
1679
+ const { linkCreatable } = taskBarOpts;
1680
+ const { row } = params;
1681
+ reactData.isActiveCeLe = !!linkCreatable;
1682
+ reactData.activeBarRowid = $xeTable ? $xeTable.getRowid(row) : row;
1683
+ reactData.activeLink = null;
1655
1684
  $xeGantt.dispatchEvent('task-bar-click', params, evnt);
1656
1685
  },
1657
1686
  handleTaskBarDblclickEvent(evnt, params) {
1658
1687
  $xeGantt.dispatchEvent('task-bar-dblclick', params, evnt);
1659
1688
  },
1660
1689
  triggerTaskBarTooltipEvent(evnt, params) {
1661
- const { barTipStore } = reactData;
1662
- const { dragBarRow } = internalData;
1663
- if (dragBarRow) {
1690
+ const { barTipStore, activeLink } = reactData;
1691
+ const { dragBarRow, dragLineRow } = internalData;
1692
+ if (dragBarRow || dragLineRow) {
1693
+ return;
1694
+ }
1695
+ if (activeLink) {
1664
1696
  return;
1665
1697
  }
1666
1698
  const taskBarTooltipOpts = computeTaskBarTooltipOpts.value;
@@ -2246,6 +2278,11 @@ export default defineVxeComponent({
2246
2278
  handleTaskScaleConfig();
2247
2279
  $xeGantt.refreshTaskView();
2248
2280
  });
2281
+ watch(computeTaskLinkStyle, () => {
2282
+ if ($xeGantt.handleUpdateTaskLinkData) {
2283
+ $xeGantt.handleUpdateTaskLinkData();
2284
+ }
2285
+ });
2249
2286
  hooks.forEach((options) => {
2250
2287
  const { setupGantt } = options;
2251
2288
  if (setupGantt) {
@@ -2255,15 +2292,15 @@ export default defineVxeComponent({
2255
2292
  }
2256
2293
  }
2257
2294
  });
2258
- if ($xeGantt.handleTaskUpdateLinks) {
2295
+ if ($xeGantt.handleTaskLoadLinks) {
2259
2296
  if (props.links) {
2260
- $xeGantt.handleTaskUpdateLinks(props.links);
2297
+ $xeGantt.handleTaskLoadLinks(props.links);
2261
2298
  }
2262
2299
  }
2263
2300
  handleTaskScaleConfig();
2264
2301
  initPages();
2265
2302
  onMounted(() => {
2266
- if (!$xeGantt.handleUpdateTaskLink) {
2303
+ if (!$xeGantt.handleUpdateTaskLinkData) {
2267
2304
  if (props.links) {
2268
2305
  warnLog('vxe.error.notProp', ['links']);
2269
2306
  }
@@ -2314,6 +2351,9 @@ export default defineVxeComponent({
2314
2351
  initGanttView();
2315
2352
  globalEvents.on($xeGantt, 'keydown', handleGlobalKeydownEvent);
2316
2353
  });
2354
+ onBeforeUnmount(() => {
2355
+ XEUtils.assign(reactData, createReactData());
2356
+ });
2317
2357
  onUnmounted(() => {
2318
2358
  globalEvents.off($xeGantt, 'keydown');
2319
2359
  XEUtils.assign(internalData, createInternalData());
@@ -33,9 +33,6 @@ export function getTaskBarLeft(chartRest, viewCellWidth) {
33
33
  export function getTaskBarWidth(chartRest, viewCellWidth) {
34
34
  return Math.max(1, chartRest ? (Math.floor(viewCellWidth * chartRest.oWidthSize) - 1) : 0);
35
35
  }
36
- export function getTaskLinkKey(from, to) {
37
- return `${from}_${to}`;
38
- }
39
36
  const taskTypeMaps = {
40
37
  milestone: true
41
38
  };
@@ -14,6 +14,11 @@
14
14
  .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-bar, .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-custom-bar {
15
15
  border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
16
16
  }
17
+ .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-bar .vxe-gantt-view--chart-bar-content-wrapper,
18
+ .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-bar .vxe-gantt-view--chart-custom-bar-content-wrapper, .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-bar-content-wrapper,
19
+ .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-custom-bar-content-wrapper {
20
+ border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
21
+ }
17
22
  .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-bar:hover::after, .vxe-gantt-view--chart-row.is--round > .vxe-gantt-view--chart-custom-bar:hover::after {
18
23
  border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
19
24
  }
@@ -26,7 +31,6 @@
26
31
  top: 50%;
27
32
  left: 0;
28
33
  transform: translateY(-50%);
29
- overflow: hidden;
30
34
  pointer-events: all;
31
35
  }
32
36
  .vxe-gantt-view--chart-bar.is--default,
@@ -35,8 +39,18 @@
35
39
  background-color: var(--vxe-ui-gantt-view-task-bar-background-color);
36
40
  }
37
41
 
38
- .vxe-gantt-view--chart-custom-bar-content {
42
+ .vxe-gantt-view--chart-bar-content-wrapper,
43
+ .vxe-gantt-view--chart-custom-bar-content-wrapper {
39
44
  width: 100%;
45
+ overflow: hidden;
46
+ }
47
+
48
+ .vxe-gantt-view--chart-bar-content-wrapper {
49
+ width: 100%;
50
+ height: 100%;
51
+ display: flex;
52
+ flex-direction: row;
53
+ align-items: center;
40
54
  }
41
55
 
42
56
  .vxe-gantt-view--chart-bar {
@@ -1 +1 @@
1
- @charset "UTF-8";.vxe-gantt-view--chart-task-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative;width:100%;height:0}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-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,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-custom-bar{display:flex;flex-direction:row;position:absolute;top:50%;left:0;transform:translateY(-50%);overflow:hidden;pointer-events:all}.vxe-gantt-view--chart-bar.is--default,.vxe-gantt-view--chart-custom-bar.is--default{color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color)}.vxe-gantt-view--chart-custom-bar-content{width:100%}.vxe-gantt-view--chart-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar.is--default: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-bar.is--milestone{white-space:nowrap}.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-view--chart-milestone-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-milestone-icon{flex-shrink:0;padding:0 .3em;color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-gantt-view--chart-milestone-icon.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-gantt-view--chart-milestone-icon.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-gantt-view--chart-milestone-icon.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-gantt-view--chart-milestone-icon.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-gantt-view--chart-milestone-icon i{display:inline-block}.vxe-gantt-view--chart-milestone-content{flex-grow:1}.vxe-gantt-view--chart-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--chart-row.row--drag-origin{opacity:.3}.vxe-gantt{position:relative;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)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt .vxe-gantt--view-split-bar-handle{background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar-handle:active,.vxe-gantt .vxe-gantt--view-split-bar-handle:hover{background-color:var(--vxe-ui-gantt-view-split-bar-hover-background-color)}.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-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance{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-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-handle-appearance{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--default .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--full .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--inner .vxe-gantt-view--footer-wrapper{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.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:3}.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:5;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;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{color:#fff;background-color:var(--vxe-ui-font-primary-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--view-split-bar-left-btn i,.vxe-gantt--view-split-bar-right-btn i{font-size:.5em}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index:7;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-table{-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt-view--footer-wrapper{margin-top:calc(var(--vxe-ui-table-border-width) * -1);background-color:var(--vxe-ui-table-footer-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:scroll;overflow-x:scroll}.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--body-inner-wrapper::-webkit-scrollbar,.vxe-gantt-view--header-inner-wrapper::-webkit-scrollbar{display:none}.vxe-gantt-view--header-column{text-align:center;font-size:1em;height:var(--vxe-ui-gantt-view-cell-height,var(--vxe-ui-table-row-line-height))}.vxe-gantt-view--header-column.is--now{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--body-column.is--now::before{content:"";position:absolute;top:0;left:0;width:1px;height:100%;background-color:var(--vxe-ui-font-primary-color)}.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--radio{background-color:var(--vxe-ui-table-row-radio-checked-background-color)}.vxe-gantt-view--body-row.row--checked{background-color:var(--vxe-ui-table-row-checkbox-checked-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--radio{background-color:var(--vxe-ui-table-row-hover-radio-checked-background-color)}.vxe-gantt-view--body-row.row--hover.row--checked{background-color:var(--vxe-ui-table-row-hover-checkbox-checked-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--body-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--body-row.row--drag-origin>.vxe-gantt-view--body-column{opacity:.3}.vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{position:absolute;left:0;bottom:-.4em;height:.8em;width:100%;text-align:center;z-index:1;cursor:row-resize}.vxe-gantt-view--body-row:last-child .vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{height:.4em;bottom:0}.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-task-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative;width:100%;height:0}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar{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-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar .vxe-gantt-view--chart-custom-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-custom-bar-content-wrapper{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,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-custom-bar{display:flex;flex-direction:row;position:absolute;top:50%;left:0;transform:translateY(-50%);pointer-events:all}.vxe-gantt-view--chart-bar.is--default,.vxe-gantt-view--chart-custom-bar.is--default{color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color)}.vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-custom-bar-content-wrapper{width:100%;overflow:hidden}.vxe-gantt-view--chart-bar-content-wrapper{width:100%;height:100%;display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar.is--default: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-bar.is--milestone{white-space:nowrap}.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-view--chart-milestone-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-milestone-icon{flex-shrink:0;padding:0 .3em;color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-gantt-view--chart-milestone-icon.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-gantt-view--chart-milestone-icon.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-gantt-view--chart-milestone-icon.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-gantt-view--chart-milestone-icon.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-gantt-view--chart-milestone-icon i{display:inline-block}.vxe-gantt-view--chart-milestone-content{flex-grow:1}.vxe-gantt-view--chart-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--chart-row.row--drag-origin{opacity:.3}.vxe-gantt{position:relative;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)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt .vxe-gantt--view-split-bar-handle{background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar-handle:active,.vxe-gantt .vxe-gantt--view-split-bar-handle:hover{background-color:var(--vxe-ui-gantt-view-split-bar-hover-background-color)}.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-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance{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-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-handle-appearance{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-handle-appearance,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-handle-appearance{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--default .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--full .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--inner .vxe-gantt-view--footer-wrapper{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.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:3}.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:5;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;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{color:#fff;background-color:var(--vxe-ui-font-primary-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--view-split-bar-left-btn i,.vxe-gantt--view-split-bar-right-btn i{font-size:.5em}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index:7;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-table{-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt-view--footer-wrapper{margin-top:calc(var(--vxe-ui-table-border-width) * -1);background-color:var(--vxe-ui-table-footer-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:scroll;overflow-x:scroll}.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--body-inner-wrapper::-webkit-scrollbar,.vxe-gantt-view--header-inner-wrapper::-webkit-scrollbar{display:none}.vxe-gantt-view--header-column{text-align:center;font-size:1em;height:var(--vxe-ui-gantt-view-cell-height,var(--vxe-ui-table-row-line-height))}.vxe-gantt-view--header-column.is--now{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--body-column.is--now::before{content:"";position:absolute;top:0;left:0;width:1px;height:100%;background-color:var(--vxe-ui-font-primary-color)}.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--radio{background-color:var(--vxe-ui-table-row-radio-checked-background-color)}.vxe-gantt-view--body-row.row--checked{background-color:var(--vxe-ui-table-row-checkbox-checked-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--radio{background-color:var(--vxe-ui-table-row-hover-radio-checked-background-color)}.vxe-gantt-view--body-row.row--hover.row--checked{background-color:var(--vxe-ui-table-row-hover-checkbox-checked-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--body-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--body-row.row--drag-origin>.vxe-gantt-view--body-column{opacity:.3}.vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{position:absolute;left:0;bottom:-.4em;height:.8em;width:100%;text-align:center;z-index:1;cursor:row-resize}.vxe-gantt-view--body-row:last-child .vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{height:.4em;bottom:0}.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)}