From 5da035d275268d677190132b42f31d5da315d998 Mon Sep 17 00:00:00 2001 From: tangjinzhou <415800467@qq.com> Date: Sun, 27 Feb 2022 11:31:28 +0800 Subject: [PATCH] style: configprovider --- components/_util/hooks/usePrefixCls.ts | 9 -- components/alert/index.tsx | 56 ++++---- components/back-top/index.tsx | 10 +- components/config-provider/context.ts | 131 +++++++++++++++++++ components/config-provider/cssVariables.tsx | 97 ++++++++++++++ components/config-provider/index.en-US.md | 7 + components/config-provider/index.tsx | 137 +++++--------------- components/config-provider/index.zh-CN.md | 9 +- components/config-provider/renderEmpty.tsx | 9 +- components/divider/index.tsx | 9 +- components/empty/empty.tsx | 5 +- components/empty/index.tsx | 12 +- components/empty/simple.tsx | 5 +- components/image/PreviewGroup.tsx | 10 +- components/tree-select/index.tsx | 9 +- components/vc-util/Dom/dynamicCSS.ts | 99 ++++++++++++++ 16 files changed, 428 insertions(+), 186 deletions(-) delete mode 100644 components/_util/hooks/usePrefixCls.ts create mode 100644 components/config-provider/context.ts create mode 100644 components/config-provider/cssVariables.tsx create mode 100644 components/vc-util/Dom/dynamicCSS.ts diff --git a/components/_util/hooks/usePrefixCls.ts b/components/_util/hooks/usePrefixCls.ts deleted file mode 100644 index 96c62d4b6..000000000 --- a/components/_util/hooks/usePrefixCls.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { ComputedRef } from 'vue'; -import { computed, inject } from 'vue'; -import { defaultConfigProvider } from '../../config-provider'; - -export default (name: string, props: Record): ComputedRef => { - const configProvider = inject('configProvider', defaultConfigProvider); - const prefixCls = computed(() => configProvider.getPrefixCls(name, props.prefixCls)); - return prefixCls; -}; diff --git a/components/alert/index.tsx b/components/alert/index.tsx index 289136fba..7d99b9f35 100644 --- a/components/alert/index.tsx +++ b/components/alert/index.tsx @@ -1,5 +1,5 @@ import type { CSSProperties, ExtractPropTypes, PropType } from 'vue'; -import { inject, defineComponent, ref } from 'vue'; +import { defineComponent, ref } from 'vue'; import CloseOutlined from '@ant-design/icons-vue/CloseOutlined'; import CheckCircleOutlined from '@ant-design/icons-vue/CheckCircleOutlined'; import ExclamationCircleOutlined from '@ant-design/icons-vue/ExclamationCircleOutlined'; @@ -13,10 +13,10 @@ import classNames from '../_util/classNames'; import PropTypes from '../_util/vue-types'; import { getTransitionProps, Transition } from '../_util/transition'; import { isValidElement, getPropsSlot } from '../_util/props-util'; -import { defaultConfigProvider } from '../config-provider'; import { tuple, withInstall } from '../_util/type'; import { cloneElement } from '../_util/vnode'; import type { NodeMouseEventHandler } from '../vc-tree/contextTypes'; +import useConfigInject from '../_util/hooks/useConfigInject'; function noop() {} @@ -69,7 +69,7 @@ const Alert = defineComponent({ inheritAttrs: false, props: alertProps(), setup(props, { slots, emit, attrs, expose }) { - const configProvider = inject('configProvider', defaultConfigProvider); + const { prefixCls, direction } = useConfigInject('alert', props); const closing = ref(false); const closed = ref(false); const alertNode = ref(); @@ -97,13 +97,7 @@ const Alert = defineComponent({ expose({ animationEnd }); const motionStyle = ref({}); return () => { - const { - prefixCls: customizePrefixCls, - banner, - closeIcon: customCloseIcon = slots.closeIcon?.(), - } = props; - const { getPrefixCls } = configProvider; - const prefixCls = getPrefixCls('alert', customizePrefixCls); + const { banner, closeIcon: customCloseIcon = slots.closeIcon?.() } = props; let { closable, type, showIcon } = props; @@ -123,20 +117,26 @@ const Alert = defineComponent({ if (closeText) { closable = true; } - - const alertCls = classNames(prefixCls, { - [`${prefixCls}-${type}`]: true, - [`${prefixCls}-closing`]: closing.value, - [`${prefixCls}-with-description`]: !!description, - [`${prefixCls}-no-icon`]: !showIcon, - [`${prefixCls}-banner`]: !!banner, - [`${prefixCls}-closable`]: closable, + const prefixClsValue = prefixCls.value; + const alertCls = classNames(prefixClsValue, { + [`${prefixClsValue}-${type}`]: true, + [`${prefixClsValue}-closing`]: closing.value, + [`${prefixClsValue}-with-description`]: !!description, + [`${prefixClsValue}-no-icon`]: !showIcon, + [`${prefixClsValue}-banner`]: !!banner, + [`${prefixClsValue}-closable`]: closable, + [`${prefixClsValue}-rtl`]: direction.value === 'rtl', }); const closeIcon = closable ? ( -