Browse Source
* feat: add override token for breadcrumb * refactor: cssinjs for Breadcrumb * fix: hover color Co-authored-by: MadCcc <1075746765@qq.com>pull/35702/head
Peach
3 years ago
committed by
GitHub
4 changed files with 172 additions and 71 deletions
@ -1,64 +1,64 @@ |
|||
@import '../../style/themes/index'; |
|||
@import '../../style/mixins/index'; |
|||
|
|||
@breadcrumb-prefix-cls: ~'@{ant-prefix}-breadcrumb'; |
|||
|
|||
.@{breadcrumb-prefix-cls} { |
|||
.reset-component(); |
|||
|
|||
color: @breadcrumb-base-color; |
|||
font-size: @breadcrumb-font-size; |
|||
|
|||
.@{iconfont-css-prefix} { |
|||
font-size: @breadcrumb-icon-font-size; |
|||
} |
|||
|
|||
ol { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
margin: 0; |
|||
padding: 0; |
|||
list-style: none; |
|||
} |
|||
|
|||
a { |
|||
color: @breadcrumb-link-color; |
|||
transition: color 0.3s; |
|||
|
|||
&:hover { |
|||
color: @breadcrumb-link-color-hover; |
|||
} |
|||
} |
|||
|
|||
li:last-child { |
|||
color: @breadcrumb-last-item-color; |
|||
|
|||
a { |
|||
color: @breadcrumb-last-item-color; |
|||
} |
|||
} |
|||
|
|||
li:last-child &-separator { |
|||
display: none; |
|||
} |
|||
|
|||
&-separator { |
|||
margin: @breadcrumb-separator-margin; |
|||
color: @breadcrumb-separator-color; |
|||
} |
|||
|
|||
&-link { |
|||
> .@{iconfont-css-prefix} + span, |
|||
> .@{iconfont-css-prefix} + a { |
|||
margin-left: 4px; |
|||
} |
|||
} |
|||
|
|||
&-overlay-link { |
|||
> .@{iconfont-css-prefix} { |
|||
margin-left: 4px; |
|||
} |
|||
} |
|||
} |
|||
|
|||
@import './rtl'; |
|||
// @import '../../style/themes/index'; |
|||
// @import '../../style/mixins/index'; |
|||
// |
|||
// @breadcrumb-prefix-cls: ~'@{ant-prefix}-breadcrumb'; |
|||
// |
|||
// .@{breadcrumb-prefix-cls} { |
|||
// .reset-component(); |
|||
// |
|||
// color: @breadcrumb-base-color; |
|||
// font-size: @breadcrumb-font-size; |
|||
// |
|||
// .@{iconfont-css-prefix} { |
|||
// font-size: @breadcrumb-icon-font-size; |
|||
// } |
|||
// |
|||
// ol { |
|||
// display: flex; |
|||
// flex-wrap: wrap; |
|||
// margin: 0; |
|||
// padding: 0; |
|||
// list-style: none; |
|||
// } |
|||
// |
|||
// a { |
|||
// color: @breadcrumb-link-color; |
|||
// transition: color 0.3s; |
|||
// |
|||
// &:hover { |
|||
// color: @breadcrumb-link-color-hover; |
|||
// } |
|||
// } |
|||
// |
|||
// li:last-child { |
|||
// color: @breadcrumb-last-item-color; |
|||
// |
|||
// a { |
|||
// color: @breadcrumb-last-item-color; |
|||
// } |
|||
// } |
|||
// |
|||
// li:last-child &-separator { |
|||
// display: none; |
|||
// } |
|||
// |
|||
// &-separator { |
|||
// margin: @breadcrumb-separator-margin; |
|||
// color: @breadcrumb-separator-color; |
|||
// } |
|||
// |
|||
// &-link { |
|||
// > .@{iconfont-css-prefix} + span, |
|||
// > .@{iconfont-css-prefix} + a { |
|||
// margin-left: 4px; |
|||
// } |
|||
// } |
|||
// |
|||
// &-overlay-link { |
|||
// > .@{iconfont-css-prefix} { |
|||
// margin-left: 4px; |
|||
// } |
|||
// } |
|||
// } |
|||
// |
|||
// @import './rtl'; |
|||
|
@ -1,6 +1,102 @@ |
|||
import '../../style/index.less'; |
|||
import './index.less'; |
|||
// deps-lint-skip-all
|
|||
import type { CSSObject } from '@ant-design/cssinjs'; |
|||
import type { GenerateStyle, FullToken } from '../../_util/theme'; |
|||
import { resetComponent, genComponentStyleHook, mergeToken } from '../../_util/theme'; |
|||
|
|||
// style dependencies
|
|||
import '../../menu/style'; |
|||
import '../../dropdown/style'; |
|||
interface BreadcrumbToken extends FullToken<'Breadcrumb'> { |
|||
breadcrumbBaseColor: string; |
|||
breadcrumbFontSize: number; |
|||
breadcrumbIconFontSize: number; |
|||
breadcrumbLinkColor: string; |
|||
breadcrumbLinkColorHover: string; |
|||
breadcrumbLastItemColor: string; |
|||
breadcrumbSeparatorMargin: number; |
|||
breadcrumbSeparatorColor: string; |
|||
} |
|||
|
|||
const genBreadcrumbStyle: GenerateStyle<BreadcrumbToken, CSSObject> = token => { |
|||
const { componentCls, iconCls } = token; |
|||
|
|||
return { |
|||
[componentCls]: { |
|||
...resetComponent(token), |
|||
color: token.breadcrumbBaseColor, |
|||
fontSize: token.breadcrumbFontSize, |
|||
|
|||
[iconCls]: { |
|||
fontSize: token.breadcrumbIconFontSize, |
|||
}, |
|||
|
|||
ol: { |
|||
display: 'flex', |
|||
flexWrap: 'wrap', |
|||
margin: 0, |
|||
padding: 0, |
|||
listStyle: 'none', |
|||
}, |
|||
|
|||
a: { |
|||
color: token.breadcrumbLinkColor, |
|||
transition: `color ${token.motionDurationSlow}`, |
|||
|
|||
'&:hover': { |
|||
color: token.breadcrumbLinkColorHover, |
|||
}, |
|||
}, |
|||
|
|||
'li:last-child': { |
|||
color: token.breadcrumbLastItemColor, |
|||
|
|||
a: { |
|||
color: token.breadcrumbLastItemColor, |
|||
}, |
|||
}, |
|||
|
|||
[`li:last-child ${componentCls}-separator`]: { |
|||
display: 'none', |
|||
}, |
|||
|
|||
[`${componentCls}-separator`]: { |
|||
marginInline: token.breadcrumbSeparatorMargin, |
|||
color: token.breadcrumbSeparatorColor, |
|||
}, |
|||
|
|||
[`${componentCls}-link`]: { |
|||
[` |
|||
> ${iconCls} + span, |
|||
> ${iconCls} + a |
|||
`]: {
|
|||
marginInlineStart: token.marginXXS, |
|||
}, |
|||
}, |
|||
|
|||
[`${componentCls}-overlay-link`]: { |
|||
[`> ${iconCls}`]: { |
|||
marginInlineStart: token.marginXXS, |
|||
}, |
|||
}, |
|||
|
|||
// rtl style
|
|||
[`&${token.componentCls}-rtl`]: { |
|||
direction: 'rtl', |
|||
}, |
|||
}, |
|||
}; |
|||
}; |
|||
|
|||
// ============================== Export ==============================
|
|||
export default genComponentStyleHook('Breadcrumb', token => { |
|||
const BreadcrumbToken = mergeToken<BreadcrumbToken>(token, { |
|||
// FIXME: missing token
|
|||
breadcrumbBaseColor: token.colorTextSecondary, |
|||
breadcrumbFontSize: token.fontSizeBase, |
|||
breadcrumbIconFontSize: token.fontSizeBase, |
|||
breadcrumbLinkColor: token.colorTextSecondary, |
|||
breadcrumbLinkColorHover: token.colorText, |
|||
breadcrumbLastItemColor: token.colorText, |
|||
breadcrumbSeparatorMargin: token.paddingXS, |
|||
breadcrumbSeparatorColor: token.colorTextSecondary, |
|||
}); |
|||
|
|||
return [genBreadcrumbStyle(BreadcrumbToken)]; |
|||
}); |
|||
|
Loading…
Reference in new issue