Commit 70ee1c840333c8b1d06b5bc059bc482d4832e082

Authored by luocong2016
Committed by GitHub
1 parent 73469886

refactor: 插槽优先属性调整,prefixCls优先关系调整 (#2570)

src/components/Container/src/collapse/CollapseHeader.vue
1 -<template>  
2 - <div :class="[`${prefixCls}__header px-2 py-5`, $attrs.class]">  
3 - <BasicTitle :helpMessage="helpMessage" normal>  
4 - <template v-if="title">  
5 - {{ title }}  
6 - </template>  
7 - <template v-else>  
8 - <slot name="title"></slot>  
9 - </template>  
10 - </BasicTitle>  
11 - <div :class="`${prefixCls}__action`">  
12 - <slot name="action"></slot>  
13 - <BasicArrow v-if="canExpan" up :expand="show" @click="$emit('expand')" />  
14 - </div>  
15 - </div>  
16 -</template>  
17 -<script lang="ts">  
18 - import { defineComponent } from 'vue'; 1 +<script lang="tsx">
  2 + import { defineComponent, computed, unref, type ExtractPropTypes } from 'vue';
  3 + import { useDesign } from '/@/hooks/web/useDesign';
19 import { BasicArrow, BasicTitle } from '/@/components/Basic'; 4 import { BasicArrow, BasicTitle } from '/@/components/Basic';
20 5
21 - const props = {  
22 - prefixCls: { type: String }, 6 + const collapseHeaderProps = {
  7 + prefixCls: String,
  8 + title: String,
  9 + show: Boolean,
  10 + canExpan: Boolean,
23 helpMessage: { 11 helpMessage: {
24 type: [Array, String] as PropType<string[] | string>, 12 type: [Array, String] as PropType<string[] | string>,
25 default: '', 13 default: '',
26 }, 14 },
27 - title: { type: String },  
28 - show: { type: Boolean },  
29 - canExpan: { type: Boolean },  
30 }; 15 };
31 16
  17 + export type CollapseHeaderProps = ExtractPropTypes<typeof collapseHeaderProps>;
  18 +
32 export default defineComponent({ 19 export default defineComponent({
33 - components: { BasicArrow, BasicTitle }, 20 + name: 'CollapseHeader',
34 inheritAttrs: false, 21 inheritAttrs: false,
35 - props, 22 + props: collapseHeaderProps,
36 emits: ['expand'], 23 emits: ['expand'],
  24 + setup(props, { slots, attrs, emit }) {
  25 + const { prefixCls } = useDesign('collapse-container');
  26 + const _prefixCls = computed(() => props.prefixCls || unref(prefixCls));
  27 + return () => (
  28 + <div class={[`${unref(_prefixCls)}__header px-2 py-5`, attrs.class]}>
  29 + <BasicTitle helpMessage={props.helpMessage} normal>
  30 + {slots.title?.() || props.title}
  31 + </BasicTitle>
  32 +
  33 + <div class={`${unref(_prefixCls)}__action`}>
  34 + {props.canExpan && <BasicArrow up expand={props.show} onClick={() => emit('expand')} />}
  35 + </div>
  36 + </div>
  37 + );
  38 + },
37 }); 39 });
38 </script> 40 </script>