vxe-gantt 0.0.2 → 3.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -24
- package/es/components.js +3 -2
- package/es/gantt/src/gantt-body.js +137 -0
- package/es/gantt/src/gantt-chart.js +125 -0
- package/es/gantt/src/gantt-header.js +97 -0
- package/es/gantt/src/gantt-view.js +820 -0
- package/es/gantt/src/gantt.js +1897 -43
- package/es/gantt/src/util.js +9 -0
- package/es/gantt/style.css +624 -0
- package/es/gantt/style.min.css +1 -0
- package/es/index.esm.js +5 -2
- package/es/style.css +1 -0
- package/es/style.min.css +1 -0
- package/es/ui/index.js +55 -5
- package/es/ui/src/comp.js +1 -2
- package/es/ui/src/dom.js +44 -105
- package/es/ui/src/log.js +3 -2
- package/es/ui/src/utils.js +4 -3
- package/es/ui/src/vn.js +1 -32
- package/es/vxe-gantt/style.css +624 -0
- package/es/vxe-gantt/style.min.css +1 -0
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/components.js +20 -19
- package/lib/components.min.js +1 -1
- package/lib/gantt/index.js +3 -3
- package/lib/gantt/index.min.js +1 -1
- package/lib/gantt/src/gantt-body.js +140 -0
- package/lib/gantt/src/gantt-body.min.js +1 -0
- package/lib/gantt/src/gantt-chart.js +134 -0
- package/lib/gantt/src/gantt-chart.min.js +1 -0
- package/lib/gantt/src/gantt-header.js +97 -0
- package/lib/gantt/src/gantt-header.min.js +1 -0
- package/lib/gantt/src/gantt-view.js +808 -0
- package/lib/gantt/src/gantt-view.min.js +1 -0
- package/lib/gantt/src/gantt.js +2045 -48
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/src/util.js +16 -0
- package/lib/gantt/src/util.min.js +1 -0
- package/lib/gantt/style/style.css +624 -0
- package/lib/gantt/style/style.min.css +1 -0
- package/lib/index.common.js +12 -7
- package/lib/index.umd.js +11484 -235
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -0
- package/lib/style.min.css +1 -0
- package/lib/ui/index.js +54 -14
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/comp.js +3 -2
- package/lib/ui/src/comp.min.js +1 -1
- package/lib/ui/src/dom.js +78 -138
- package/lib/ui/src/dom.min.js +1 -1
- package/lib/ui/src/log.js +4 -3
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/utils.js +5 -4
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/ui/src/vn.js +1 -43
- package/lib/ui/src/vn.min.js +0 -1
- package/lib/vxe-gantt/index.js +4 -2
- package/lib/vxe-gantt/index.min.js +1 -1
- package/lib/vxe-gantt/style/style.css +624 -0
- package/lib/vxe-gantt/style/style.min.css +1 -0
- package/lib/vxe-ui/index.js +4 -2
- package/lib/vxe-ui/index.min.js +1 -1
- package/package.json +13 -13
- package/packages/components.ts +8 -5
- package/packages/gantt/index.ts +2 -2
- package/packages/gantt/src/gantt-body.ts +155 -0
- package/packages/gantt/src/gantt-chart.ts +143 -0
- package/packages/gantt/src/gantt-header.ts +109 -0
- package/packages/gantt/src/gantt-view.ts +908 -0
- package/packages/gantt/src/gantt.ts +2048 -46
- package/packages/gantt/src/util.ts +12 -0
- package/packages/index.ts +6 -2
- package/packages/ui/index.ts +56 -4
- package/packages/ui/src/comp.ts +2 -2
- package/packages/ui/src/dom.ts +53 -110
- package/packages/ui/src/log.ts +4 -2
- package/packages/ui/src/utils.ts +5 -3
- package/packages/ui/src/vn.ts +0 -37
- package/styles/components/gantt-module/all.scss +1 -0
- package/styles/components/gantt-module/gantt-chart.scss +65 -0
- package/styles/components/gantt.scss +591 -0
- package/styles/helpers/baseMixin.scss +96 -0
- package/styles/helpers/baseVar.scss +4 -0
- package/styles/helpers/placement.scss +39 -0
- package/styles/theme/base.scss +11 -0
- package/styles/theme/dark.scss +5 -0
- package/styles/theme/light.scss +5 -0
- package/types/all.d.ts +3 -3
- package/types/index.d.ts +2 -2
- package/README.en.md +0 -72
- package/README.ja-JP.md +0 -72
- package/README.zh-TW.md +0 -73
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { VxeTableDefines, VxeTablePropTypes } from 'vxe-table'
|
|
2
|
+
|
|
3
|
+
export function getRefElem (refEl: any) {
|
|
4
|
+
if (refEl) {
|
|
5
|
+
return (refEl.$el || refEl) as HTMLElement
|
|
6
|
+
}
|
|
7
|
+
return null
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function getCellRestHeight (rowRest: VxeTableDefines.RowCacheItem, cellOpts: VxeTablePropTypes.CellConfig, rowOpts: VxeTablePropTypes.RowConfig, defaultRowHeight: number) {
|
|
11
|
+
return rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight
|
|
12
|
+
}
|
package/packages/index.ts
CHANGED
package/packages/ui/index.ts
CHANGED
|
@@ -1,12 +1,64 @@
|
|
|
1
|
-
import { VxeUI
|
|
1
|
+
import { VxeUI } from '@vxe-ui/core'
|
|
2
|
+
|
|
3
|
+
const { setConfig, setIcon } = VxeUI
|
|
2
4
|
|
|
3
5
|
VxeUI.ganttVersion = process.env.VUE_APP_VXE_VERSION as string
|
|
4
6
|
|
|
5
7
|
setConfig({
|
|
6
|
-
gantt: {
|
|
8
|
+
gantt: {
|
|
9
|
+
// size: null,
|
|
10
|
+
// zoomConfig: {
|
|
11
|
+
// escRestore: true
|
|
12
|
+
// },
|
|
13
|
+
formConfig: {
|
|
14
|
+
enabled: true
|
|
15
|
+
},
|
|
16
|
+
pagerConfig: {
|
|
17
|
+
enabled: true
|
|
18
|
+
// perfect: false
|
|
19
|
+
},
|
|
20
|
+
toolbarConfig: {
|
|
21
|
+
enabled: true
|
|
22
|
+
// perfect: false
|
|
23
|
+
},
|
|
24
|
+
proxyConfig: {
|
|
25
|
+
enabled: true,
|
|
26
|
+
autoLoad: true,
|
|
27
|
+
showLoading: true,
|
|
28
|
+
showResponseMsg: true,
|
|
29
|
+
showActionMsg: true,
|
|
30
|
+
response: {
|
|
31
|
+
list: null,
|
|
32
|
+
result: 'result',
|
|
33
|
+
total: 'page.total',
|
|
34
|
+
message: 'message'
|
|
35
|
+
}
|
|
36
|
+
// beforeItem: null,
|
|
37
|
+
// beforeColumn: null,
|
|
38
|
+
// beforeQuery: null,
|
|
39
|
+
// afterQuery: null,
|
|
40
|
+
// beforeDelete: null,
|
|
41
|
+
// afterDelete: null,
|
|
42
|
+
// beforeSave: null,
|
|
43
|
+
// afterSave: null
|
|
44
|
+
},
|
|
45
|
+
taskSplitConfig: {
|
|
46
|
+
enabled: true,
|
|
47
|
+
resize: true,
|
|
48
|
+
showCollapseTableButton: true,
|
|
49
|
+
showCollapseTaskButton: true
|
|
50
|
+
}
|
|
51
|
+
}
|
|
7
52
|
})
|
|
8
53
|
|
|
9
|
-
|
|
54
|
+
const iconPrefix = 'vxe-icon-'
|
|
55
|
+
|
|
56
|
+
setIcon({
|
|
57
|
+
// gantt
|
|
58
|
+
GANTT_VIEW_LEFT_OPEN: iconPrefix + 'arrow-left',
|
|
59
|
+
GANTT_VIEW_LEFT_CLOSE: iconPrefix + 'arrow-right',
|
|
60
|
+
GANTT_VIEW_RIGHT_OPEN: iconPrefix + 'arrow-right',
|
|
61
|
+
GANTT_VIEW_RIGHT_CLOSE: iconPrefix + 'arrow-left'
|
|
62
|
+
})
|
|
10
63
|
|
|
11
|
-
export * from '@vxe-ui/core'
|
|
12
64
|
export default VxeUI
|
package/packages/ui/src/comp.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Vue from 'vue'
|
|
2
2
|
|
|
3
|
-
export const defineVxeComponent =
|
|
3
|
+
export const defineVxeComponent = ((options: any) => options) as typeof Vue.extend
|
package/packages/ui/src/dom.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils'
|
|
2
2
|
|
|
3
|
+
const reClsMap: { [key: string]: any } = {}
|
|
4
|
+
|
|
3
5
|
let tpImgEl: HTMLImageElement | undefined
|
|
4
6
|
|
|
5
7
|
export function initTpImg () {
|
|
@@ -17,7 +19,9 @@ export function getTpImg () {
|
|
|
17
19
|
return tpImgEl
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
export function getPropClass (property: any, params: any) {
|
|
23
|
+
return property ? XEUtils.isFunction(property) ? property(params) : property : ''
|
|
24
|
+
}
|
|
21
25
|
|
|
22
26
|
function getClsRE (cls: any) {
|
|
23
27
|
if (!reClsMap[cls]) {
|
|
@@ -71,13 +75,20 @@ export function hasControlKey (evnt: KeyboardEvent | MouseEvent | DragEvent) {
|
|
|
71
75
|
return evnt.ctrlKey || evnt.metaKey
|
|
72
76
|
}
|
|
73
77
|
|
|
74
|
-
export function toCssUnit (val?: number | string
|
|
78
|
+
export function toCssUnit (val?: number | string, unit = 'px') {
|
|
75
79
|
if (XEUtils.isNumber(val) || /^\d+$/.test(`${val}`)) {
|
|
76
80
|
return `${val}${unit}`
|
|
77
81
|
}
|
|
78
82
|
return `${val || ''}`
|
|
79
83
|
}
|
|
80
84
|
|
|
85
|
+
export function queryElement (elem: HTMLTableCellElement, selector: string) {
|
|
86
|
+
if (elem) {
|
|
87
|
+
return elem.querySelector<HTMLElement>(selector)
|
|
88
|
+
}
|
|
89
|
+
return null
|
|
90
|
+
}
|
|
91
|
+
|
|
81
92
|
export function getDomNode () {
|
|
82
93
|
const documentElement = document.documentElement
|
|
83
94
|
const bodyElem = document.body
|
|
@@ -89,6 +100,46 @@ export function getDomNode () {
|
|
|
89
100
|
}
|
|
90
101
|
}
|
|
91
102
|
|
|
103
|
+
export function getOffsetHeight (elem?: HTMLElement) {
|
|
104
|
+
return elem ? elem.offsetHeight : 0
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function getPaddingTopBottomSize (elem: HTMLElement) {
|
|
108
|
+
if (elem) {
|
|
109
|
+
const computedStyle = getComputedStyle(elem)
|
|
110
|
+
const paddingTop = XEUtils.toNumber(computedStyle.paddingTop)
|
|
111
|
+
const paddingBottom = XEUtils.toNumber(computedStyle.paddingBottom)
|
|
112
|
+
return paddingTop + paddingBottom
|
|
113
|
+
}
|
|
114
|
+
return 0
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export function setScrollTop (elem: HTMLElement | null | undefined, scrollTop: number) {
|
|
118
|
+
if (elem) {
|
|
119
|
+
elem.scrollTop = scrollTop
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function setScrollLeft (elem: HTMLElement | null | undefined, scrollLeft: number) {
|
|
124
|
+
if (elem) {
|
|
125
|
+
elem.scrollLeft = scrollLeft
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// export function setScrollLeftAndTop (elem: HTMLElement | null, scrollLeft: number, scrollTop: number) {
|
|
130
|
+
// if (elem) {
|
|
131
|
+
// elem.scrollLeft = scrollLeft
|
|
132
|
+
// elem.scrollTop = scrollTop
|
|
133
|
+
// }
|
|
134
|
+
// }
|
|
135
|
+
|
|
136
|
+
export function updateCellTitle (overflowElem: any, column: any) {
|
|
137
|
+
const content = column.type === 'html' ? overflowElem.innerText : overflowElem.textContent
|
|
138
|
+
if (overflowElem.getAttribute('title') !== content) {
|
|
139
|
+
overflowElem.setAttribute('title', content)
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
92
143
|
/**
|
|
93
144
|
* 检查触发源是否属于目标节点
|
|
94
145
|
*/
|
|
@@ -121,16 +172,6 @@ export function getAbsolutePos (elem: any) {
|
|
|
121
172
|
return { boundingTop, top: scrollTop + boundingTop, boundingLeft, left: scrollLeft + boundingLeft, visibleHeight, visibleWidth }
|
|
122
173
|
}
|
|
123
174
|
|
|
124
|
-
export function getPaddingTopBottomSize (elem: HTMLElement) {
|
|
125
|
-
if (elem) {
|
|
126
|
-
const computedStyle = getComputedStyle(elem)
|
|
127
|
-
const paddingTop = XEUtils.toNumber(computedStyle.paddingTop)
|
|
128
|
-
const paddingBottom = XEUtils.toNumber(computedStyle.paddingBottom)
|
|
129
|
-
return paddingTop + paddingBottom
|
|
130
|
-
}
|
|
131
|
-
return 0
|
|
132
|
-
}
|
|
133
|
-
|
|
134
175
|
const scrollIntoViewIfNeeded = 'scrollIntoViewIfNeeded'
|
|
135
176
|
const scrollIntoView = 'scrollIntoView'
|
|
136
177
|
|
|
@@ -153,101 +194,3 @@ export function triggerEvent (targetElem: Element, type: string) {
|
|
|
153
194
|
export function isNodeElement (elem: any): elem is HTMLElement {
|
|
154
195
|
return elem && elem.nodeType === 1
|
|
155
196
|
}
|
|
156
|
-
|
|
157
|
-
export function updatePanelPlacement (targetElem: HTMLElement | null | undefined, panelElem: HTMLElement | null | undefined, options: {
|
|
158
|
-
placement?: '' | 'top' | 'bottom' | null
|
|
159
|
-
teleportTo?: boolean
|
|
160
|
-
marginSize?: number
|
|
161
|
-
}) {
|
|
162
|
-
const { placement, teleportTo, marginSize } = Object.assign({ teleportTo: false, marginSize: 32 }, options)
|
|
163
|
-
let panelPlacement: 'top' | 'bottom' = 'bottom'
|
|
164
|
-
let top: number | '' = ''
|
|
165
|
-
let bottom: number | '' = ''
|
|
166
|
-
let left: number | '' = ''
|
|
167
|
-
const right: number | '' = ''
|
|
168
|
-
let minWidth: number | '' = ''
|
|
169
|
-
const stys: Record<string, string> = {}
|
|
170
|
-
if (panelElem && targetElem) {
|
|
171
|
-
const documentElement = document.documentElement
|
|
172
|
-
const bodyElem = document.body
|
|
173
|
-
const targetHeight = targetElem.offsetHeight
|
|
174
|
-
const panelHeight = panelElem.offsetHeight
|
|
175
|
-
const panelWidth = panelElem.offsetWidth
|
|
176
|
-
|
|
177
|
-
const panelRect = panelElem.getBoundingClientRect()
|
|
178
|
-
const targetRect = targetElem.getBoundingClientRect()
|
|
179
|
-
const visibleHeight = documentElement.clientHeight || bodyElem.clientHeight
|
|
180
|
-
const visibleWidth = documentElement.clientWidth || bodyElem.clientWidth
|
|
181
|
-
minWidth = targetElem.offsetWidth
|
|
182
|
-
if (teleportTo) {
|
|
183
|
-
left = targetRect.left
|
|
184
|
-
top = targetRect.top + targetHeight
|
|
185
|
-
if (placement === 'top') {
|
|
186
|
-
panelPlacement = 'top'
|
|
187
|
-
top = targetRect.top - panelHeight
|
|
188
|
-
} else if (!placement) {
|
|
189
|
-
// 如果下面不够放,则向上
|
|
190
|
-
if (top + panelHeight + marginSize > visibleHeight) {
|
|
191
|
-
panelPlacement = 'top'
|
|
192
|
-
top = targetRect.top - panelHeight
|
|
193
|
-
}
|
|
194
|
-
// 如果上面不够放,则向下(优先)
|
|
195
|
-
if (top < marginSize) {
|
|
196
|
-
panelPlacement = 'bottom'
|
|
197
|
-
top = targetRect.top + targetHeight
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
// 如果溢出右边
|
|
201
|
-
if (left + panelWidth + marginSize > visibleWidth) {
|
|
202
|
-
left -= left + panelWidth + marginSize - visibleWidth
|
|
203
|
-
}
|
|
204
|
-
// 如果溢出左边
|
|
205
|
-
if (left < marginSize) {
|
|
206
|
-
left = marginSize
|
|
207
|
-
}
|
|
208
|
-
} else {
|
|
209
|
-
if (placement === 'top') {
|
|
210
|
-
panelPlacement = 'top'
|
|
211
|
-
bottom = targetHeight
|
|
212
|
-
} else if (!placement) {
|
|
213
|
-
// 如果下面不够放,则向上
|
|
214
|
-
top = targetHeight
|
|
215
|
-
if (targetRect.top + targetRect.height + marginSize > visibleHeight) {
|
|
216
|
-
// 如果上面不够放,则向下(优先)
|
|
217
|
-
if (targetRect.top - targetHeight - panelHeight > marginSize) {
|
|
218
|
-
panelPlacement = 'top'
|
|
219
|
-
top = ''
|
|
220
|
-
bottom = targetHeight
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
// 是否超出右侧
|
|
225
|
-
if (panelRect.left + panelRect.width + marginSize > visibleWidth) {
|
|
226
|
-
left = -(panelRect.left + panelRect.width + marginSize - visibleWidth)
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
if (XEUtils.isNumber(top)) {
|
|
230
|
-
stys.top = toCssUnit(top)
|
|
231
|
-
}
|
|
232
|
-
if (XEUtils.isNumber(bottom)) {
|
|
233
|
-
stys.bottom = toCssUnit(bottom)
|
|
234
|
-
}
|
|
235
|
-
if (XEUtils.isNumber(left)) {
|
|
236
|
-
stys.left = toCssUnit(left)
|
|
237
|
-
}
|
|
238
|
-
if (XEUtils.isNumber(right)) {
|
|
239
|
-
stys.right = toCssUnit(right)
|
|
240
|
-
}
|
|
241
|
-
if (XEUtils.isNumber(minWidth)) {
|
|
242
|
-
stys.minWidth = toCssUnit(minWidth)
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
return {
|
|
246
|
-
top: top || 0,
|
|
247
|
-
bottom: bottom || 0,
|
|
248
|
-
left: left || 0,
|
|
249
|
-
right: right || 0,
|
|
250
|
-
style: stys,
|
|
251
|
-
placement: panelPlacement
|
|
252
|
-
}
|
|
253
|
-
}
|
package/packages/ui/src/log.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VxeUI } from '@vxe-ui/core'
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const { log } = VxeUI
|
|
4
|
+
|
|
5
|
+
const version = `gantt v${process.env.VUE_APP_VXE_VERSION}`
|
|
4
6
|
|
|
5
7
|
export const warnLog = log.create('warn', version)
|
|
6
8
|
export const errLog = log.create('error', version)
|
package/packages/ui/src/utils.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils'
|
|
2
|
-
import {
|
|
2
|
+
import { VxeUI } from '@vxe-ui/core'
|
|
3
3
|
import DomZIndex from 'dom-zindex'
|
|
4
4
|
|
|
5
|
+
const { getConfig } = VxeUI
|
|
6
|
+
|
|
5
7
|
export function isEnableConf (conf: any): boolean {
|
|
6
8
|
return conf && conf.enabled !== false
|
|
7
9
|
}
|
|
@@ -44,6 +46,6 @@ export function eqEmptyValue (cellValue: any) {
|
|
|
44
46
|
return cellValue === null || cellValue === undefined || cellValue === ''
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
export function
|
|
48
|
-
return
|
|
49
|
+
export function getStringValue (cellValue: any) {
|
|
50
|
+
return eqEmptyValue(cellValue) ? '' : cellValue
|
|
49
51
|
}
|
package/packages/ui/src/vn.ts
CHANGED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import XEUtils from 'xe-utils'
|
|
2
|
-
import { VxeComponentSlotType } from '@vxe-ui/core'
|
|
3
|
-
|
|
4
|
-
export function getOnName (type: string) {
|
|
5
|
-
return 'on' + type.substring(0, 1).toLocaleUpperCase() + type.substring(1)
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export function getModelEvent (name: string) {
|
|
9
|
-
switch (name) {
|
|
10
|
-
case 'input':
|
|
11
|
-
case 'textarea':
|
|
12
|
-
return 'input'
|
|
13
|
-
case 'select':
|
|
14
|
-
return 'change'
|
|
15
|
-
}
|
|
16
|
-
return 'update:modelValue'
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function getChangeEvent (name: string) {
|
|
20
|
-
switch (name) {
|
|
21
|
-
case 'input':
|
|
22
|
-
case 'textarea':
|
|
23
|
-
case 'VxeInput':
|
|
24
|
-
case 'VxeTextarea':
|
|
25
|
-
case '$input':// 已废弃
|
|
26
|
-
case '$textarea':// 已废弃
|
|
27
|
-
return 'input'
|
|
28
|
-
}
|
|
29
|
-
return 'change'
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export function getSlotVNs (vns: VxeComponentSlotType | VxeComponentSlotType[] | undefined) {
|
|
33
|
-
if (XEUtils.isArray(vns)) {
|
|
34
|
-
return vns
|
|
35
|
-
}
|
|
36
|
-
return vns ? [vns] : []
|
|
37
|
-
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@use './gantt-chart.scss'
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.vxe-gantt-view--chart-wrapper {
|
|
2
|
+
position: absolute;
|
|
3
|
+
top: 0;
|
|
4
|
+
left: 0;
|
|
5
|
+
pointer-events: none;
|
|
6
|
+
}
|
|
7
|
+
.vxe-gantt-view--chart-row {
|
|
8
|
+
position: relative;
|
|
9
|
+
&.is--round {
|
|
10
|
+
& > .vxe-gantt-view--chart-bar {
|
|
11
|
+
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
12
|
+
&:hover {
|
|
13
|
+
&::after {
|
|
14
|
+
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
& > .vxe-gantt-view--chart-progress {
|
|
18
|
+
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius) 0 0 var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
.vxe-gantt-view--chart-bar {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: row;
|
|
26
|
+
align-items: center;
|
|
27
|
+
position: absolute;
|
|
28
|
+
top: 50%;
|
|
29
|
+
left: 0;
|
|
30
|
+
color: #ffffff;
|
|
31
|
+
transform: translateY(-50%);
|
|
32
|
+
height: var(--vxe-ui-gantt-view-chart-bar-height);
|
|
33
|
+
background-color: var(--vxe-ui-gantt-view-task-bar-background-color);
|
|
34
|
+
pointer-events: all;
|
|
35
|
+
&:hover {
|
|
36
|
+
&::after {
|
|
37
|
+
content: "";
|
|
38
|
+
position: absolute;
|
|
39
|
+
top: 0;
|
|
40
|
+
left: 0;
|
|
41
|
+
width: 100%;
|
|
42
|
+
height: 100%;
|
|
43
|
+
background-color: rgba(0, 0, 0, 0.1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
.vxe-gantt-view--chart-progress {
|
|
48
|
+
flex-shrink: 0;
|
|
49
|
+
width: 0;
|
|
50
|
+
height: 100%;
|
|
51
|
+
text-align: left;
|
|
52
|
+
background-color: var(--vxe-ui-gantt-view-task-bar-completed-background-color);
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
text-overflow: ellipsis;
|
|
55
|
+
white-space: nowrap;
|
|
56
|
+
}
|
|
57
|
+
.vxe-gantt-view--chart-content {
|
|
58
|
+
position: absolute;
|
|
59
|
+
width: 100%;
|
|
60
|
+
overflow: hidden;
|
|
61
|
+
text-overflow: ellipsis;
|
|
62
|
+
white-space: nowrap;
|
|
63
|
+
font-size: 0.9em;
|
|
64
|
+
padding: 0 0.6em;
|
|
65
|
+
}
|