Skip to content

Commit 509ec68

Browse files
authored
fix: Fix custom theme token (#7180)
* fix: fix table column data is passed into chlidren is undefined or null errorr * fix: fix custom theme token not take effect * chore: reset button style --------- Co-authored-by: undefined <undefined>
1 parent 73f0a29 commit 509ec68

File tree

6 files changed

+36
-16
lines changed

6 files changed

+36
-16
lines changed

Diff for: components/_util/cssinjs/hooks/useCacheToken.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ export const getComputedToken = <DerivativeToken = object, DesignToken = Derivat
9090
format?: (token: DesignToken) => DerivativeToken,
9191
) => {
9292
const derivativeToken = theme.getDerivativeToken(originToken);
93-
9493
// Merge with override
9594
let mergedDerivativeToken = {
9695
...derivativeToken,
@@ -150,7 +149,6 @@ export default function useCacheToken<DerivativeToken = object, DesignToken = De
150149

151150
const hashId = `${hashPrefix}-${hash(tokenKey)}`;
152151
mergedDerivativeToken._hashId = hashId; // Not used
153-
154152
return [mergedDerivativeToken, hashId];
155153
},
156154
cache => {

Diff for: components/_util/static-style-extract/__tests__/__snapshots__/index.test.js.snap

+1-3
Large diffs are not rendered by default.

Diff for: components/_util/static-style-extract/__tests__/index.test.js

+20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// import { StyleProvider } from '../../cssinjs';
22
import { extractStyle } from '../index';
33
import { ConfigProvider } from '../../../components';
4+
import { theme } from '../../../index';
45

56
const testGreenColor = '#008000';
67
describe('Static-Style-Extract', () => {
@@ -26,6 +27,25 @@ describe('Static-Style-Extract', () => {
2627
expect(cssText).toContain(testGreenColor);
2728
expect(cssText).toMatchSnapshot();
2829
});
30+
31+
it('should extract static styles with customTheme and customStyle', () => {
32+
const cssText = extractStyle(node => {
33+
return (
34+
<ConfigProvider
35+
theme={{
36+
algorithm: theme.darkAlgorithm,
37+
token: {
38+
colorPrimary: testGreenColor,
39+
},
40+
}}
41+
>
42+
{node}
43+
</ConfigProvider>
44+
);
45+
});
46+
expect(cssText).toContain('#037003');
47+
expect(cssText).toMatchSnapshot();
48+
});
2949
// it('with custom hashPriority', () => {
3050
// const cssText = extractStyle(
3151
// (node) => (

Diff for: components/button/style/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,6 @@ const genBlockButtonStyle: GenerateStyle<ButtonToken> = token => {
495495
// ============================== Export ==============================
496496
export default genComponentStyleHook('Button', token => {
497497
const { controlTmpOutline, paddingContentHorizontal } = token;
498-
499498
const buttonToken = mergeToken<ButtonToken>(token, {
500499
colorOutlineDefault: controlTmpOutline,
501500
buttonPaddingHorizontal: paddingContentHorizontal,

Diff for: components/config-provider/index.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,6 @@ const ConfigProvider = defineComponent({
232232
algorithm && (!Array.isArray(algorithm) || algorithm.length > 0)
233233
? createTheme(algorithm)
234234
: undefined;
235-
236235
return {
237236
...rest,
238237
theme: themeObj,

Diff for: components/theme/internal.ts

+15-9
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import statisticToken, { merge as mergeToken, statistic } from './util/statistic
2121
import type { VueNode } from '../_util/type';
2222
import { objectType } from '../_util/type';
2323
import type { ComputedRef, InjectionKey, Ref } from 'vue';
24-
import { defineComponent, provide, computed, inject, watchEffect, ref } from 'vue';
24+
import { unref, defineComponent, provide, computed, inject, watchEffect, ref } from 'vue';
2525
import { toReactive } from '../_util/toReactive';
2626

2727
const defaultTheme = createTheme(defaultDerivative);
@@ -61,26 +61,30 @@ export interface DesignTokenContext {
6161
hashed?: string | boolean;
6262
}
6363
//defaultConfig
64-
const DesignTokenContextKey: InjectionKey<DesignTokenContext> = Symbol('DesignTokenContext');
64+
const DesignTokenContextKey: InjectionKey<ComputedRef<DesignTokenContext>> =
65+
Symbol('DesignTokenContext');
6566

6667
export const globalDesignTokenApi = ref<DesignTokenContext>();
6768

68-
export const useDesignTokenProvider = (value: DesignTokenContext) => {
69+
export const useDesignTokenProvider = (value: ComputedRef<DesignTokenContext>) => {
6970
provide(DesignTokenContextKey, value);
7071
watchEffect(() => {
71-
globalDesignTokenApi.value = value;
72+
globalDesignTokenApi.value = toReactive(value);
7273
});
7374
};
7475

7576
export const useDesignTokenInject = () => {
76-
return inject(DesignTokenContextKey, globalDesignTokenApi.value || defaultConfig);
77+
return inject(
78+
DesignTokenContextKey,
79+
computed(() => globalDesignTokenApi.value || defaultConfig),
80+
);
7781
};
7882
export const DesignTokenProvider = defineComponent({
7983
props: {
8084
value: objectType<DesignTokenContext>(),
8185
},
8286
setup(props, { slots }) {
83-
useDesignTokenProvider(toReactive(computed(() => props.value)));
87+
useDesignTokenProvider(computed(() => props.value));
8488
return () => {
8589
return slots.default?.();
8690
};
@@ -92,9 +96,11 @@ export function useToken(): [
9296
ComputedRef<GlobalToken>,
9397
ComputedRef<string>,
9498
] {
95-
const designTokenContext = inject<DesignTokenContext>(
96-
DesignTokenContextKey,
97-
globalDesignTokenApi.value || defaultConfig,
99+
const designTokenContext = unref(
100+
inject<ComputedRef<DesignTokenContext>>(
101+
DesignTokenContextKey,
102+
computed(() => globalDesignTokenApi.value || defaultConfig),
103+
),
98104
);
99105

100106
const salt = computed(() => `${version}-${designTokenContext.hashed || ''}`);

0 commit comments

Comments
 (0)