Skip to content
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

Feat: Add new API genStyleUtils. #5

Merged
merged 44 commits into from
Jul 15, 2024
Merged

Feat: Add new API genStyleUtils. #5

merged 44 commits into from
Jul 15, 2024

Conversation

YumoImer
Copy link
Contributor

@YumoImer YumoImer commented Jul 9, 2024

这个变动的性质是

  • 新特性提交
  • 其他改动(日常 bugfix、文档、站点改进、分支合并等,不需要填写余下的模板)

需求背景

ant-design/ant-design#49748

实现方案和 API

genStyleUtils

genStyleUtils 提供了用于在 antd 生态开发中,生成和管理样式的实用工具函数集。

入参介绍
genStyleUtils<CompTokenMap>(getConfigProviderContext?, getThemeProviderContext?)
  • config: 可选,配置
    • useCSP: 使用 CSP 的钩子函数
    • usePrefix: 使用样式前缀的钩子函数
    • useToken: 使用 token 的钩子函数
  • CompTokenMap: 范型参数,表示组件 token 映射
  • DesignTokenn: 范型参数,表示设计 token
  • AliasToken: 范型参数,表示别名 token

使用建议:为了更好的获得 TS 类型支持,建议您在使用 genStyleUtils 的时候传入范型参数 CompTokenMap DesignTokenn AliasToken

如何使用
import React from 'react';
import { genStyleUtils } from '@ant-design/cssinjs-utils';

// Step1: 定义组件 Token 映射
interface YourCompTokenMap {
  Button?: {};
  Avatar?: {};
  // ...
}

interface YourDesignTokenn {
  color?: string;
}

interface YourAliasToken {
  colorFillContentHover?: string;
}

// Step2: 使用 `genStyleUtils` 生成工具函数集
const {
  genStyleHooks,
  genComponentStyleHook,
  genSubStyleComponent,
} = genStyleUtils<YourCompTokenMap, YourDesignTokenn, YourAliasToken>({
  useCSP: () => {
    // ...
  },
  usePrefix: () => {
    // ...
  },
  useToken: () => {
    // ...
  },
});
工具介绍
genStyleHooks(component, styleFn, getDefaultToken?, options?)
  • component: 组件名称 ComponentName 或组件名称数组 [ComponentName, ComponentName]
  • styleFn: 根据标记和样式信息生成 CSS 插值的函数。
  • getDefaultToken: 可选,用于检索默认标记的函数或值。
  • options: 可选,包含额外的配置选项如 resetStyleresetFontdeprecatedTokensclientOnly 等。
genComponentStyleHook(component, styleFn, getDefaultToken?, options?)
  • component: 组件名称 ComponentName 或组件名称数组 [ComponentName, ComponentName]
  • styleFn: 根据标记和样式信息生成 CSS 插值的函数。
  • getDefaultToken: 可选,用于检索默认标记的函数或值。
  • options: 可选,包含额外的配置选项如 resetStyleresetFontdeprecatedTokensclientOnly 等。
genSubStyleComponent(component, styleFn, getDefaultToken?, options?)
  • component: 组件名称 ComponentName 或组件名称数组 [ComponentName, ComponentName]
  • styleFn: 根据标记和样式信息生成 CSS 插值的函数。
  • getDefaultToken: 可选,用于检索默认标记的函数或值。
  • options: 可选,包含额外的配置选项如 resetStyleresetFontdeprecatedTokensclientOnly 等。
示例用法
genStyleHooks
const useStyle = genStyleHooks('Button', styleFn, getDefaultToken, { resetStyle: true });
const [wrapStyle, hashId] = useStyle('button');
genComponentStyleHook
const useStyle = genComponentStyleHook('Button', styleFn, getDefaultToken, { clientOnly: true });
const [wrapStyle, hashId] = useStyle('button');
genSubStyleComponent
const SubButtonStyle = genSubStyleComponent('Button', styleFn, getDefaultToken, { resetFont: true });

() => <SubButtonStyle prefixCls="sub-button" />;

对用户的影响和可能的风险

请求合并前的自查清单

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • [] Changelog 已提供或无须提供

后续计划

  • 补充文档
  • [] 补充 Changelog
  • [] 补充单測
  • [] 完善 RFC

…Component` `genComponentStyleHook` `useResetIconStyle` `useToken`.

 - `genStyleHooks` -> `genStyleHooksFactory`
 - `genCSSVarRegister` -> `genCSSVarRegisterFactory`
 - `genSubStyleComponent` -> `genSubStyleComponentFactory`
 - `genComponentStyleHook` -> `genComponentStyleHookFactory`
 - `useResetIconStyle` -> `genUseResetIconStyle`
 - `useToken` -> `genUseToken`

Details Read RFC: ant-design/ant-design#49748
…`getCompVarPrefix` `getDefaultComponentToken` independent
@YumoImer YumoImer requested a review from zombieJ July 9, 2024 09:48
src/util/getCompVarPrefix.ts Dismissed Show dismissed Hide dismissed
package.json Outdated Show resolved Hide resolved
src/_util/type.ts Outdated Show resolved Hide resolved
src/interface/alias.ts Outdated Show resolved Hide resolved
src/util/genStyleUtils.tsx Outdated Show resolved Hide resolved
@@ -0,0 +1,7 @@
import { useStyleRegister } from '@ant-design/cssinjs';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

非实体加个 type 去除副作用~

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

src/util/genStyleUtils.tsx Outdated Show resolved Hide resolved
src/util/getAlphaColor.ts Outdated Show resolved Hide resolved
src/util/genStyleUtils.tsx Outdated Show resolved Hide resolved
@zombieJ
Copy link
Member

zombieJ commented Jul 12, 2024

CI failed

@zombieJ zombieJ merged commit 94f2329 into master Jul 15, 2024
7 checks passed
@zombieJ zombieJ deleted the init branch July 15, 2024 05:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants