Skip to content

Commit 6c39bec

Browse files
authored
feat(config-provider ): wave config (#7036)
1 parent 82f407d commit 6c39bec

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

components/_util/wave/index.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default defineComponent({
2626
},
2727
setup(props, { slots }) {
2828
const instance = getCurrentInstance();
29-
const { prefixCls } = useConfigInject('wave', props);
29+
const { prefixCls, wave } = useConfigInject('wave', props);
3030

3131
// ============================== Style ===============================
3232
const [, hashId] = useStyle(prefixCls);
@@ -35,6 +35,7 @@ export default defineComponent({
3535
const showWave = useWave(
3636
instance,
3737
computed(() => classNames(prefixCls.value, hashId.value)),
38+
wave,
3839
);
3940
let onClick: (e: MouseEvent) => void;
4041
const clear = () => {

components/_util/wave/useWave.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1-
import type { ComponentInternalInstance, Ref } from 'vue';
1+
import type { ComponentInternalInstance, ComputedRef, Ref } from 'vue';
22
import { findDOMNode } from '../props-util';
33
import showWaveEffect from './WaveEffect';
44

55
export default function useWave(
66
instance: ComponentInternalInstance | null,
77
className: Ref<string>,
8+
wave: ComputedRef<{ disabled?: boolean }>,
89
): VoidFunction {
910
function showWave() {
1011
const node = findDOMNode(instance);
1112

13+
if (wave.value?.disabled || !node) {
14+
return;
15+
}
16+
1217
showWaveEffect(node, className.value);
1318
}
1419

components/config-provider/context.ts

+6
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ export const configProviderProps = () => ({
105105
select: objectType<{
106106
showSearch?: boolean;
107107
}>(),
108+
wave: objectType<{
109+
disabled?: boolean;
110+
}>(),
108111
});
109112

110113
export type ConfigProviderProps = Partial<ExtractPropTypes<ReturnType<typeof configProviderProps>>>;
@@ -145,6 +148,9 @@ export interface ConfigProviderInnerProps {
145148
componentSize?: ComputedRef<SizeType>;
146149
componentDisabled?: ComputedRef<boolean>;
147150
transformCellText?: ComputedRef<(tableProps: TransformCellTextProps) => any>;
151+
wave?: ComputedRef<{
152+
disabled?: boolean;
153+
}>;
148154
}
149155

150156
export const configProviderKey: InjectionKey<ConfigProviderInnerProps> = Symbol('configProvider');

components/config-provider/hooks/useConfigInject.ts

+5
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ export default (name: string, props: Record<any, any>) => {
4242
);
4343
const disabled = computed<boolean>(() => props.disabled ?? disabledContext.value);
4444
const csp = computed(() => props.csp ?? configProvider.csp);
45+
const wave = computed<{
46+
disabled?: boolean;
47+
}>(() => props.wave ?? configProvider.wave.value);
48+
4549
return {
4650
configProvider,
4751
prefixCls,
@@ -63,5 +67,6 @@ export default (name: string, props: Record<any, any>) => {
6367
iconPrefixCls,
6468
disabled,
6569
select: configProvider.select,
70+
wave,
6671
};
6772
};

components/config-provider/index.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ const ConfigProvider = defineComponent({
197197
);
198198
const componentSize = computed(() => props.componentSize);
199199
const componentDisabled = computed(() => props.componentDisabled);
200+
const wave = computed(() => props.wave ?? parentContext.wave?.value);
200201
const configProvider: ConfigProviderInnerProps = {
201202
csp,
202203
autoInsertSpaceInButton,
@@ -221,6 +222,7 @@ const ConfigProvider = defineComponent({
221222
componentSize,
222223
componentDisabled,
223224
transformCellText: computed(() => props.transformCellText),
225+
wave,
224226
};
225227

226228
// ================================ Dynamic theme ================================

0 commit comments

Comments
 (0)