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

47 lines
1.4 KiB
TypeScript
Raw Normal View History

2021-05-28 17:31:15 +08:00
import { RequiredMark } from '../../form/Form';
2021-05-12 21:06:53 +08:00
import { computed, ComputedRef, inject, UnwrapRef } from 'vue';
import {
ConfigProviderProps,
defaultConfigProvider,
Direction,
SizeType,
} from '../../config-provider';
2021-05-12 21:06:53 +08:00
export default (
name: string,
props: Record<any, any>,
): {
configProvider: UnwrapRef<ConfigProviderProps>;
prefixCls: ComputedRef<string>;
direction: ComputedRef<Direction>;
size: ComputedRef<SizeType>;
2021-05-24 18:09:11 +08:00
getTargetContainer: ComputedRef<() => HTMLElement>;
2021-05-26 17:31:16 +08:00
space: ComputedRef<{ size: SizeType | number }>;
2021-05-26 23:14:00 +08:00
pageHeader: ComputedRef<{ ghost: boolean }>;
2021-05-28 17:31:15 +08:00
form?: ComputedRef<{
requiredMark?: RequiredMark;
}>;
2021-05-12 21:06:53 +08:00
} => {
const configProvider = inject<UnwrapRef<ConfigProviderProps>>(
'configProvider',
defaultConfigProvider,
);
const prefixCls = computed(() => configProvider.getPrefixCls(name, props.prefixCls));
2021-05-12 21:06:53 +08:00
const direction = computed(() => configProvider.direction);
2021-05-26 17:31:16 +08:00
const space = computed(() => configProvider.space);
2021-05-26 23:14:00 +08:00
const pageHeader = computed(() => configProvider.pageHeader);
2021-05-28 17:31:15 +08:00
const form = computed(() => configProvider.form);
2021-05-12 21:06:53 +08:00
const size = computed(() => props.size || configProvider.componentSize);
2021-05-24 18:09:11 +08:00
const getTargetContainer = computed(() => props.getTargetContainer);
2021-05-28 17:31:15 +08:00
return {
configProvider,
prefixCls,
direction,
size,
getTargetContainer,
space,
pageHeader,
form,
};
};