vxe-gantt 4.2.4 → 4.2.6

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 (52) hide show
  1. package/es/gantt/src/gantt-chart.js +93 -15
  2. package/es/gantt/src/gantt-view.js +72 -10
  3. package/es/gantt/src/gantt.js +12 -4
  4. package/es/gantt/src/static.js +6 -2
  5. package/es/gantt/src/table-emits.js +1 -0
  6. package/es/gantt/src/util.js +8 -4
  7. package/es/gantt/style.css +28 -6
  8. package/es/gantt/style.min.css +1 -1
  9. package/es/style.css +1 -1
  10. package/es/style.min.css +1 -1
  11. package/es/ui/index.js +4 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/es/ui/src/utils.js +3 -0
  14. package/es/vxe-gantt/style.css +28 -6
  15. package/es/vxe-gantt/style.min.css +1 -1
  16. package/lib/gantt/src/gantt-chart.js +80 -13
  17. package/lib/gantt/src/gantt-chart.min.js +1 -1
  18. package/lib/gantt/src/gantt-view.js +70 -9
  19. package/lib/gantt/src/gantt-view.min.js +1 -1
  20. package/lib/gantt/src/gantt.js +13 -2
  21. package/lib/gantt/src/gantt.min.js +1 -1
  22. package/lib/gantt/src/static.js +6 -2
  23. package/lib/gantt/src/static.min.js +1 -1
  24. package/lib/gantt/src/table-emits.js +1 -1
  25. package/lib/gantt/src/table-emits.min.js +1 -1
  26. package/lib/gantt/src/util.js +10 -5
  27. package/lib/gantt/src/util.min.js +1 -1
  28. package/lib/gantt/style/style.css +28 -6
  29. package/lib/gantt/style/style.min.css +1 -1
  30. package/lib/index.umd.js +187 -33
  31. package/lib/index.umd.min.js +1 -1
  32. package/lib/style.css +1 -1
  33. package/lib/style.min.css +1 -1
  34. package/lib/ui/index.js +4 -1
  35. package/lib/ui/index.min.js +1 -1
  36. package/lib/ui/src/log.js +1 -1
  37. package/lib/ui/src/log.min.js +1 -1
  38. package/lib/ui/src/utils.js +4 -0
  39. package/lib/ui/src/utils.min.js +1 -1
  40. package/lib/vxe-gantt/style/style.css +28 -6
  41. package/lib/vxe-gantt/style/style.min.css +1 -1
  42. package/package.json +3 -3
  43. package/packages/gantt/src/gantt-chart.ts +100 -15
  44. package/packages/gantt/src/gantt-view.ts +69 -10
  45. package/packages/gantt/src/gantt.ts +13 -3
  46. package/packages/gantt/src/static.ts +7 -3
  47. package/packages/gantt/src/table-emits.ts +1 -0
  48. package/packages/gantt/src/util.ts +11 -7
  49. package/packages/ui/index.ts +3 -0
  50. package/packages/ui/src/utils.ts +4 -0
  51. package/styles/components/gantt-module/gantt-chart.scss +31 -4
  52. package/styles/theme/base.scss +1 -0
