|
@@ -1,23 +1,20 @@
|
|
|
<template>
|
|
|
<Button v-bind="getBindValue" :class="[getColor, $attrs.class]">
|
|
|
- <!-- <template #[item]="data" v-for="item in Object.keys($slots)">
|
|
|
- <slot :name="item" v-bind="data" />
|
|
|
- </template> -->
|
|
|
<template #default="data">
|
|
|
- <Icon :icon="preIcon" class="mr-1" v-if="preIcon" />
|
|
|
+ <Icon :icon="preIcon" :class="{ 'mr-1': !getIsCircleBtn }" v-if="preIcon" />
|
|
|
<slot v-bind="data" />
|
|
|
- <Icon :icon="postIcon" class="ml-1" v-if="postIcon" />
|
|
|
+ <Icon :icon="postIcon" :class="{ 'ml-1': !getIsCircleBtn }" v-if="postIcon" />
|
|
|
</template>
|
|
|
</Button>
|
|
|
</template>
|
|
|
<script lang="ts">
|
|
|
import { PropType } from 'vue';
|
|
|
|
|
|
- import { defineComponent, computed, unref } from 'vue';
|
|
|
+ import { defineComponent, computed } from 'vue';
|
|
|
import { Button } from 'ant-design-vue';
|
|
|
// import { extendSlots } from '/@/utils/helper/tsxHelper';
|
|
|
- import { useThrottle } from '/@/hooks/core/useThrottle';
|
|
|
- import { isFunction } from '/@/utils/is';
|
|
|
+ // import { useThrottle } from '/@/hooks/core/useThrottle';
|
|
|
+ // import { isFunction } from '/@/utils/is';
|
|
|
import Icon from '/@/components/Icon';
|
|
|
export default defineComponent({
|
|
|
name: 'AButton',
|
|
@@ -30,18 +27,18 @@
|
|
|
default: 'default',
|
|
|
},
|
|
|
// 节流防抖类型 throttle debounce
|
|
|
- throttle: {
|
|
|
- type: String as PropType<'throttle' | 'debounce'>,
|
|
|
- default: 'throttle',
|
|
|
- },
|
|
|
+ // throttle: {
|
|
|
+ // type: String as PropType<'throttle' | 'debounce'>,
|
|
|
+ // default: 'throttle',
|
|
|
+ // },
|
|
|
color: {
|
|
|
type: String as PropType<'error' | 'warning' | 'success' | ''>,
|
|
|
},
|
|
|
- // 防抖节流时间
|
|
|
- throttleTime: {
|
|
|
- type: Number as PropType<number>,
|
|
|
- default: 0,
|
|
|
- },
|
|
|
+ // // 防抖节流时间
|
|
|
+ // throttleTime: {
|
|
|
+ // type: Number as PropType<number>,
|
|
|
+ // default: 50,
|
|
|
+ // },
|
|
|
loading: {
|
|
|
type: Boolean as PropType<boolean>,
|
|
|
default: false,
|
|
@@ -58,30 +55,38 @@
|
|
|
},
|
|
|
},
|
|
|
setup(props, { attrs }) {
|
|
|
- const getListeners = computed(() => {
|
|
|
- const { throttle, throttleTime = 0 } = props;
|
|
|
- // 是否开启节流防抖
|
|
|
- const throttleType = throttle!.toLowerCase();
|
|
|
- const isDebounce = throttleType === 'debounce';
|
|
|
- const openThrottle = ['throttle', 'debounce'].includes(throttleType) && throttleTime > 0;
|
|
|
+ const getIsCircleBtn = computed(() => {
|
|
|
+ return attrs.shape === 'circle';
|
|
|
+ });
|
|
|
+ // const getListeners = computed(() => {
|
|
|
+ // const { throttle, throttleTime = 0 } = props;
|
|
|
+ // // 是否开启节流防抖
|
|
|
+ // const throttleType = throttle!.toLowerCase();
|
|
|
+ // const isDebounce = throttleType === 'debounce';
|
|
|
+ // const openThrottle = ['throttle', 'debounce'].includes(throttleType) && throttleTime > 0;
|
|
|
+ // if (!openThrottle) {
|
|
|
+ // return {
|
|
|
+ // ...attrs,
|
|
|
+ // };
|
|
|
+ // }
|
|
|
|
|
|
- const on: {
|
|
|
- onClick?: Fn;
|
|
|
- } = {};
|
|
|
+ // const on: {
|
|
|
+ // onClick?: Fn;
|
|
|
+ // } = {};
|
|
|
|
|
|
- if (attrs.onClick && isFunction(attrs.onClick) && openThrottle) {
|
|
|
- const [handler] = useThrottle(attrs.onClick as any, throttleTime!, {
|
|
|
- debounce: isDebounce,
|
|
|
- immediate: true,
|
|
|
- });
|
|
|
- on.onClick = handler;
|
|
|
- }
|
|
|
+ // if (attrs.onClick && isFunction(attrs.onClick) && openThrottle) {
|
|
|
+ // const [handler] = useThrottle(attrs.onClick as any, throttleTime!, {
|
|
|
+ // debounce: isDebounce,
|
|
|
+ // immediate: false,
|
|
|
+ // });
|
|
|
+ // on.onClick = handler;
|
|
|
+ // }
|
|
|
|
|
|
- return {
|
|
|
- ...attrs,
|
|
|
- ...on,
|
|
|
- };
|
|
|
- });
|
|
|
+ // return {
|
|
|
+ // ...attrs,
|
|
|
+ // ...on,
|
|
|
+ // };
|
|
|
+ // });
|
|
|
|
|
|
const getColor = computed(() => {
|
|
|
const res: string[] = [];
|
|
@@ -92,9 +97,10 @@
|
|
|
});
|
|
|
|
|
|
const getBindValue = computed((): any => {
|
|
|
- return { ...unref(getListeners), ...props };
|
|
|
+ return { ...attrs, ...props };
|
|
|
});
|
|
|
- return { getBindValue, getColor };
|
|
|
+
|
|
|
+ return { getBindValue, getColor, getIsCircleBtn };
|
|
|
},
|
|
|
});
|
|
|
</script>
|