ant-design/site/theme/template/Icon/utils.ts

46 lines
1.3 KiB
TypeScript
Raw Normal View History

import warning from '../../../../components/_util/warning';
2018-08-30 22:53:24 +08:00
2018-08-15 17:21:02 +08:00
// These props make sure that the SVG behaviours like general text.
// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4
export const svgBaseProps = {
2018-12-07 16:17:45 +08:00
width: '1em',
height: '1em',
fill: 'currentColor',
use ant design icons 4.0 (#18217) * feat: use @ant-design/icons@4.0 * feat: use createFromIconfontCN to make site works * feat: update doc for Icon * feat: use icon in component Alert * feat: use icon in component Avatar * feat: use icon in component Breadcrumb * feat: use icon in component Button * feat: use icon in component Cascader * feat: use icon in component Collapse * feat: use icon in component Datepicker * feat: use icon in component Dropdown * feat: use icon in component Form * feat: use icon in component Input * feat: use icon in component InputNumber * feat: use icon in component Layout * feat: use icon in component Mention * feat: use icon in component Message * feat: use icon in component Modal * feat: use icon in component Notification * feat: use icon in component PageHeader * feat: use icon in component Pagination * feat: use icon in component Popconfirm * feat: use icon in component Progress * feat: use icon in component Rate * feat: use icon in component Result * feat: use icon in component Select * feat: use icon in component Step * feat: use icon in component Switch * feat: use icon in component Table * feat: use icon in component Tab * feat: use icon in component Tag * feat: handle rest component which using Icon * fix: remove unused vars * feat: use latest alpha ant design icons * fix: failed test in uploadlist.test.js * test: update snapshot for icons * doc: add Icon for site * doc: use @ant-design/icons in site * chore: use latest icons * fix: tslint issue * fix: test cases * fix: types for react * fix: lint rules for import orders * fix: use @ant-design/icons@4.0.0-alpha.5 to avoid insert css in server render * fix: eslint error in demo/**.md * inject antd icons * update snapshot * fix site * doc: update docs * fix: code snippets icon in site * feat: use latest @ant-design/icons * fix: icon props in message
2019-08-13 14:07:17 +08:00
'aria-hidden': true,
2018-12-07 16:17:45 +08:00
focusable: 'false',
2018-08-15 17:21:02 +08:00
};
2018-08-30 22:53:24 +08:00
const fillTester = /-fill$/;
const outlineTester = /-o$/;
const twoToneTester = /-twotone$/;
export function getThemeFromTypeName(type: string) {
let result: string | null = null;
2018-08-30 22:53:24 +08:00
if (fillTester.test(type)) {
2018-12-07 16:17:45 +08:00
result = 'filled';
2018-08-30 22:53:24 +08:00
} else if (outlineTester.test(type)) {
2018-12-07 16:17:45 +08:00
result = 'outlined';
2018-08-30 22:53:24 +08:00
} else if (twoToneTester.test(type)) {
2018-12-07 16:17:45 +08:00
result = 'twoTone';
2018-08-30 22:53:24 +08:00
}
return result;
}
export function removeTypeTheme(type: string): string {
return type.replace(fillTester, '').replace(outlineTester, '').replace(twoToneTester, '');
2018-09-02 19:48:57 +08:00
}
export function withThemeSuffix(type: string, theme: string): string {
let result: string = type;
2018-12-07 16:17:45 +08:00
if (theme === 'filled') {
result += '-fill';
} else if (theme === 'outlined') {
result += '-o';
} else if (theme === 'twoTone') {
result += '-twotone';
2018-09-02 19:48:57 +08:00
} else {
warning(false, 'Icon', `This icon '${type}' has unknown theme '${theme}'`);
2018-08-30 22:53:24 +08:00
}
return result;
}