vxe-gantt
Version:
A vue based gantt component
52 lines (42 loc) • 1.65 kB
text/typescript
import { h, inject, ref, Ref, onMounted, onUnmounted } from 'vue'
import { defineVxeComponent } from '../../ui/src/comp'
import type { VxeGanttConstructor, VxeGanttPrivateMethods, VxeGanttViewConstructor, VxeGanttViewPrivateMethods } from '../../../types'
const sourceType = 'gantt'
const viewType = 'footer'
export default defineVxeComponent({
name: 'VxeGanttViewFooter',
setup () {
const $xeGantt = inject('$xeGantt', {} as (VxeGanttConstructor & VxeGanttPrivateMethods))
const $xeGanttView = inject('$xeGanttView', {} as VxeGanttViewConstructor & VxeGanttViewPrivateMethods)
const { internalData } = $xeGanttView
const refElem = ref() as Ref<HTMLDivElement>
const refHeaderScroll = ref() as Ref<HTMLDivElement>
const renderVN = () => {
return h('div', {
ref: refElem,
class: 'vxe-gantt-view--footer-wrapper',
onContextmenu (evnt) {
$xeGantt.handleTaskFooterContextmenuEvent(evnt, { source: sourceType, type: viewType, $rowIndex: -1 })
}
}, [
h('div', {
ref: refHeaderScroll,
class: 'vxe-gantt-view--footer-inner-wrapper'
})
])
}
onMounted(() => {
const { elemStore } = internalData
const prefix = 'main-footer-'
elemStore[`${prefix}wrapper`] = refElem
elemStore[`${prefix}scroll`] = refHeaderScroll
})
onUnmounted(() => {
const { elemStore } = internalData
const prefix = 'main-footer-'
elemStore[`${prefix}wrapper`] = null
elemStore[`${prefix}scroll`] = null
})
return renderVN
}
})