vxe-gantt 4.0.4 → 4.0.5

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.
@@ -1,5 +1,7 @@
1
1
  import { h, inject, ref, onMounted, onUnmounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
+ import { VxeUI } from '@vxe-ui/core';
4
+ const { getI18n } = VxeUI;
3
5
  export default defineVxeComponent({
4
6
  name: 'VxeGanttViewHeader',
5
7
  setup() {
@@ -36,16 +38,30 @@ export default defineVxeComponent({
36
38
  }
37
39
  });
38
40
  })),
39
- h('thead', {}, headerGroups.map((cols, rIndex) => {
41
+ h('thead', {}, headerGroups.map(({ scaleItem, columns }, $rowIndex) => {
42
+ const { type, titleMethod } = scaleItem;
40
43
  return h('tr', {
41
- key: rIndex
42
- }, cols.map((column, cIndex) => {
44
+ key: $rowIndex
45
+ }, columns.map((column, cIndex) => {
46
+ const dateObj = column.params;
47
+ let label = `${column.title}`;
48
+ if ($rowIndex < headerGroups.length - 1) {
49
+ if (scaleItem.type === 'day') {
50
+ label = getI18n(`vxe.gantt.dayss.w${dateObj.e}`);
51
+ }
52
+ else {
53
+ label = getI18n(`vxe.gantt.${!$rowIndex && headerGroups.length > 1 ? 'tFullFormat' : 'tSimpleFormat'}.${type}`, dateObj);
54
+ }
55
+ }
56
+ if (titleMethod) {
57
+ label = `${titleMethod({ scaleObj: scaleItem, title: label, dateObj: dateObj, $rowIndex })}`;
58
+ }
43
59
  return h('th', {
44
60
  key: cIndex,
45
61
  class: 'vxe-gantt-view--header-column',
46
- colspan: column.children ? column.children.length : null,
47
- title: `${column.field}`
48
- }, column.title);
62
+ colspan: column.childCount || null,
63
+ title: label
64
+ }, label);
49
65
  }));
50
66
  }))
51
67
  ])
