| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import * as React from 'react';
- import { RouterProvider } from 'react-router-dom';
- import {
- ConfigProvider as AntdConfigProvider,
- App as AntdApp,
- message,
- notification,
- } from 'antd';
- import zhCN from 'antd/locale/zh_CN';
- import router from '@/router';
- interface ConfigProviderProps {
- children: React.ReactNode,
- }
- // Ant-Design全局化配置
- const ConfigProvider: React.FC<ConfigProviderProps> = (props: ConfigProviderProps) => {
- function getDesignToken() {
- // 获取元素
- const root = document.getElementById('root');
- // 获取元素计算样式
- const styles = getComputedStyle(root!);
- // 获取Ant-Design主题-属性
- const colorPrimary = styles.getPropertyValue('--primary-color');
- const colorTextBase = styles.getPropertyValue('--text-color');
- const borderRadiusArray = styles.getPropertyValue('--border-radius').match(/\d+/);
- return {
- colorPrimary: colorPrimary || undefined,
- colorTextBase: colorTextBase || undefined,
- borderRadius: borderRadiusArray ? Number(borderRadiusArray[0]) : undefined,
- }
- }
- const designToken = getDesignToken();
- return (
- <AntdConfigProvider
- // 组件-中文
- locale={zhCN}
- // 警告等级
- warning={{
- strict: true,// 严格模式
- }}
- // 渲染父节点到body上
- getPopupContainer={() => document.body}
- // 设置主题
- theme={{
- token: {
- colorPrimary: designToken.colorPrimary,// 主题颜色
- colorTextBase: designToken.colorTextBase,// 文本颜色
- borderRadius: designToken.borderRadius,// 圆角大小
- },
- components: {
- Table: {
- headerBg: '#F7F8FA',
- headerSplitColor: 'transparent',
- },
- },
- }}
- /* 组件配置 */
- button={{
- autoInsertSpace: false,// 移除按钮两个汉字之间的空格
- }}
- >
- {props.children}
- </AntdConfigProvider>
- );
- }
- const App: React.FC = () => {
- // 全局提示
- message.config({
- duration: 2,// 2秒自动关闭
- maxCount: 1,// 最多显示1条
- });
- // 通知提醒
- notification.config({
- duration: 2,// 2秒自动关闭
- maxCount: 1,// 最多显示1条
- });
- // 全局配置
- AntdConfigProvider.config({
- // 静态方法
- holderRender: (children) => (
- <ConfigProvider>
- {children}
- </ConfigProvider>
- )
- });
- return (
- <ConfigProvider>
- <AntdApp style={{ height: '100%', lineHeight: 'normal' }}>
- <RouterProvider router={router} />
- </AntdApp>
- </ConfigProvider>
- );
- };
- export default App;
|