refactor(components): [page-header] switch to script-setup syntax (#6321)

Co-authored-by: 三咲智子 <sxzz@sxzz.moe>
This commit is contained in:
blackie
2022-03-01 22:16:46 +08:00
committed by GitHub
parent f38c28a89a
commit 5aabf066e6
2 changed files with 23 additions and 31 deletions

View File

@@ -1,20 +1,24 @@
import { iconPropType, buildProps } from '@element-plus/utils'
import { Back } from '@element-plus/icons-vue'
import type { ExtractPropTypes, PropType, Component } from 'vue'
import type { ExtractPropTypes } from 'vue'
import type PageHeader from './page-header.vue'
export const pageHeaderProps = {
export const pageHeaderProps = buildProps({
icon: {
type: [String, Object] as PropType<string | Component>,
default: Back,
type: iconPropType,
default: () => Back,
},
title: String,
content: {
type: String,
default: '',
},
} as const
} as const)
export type PageHeaderProps = ExtractPropTypes<typeof pageHeaderProps>
export const pageHeaderEmits = {
back: () => true,
}
export type PageHeaderEmits = typeof pageHeaderEmits
export type PageHeaderInstance = InstanceType<typeof PageHeader>

View File

@@ -3,7 +3,9 @@
<div :class="ns.e('left')" @click="handleClick">
<div v-if="icon || $slots.icon" :class="ns.e('icon')">
<slot name="icon">
<el-icon v-if="icon"><component :is="icon" /></el-icon>
<el-icon v-if="icon">
<component :is="icon" />
</el-icon>
</slot>
</div>
<div :class="ns.e('title')">
@@ -15,36 +17,22 @@
</div>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
<script lang="ts" setup>
import { ElIcon } from '@element-plus/components/icon'
import { useLocale, useNamespace } from '@element-plus/hooks'
import { pageHeaderEmits, pageHeaderProps } from './page-header'
export default defineComponent({
defineOptions({
name: 'ElPageHeader',
components: {
ElIcon,
},
props: pageHeaderProps,
emits: pageHeaderEmits,
setup(_, { emit }) {
const { t } = useLocale()
const ns = useNamespace('page-header')
function handleClick() {
emit('back')
}
return {
handleClick,
t,
ns,
}
},
})
defineProps(pageHeaderProps)
const emit = defineEmits(pageHeaderEmits)
const { t } = useLocale()
const ns = useNamespace('page-header')
function handleClick() {
emit('back')
}
</script>