@@ -44,7 +44,7 @@ export default defineVxeComponent({
44
44
  setup(props, context) {
45
45
  const xID = XEUtils.uniqueId();
46
46
  const $xeGantt = inject('$xeGantt', {});
47
- const { computeTaskOpts, computeTaskViewOpts, computeStartField, computeEndField, computeScrollbarOpts, computeScrollbarXToTop, computeScrollbarYToLeft } = $xeGantt.getComputeMaps();
47
+ const { computeTaskOpts, computeStartField, computeEndField, computeScrollbarOpts, computeScrollbarXToTop, computeScrollbarYToLeft } = $xeGantt.getComputeMaps();
48
48
  const refElem = ref();
49
49
  const refScrollXVirtualElem = ref();
50
50
  const refScrollYVirtualElem = ref();
@@ -85,14 +85,7 @@ export default defineVxeComponent({
85
85
  tableData: [],
86
86
  tableColumn: [],
87
87
  headerGroups: [],
88
- viewCellWidth: 40,
89
- rowHeightStore: {
90
- large: 52,
91
- default: 48,
92
- medium: 44,
93
- small: 40,
94
- mini: 36
95
- }
88
+ viewCellWidth: 20
96
89
  });
97
90
  const internalData = createInternalData();
98
91
  const refMaps = {
@@ -115,92 +108,243 @@ export default defineVxeComponent({
115
108
  };
116
109
  const handleParseColumn = () => {
117
110
  const ganttProps = $xeGantt.props;
111
+ const ganttReactData = $xeGantt.reactData;
118
112
  const { treeConfig } = ganttProps;
113
+ const { taskScaleList } = ganttReactData;
119
114
  const { minViewDate, maxViewDate } = reactData;
120
- const taskViewOpts = computeTaskViewOpts.value;
115
+ const minScale = XEUtils.last(taskScaleList);
121
116
  const fullCols = [];
122
117
  const groupCols = [];
123
- switch (taskViewOpts.mode) {
124
- case 'year':
125
- break;
126
- case 'quarter':
127
- break;
128
- case 'month':
129
- break;
130
- case 'week':
131
- break;
132
- default: {
133
- if (minViewDate && maxViewDate) {
134
- const currTime = minViewDate.getTime();
135
- const diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
136
- const countDayNum = Math.max(6, Math.floor(diffDayNum / 86400000) + 1);
137
- const groupList = [];
138
- const colList = [];
139
- const groupMaps = {};
140
- for (let i = 0; i < countDayNum; i++) {
141
- const itemDate = new Date(currTime + (i * 86400000));
142
- const yyyyy = `${itemDate.getFullYear()}-${itemDate.getMonth() + 1}`;
143
- const mmDd = `${itemDate.getDate()}`;
144
- let groupCol = groupMaps[yyyyy];
145
- const column = {
146
- field: `${yyyyy}-${mmDd}`,
147
- title: mmDd
148
- };
149
- if (groupCol) {
150
- groupCol.children.push(column);
151
- fullCols.push(groupCol);
152
- }
153
- else {
154
- groupCol = {
155
- field: yyyyy,
156
- title: yyyyy,
157
- children: [column]
158
- };
159
- groupList.push(groupCol);
160
- fullCols.push(groupCol);
161
- groupMaps[yyyyy] = groupCol;
162
- }
163
- colList.push(column);
118
+ if (minScale && minViewDate && maxViewDate) {
119
+ const minSType = minScale.type;
120
+ const weekScale = taskScaleList.find(item => item.type === 'week');
121
+ let gapTime = 1000 * 60 * 60 * 24;
122
+ switch (minScale.type) {
123
+ case 'hour':
124
+ gapTime = 1000 * 60 * 60;
125
+ break;
126
+ case 'minute':
127
+ gapTime = 1000 * 60;
128
+ break;
129
+ case 'second':
130
+ gapTime = 1000;
131
+ break;
132
+ default: {
133
+ break;
134
+ }
135
+ }
136
+ const currTime = minViewDate.getTime();
137
+ const diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
138
+ const countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
139
+ switch (minScale.type) {
140
+ case 'day':
141
+ case 'date':
142
+ if (diffDayNum > (1000 * 60 * 60 * 24 * 366 * 3)) {
143
+ reactData.tableColumn = [];
144
+ reactData.headerGroups = [];
145
+ return;
146
+ }
147
+ break;
148
+ case 'hour':
149
+ if (diffDayNum > (1000 * 60 * 60 * 24 * 31 * 3)) {
150
+ reactData.tableColumn = [];
151
+ reactData.headerGroups = [];
152
+ return;
153
+ }
154
+ break;
155
+ case 'minute':
156
+ if (diffDayNum > (1000 * 60 * 60 * 24 * 3)) {
157
+ reactData.tableColumn = [];
158
+ reactData.headerGroups = [];
159
+ return;
160
+ }
161
+ break;
162
+ case 'second':
163
+ if (diffDayNum > (1000 * 60 * 60 * 3)) {
164
+ reactData.tableColumn = [];
165
+ reactData.headerGroups = [];
166
+ return;
167
+ }
168
+ break;
169
+ }
170
+ const renderListMaps = {
171
+ year: [],
172
+ quarter: [],
173
+ month: [],
174
+ week: [],
175
+ day: [],
176
+ date: [],
177
+ hour: [],
178
+ minute: [],
179
+ second: []
180
+ };
181
+ const tempTypeMaps = {
182
+ year: {},
183
+ quarter: {},
184
+ month: {},
185
+ week: {},
186
+ day: {},
187
+ date: {},
188
+ hour: {},
189
+ minute: {},
190
+ second: {}
191
+ };
192
+ const handleData = (type, colMaps, minCol) => {
193
+ if (minSType === type) {
194
+ return;
195
+ }
196
+ const currCol = colMaps[type];
197
+ const currKey = `${currCol.field}`;
198
+ let currGpCol = tempTypeMaps[type][currKey];
199
+ if (!currGpCol) {
200
+ currGpCol = currCol;
201
+ tempTypeMaps[type][currKey] = currGpCol;
202
+ renderListMaps[type].push(currGpCol);
203
+ }
204
+ if (currGpCol) {
205
+ if (!currGpCol.children) {
206
+ currGpCol.children = [];
207
+ }
208
+ currGpCol.children.push(minCol);
209
+ }
210
+ };
211
+ for (let i = 0; i < countSize; i++) {
212
+ const itemDate = new Date(currTime + (i * gapTime));
213
+ const [yyyy, MM, dd, HH, mm, ss] = XEUtils.toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-');
214
+ const e = itemDate.getDay();
215
+ const E = e + 1;
216
+ const q = Math.ceil((itemDate.getMonth() + 1) / 3);
217
+ const W = XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
218
+ const dateObj = { yy: yyyy, M: MM, d: dd, H: HH, m: mm, s: ss, q, W, E, e };
219
+ const colMaps = {
220
+ year: {
221
+ field: yyyy,
222
+ title: yyyy,
223
+ params: dateObj
224
+ },
225
+ quarter: {
226
+ field: `${yyyy}_q${q}`,
227
+ title: q,
228
+ params: dateObj
229
+ },
230
+ month: {
231
+ field: `${yyyy}_${MM}`,
232
+ title: MM,
233
+ params: dateObj
234
+ },
235
+ week: {
236
+ field: `${yyyy}_W${W}`,
237
+ title: W,
238
+ params: dateObj
239
+ },
240
+ day: {
241
+ field: `${yyyy}_${MM}_${dd}_E${E}`,
242
+ title: E,
243
+ params: dateObj
244
+ },
245
+ date: {
246
+ field: `${yyyy}_${MM}_${dd}`,
247
+ title: dd,
248
+ params: dateObj
249
+ },
250
+ hour: {
251
+ field: `${yyyy}_${MM}_${dd}_${HH}`,
252
+ title: HH,
253
+ params: dateObj
254
+ },
255
+ minute: {
256
+ field: `${yyyy}_${MM}_${dd}_${HH}_${mm}`,
257
+ title: mm,
258
+ params: dateObj
259
+ },
260
+ second: {
261
+ field: `${yyyy}_${MM}_${dd}_${HH}_${mm}_${ss}`,
262
+ title: ss,
263
+ params: dateObj
164
264
  }
165
- groupCols.push(groupList, colList);
166
- const $xeTable = internalData.xeTable;
167
- if ($xeTable) {
168
- const startField = computeStartField.value;
169
- const endField = computeEndField.value;
170
- const { computeTreeOpts } = $xeTable.getComputeMaps();
171
- const tableInternalData = $xeTable.internalData;
172
- const { afterFullData, afterTreeFullData } = tableInternalData;
173
- const treeOpts = computeTreeOpts.value;
174
- const { transform } = treeOpts;
175
- const childrenField = treeOpts.children || treeOpts.childrenField;
176
- const ctMaps = {};
177
- const handleParseRender = (row) => {
178
- const rowid = $xeTable.getRowid(row);
179
- const startValue = XEUtils.get(row, startField);
180
- const endValue = XEUtils.get(row, endField);
181
- if (startValue && endValue) {
182
- const startDate = parseStringDate(startValue);
183
- const endDate = parseStringDate(endValue);
184
- const oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / 86400000);
185
- const oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / 86400000) + 1;
186
- ctMaps[rowid] = {
187
- row,
188
- rowid,
189
- oLeftSize,
190
- oWidthSize
191
- };
192
- }
265
+ };
266
+ const minCol = colMaps[minSType];
267
+ if (minScale.level < 19) {
268
+ handleData('year', colMaps, minCol);
269
+ }
270
+ if (minScale.level < 17) {
271
+ handleData('quarter', colMaps, minCol);
272
+ }
273
+ if (minScale.level < 14) {
274
+ handleData('month', colMaps, minCol);
275
+ }
276
+ if (minScale.level < 13) {
277
+ handleData('week', colMaps, minCol);
278
+ }
279
+ if (minScale.level < 11) {
280
+ handleData('day', colMaps, minCol);
281
+ }
282
+ if (minScale.level < 12) {
283
+ handleData('date', colMaps, minCol);
284
+ }
285
+ if (minScale.level < 7) {
286
+ handleData('hour', colMaps, minCol);
287
+ }
288
+ if (minScale.level < 5) {
289
+ handleData('minute', colMaps, minCol);
290
+ }
291
+ fullCols.push(minCol);
292
+ }
293
+ taskScaleList.forEach(scaleItem => {
294
+ if (scaleItem.type === minSType) {
295
+ groupCols.push({
296
+ scaleItem,
297
+ columns: fullCols
298
+ });
299
+ return;
300
+ }
301
+ const list = renderListMaps[scaleItem.type] || [];
302
+ if (list) {
303
+ list.forEach(item => {
304
+ item.childCount = item.children ? item.children.length : 0;
305
+ item.children = undefined;
306
+ });
307
+ }
308
+ groupCols.push({
309
+ scaleItem,
310
+ columns: list
311
+ });
312
+ });
313
+ const $xeTable = internalData.xeTable;
314
+ if ($xeTable) {
315
+ const startField = computeStartField.value;
316
+ const endField = computeEndField.value;
317
+ const { computeTreeOpts } = $xeTable.getComputeMaps();
318
+ const tableInternalData = $xeTable.internalData;
319
+ const { afterFullData, afterTreeFullData } = tableInternalData;
320
+ const treeOpts = computeTreeOpts.value;
321
+ const { transform } = treeOpts;
322
+ const childrenField = treeOpts.children || treeOpts.childrenField;
323
+ const ctMaps = {};
324
+ const handleParseRender = (row) => {
325
+ const rowid = $xeTable.getRowid(row);
326
+ const startValue = XEUtils.get(row, startField);
327
+ const endValue = XEUtils.get(row, endField);
328
+ if (startValue && endValue) {
329
+ const startDate = parseStringDate(startValue);
330
+ const endDate = parseStringDate(endValue);
331
+ const oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / gapTime);
332
+ const oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / gapTime) + 1;
333
+ ctMaps[rowid] = {
334
+ row,
335
+ rowid,
336
+ oLeftSize,
337
+ oWidthSize
193
338
  };
194
- if (treeConfig) {
195
- XEUtils.eachTree(afterTreeFullData, handleParseRender, { children: transform ? treeOpts.mapChildrenField : childrenField });
196
- }
197
- else {
198
- afterFullData.forEach(handleParseRender);
199
- }
200
- internalData.chartMaps = ctMaps;
201
339
  }
340
+ };
341
+ if (treeConfig) {
342
+ XEUtils.eachTree(afterTreeFullData, handleParseRender, { children: transform ? treeOpts.mapChildrenField : childrenField });
343
+ }
344
+ else {
345
+ afterFullData.forEach(handleParseRender);
202
346
  }
203
- break;
347
+ internalData.chartMaps = ctMaps;
204
348
  }
205
349
  }
206
350
  reactData.tableColumn = fullCols;
@@ -759,11 +903,10 @@ export default defineVxeComponent({
759
903
  };
760
904
  const renderVN = () => {
761
905
  const { overflowX, overflowY, scrollXLoad, scrollYLoad } = reactData;
762
- const taskViewOpts = computeTaskViewOpts.value;
763
906
  const scrollbarXToTop = computeScrollbarXToTop.value;
764
907
  return h('div', {
765
908
  ref: refElem,
766
- class: ['vxe-gantt-view', `mode--${taskViewOpts.mode || 'day'}`, {
909
+ class: ['vxe-gantt-view', {
767
910
  'is--scroll-y': overflowY,
768
911
  'is--scroll-x': overflowX,
769
912
  'is--virtual-x': scrollXLoad,
@@ -20,9 +20,23 @@ function createInternalData() {
20
20
  resizeTableWidth: 0
21
21
  };
22
22
  }
23
+ const viewTypeLevelMaps = {
24
+ year: 19,
25
+ quarter: 17,
26
+ month: 15,
27
+ week: 13,
28
+ day: 11,
29
+ date: 9,
30
+ hour: 7,
31
+ minute: 5,
32
+ second: 3
33
+ };
34
+ function getViewTypeLevel(type) {
35
+ return viewTypeLevelMaps[type || 'date'] || viewTypeLevelMaps.date;
36
+ }
23
37
  export default defineVxeComponent({
24
38
  name: 'VxeGantt',
25
- props: Object.assign(Object.assign({}, tableProps), { columns: Array, pagerConfig: Object, proxyConfig: Object, toolbarConfig: Object, formConfig: Object, zoomConfig: Object, layouts: Array, taskConfig: Object, taskViewConfig: Object, taskBarConfig: Object, taskSplitConfig: Object, size: {
39
+ props: Object.assign(Object.assign({}, tableProps), { columns: Array, pagerConfig: Object, proxyConfig: Object, toolbarConfig: Object, formConfig: Object, zoomConfig: Object, layouts: Array, taskConfig: Object, taskViewScaleConfs: Object, taskViewConfig: Object, taskBarConfig: Object, taskSplitConfig: Object, size: {
26
40
  type: String,
27
41
  default: () => getConfig().gantt.size || getConfig().size
28
42
  } }),
@@ -52,7 +66,8 @@ export default defineVxeComponent({
52
66
  currentPage: 1
53
67
  },
54
68
  showLeftView: true,
55
- showRightView: true
69
+ showRightView: true,
70
+ taskScaleList: []
56
71
  });
57
72
  const internalData = createInternalData();
58
73
  const refElem = ref();
@@ -118,6 +133,9 @@ export default defineVxeComponent({
118
133
  const computeTaskOpts = computed(() => {
119
134
  return Object.assign({}, getConfig().gantt.taskConfig, props.taskConfig);
120
135
  });
136
+ const computeTaskViewScaleMapsOpts = computed(() => {
137
+ return XEUtils.merge({}, getConfig().gantt.taskViewScaleConfs, props.taskViewScaleConfs);
138
+ });
121
139
  const computeTaskViewOpts = computed(() => {
122
140
  return Object.assign({}, getConfig().gantt.taskViewConfig, props.taskViewConfig);
123
141
  });
@@ -127,6 +145,11 @@ export default defineVxeComponent({
127
145
  const computeTaskSplitOpts = computed(() => {
128
146
  return Object.assign({}, getConfig().gantt.taskSplitConfig, props.taskSplitConfig);
129
147
  });
148
+ const computeTaskScaleConfs = computed(() => {
149
+ const taskViewOpts = computeTaskViewOpts.value;
150
+ const { scales } = taskViewOpts;
151
+ return scales;
152
+ });
130
153
  const computeTitleField = computed(() => {
131
154
  const taskOpts = computeTaskOpts.value;
132
155
  return taskOpts.titleField || 'title';
@@ -321,9 +344,11 @@ export default defineVxeComponent({
321
344
  computeToolbarOpts,
322
345
  computeZoomOpts,
323
346
  computeTaskOpts,
347
+ computeTaskViewScaleMapsOpts,
324
348
  computeTaskViewOpts,
325
349
  computeTaskBarOpts,
326
350
  computeTaskSplitOpts,
351
+ computeTaskScaleConfs,
327
352
  computeTitleField,
328
353
  computeStartField,
329
354
  computeEndField,
@@ -341,6 +366,34 @@ export default defineVxeComponent({
341
366
  getRefMaps: () => refMaps,
342
367
  getComputeMaps: () => computeMaps
343
368
  };
369
+ const handleTaskScaleConfig = () => {
370
+ const taskScaleConfs = computeTaskScaleConfs.value;
371
+ const taskViewScaleMapsOpts = computeTaskViewScaleMapsOpts.value;
372
+ const scaleConfs = [];
373
+ if (taskScaleConfs) {
374
+ const keyMaps = {};
375
+ taskScaleConfs.forEach(conf => {
376
+ const sConf = !conf || XEUtils.isString(conf) ? { type: conf } : conf;
377
+ const { type } = sConf;
378
+ if (!type || !viewTypeLevelMaps[type]) {
379
+ errLog('vxe.error.errProp', [`type=${type}`, XEUtils.keys(viewTypeLevelMaps).join(',')]);
380
+ return;
381
+ }
382
+ if (keyMaps[type]) {
383
+ errLog('vxe.error.repeatProp', ['type', type]);
384
+ return;
385
+ }
386
+ keyMaps[type] = true;
387
+ scaleConfs.push(Object.assign({}, type ? taskViewScaleMapsOpts[type] || {} : {}, sConf, {
388
+ level: getViewTypeLevel(type)
389
+ }));
390
+ });
391
+ }
392
+ if (!scaleConfs.length) {
393
+ scaleConfs.push({ type: 'month', level: viewTypeLevelMaps.month }, { type: 'date', level: viewTypeLevelMaps.date });
394
+ }
395
+ reactData.taskScaleList = XEUtils.orderBy(scaleConfs, { field: 'level', order: 'desc' });
396
+ };
344
397
  const initToolbar = () => {
345
398
  const toolbarOpts = computeToolbarOpts.value;
346
399
  if (props.toolbarConfig && isEnableConf(toolbarOpts)) {
@@ -1824,6 +1877,9 @@ export default defineVxeComponent({
1824
1877
  watch(() => props.proxyConfig, () => {
1825
1878
  initProxy();
1826
1879
  });
1880
+ watch(computeTaskScaleConfs, () => {
1881
+ handleTaskScaleConfig();
1882
+ });
1827
1883
  hooks.forEach((options) => {
1828
1884
  const { setupGantt } = options;
1829
1885
  if (setupGantt) {
@@ -1833,6 +1889,7 @@ export default defineVxeComponent({
1833
1889
  }
1834
1890
  }
1835
1891
  });
1892
+ handleTaskScaleConfig();
1836
1893
  initPages();
1837
1894
  onMounted(() => {
1838
1895
  nextTick(() => {
@@ -7,6 +7,12 @@ export function getRefElem(refEl) {
7
7
  }
8
8
  return null;
9
9
  }
10
+ export function getCalcHeight(height) {
11
+ if (height === 'unset') {
12
+ return 0;
13
+ }
14
+ return height || 0;
15
+ }
10
16
  export function getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) {
11
17
  return rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
12
18
  }
package/es/style.css CHANGED
@@ -1 +1 @@
1
- :root{--vxe-ui-gantt-view-default-cell-width:40px;--vxe-ui-gantt-view-chart-bar-height:1.6em;--vxe-ui-gantt-view-split-bar-width:10px;--vxe-ui-gantt-view-split-bar-height:6.8em;--vxe-ui-gantt-view-table-default-width:30%;--vxe-ui-gantt-view-task-bar-border-radius:calc(var(--vxe-ui-gantt-view-split-bar-height)/2);--vxe-ui-gantt-view-task-bar-background-color:var(--vxe-ui-font-primary-lighten-color);--vxe-ui-gantt-view-task-bar-completed-background-color:var(--vxe-ui-font-primary-color)}[data-vxe-ui-theme=light]{--vxe-ui-gantt-view-handle-background-color:#8b8b8b;--vxe-ui-gantt-view-split-bar-background-color:#e2e2e3}[data-vxe-ui-theme=dark]{--vxe-ui-gantt-view-handle-background-color:#9f9f9f;--vxe-ui-gantt-view-split-bar-background-color:#444}.vxe-gantt-view--chart-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar,.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,.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%);color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color);overflow:hidden;pointer-events:all}.vxe-gantt-view--chart-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar:hover:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.1);pointer-events:none}.vxe-gantt-view--chart-progress{flex-shrink:0;width:0;height:100%;text-align:left;background-color:var(--vxe-ui-gantt-view-task-bar-completed-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--chart-content{position:absolute;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em;padding:0 .6em}.vxe-gantt-view--chart-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--chart-row.row--drag-origin{opacity:.3}.vxe-gantt{position:relative;overflow:auto;display:flex;flex-direction:column}.vxe-gantt.is--loading:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:var(--vxe-ui-loading-background-color)}.vxe-gantt.is--loading>.vxe-gantt-view .vxe-loading{background-color:transparent}.vxe-gantt.is--maximize{position:fixed;top:0;left:0;width:100%;height:100%;padding:.5em 1em;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt.is--split-drag{cursor:col-resize}.vxe-gantt.is--split-drag .vxe-gantt--table-wrapper:after,.vxe-gantt.is--split-drag .vxe-gantt--view-wrapper:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt .vxe-gantt--bottom-wrapper,.vxe-gantt .vxe-gantt--form-wrapper,.vxe-gantt .vxe-gantt--top-wrapper{position:relative}.vxe-gantt .vxe-gantt--gantt-container{position:relative;display:flex;flex-direction:row}.vxe-gantt .vxe-gantt--left-wrapper,.vxe-gantt .vxe-gantt--right-wrapper{flex-shrink:0;overflow:auto;outline:0}.vxe-gantt .vxe-gantt--table-wrapper,.vxe-gantt .vxe-gantt--view-wrapper{display:none;position:relative;flex-grow:1;overflow:hidden}.vxe-gantt .vxe-gantt--view-split-bar{flex-shrink:0;width:var(--vxe-ui-gantt-view-split-bar-width);background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt.show--left .vxe-gantt--table-wrapper{display:block}.vxe-gantt.show--left.show--right .vxe-gantt--table-wrapper{flex-grow:unset;flex-shrink:0;width:var(--vxe-ui-gantt-view-table-default-width)}.vxe-gantt.show--right .vxe-gantt--view-wrapper{display:block}.vxe-gantt--layout-body-wrapper{display:flex;flex-direction:row;overflow:auto;flex-grow:1}.vxe-gantt--layout-body-content-wrapper{flex-grow:1;overflow:hidden}.vxe-gantt--layout-aside-left-wrapper,.vxe-gantt--layout-footer-wrapper,.vxe-gantt--layout-header-wrapper{flex-shrink:0;overflow:auto}.vxe-gantt--border-line{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none;border:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--full .vxe-gantt-view--body-column,.vxe-gantt.border--full .vxe-gantt-view--footer-column,.vxe-gantt.border--full .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color)),linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:var(--vxe-ui-table-border-width) 100%,100% var(--vxe-ui-table-border-width);background-position:100% 0,100% 100%}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:0;border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner:before{border-bottom-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-wrapper:after{content:"";position:absolute;left:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after{top:0;border-bottom:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after{bottom:0;height:calc(100% + var(--vxe-ui-table-border-width));border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-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{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-top-corner:before{width:calc(100% + 1px);left:-1px}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-wrapper:after,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-wrapper:after{content:"";position:absolute;top:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sy-pos--left .vxe-gantt-view--scroll-y-wrapper:after,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-wrapper:after{left:0;border-right:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-wrapper:after,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-wrapper:after{right:0;width:calc(100% + var(--vxe-ui-table-border-width));border-left:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--body-column,.vxe-gantt.border--default .vxe-gantt-view--footer-column,.vxe-gantt.border--default .vxe-gantt-view--header-column,.vxe-gantt.border--inner .vxe-gantt-view--body-column,.vxe-gantt.border--inner .vxe-gantt-view--footer-column,.vxe-gantt.border--inner .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:100% var(--vxe-ui-table-border-width);background-position:100% 100%}.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;font-size:.5em;height:var(--vxe-ui-gantt-view-split-bar-height);width:var(--vxe-ui-gantt-view-split-bar-width);color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-gantt-view-handle-background-color);border:1px solid var(--vxe-ui-input-border-color);pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s ease-in-out}.vxe-gantt--view-split-bar-left-btn:hover,.vxe-gantt--view-split-bar-right-btn:hover{background-color:var(--vxe-ui-font-primary-lighten-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index: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--layout-wrapper>.vxe-gantt-view--scroll-y-virtual,.vxe-gantt.is--loading>.vxe-gantt-view--scroll-x-virtual{visibility:hidden}.vxe-gantt .vxe-gantt-view--scroll-x-virtual{height:0}.vxe-gantt .vxe-gantt-view--scroll-y-virtual{width:0}.vxe-gantt .vxe-gantt-view--scroll-x-virtual,.vxe-gantt .vxe-gantt-view--scroll-y-virtual{visibility:hidden;position:relative;flex-shrink:0;z-index:7}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{width:100%;left:0;bottom:0}.vxe-gantt .vxe-gantt-view--scroll-x-handle{overflow-y:hidden;overflow-x:scroll;height:18px}.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{height:100%}.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{width:100%;height:100%;right:0;top:0}.vxe-gantt .vxe-gantt-view--scroll-y-handle{overflow-y:scroll;overflow-x:hidden;width:18px;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-space{height:1px}.vxe-gantt .vxe-gantt-view--scroll-y-space{width:1px}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{display:none;position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{bottom:0;width:0;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner:before,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:var(--vxe-ui-table-border-width);border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner{left:0}.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{right:0}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner{right:1px}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner:before{border-right:0}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner{bottom:1px}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner:before{border-bottom:0}.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{top:0;right:0;width:100%;height:0}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner{margin-top:-1px}.vxe-gantt-view--layout-wrapper{display:flex;flex-direction:row;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt-view--viewport-wrapper{position:relative;overflow:hidden;flex-grow:1}.vxe-gantt-view--render-vars{width:0;height:0;overflow:hidden}.vxe-gantt-view--column-info{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view{flex-grow:1;overflow:hidden}.vxe-gantt-view .vxe-body--x-space{width:100%;height:1px;margin-bottom:-1px}.vxe-gantt-view .vxe-body--y-space{width:0;float:left}.vxe-gantt-view--body-table,.vxe-gantt-view--header-table{border:0;border-spacing:0;border-collapse:separate;table-layout:fixed}.vxe-gantt-view--body-table col,.vxe-gantt-view--header-table col{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt-view--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--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
+ :root{--vxe-ui-gantt-view-default-cell-width:2.2em;--vxe-ui-gantt-view-chart-bar-height:1.6em;--vxe-ui-gantt-view-split-bar-width:10px;--vxe-ui-gantt-view-split-bar-height:6.8em;--vxe-ui-gantt-view-table-default-width:30%;--vxe-ui-gantt-view-task-bar-border-radius:calc(var(--vxe-ui-gantt-view-split-bar-height)/2);--vxe-ui-gantt-view-task-bar-background-color:var(--vxe-ui-font-primary-lighten-color);--vxe-ui-gantt-view-task-bar-completed-background-color:var(--vxe-ui-font-primary-color)}[data-vxe-ui-theme=light]{--vxe-ui-gantt-view-handle-background-color:#8b8b8b;--vxe-ui-gantt-view-split-bar-background-color:#e2e2e3}[data-vxe-ui-theme=dark]{--vxe-ui-gantt-view-handle-background-color:#9f9f9f;--vxe-ui-gantt-view-split-bar-background-color:#444}.vxe-gantt-view--chart-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar,.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,.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%);color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color);overflow:hidden;pointer-events:all}.vxe-gantt-view--chart-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar:hover:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.1);pointer-events:none}.vxe-gantt-view--chart-progress{flex-shrink:0;width:0;height:100%;text-align:left;background-color:var(--vxe-ui-gantt-view-task-bar-completed-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--chart-content{position:absolute;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em;padding:0 .6em}.vxe-gantt-view--chart-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--chart-row.row--drag-origin{opacity:.3}.vxe-gantt{position:relative;overflow:auto;display:flex;flex-direction:column}.vxe-gantt.is--loading:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:var(--vxe-ui-loading-background-color)}.vxe-gantt.is--loading>.vxe-gantt-view .vxe-loading{background-color:transparent}.vxe-gantt.is--maximize{position:fixed;top:0;left:0;width:100%;height:100%;padding:.5em 1em;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt.is--split-drag{cursor:col-resize}.vxe-gantt.is--split-drag .vxe-gantt--table-wrapper:after,.vxe-gantt.is--split-drag .vxe-gantt--view-wrapper:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt .vxe-gantt--bottom-wrapper,.vxe-gantt .vxe-gantt--form-wrapper,.vxe-gantt .vxe-gantt--top-wrapper{position:relative}.vxe-gantt .vxe-gantt--gantt-container{position:relative;display:flex;flex-direction:row}.vxe-gantt .vxe-gantt--left-wrapper,.vxe-gantt .vxe-gantt--right-wrapper{flex-shrink:0;overflow:auto;outline:0}.vxe-gantt .vxe-gantt--table-wrapper,.vxe-gantt .vxe-gantt--view-wrapper{display:none;position:relative;flex-grow:1;overflow:hidden}.vxe-gantt .vxe-gantt--view-split-bar{flex-shrink:0;width:var(--vxe-ui-gantt-view-split-bar-width);background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt.show--left .vxe-gantt--table-wrapper{display:block}.vxe-gantt.show--left.show--right .vxe-gantt--table-wrapper{flex-grow:unset;flex-shrink:0;width:var(--vxe-ui-gantt-view-table-default-width)}.vxe-gantt.show--right .vxe-gantt--view-wrapper{display:block}.vxe-gantt--layout-body-wrapper{display:flex;flex-direction:row;overflow:auto;flex-grow:1}.vxe-gantt--layout-body-content-wrapper{flex-grow:1;overflow:hidden}.vxe-gantt--layout-aside-left-wrapper,.vxe-gantt--layout-footer-wrapper,.vxe-gantt--layout-header-wrapper{flex-shrink:0;overflow:auto}.vxe-gantt--border-line{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none;border:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--full .vxe-gantt-view--body-column,.vxe-gantt.border--full .vxe-gantt-view--footer-column,.vxe-gantt.border--full .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color)),linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:var(--vxe-ui-table-border-width) 100%,100% var(--vxe-ui-table-border-width);background-position:100% 0,100% 100%}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:0;border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner:before{border-bottom-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-wrapper:after{content:"";position:absolute;left:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-wrapper:after{top:0;border-bottom:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-wrapper:after{bottom:0;height:calc(100% + var(--vxe-ui-table-border-width));border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-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{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-top-corner:before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner:before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-top-corner:before{width:calc(100% + 1px);left:-1px}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-wrapper:after,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-wrapper:after{content:"";position:absolute;top:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sy-pos--left .vxe-gantt-view--scroll-y-wrapper:after,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-wrapper:after{left:0;border-right:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-wrapper:after,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-wrapper:after{right:0;width:calc(100% + var(--vxe-ui-table-border-width));border-left:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--body-column,.vxe-gantt.border--default .vxe-gantt-view--footer-column,.vxe-gantt.border--default .vxe-gantt-view--header-column,.vxe-gantt.border--inner .vxe-gantt-view--body-column,.vxe-gantt.border--inner .vxe-gantt-view--footer-column,.vxe-gantt.border--inner .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:100% var(--vxe-ui-table-border-width);background-position:100% 100%}.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;font-size:.5em;height:var(--vxe-ui-gantt-view-split-bar-height);width:var(--vxe-ui-gantt-view-split-bar-width);color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-gantt-view-handle-background-color);border:1px solid var(--vxe-ui-input-border-color);pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s ease-in-out}.vxe-gantt--view-split-bar-left-btn:hover,.vxe-gantt--view-split-bar-right-btn:hover{background-color:var(--vxe-ui-font-primary-lighten-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index: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--layout-wrapper>.vxe-gantt-view--scroll-y-virtual,.vxe-gantt.is--loading>.vxe-gantt-view--scroll-x-virtual{visibility:hidden}.vxe-gantt .vxe-gantt-view--scroll-x-virtual{height:0}.vxe-gantt .vxe-gantt-view--scroll-y-virtual{width:0}.vxe-gantt .vxe-gantt-view--scroll-x-virtual,.vxe-gantt .vxe-gantt-view--scroll-y-virtual{visibility:hidden;position:relative;flex-shrink:0;z-index:7}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{width:100%;left:0;bottom:0}.vxe-gantt .vxe-gantt-view--scroll-x-handle{overflow-y:hidden;overflow-x:scroll;height:18px}.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{height:100%}.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{width:100%;height:100%;right:0;top:0}.vxe-gantt .vxe-gantt-view--scroll-y-handle{overflow-y:scroll;overflow-x:hidden;width:18px;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-space{height:1px}.vxe-gantt .vxe-gantt-view--scroll-y-space{width:1px}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{display:none;position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{bottom:0;width:0;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner:before,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:var(--vxe-ui-table-border-width);border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner{left:0}.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{right:0}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner{right:1px}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner:before{border-right:0}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner{bottom:1px}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner:before{border-bottom:0}.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{top:0;right:0;width:100%;height:0}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner{margin-top:-1px}.vxe-gantt-view--layout-wrapper{display:flex;flex-direction:row;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt-view--viewport-wrapper{position:relative;overflow:hidden;flex-grow:1}.vxe-gantt-view--render-vars{width:0;height:0;overflow:hidden}.vxe-gantt-view--column-info{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view{flex-grow:1;overflow:hidden}.vxe-gantt-view .vxe-body--x-space{width:100%;height:1px;margin-bottom:-1px}.vxe-gantt-view .vxe-body--y-space{width:0;float:left}.vxe-gantt-view--body-table,.vxe-gantt-view--header-table{border:0;border-spacing:0;border-collapse:separate;table-layout:fixed}.vxe-gantt-view--body-table col,.vxe-gantt-view--header-table col{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt-view--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--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)}