@@ -2,8 +2,8 @@ import { h, inject, ref, onMounted, onUnmounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import { VxeUI } from '@vxe-ui/core';
4
4
  import XEUtils from 'xe-utils';
5
- import { getCellRestHeight, hasMilestoneTask, gettaskType } from './util';
6
- import { getStringValue, isEnableConf } from '../../ui/src/utils';
5
+ import { getCellRestHeight, hasMilestoneTask, getTaskType, hasSubviewTask } from './util';
6
+ import { getStringValue, isEnableConf, hasEnableConf } from '../../ui/src/utils';
7
7
  const { getIcon, renderEmptyElement } = VxeUI;
8
8
  const sourceType = 'gantt';
9
9
  const viewType = 'chart';
@@ -14,12 +14,12 @@ export default defineVxeComponent({
14
14
  const $xeGanttView = inject('$xeGanttView', {});
15
15
  const { props: ganttProps, reactData: ganttReactData, internalData: ganttInternalData } = $xeGantt;
16
16
  const { reactData: ganttViewReactData, internalData: ganttViewInternalData } = $xeGanttView;
17
- const { computeProgressField, computeTitleField, computeTypeField, computeTaskBarOpts, computeScaleUnit, computeTaskLinkOpts, computeTaskBarMilestoneOpts } = $xeGantt.getComputeMaps();
17
+ const { computeProgressField, computeTitleField, computeTypeField, computeTaskBarOpts, computeScaleUnit, computeTaskLinkOpts, computeTaskBarMilestoneOpts, computeTaskBarSubviewOpts } = $xeGantt.getComputeMaps();
18
18
  const refElem = ref();
19
19
  const refTaskWrapperElem = ref();
20
20
  const refChartBeforeWrapperElem = ref();
21
21
  const refChartAfterWrapperElem = ref();
22
- const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex) => {
22
+ const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, rowChildren, isExpandTree) => {
23
23
  const tableReactData = $xeTable.reactData;
24
24
  const { resizeHeightFlag, pendingRowFlag } = tableReactData;
25
25
  const tableInternalData = $xeTable.internalData;
@@ -30,13 +30,14 @@ export default defineVxeComponent({
30
30
  const defaultRowHeight = computeDefaultRowHeight.value;
31
31
  const ganttSlots = $xeGantt.context.slots;
32
32
  const taskBarSlot = ganttSlots.taskBar || ganttSlots['task-bar'];
33
- const { taskBarMilestoneConfig } = ganttProps;
33
+ const { taskBarMilestoneConfig, taskBarSubviewConfig } = ganttProps;
34
34
  const { activeLink, activeBarRowid } = ganttReactData;
35
35
  const titleField = computeTitleField.value;
36
36
  const progressField = computeProgressField.value;
37
37
  const typeField = computeTypeField.value;
38
38
  const taskBarOpts = computeTaskBarOpts.value;
39
39
  const taskBarMilestoneOpts = computeTaskBarMilestoneOpts.value;
40
+ const taskBarSubviewOpts = computeTaskBarSubviewOpts.value;
40
41
  const scaleUnit = computeScaleUnit.value;
41
42
  const barParams = { $gantt: $xeGantt, row, scaleType: scaleUnit };
42
43
  const { showProgress, showContent, contentMethod, barStyle, moveable, showTooltip } = taskBarOpts;
@@ -47,8 +48,9 @@ export default defineVxeComponent({
47
48
  const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
48
49
  let title = getStringValue(XEUtils.get(row, titleField));
49
50
  const progressValue = showProgress ? Math.min(100, Math.max(0, XEUtils.toNumber(XEUtils.get(row, progressField)))) : 0;
50
- const typeValue = gettaskType(XEUtils.get(row, typeField));
51
- const isMilestone = !!(taskBarMilestoneConfig && hasMilestoneTask(typeValue));
51
+ const renderTaskType = getTaskType(XEUtils.get(row, typeField));
52
+ const isMilestone = !!(hasEnableConf(taskBarMilestoneConfig, taskBarMilestoneOpts) && hasMilestoneTask(renderTaskType));
53
+ const isSubview = !!(hasEnableConf(taskBarSubviewConfig, taskBarSubviewOpts) && hasSubviewTask(renderTaskType));
52
54
  const vbStyle = {};
53
55
  const vpStyle = {
54
56
  width: `${progressValue || 0}%`
@@ -109,7 +111,85 @@ export default defineVxeComponent({
109
111
  cbVNs.push(h('div', Object.assign({ key: 'cbc', class: 'vxe-gantt-view--chart-custom-bar-content-wrapper' }, ctOns), $xeGantt.callSlot(taskBarSlot, barParams)));
110
112
  }
111
113
  else {
112
- if (isMilestone) {
114
+ if (isSubview && rowChildren && rowChildren.length) {
115
+ if (isExpandTree) {
116
+ if (taskBarSubviewOpts.showOverview) {
117
+ cbVNs.push(h('div', {
118
+ key: 'vcso',
119
+ class: ['vxe-gantt-view--chart-subview-wrapper is--overview', {
120
+ 'is--round': round,
121
+ 'is--move': moveable
122
+ }]
123
+ }, [
124
+ h('div', {
125
+ key: rowid,
126
+ rowid: rowid,
127
+ class: 'vxe-gantt-view--chart-subview-bar'
128
+ }, [
129
+ h('div', {
130
+ class: 'vxe-gantt-view--chart-subview-bar-content-wrapper'
131
+ }, [
132
+ showContent
133
+ ? h('div', {
134
+ class: 'vxe-gantt-view--chart-content'
135
+ }, title)
136
+ : renderEmptyElement($xeGantt)
137
+ ])
138
+ ])
139
+ ]));
140
+ }
141
+ }
142
+ else {
143
+ cbVNs.push(h('div', {
144
+ key: 'vcsc',
145
+ class: ['vxe-gantt-view--chart-subview-wrapper is--inline', {
146
+ 'is--round': round,
147
+ 'is--move': moveable
148
+ }]
149
+ }, rowChildren.map(childRow => {
150
+ const childRowid = $xeTable.getRowid(childRow);
151
+ let childTitle = getStringValue(XEUtils.get(childRow, titleField));
152
+ const childProgressValue = showProgress ? Math.min(100, Math.max(0, XEUtils.toNumber(XEUtils.get(childRow, progressField)))) : 0;
153
+ const childRenderTaskType = getTaskType(XEUtils.get(childRow, typeField));
154
+ const vpcStyle = {
155
+ width: `${childProgressValue || 0}%`
156
+ };
157
+ if (isBarRowStyle) {
158
+ const { completedBgColor } = barStyObj;
159
+ if (completedBgColor) {
160
+ vpcStyle.backgroundColor = completedBgColor;
161
+ }
162
+ }
163
+ if (contentMethod) {
164
+ childTitle = getStringValue(contentMethod({ row: childRow, title: childTitle, scaleType: scaleUnit }));
165
+ }
166
+ return h('div', {
167
+ key: childRowid,
168
+ rowid: childRowid,
169
+ class: ['vxe-gantt-view--chart-subview-bar', `is--${childRenderTaskType}`, {
170
+ 'row--pending': !!pendingRowFlag && !!pendingRowMaps[childRowid]
171
+ }]
172
+ }, [
173
+ h('div', {
174
+ class: 'vxe-gantt-view--chart-subview-bar-content-wrapper'
175
+ }, [
176
+ showProgress
177
+ ? h('div', {
178
+ class: 'vxe-gantt-view--chart-progress',
179
+ style: vpcStyle
180
+ })
181
+ : renderEmptyElement($xeGantt),
182
+ showContent
183
+ ? h('div', {
184
+ class: 'vxe-gantt-view--chart-content'
185
+ }, childTitle)
186
+ : renderEmptyElement($xeGantt)
187
+ ])
188
+ ]);
189
+ })));
190
+ }
191
+ }
192
+ else if (isMilestone) {
113
193
  const { icon, iconStatus, iconStyle } = taskBarMilestoneOpts;
114
194
  const tbmParams = { $gantt: $xeGantt, row };
115
195
  cbVNs.push(h('div', Object.assign({ key: 'vcm', class: 'vxe-gantt-view--chart-milestone-wrapper' }, ctOns), [
@@ -132,14 +212,12 @@ export default defineVxeComponent({
132
212
  cbVNs.push(h('div', Object.assign({ key: 'vbc', class: 'vxe-gantt-view--chart-bar-content-wrapper' }, ctOns), [
133
213
  showProgress
134
214
  ? h('div', {
135
- key: 'vcp',
136
215
  class: 'vxe-gantt-view--chart-progress',
137
216
  style: vpStyle
138
217
  })
139
218
  : renderEmptyElement($xeGantt),
140
219
  showContent
141
220
  ? h('div', {
142
- key: 'vcc',
143
221
  class: 'vxe-gantt-view--chart-content'
144
222
  }, title)
145
223
  : renderEmptyElement($xeGantt)
@@ -149,7 +227,7 @@ export default defineVxeComponent({
149
227
  return h('div', {
150
228
  key: rowid,
151
229
  rowid,
152
- class: ['vxe-gantt-view--chart-row', `is--${gettaskType(typeValue)}`, {
230
+ class: ['vxe-gantt-view--chart-row', `is--${renderTaskType}`, {
153
231
  'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid],
154
232
  'is--round': round,
155
233
  'is--move': moveable
@@ -162,7 +240,7 @@ export default defineVxeComponent({
162
240
  }
163
241
  }, [
164
242
  h('div', {
165
- class: [taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', `is--${gettaskType(typeValue)}`, {
243
+ class: [taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', `is--${renderTaskType}`, {
166
244
  'is--active': activeBarRowid === rowid,
167
245
  'active--link': activeLink && (rowid === `${activeLink.from}` || rowid === `${activeLink.to}`)
168
246
  }],
@@ -204,15 +282,15 @@ export default defineVxeComponent({
204
282
  rowIndex = rowRest.index;
205
283
  _rowIndex = rowRest._index;
206
284
  }
207
- trVNs.push(renderTaskBar($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex));
208
285
  let isExpandTree = false;
209
286
  let rowChildren = [];
210
- if (treeConfig && !scrollYLoad && !transform) {
287
+ if (treeConfig) {
211
288
  rowChildren = row[childrenField];
212
289
  isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
213
290
  }
291
+ trVNs.push(renderTaskBar($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, rowChildren, isExpandTree));
214
292
  // 如果是树形表格
215
- if (isExpandTree) {
293
+ if (treeConfig && isExpandTree && !scrollYLoad && !transform) {
216
294
  trVNs.push(...renderTaskRows($xeTable, rowChildren));
217
295
  }
218
296
  });
@@ -2,7 +2,7 @@ import { h, ref, reactive, nextTick, inject, onBeforeUnmount, provide, computed,
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import { setScrollTop, setScrollLeft, removeClass, addClass, hasClass } from '../../ui/src/dom';
4
4
  import { VxeUI } from '@vxe-ui/core';
5
- import { getRefElem, getStandardGapTime, getTaskBarLeft, getTaskBarWidth, hasMilestoneTask } from './util';
5
+ import { getRefElem, getStandardGapTime, getTaskBarLeft, getTaskBarWidth, hasMilestoneTask, getTaskType, hasSubviewTask } from './util';
6
6
  import XEUtils from 'xe-utils';
7
7
  import GanttViewHeaderComponent from './gantt-header';
8
8
  import GanttViewBodyComponent from './gantt-body';
@@ -198,13 +198,20 @@ export default defineVxeComponent({
198
198
  const updateTodayData = () => {
199
199
  const ganttReactData = $xeGantt.reactData;
200
200
  const { taskScaleList } = ganttReactData;
201
+ const minScale = computeMinScale.value;
201
202
  const weekScale = taskScaleList.find(item => item.type === 'week');
203
+ const isMinWeek = minScale.type === 'week';
202
204
  const itemDate = new Date();
203
- const [yyyy, MM, dd, HH, mm, ss] = XEUtils.toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-');
205
+ let [yyyy, M, MM, dd, HH, mm, ss] = XEUtils.toDateString(itemDate, 'yyyy-M-MM-dd-HH-mm-ss').split('-');
204
206
  const e = itemDate.getDay();
205
207
  const E = e + 1;
206
208
  const q = Math.ceil((itemDate.getMonth() + 1) / 3);
207
- const W = XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
209
+ const W = `${XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
210
+ if (isMinWeek && checkWeekOfsetYear(W, M)) {
211
+ yyyy = `${Number(yyyy) + 1}`;
212
+ M = '1';
213
+ MM = '0' + M;
214
+ }
208
215
  internalData.todayDateMaps = {
209
216
  year: yyyy,
210
217
  quarter: `${yyyy}_q${q}`,
@@ -631,14 +638,24 @@ export default defineVxeComponent({
631
638
  const rowid = $xeTable.getRowid(row);
632
639
  let startValue = XEUtils.get(row, startField);
633
640
  let endValue = XEUtils.get(row, endField);
634
- const isMilestone = hasMilestoneTask(XEUtils.get(row, typeField));
641
+ const renderTaskType = getTaskType(XEUtils.get(row, typeField));
642
+ const isMilestone = hasMilestoneTask(renderTaskType);
643
+ const isSubview = hasSubviewTask(renderTaskType);
635
644
  if (isMilestone) {
636
645
  if (!startValue) {
637
646
  startValue = endValue;
638
647
  }
639
648
  endValue = startValue;
640
649
  }
641
- if (startValue && endValue) {
650
+ if (isSubview) {
651
+ ctMaps[rowid] = {
652
+ row,
653
+ rowid,
654
+ oLeftSize: 0,
655
+ oWidthSize: 0
656
+ };
657
+ }
658
+ else if (startValue && endValue) {
642
659
  const { offsetLeftSize, offsetWidthSize } = renderFn(startValue, endValue);
643
660
  ctMaps[rowid] = {
644
661
  row,
@@ -762,13 +779,16 @@ export default defineVxeComponent({
762
779
  reactData.overflowX = overflowX;
763
780
  }
764
781
  };
765
- const updateTaskChart = () => {
782
+ const updateTaskChartStyle = () => {
766
783
  const { dragBarRow } = ganttInternalData;
767
784
  const { viewCellWidth } = reactData;
768
785
  const { elemStore, chartMaps } = internalData;
769
786
  const $xeTable = internalData.xeTable;
770
787
  const chartWrapper = getRefElem(elemStore['main-chart-task-wrapper']);
771
788
  if (chartWrapper && $xeTable) {
789
+ const { computeTreeOpts } = $xeTable.getComputeMaps();
790
+ const treeOpts = computeTreeOpts.value;
791
+ const childrenField = treeOpts.children || treeOpts.childrenField;
772
792
  XEUtils.arrayEach(chartWrapper.children, (rowEl) => {
773
793
  const barEl = rowEl.children[0];
774
794
  if (!barEl) {
@@ -779,9 +799,51 @@ export default defineVxeComponent({
779
799
  return;
780
800
  }
781
801
  const chartRest = rowid ? chartMaps[rowid] : null;
782
- barEl.style.left = `${getTaskBarLeft(chartRest, viewCellWidth)}px`;
783
- if (!hasClass(barEl, 'is--milestone')) {
784
- barEl.style.width = `${getTaskBarWidth(chartRest, viewCellWidth)}px`;
802
+ const row = chartRest ? chartRest.row : null;
803
+ // 子任务视图
804
+ if (hasClass(barEl, 'is--subview')) {
805
+ const childWrapperEl = barEl.firstElementChild;
806
+ if (childWrapperEl) {
807
+ // 行内展示
808
+ if (hasClass(childWrapperEl, 'is--inline')) {
809
+ XEUtils.arrayEach(childWrapperEl.children, (childEl) => {
810
+ const childBarEl = childEl;
811
+ const childRowid = childBarEl.getAttribute('rowid') || '';
812
+ const childChartRest = childRowid ? chartMaps[childRowid] : null;
813
+ childBarEl.style.left = `${getTaskBarLeft(childChartRest, viewCellWidth)}px`;
814
+ // 里程碑不需要宽度
815
+ if (!hasClass(childBarEl, 'is--milestone')) {
816
+ childBarEl.style.width = `${getTaskBarWidth(childChartRest, viewCellWidth)}px`;
817
+ }
818
+ });
819
+ }
820
+ else {
821
+ // 如果展开子任务
822
+ const childBarEl = childWrapperEl.firstElementChild;
823
+ if (childBarEl) {
824
+ let minChildLeftSize = 0;
825
+ let maxChildLeftSize = 0;
826
+ const rowChildren = row ? row[childrenField] : [];
827
+ rowChildren.forEach(childRow => {
828
+ const childRowid = $xeTable.getRowid(childRow);
829
+ const childChartRest = childRowid ? chartMaps[childRowid] : null;
830
+ if (childChartRest) {
831
+ maxChildLeftSize = Math.max(maxChildLeftSize, childChartRest.oLeftSize + childChartRest.oWidthSize);
832
+ minChildLeftSize = minChildLeftSize ? Math.min(minChildLeftSize, childChartRest.oLeftSize) : childChartRest.oLeftSize;
833
+ }
834
+ });
835
+ childBarEl.style.left = `${viewCellWidth * minChildLeftSize}px`;
836
+ childBarEl.style.width = `${viewCellWidth * (maxChildLeftSize - minChildLeftSize)}px`;
837
+ }
838
+ }
839
+ }
840
+ }
841
+ else {
842
+ barEl.style.left = `${getTaskBarLeft(chartRest, viewCellWidth)}px`;
843
+ // 里程碑不需要宽度
844
+ if (!hasClass(barEl, 'is--milestone')) {
845
+ barEl.style.width = `${getTaskBarWidth(chartRest, viewCellWidth)}px`;
846
+ }
785
847
  }
786
848
  });
787
849
  }
@@ -901,7 +963,7 @@ export default defineVxeComponent({
901
963
  }
902
964
  reactData.scrollXWidth = viewTableWidth;
903
965
  return Promise.all([
904
- updateTaskChart(),
966
+ updateTaskChartStyle(),
905
967
  $xeGantt.handleUpdateTaskLinkStyle ? $xeGantt.handleUpdateTaskLinkStyle($xeGanttView) : null
906
968
  ]);
907
969
  };
@@ -1,7 +1,7 @@
1
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
- import { getLastZIndex, nextZIndex, isEnableConf, formatText } from '../../ui/src/utils';
4
+ import { getLastZIndex, nextZIndex, isEnableConf, hasEnableConf, formatText } from '../../ui/src/utils';
5
5
  import { getOffsetHeight, getPaddingTopBottomSize, getDomNode, toCssUnit, addClass, removeClass } from '../../ui/src/dom';
6
6
  import { getSlotVNs } from '../../ui/src/vn';
7
7
  import { VxeUI } from '@vxe-ui/core';
@@ -86,7 +86,7 @@ function getViewTypeLevel(type) {
86
86
  export default defineVxeComponent({
87
87
  name: 'VxeGantt',
88
88
  mixins: [],
89
- props: Object.assign(Object.assign({}, tableProps), { columns: Array, pagerConfig: Object, proxyConfig: Object, toolbarConfig: Object, formConfig: Object, zoomConfig: Object, links: Array, layouts: Array, taskConfig: Object, taskViewScaleConfig: Object, taskViewConfig: Object, taskLinkConfig: Object, taskBarConfig: Object, taskBarMilestoneConfig: Object, taskBarTooltipConfig: Object, taskSplitConfig: Object, taskBarResizeConfig: Object, taskBarMoveConfig: Object, size: {
89
+ props: Object.assign(Object.assign({}, tableProps), { columns: Array, pagerConfig: Object, proxyConfig: Object, toolbarConfig: Object, formConfig: Object, zoomConfig: Object, links: Array, layouts: Array, taskConfig: Object, taskViewScaleConfig: Object, taskViewConfig: Object, taskLinkConfig: Object, taskBarConfig: Object, taskBarMilestoneConfig: Object, taskBarSubviewConfig: Object, taskBarTooltipConfig: Object, taskSplitConfig: Object, taskBarResizeConfig: Object, taskBarMoveConfig: Object, size: {
90
90
  type: String,
91
91
  default: () => getConfig().gantt.size || getConfig().size
92
92
  } }),
@@ -189,6 +189,9 @@ export default defineVxeComponent({
189
189
  const computeTaskBarMilestoneOpts = computed(() => {
190
190
  return Object.assign({}, getConfig().gantt.taskBarMilestoneConfig, props.taskBarMilestoneConfig);
191
191
  });
192
+ const computeTaskBarSubviewOpts = computed(() => {
193
+ return Object.assign({}, getConfig().gantt.taskBarSubviewConfig, props.taskBarSubviewConfig);
194
+ });
192
195
  const computeTaskBarTooltipOpts = computed(() => {
193
196
  return Object.assign({}, getConfig().gantt.taskBarTooltipConfig, props.taskBarTooltipConfig);
194
197
  });
@@ -248,12 +251,13 @@ export default defineVxeComponent({
248
251
  return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
249
252
  });
250
253
  const computeStyles = computed(() => {
251
- const { height, maxHeight } = props;
254
+ const { height, maxHeight, taskBarSubviewConfig } = props;
252
255
  const { isZMax, tZindex } = reactData;
253
256
  const taskViewOpts = computeTaskViewOpts.value;
254
257
  const { tableStyle } = taskViewOpts;
255
258
  const taskBarOpts = computeTaskBarOpts.value;
256
259
  const { barStyle } = taskBarOpts;
260
+ const taskBarSubviewOpts = computeTaskBarSubviewOpts.value;
257
261
  const stys = {};
258
262
  if (isZMax) {
259
263
  stys.zIndex = tZindex;
@@ -267,13 +271,16 @@ export default defineVxeComponent({
267
271
  }
268
272
  }
269
273
  if (barStyle && !XEUtils.isFunction(barStyle)) {
270
- const { bgColor, completedBgColor } = barStyle;
274
+ const { bgColor, completedBgColor, overviewBgColor } = barStyle;
271
275
  if (bgColor) {
272
276
  stys['--vxe-ui-gantt-view-task-bar-background-color'] = bgColor;
273
277
  }
274
278
  if (completedBgColor) {
275
279
  stys['--vxe-ui-gantt-view-task-bar-completed-background-color'] = completedBgColor;
276
280
  }
281
+ if (overviewBgColor && hasEnableConf(taskBarSubviewConfig, taskBarSubviewOpts)) {
282
+ stys['--vxe-ui-gantt-view-task-bar-overview-background-color'] = overviewBgColor;
283
+ }
277
284
  }
278
285
  if (tableStyle) {
279
286
  const { width: defTbWidth } = tableStyle;
@@ -434,6 +441,7 @@ export default defineVxeComponent({
434
441
  computeTaskBarResizeOpts,
435
442
  computeTaskSplitOpts,
436
443
  computeTaskBarMilestoneOpts,
444
+ computeTaskBarSubviewOpts,
437
445
  computeTaskBarTooltipOpts,
438
446
  computeTaskLinkOpts,
439
447
  computeTaskViewScales,
@@ -21,12 +21,16 @@ export var VxeGanttDependencyType;
21
21
  VxeGanttDependencyType[VxeGanttDependencyType["FinishToFinish"] = 3] = "FinishToFinish";
22
22
  })(VxeGanttDependencyType || (VxeGanttDependencyType = {}));
23
23
  /**
24
- * 任务类型
24
+ * 任务渲染类型
25
25
  */
26
26
  export var VxeGanttTaskType;
27
27
  (function (VxeGanttTaskType) {
28
28
  /**
29
- * 里程碑
29
+ * 里程碑类型,该类型节点不需要结束日期
30
30
  */
31
31
  VxeGanttTaskType["Milestone"] = "milestone";
32
+ /**
33
+ * 子视图类型,该类型会将子任务渲染到一行,无需开始日期和结束日期
34
+ */
35
+ VxeGanttTaskType["Subview"] = "subview";
32
36
  })(VxeGanttTaskType || (VxeGanttTaskType = {}));
@@ -64,6 +64,7 @@ export const tableEmits = [
64
64
  'column-dragover',
65
65
  'column-dragend',
66
66
  'enter-append-row',
67
+ 'tab-append-row',
67
68
  'edit-actived',
68
69
  'edit-activated',
69
70
  'edit-disabled',
@@ -31,14 +31,18 @@ export function getTaskBarLeft(chartRest, viewCellWidth) {
31
31
  return chartRest ? viewCellWidth * chartRest.oLeftSize : 0;
32
32
  }
33
33
  export function getTaskBarWidth(chartRest, viewCellWidth) {
34
- return Math.max(1, chartRest ? (Math.floor(viewCellWidth * chartRest.oWidthSize) - 1) : 0);
34
+ return chartRest && chartRest.oWidthSize ? Math.max(1, chartRest ? (Math.floor(viewCellWidth * chartRest.oWidthSize) - 1) : 0) : 0;
35
35
  }
36
36
  const taskTypeMaps = {
37
- milestone: true
37
+ milestone: true,
38
+ subview: true
38
39
  };
39
40
  export function hasMilestoneTask(type) {
40
- return taskTypeMaps[type];
41
+ return type === 'milestone';
41
42
  }
42
- export function gettaskType(type) {
43
+ export function hasSubviewTask(type) {
44
+ return type === 'subview';
45
+ }
46
+ export function getTaskType(type) {
43
47
  return taskTypeMaps[type] ? type : 'default';
44
48
  }
@@ -11,7 +11,8 @@
11
11
  width: 100%;
12
12
  height: 0;
13
13
  }
14
- .vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-bar {
14
+ .vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-bar,
15
+ .vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-subview-bar {
15
16
  color: var(--vxe-ui-font-disabled-color);
16
17
  opacity: 0.5;
17
18
  text-decoration: line-through;
@@ -28,7 +29,22 @@
28
29
  border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
29
30
  }
30
31
 
32
+ .vxe-gantt-view--chart-subview-wrapper.is--round > .vxe-gantt-view--chart-subview-bar {
33
+ border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
34
+ }
35
+ .vxe-gantt-view--chart-subview-wrapper.is--round > .vxe-gantt-view--chart-subview-bar .vxe-gantt-view--chart-subview-bar-content-wrapper {
36
+ border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
37
+ }
38
+ .vxe-gantt-view--chart-subview-wrapper.is--round > .vxe-gantt-view--chart-subview-bar:hover::after {
39
+ border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
40
+ }
41
+ .vxe-gantt-view--chart-subview-wrapper.is--overview > .vxe-gantt-view--chart-subview-bar {
42
+ color: #ffffff;
43
+ background-color: var(--vxe-ui-gantt-view-task-bar-overview-background-color);
44
+ }
45
+
31
46
  .vxe-gantt-view--chart-bar,
47
+ .vxe-gantt-view--chart-subview-bar,
32
48
  .vxe-gantt-view--chart-custom-bar {
33
49
  display: flex;
34
50
  flex-direction: row;
@@ -39,18 +55,21 @@
39
55
  pointer-events: all;
40
56
  }
41
57
  .vxe-gantt-view--chart-bar.is--default,
58
+ .vxe-gantt-view--chart-subview-bar.is--default,
42
59
  .vxe-gantt-view--chart-custom-bar.is--default {
43
60
  color: #ffffff;
44
61
  background-color: var(--vxe-ui-gantt-view-task-bar-background-color);
45
62
  }
46
63
 
47
64
  .vxe-gantt-view--chart-bar-content-wrapper,
48
- .vxe-gantt-view--chart-custom-bar-content-wrapper {
65
+ .vxe-gantt-view--chart-custom-bar-content-wrapper,
66
+ .vxe-gantt-view--chart-subview-bar-content-wrapper {
49
67
  width: 100%;
50
68
  overflow: hidden;
51
69
  }
52
70
 
53
- .vxe-gantt-view--chart-bar-content-wrapper {
71
+ .vxe-gantt-view--chart-bar-content-wrapper,
72
+ .vxe-gantt-view--chart-subview-bar-content-wrapper {
54
73
  width: 100%;
55
74
  height: 100%;
56
75
  display: flex;
@@ -58,11 +77,13 @@
58
77
  align-items: center;
59
78
  }
60
79
 
61
- .vxe-gantt-view--chart-bar {
80
+ .vxe-gantt-view--chart-bar,
81
+ .vxe-gantt-view--chart-subview-bar {
62
82
  align-items: center;
63
83
  height: var(--vxe-ui-gantt-view-chart-bar-height);
64
84
  }
65
- .vxe-gantt-view--chart-bar.is--default:hover::after {
85
+ .vxe-gantt-view--chart-bar.is--default:hover::after,
86
+ .vxe-gantt-view--chart-subview-bar.is--default:hover::after {
66
87
  content: "";
67
88
  position: absolute;
68
89
  top: 0;
@@ -72,7 +93,8 @@
72
93
  background-color: rgba(0, 0, 0, 0.1);
73
94
  pointer-events: none;
74
95
  }
75
- .vxe-gantt-view--chart-bar.is--milestone {
96
+ .vxe-gantt-view--chart-bar.is--milestone,
97
+ .vxe-gantt-view--chart-subview-bar.is--milestone {
76
98
  white-space: nowrap;
77
99
  }
78
100
 
@@ -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.row--pending .vxe-gantt-view--chart-bar{color:var(--vxe-ui-font-disabled-color);opacity:.5;text-decoration:line-through}.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--pending>.vxe-gantt-view--body-column::after{content:"";position:absolute;top:50%;left:0;width:100%;height:0;border-bottom:1px solid var(--vxe-ui-table-validate-error-color);z-index:1}.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.row--pending .vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-subview-bar{color:var(--vxe-ui-font-disabled-color);opacity:.5;text-decoration:line-through}.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-subview-wrapper.is--round>.vxe-gantt-view--chart-subview-bar{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-subview-wrapper.is--round>.vxe-gantt-view--chart-subview-bar .vxe-gantt-view--chart-subview-bar-content-wrapper{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-subview-wrapper.is--round>.vxe-gantt-view--chart-subview-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-subview-wrapper.is--overview>.vxe-gantt-view--chart-subview-bar{color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-overview-background-color)}.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-custom-bar,.vxe-gantt-view--chart-subview-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,.vxe-gantt-view--chart-subview-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,.vxe-gantt-view--chart-subview-bar-content-wrapper{width:100%;overflow:hidden}.vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-subview-bar-content-wrapper{width:100%;height:100%;display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-subview-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar.is--default:hover::after,.vxe-gantt-view--chart-subview-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,.vxe-gantt-view--chart-subview-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--pending>.vxe-gantt-view--body-column::after{content:"";position:absolute;top:50%;left:0;width:100%;height:0;border-bottom:1px solid var(--vxe-ui-table-validate-error-color);z-index:1}.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)}