10 changed files with 22 additions and 146 deletions
@ -1,9 +1,9 @@ |
|||
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
|||
// import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
|
|||
|
|||
import BasicMenu from './src/BasicMenu.vue'; |
|||
|
|||
// export const BasicMenu = createAsyncComponent(() => import('./src/BasicMenu.vue'));
|
|||
|
|||
export const MenuTag = createAsyncComponent(() => import('./src/components/MenuItemTag.vue')); |
|||
// export const MenuTag = createAsyncComponent(() => import('./src/components/MenuItemTag.vue'));
|
|||
|
|||
export { BasicMenu }; |
|||
|
|||
@ -1,43 +0,0 @@ |
|||
<template> |
|||
<BasicArrow :expand="getIsOpen" bottom inset :class="getWrapperClass" /> |
|||
</template> |
|||
<script lang="ts"> |
|||
import { defineComponent, PropType, computed } from 'vue'; |
|||
import { useDesign } from '/@/hooks/web/useDesign'; |
|||
import { BasicArrow } from '/@/components/Basic'; |
|||
|
|||
import { propTypes } from '/@/utils/propTypes'; |
|||
export default defineComponent({ |
|||
name: 'BasicMenuItem', |
|||
components: { BasicArrow }, |
|||
props: { |
|||
key: propTypes.string, |
|||
openKeys: { |
|||
type: Array as PropType<string[]>, |
|||
default: [], |
|||
}, |
|||
collapsed: propTypes.bool, |
|||
}, |
|||
setup(props) { |
|||
const { prefixCls } = useDesign('basic-menu'); |
|||
|
|||
const getIsOpen = computed(() => { |
|||
return props.openKeys.includes(props.key); |
|||
}); |
|||
|
|||
const getWrapperClass = computed(() => { |
|||
return [ |
|||
`${prefixCls}__expand-icon`, |
|||
{ |
|||
[`${prefixCls}__expand-icon--collapsed`]: props.collapsed, |
|||
}, |
|||
]; |
|||
}); |
|||
return { |
|||
prefixCls, |
|||
getIsOpen, |
|||
getWrapperClass, |
|||
}; |
|||
}, |
|||
}); |
|||
</script> |
|||
@ -1,57 +0,0 @@ |
|||
<template> |
|||
<span :class="getTagClass" v-if="getShowTag">{{ getContent }}</span> |
|||
</template> |
|||
<script lang="ts"> |
|||
import { defineComponent, computed } from 'vue'; |
|||
|
|||
import { useDesign } from '/@/hooks/web/useDesign'; |
|||
import { contentProps } from '../props'; |
|||
|
|||
export default defineComponent({ |
|||
name: 'MenuItemTag', |
|||
props: contentProps, |
|||
setup(props) { |
|||
const { prefixCls } = useDesign('basic-menu-item-tag'); |
|||
|
|||
const getShowTag = computed(() => { |
|||
const { item, showTitle, isHorizontal } = props; |
|||
|
|||
if (!item || showTitle || isHorizontal) return false; |
|||
|
|||
const { tag } = item; |
|||
if (!tag) return false; |
|||
|
|||
const { dot, content } = tag; |
|||
if (!dot && !content) return false; |
|||
return true; |
|||
}); |
|||
|
|||
const getContent = computed(() => { |
|||
if (!getShowTag.value) return ''; |
|||
const { item } = props; |
|||
const { tag } = item; |
|||
const { dot, content } = tag!; |
|||
return dot ? '' : content; |
|||
}); |
|||
|
|||
const getTagClass = computed(() => { |
|||
const { item } = props; |
|||
const { tag = {} } = item || {}; |
|||
const { dot, type = 'error' } = tag; |
|||
return [ |
|||
prefixCls, |
|||
[`${prefixCls}--${type}`], |
|||
{ |
|||
[`${prefixCls}--dot`]: dot, |
|||
}, |
|||
]; |
|||
}); |
|||
return { |
|||
prefixCls, |
|||
getTagClass, |
|||
getShowTag, |
|||
getContent, |
|||
}; |
|||
}, |
|||
}); |
|||
</script> |
|||
@ -1 +1,2 @@ |
|||
export { default as SimpleMenu } from './src/SimpleMenu.vue'; |
|||
export { default as SimpleMenuTag } from './src/SimpleMenuTag.vue'; |
|||
|
|||
Loading…
Reference in new issue