Skip to content

fix: Fix custom theme token #7180

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
Dec 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
56d2b7d
fix: fix table column data is passed into chlidren is undefined or nu…
aibayanyu20 Nov 1, 2022
e8be3a3
Merge branch 'vueComponent:main' into main
aibayanyu20 Jan 29, 2023
89089a8
Merge branch 'vueComponent:main' into main
aibayanyu20 Feb 1, 2023
d80ba5c
Merge branch 'vueComponent:main' into main
aibayanyu20 Feb 9, 2023
20a9950
Merge branch 'vueComponent:main' into main
aibayanyu20 Apr 21, 2023
714a4cf
Merge branch 'vueComponent:main' into main
aibayanyu20 Apr 30, 2023
bcf3812
Merge branch 'vueComponent:main' into main
aibayanyu20 May 4, 2023
91dac95
Merge branch 'vueComponent:main' into main
aibayanyu20 May 8, 2023
38b5345
Merge branch 'vueComponent:main' into main
aibayanyu20 May 11, 2023
68c57dc
Merge branch 'vueComponent:main' into main
aibayanyu20 May 14, 2023
57092c7
Merge branch 'vueComponent:main' into main
aibayanyu20 May 31, 2023
011b558
Merge branch 'vueComponent:main' into main
aibayanyu20 Jun 7, 2023
400cb85
Merge branch 'vueComponent:main' into main
aibayanyu20 Jul 4, 2023
55f6ef9
Merge branch 'vueComponent:main' into main
aibayanyu20 Jul 29, 2023
ac36bb7
Merge branch 'vueComponent:main' into main
aibayanyu20 Aug 6, 2023
afbf769
Merge branch 'vueComponent:main' into main
aibayanyu20 Aug 24, 2023
62ed844
Merge branch 'vueComponent:main' into main
aibayanyu20 Sep 10, 2023
c299650
Merge branch 'vueComponent:main' into main
aibayanyu20 Oct 16, 2023
f23bf2b
Merge branch 'vueComponent:main' into main
aibayanyu20 Oct 17, 2023
0b868bb
Merge branch 'vueComponent:main' into main
aibayanyu20 Nov 5, 2023
406df92
fix: fix custom theme token not take effect
aibayanyu20 Dec 10, 2023
05c34c9
Merge branch 'vueComponent:main' into main
aibayanyu20 Dec 10, 2023
3d6a4a7
Merge branch 'main' into fix-custom-theme-token
aibayanyu20 Dec 10, 2023
42e0c5a
chore: reset button style
Dec 10, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions components/_util/cssinjs/hooks/useCacheToken.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ export const getComputedToken = <DerivativeToken = object, DesignToken = Derivat
format?: (token: DesignToken) => DerivativeToken,
) => {
const derivativeToken = theme.getDerivativeToken(originToken);

// Merge with override
let mergedDerivativeToken = {
...derivativeToken,
Expand Down Expand Up @@ -150,7 +149,6 @@ export default function useCacheToken<DerivativeToken = object, DesignToken = De

const hashId = `${hashPrefix}-${hash(tokenKey)}`;
mergedDerivativeToken._hashId = hashId; // Not used

return [mergedDerivativeToken, hashId];
},
cache => {
Expand Down

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions components/_util/static-style-extract/__tests__/index.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// import { StyleProvider } from '../../cssinjs';
import { extractStyle } from '../index';
import { ConfigProvider } from '../../../components';
import { theme } from '../../../index';

const testGreenColor = '#008000';
describe('Static-Style-Extract', () => {
Expand All @@ -26,6 +27,25 @@ describe('Static-Style-Extract', () => {
expect(cssText).toContain(testGreenColor);
expect(cssText).toMatchSnapshot();
});

it('should extract static styles with customTheme and customStyle', () => {
const cssText = extractStyle(node => {
return (
<ConfigProvider
theme={{
algorithm: theme.darkAlgorithm,
token: {
colorPrimary: testGreenColor,
},
}}
>
{node}
</ConfigProvider>
);
});
expect(cssText).toContain('#037003');
expect(cssText).toMatchSnapshot();
});
// it('with custom hashPriority', () => {
// const cssText = extractStyle(
// (node) => (
Expand Down
1 change: 0 additions & 1 deletion components/button/style/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,6 @@ const genBlockButtonStyle: GenerateStyle<ButtonToken> = token => {
// ============================== Export ==============================
export default genComponentStyleHook('Button', token => {
const { controlTmpOutline, paddingContentHorizontal } = token;

const buttonToken = mergeToken<ButtonToken>(token, {
colorOutlineDefault: controlTmpOutline,
buttonPaddingHorizontal: paddingContentHorizontal,
Expand Down
1 change: 0 additions & 1 deletion components/config-provider/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,6 @@ const ConfigProvider = defineComponent({
algorithm && (!Array.isArray(algorithm) || algorithm.length > 0)
? createTheme(algorithm)
: undefined;

return {
...rest,
theme: themeObj,
Expand Down
24 changes: 15 additions & 9 deletions components/theme/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import statisticToken, { merge as mergeToken, statistic } from './util/statistic
import type { VueNode } from '../_util/type';
import { objectType } from '../_util/type';
import type { ComputedRef, InjectionKey, Ref } from 'vue';
import { defineComponent, provide, computed, inject, watchEffect, ref } from 'vue';
import { unref, defineComponent, provide, computed, inject, watchEffect, ref } from 'vue';
import { toReactive } from '../_util/toReactive';

const defaultTheme = createTheme(defaultDerivative);
Expand Down Expand Up @@ -61,26 +61,30 @@ export interface DesignTokenContext {
hashed?: string | boolean;
}
//defaultConfig
const DesignTokenContextKey: InjectionKey<DesignTokenContext> = Symbol('DesignTokenContext');
const DesignTokenContextKey: InjectionKey<ComputedRef<DesignTokenContext>> =
Symbol('DesignTokenContext');

export const globalDesignTokenApi = ref<DesignTokenContext>();

export const useDesignTokenProvider = (value: DesignTokenContext) => {
export const useDesignTokenProvider = (value: ComputedRef<DesignTokenContext>) => {
provide(DesignTokenContextKey, value);
watchEffect(() => {
globalDesignTokenApi.value = value;
globalDesignTokenApi.value = toReactive(value);
});
};

export const useDesignTokenInject = () => {
return inject(DesignTokenContextKey, globalDesignTokenApi.value || defaultConfig);
return inject(
DesignTokenContextKey,
computed(() => globalDesignTokenApi.value || defaultConfig),
);
};
export const DesignTokenProvider = defineComponent({
props: {
value: objectType<DesignTokenContext>(),
},
setup(props, { slots }) {
useDesignTokenProvider(toReactive(computed(() => props.value)));
useDesignTokenProvider(computed(() => props.value));
return () => {
return slots.default?.();
};
Expand All @@ -92,9 +96,11 @@ export function useToken(): [
ComputedRef<GlobalToken>,
ComputedRef<string>,
] {
const designTokenContext = inject<DesignTokenContext>(
DesignTokenContextKey,
globalDesignTokenApi.value || defaultConfig,
const designTokenContext = unref(
inject<ComputedRef<DesignTokenContext>>(
DesignTokenContextKey,
computed(() => globalDesignTokenApi.value || defaultConfig),
),
);

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