ant-design-vue/components/_util/hooks/useSize.ts

27 lines
826 B
TypeScript
Raw Normal View History

2021-05-13 04:57:42 +00:00
import { computed, ComputedRef, inject, provide, UnwrapRef } from 'vue';
import { ConfigProviderProps, defaultConfigProvider, SizeType } from '../../config-provider';
const sizeProvider = Symbol('SizeProvider');
const useProviderSize = <T = SizeType>(props: Record<any, any>): ComputedRef<T> => {
const configProvider = inject<UnwrapRef<ConfigProviderProps>>(
'configProvider',
defaultConfigProvider,
);
const size = computed<T>(() => props.size || configProvider.componentSize);
provide(sizeProvider, size);
return size;
};
const useInjectSize = <T = SizeType>(): ComputedRef<T> => {
const size: ComputedRef<T> = inject(
sizeProvider,
computed(() => ('default' as unknown) as T),
);
return size;
};
export { useInjectSize, sizeProvider, useProviderSize };
export default useProviderSize;