将原来的写法改为使用 render 函数 为下一步做准备
Former-commit-id: ff3cb51a95bd2f734a72192c611f476e68a8e311 [formerly 31eb3f274c17348e3130fed031505824f4b83a46] [formerly ff3cb51a95bd2f734a72192c611f476e68a8e311 [formerly 31eb3f274c17348e3130fed031505824f4b83a46] [formerly ff3cb51a95bd2f734a72192c611f476e68a8e311 [formerly 31eb3f274c17348e3130fed031505824f4b83a46] [formerly 31eb3f274c17348e3130fed031505824f4b83a46 [formerly c5ec9f17b9f317e537af2b2e1693d58666822286 [formerly 6753d06d2b45fb0d34ea6c78e4a90355538e8508]]]]] Former-commit-id: 75b2ae7b2598023f4c97d3227d5b0ff34baadbb5 Former-commit-id: 460557870e117d374b32b3ce591abf3ed3685e85 Former-commit-id: f2b7b4ab565944fb350fda884963b273e50b9422 [formerly e696efa18d8be165fb36249b355a20f3cbd4b98c] Former-commit-id: 7c248901bb448b04ea7586a388a5b1f3f280be2e Former-commit-id: f58fc63e6d8727d711e0155787015cbf40e79533 Former-commit-id: 1a1d606440a65f5dc2c017aeccc977fbbbc23678 Former-commit-id: dd1389daaff93482164ed7fa200db41342b28f7f Former-commit-id: d0cb0399b70dd2233a1bd27ffbe25f9f696e8328
This commit is contained in:
@@ -1,24 +1,3 @@
|
|||||||
<template>
|
|
||||||
<div class="d2-theme-header-menu" ref="page" :class="{'is-scrollable': isScroll}" flex="cross:center">
|
|
||||||
<div class="d2-theme-header-menu__content" ref="content" flex-box="1" flex>
|
|
||||||
<div class="d2-theme-header-menu__scroll" ref="scroll" flex-box="0" :style="'transform: translateX(' + currentTranslateX + 'px);'">
|
|
||||||
<el-menu mode="horizontal" :default-active="active" @select="handleMenuSelect">
|
|
||||||
<template v-for="(menu, menuIndex) in header">
|
|
||||||
<d2-layout-header-aside-menu-item v-if="menu.children === undefined" :menu="menu" :key="menuIndex"/>
|
|
||||||
<d2-layout-header-aside-menu-sub v-else :menu="menu" :key="menuIndex"/>
|
|
||||||
</template>
|
|
||||||
</el-menu>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div v-if="isScroll" class="d2-theme-header-menu__prev" flex-box="0" @click="scroll('left')" flex="main:center cross:center">
|
|
||||||
<i class="el-icon-arrow-left"></i>
|
|
||||||
</div>
|
|
||||||
<div v-if="isScroll" class="d2-theme-header-menu__next" flex-box="0" @click="scroll('right')" flex="cross:center">
|
|
||||||
<i class="el-icon-arrow-right"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { throttle } from 'lodash'
|
import { throttle } from 'lodash'
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
@@ -30,6 +9,70 @@ export default {
|
|||||||
mixins: [
|
mixins: [
|
||||||
menuMixin
|
menuMixin
|
||||||
],
|
],
|
||||||
|
render (createElement) {
|
||||||
|
return createElement('div', {
|
||||||
|
attrs: { flex: 'cross:center' },
|
||||||
|
class: {
|
||||||
|
'd2-theme-header-menu': true,
|
||||||
|
'is-scrollable': this.isScroll
|
||||||
|
},
|
||||||
|
ref: 'page'
|
||||||
|
}, [
|
||||||
|
createElement('div', {
|
||||||
|
attrs: {
|
||||||
|
class: 'd2-theme-header-menu__content',
|
||||||
|
flex: '',
|
||||||
|
'flex-box': '1'
|
||||||
|
},
|
||||||
|
ref: 'content'
|
||||||
|
}, [
|
||||||
|
createElement('div', {
|
||||||
|
attrs: {
|
||||||
|
class: 'd2-theme-header-menu__scroll',
|
||||||
|
'flex-box': '0'
|
||||||
|
},
|
||||||
|
style: { transform: `translateX(${this.currentTranslateX}px)` },
|
||||||
|
ref: 'scroll'
|
||||||
|
}, [
|
||||||
|
createElement('el-menu', {
|
||||||
|
props: {
|
||||||
|
mode: 'horizontal',
|
||||||
|
defaultActive: this.active
|
||||||
|
},
|
||||||
|
on: { select: this.handleMenuSelect }
|
||||||
|
}, this.header.map(menu => {
|
||||||
|
if (menu.children === undefined) {
|
||||||
|
return createElement('d2-layout-header-aside-menu-item', { props: { menu } })
|
||||||
|
} else {
|
||||||
|
return createElement('d2-layout-header-aside-menu-sub', { props: { menu } })
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
...this.isScroll ? [
|
||||||
|
createElement('div', {
|
||||||
|
attrs: {
|
||||||
|
class: 'd2-theme-header-menu__prev',
|
||||||
|
flex: 'main:center cross:center',
|
||||||
|
'flex-box': '0'
|
||||||
|
},
|
||||||
|
on: { click: () => this.scroll('left') }
|
||||||
|
}, [
|
||||||
|
createElement('i', { attrs: { class: 'el-icon-arrow-left' } })
|
||||||
|
]),
|
||||||
|
createElement('div', {
|
||||||
|
attrs: {
|
||||||
|
class: 'd2-theme-header-menu__next',
|
||||||
|
flex: 'main:center cross:center',
|
||||||
|
'flex-box': '0'
|
||||||
|
},
|
||||||
|
on: { click: () => this.scroll('right') }
|
||||||
|
}, [
|
||||||
|
createElement('i', { attrs: { class: 'el-icon-arrow-right' } })
|
||||||
|
]),
|
||||||
|
] : []
|
||||||
|
])
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
'd2-layout-header-aside-menu-item': d2LayoutMainMenuItem,
|
'd2-layout-header-aside-menu-item': d2LayoutMainMenuItem,
|
||||||
'd2-layout-header-aside-menu-sub': d2LayoutMainMenuSub
|
'd2-layout-header-aside-menu-sub': d2LayoutMainMenuSub
|
||||||
|
|||||||
Reference in New Issue
Block a user