ant-design/components/tree-select/style/index.ts

90 lines
2.8 KiB
TypeScript
Raw Normal View History

import { unit } from '@ant-design/cssinjs';
import { getStyle as getCheckboxStyle } from '../../checkbox/style';
import type { AliasToken, FullToken, GenerateStyle, GetDefaultToken } from '../../theme/internal';
import { genStyleHooks, mergeToken } from '../../theme/internal';
import type { CSSUtil } from '../../theme/util/genComponentStyleHook';
2023-08-18 10:23:57 +08:00
import type { TreeSharedToken } from '../../tree/style';
import { genTreeStyle, initComponentToken } from '../../tree/style';
export interface ComponentToken extends TreeSharedToken {}
interface TreeSelectToken extends FullToken<'TreeSelect'> {
treePrefixCls: string;
}
// =============================== Base ===============================
const genBaseStyle: GenerateStyle<TreeSelectToken> = (token) => {
2022-06-21 11:06:06 +08:00
const { componentCls, treePrefixCls, colorBgElevated } = token;
const treeCls = `.${treePrefixCls}`;
return [
// ======================================================
// == Dropdown ==
// ======================================================
{
[`${componentCls}-dropdown`]: [
{
padding: `${unit(token.paddingXS)} ${unit(token.calc(token.paddingXS).div(2).equal())}`,
},
// ====================== Tree ======================
2022-06-21 11:06:06 +08:00
genTreeStyle(
treePrefixCls,
mergeToken<AliasToken & TreeSharedToken & CSSUtil>(token, {
colorBgContainer: colorBgElevated,
}),
2022-06-21 11:06:06 +08:00
),
{
[treeCls]: {
borderRadius: 0,
[`${treeCls}-list-holder-inner`]: {
alignItems: 'stretch',
[`${treeCls}-treenode`]: {
[`${treeCls}-node-content-wrapper`]: {
flex: 'auto',
},
},
},
},
},
// ==================== Checkbox ====================
getCheckboxStyle(`${treePrefixCls}-checkbox`, token),
// ====================== RTL =======================
{
'&-rtl': {
direction: 'rtl',
[`${treeCls}-switcher${treeCls}-switcher_close`]: {
[`${treeCls}-switcher-icon svg`]: {
transform: 'rotate(90deg)',
},
},
},
},
],
},
];
};
export const prepareComponentToken: GetDefaultToken<'TreeSelect'> = initComponentToken;
// ============================== Export ==============================
export default function useTreeSelectStyle(
prefixCls: string,
treePrefixCls: string,
rootCls: string,
) {
return genStyleHooks(
2023-08-18 10:23:57 +08:00
'TreeSelect',
(token) => {
const treeSelectToken = mergeToken<TreeSelectToken>(token, { treePrefixCls });
return [genBaseStyle(treeSelectToken)];
},
initComponentToken,
)(prefixCls, rootCls);
}