@chief-editor/ui
Version:
UI Component for chief editor
397 lines (335 loc) • 10.4 kB
text/less
@import "./var.less";
@import "./mixin.less";
@collapse-menu-width: 64px;
@collapse-item-width: 160px;
@item-height: 24px;
@light-bg: @color-neutral1;
@light-item-color: @color-text-grey1;
@light-item-hover-color: @color-primary6;
@light-item-hover-bg: @color-primary6;
@light-item-active-color: @color-primary6;
@light-item-active-bg: @color-primary1;
@light-item-disabled-color: @color-primary6;
@light-item-disabled-bg: @color-primary1;
@light-submenu-color: @color-text-grey1;
@light-submenu-bg: @color-primary6;
@light-submenu-hover-color: @color-primary6;
@light-submenu-hover-bg: @color-primary6;
@light-submenu-active-color: @color-primary6;
@light-submenu-active-bg: @color-primary6;
@light-submenu-opened-color: @color-primary6;
@light-submenu-opened-bg: @color-primary6;
@light-item-group-color: @color-text-grey3;
@light-submenu-open-icon-color: @color-text-grey3;
@light-submenu-line-color: @color-neutral5;
@dark-bg: @color-neutral4;
// menu-item 字体颜色
@dark-item-color: @color-text-grey1;
// menu-item hover颜色
@dark-item-hover-color: @color-text-grey1;
@dark-item-hover-bg: @color-background-grey2;
// menu-item active颜色
@dark-item-active-color: @color-text-grey1;
@dark-item-active-bg: @color-background-grey2;
// menu-item disabled颜色
@dark-item-disabled-color: @color-text-grey2;
@dark-item-disabled-bg: @color-neutral4;
// menu-submenu 颜色
@dark-submenu-color: @color-text-grey1;
// submenu 标题 hover
@dark-submenu-hover-color: @color-text-grey1;
@dark-submenu-hover-bg: @color-background-grey2;
// submenu 标题 active、opened
@dark-submenu-active-color: @color-text-grey1;
@dark-submenu-active-bg: @color-background-grey2;
// 覆盖颜色暂时开启
@dark-submenu-opened-color: @color-text-grey1;
@dark-submenu-opened-bg: @color-background-grey2;
@dark-item-group-color: @color-text-grey3;
@dark-submenu-open-icon-color: @color-text-grey4;
@dark-submenu-line-color: @color-neutral5;
.ellipsis {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.menuThemeStyle(@theme) {
.@{prefixCls}-submenu-popover {
&&-@{theme} {
background-color: ~"@{@{theme}-bg}";
border-radius: 1px;
}
}
.@{prefixCls}-menu-@{theme},
.@{prefixCls}-submenu-popover-@{theme} {
padding: 4px 0;
border-radius: 1px;
background-color: ~"@{@{theme}-bg}";
.transition();
.@{prefixCls}-submenu {
&-header {
color: ~"@{@{theme}-submenu-color}";
background-color: ~"@{@{theme}-bg}";
.transition();
&-open-icon {
color: ~"@{@{theme}-submenu-open-icon-color}";
.transition();
}
&:hover {
background-color: ~"@{@{theme}-submenu-hover-bg}";
color: ~"@{@{theme}-submenu-hover-color}";
&,
.@{prefixCls}-submenu-header-open-icon {
.transition();
}
}
&-active {
background-color: ~"@{@{theme}-submenu-active-bg}";
color: ~"@{@{theme}-submenu-active-color}";
&,
.@{prefixCls}-submenu-header-open-icon {
.transition();
}
}
}
&-content {
&-line {
background-color: ~"@{@{theme}-submenu-line-color}";
.transition();
}
}
&-opened {
.@{prefixCls}-submenu-header {
background-color: ~"@{@{theme}-submenu-opened-bg}";
color: ~"@{@{theme}-submenu-opened-color}";
}
}
}
.@{prefixCls}-item-group {
&-header {
color: ~"@{@{theme}-item-group-color}";
.transition();
}
}
.@{prefixCls}-menu-item {
&,
& a {
color: ~"@{@{theme}-item-color}";
background-color: ~"@{@{theme}-bg}";
.transition();
&:hover {
background-color: ~"@{@{theme}-item-hover-bg}";
color: ~"@{@{theme}-item-hover-color}";
}
}
&-active {
&,
& a {
background: ~"@{@{theme}-item-active-bg}";
color: ~"@{@{theme}-item-active-color}";
.transition();
}
}
&-disabled {
&,
& a {
background: ~"@{@{theme}-item-disabled-bg}" ;
color: ~"@{@{theme}-item-disabled-color}" ;
.transition();
cursor: not-allowed;
}
}
}
.@{prefixCls}-menu-divider {
padding: 4px 0;
}
}
}
.menuThemeStyle(e("dark"));
.menuThemeStyle(e("light"));
.@{prefixCls}-menu-line-icon {
flex: none;
display: inline-block;
width: 16px;
height: 16px;
margin-right: 8px;
}
.@{prefixCls}-menu-line-title {
flex: auto;
.ellipsis;
}
.@{prefixCls}-menu {
display: flex;
flex-direction: column;
font-size: 12px;
box-sizing: border-box;
}
.@{prefixCls}-submenu {
&-content {
overflow: hidden;
max-height: 9999px;
@transition-value:
opacity ease-out @motion-duration-b @motion-duration-b,
max-height linear 0s 34ms;
.property-prefix(transition, @transition-value);
&-hide {
opacity: 0;
max-height: 0;
@transition-value:
opacity ease-in @motion-duration-b,
max-height linear 0s (@motion-duration-b * 2 - 34ms);
.property-prefix(transition, @transition-value);
}
}
&-header {
display: flex;
height: @item-height;
line-height: @item-height;
cursor: pointer;
.@{prefixCls}-menu-line-title {
font-weight: 600;
}
&-open-icon {
flex: none;
user-select: none;
font-size: 12px;
}
}
}
.@{prefixCls}-item-group {
width: 100%;
&-header {
height: @item-height;
line-height: @item-height;
}
}
.@{prefixCls}-menu-item {
position: relative;
width: 100%;
height: @item-height;
line-height: @item-height;
cursor: pointer;
.ellipsis;
&-1 {
.@{prefixCls}-menu-line-title {
font-weight: 600;
}
}
a {
&:before {
content: '';
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: transparent;
}
}
}
.@{prefixCls}-menu-uncollapse {
width: 160px;
@transition-value:
all ease-in-out @motion-duration-a,
width ease-out @motion-duration-b;
.property-prefix(transition, @transition-value);
.@{prefixCls}-menu-line-title,
.@{prefixCls}-submenu-header-open-icon {
max-width: 100%;
@transition-value:
all ease-in-out @motion-duration-a,
opacity ease-out @motion-duration-b @motion-duration-b,
max-width ease-out @motion-duration-b;
.property-prefix(transition, @transition-value);
}
.@{prefixCls}-submenu {
&-line {
.@{prefixCls}-submenu-header {
&-open-icon {
margin-right: 8px;
}
}
&:not(:last-of-type) {
.@{prefixCls}-submenu-content {
position: relative;
&-line {
position: absolute;
top: 8px;
bottom: 8px;
width: 1px;
}
}
}
}
&-header {
display: flex;
height: @item-height;
line-height: @item-height;
cursor: pointer;
.@{prefixCls}-menu-line-title {
font-weight: 600;
}
&-open-icon {
flex: none;
}
}
}
.@{prefixCls}-submenu-header,
.@{prefixCls}-item-group-header,
.@{prefixCls}-menu-item {
padding-right: 16px;
}
.@{prefixCls}-submenu-header,
.@{prefixCls}-menu-item {
@transition-value:
all ease-in-out @motion-duration-a,
padding linear 0s;
.property-prefix(transition, @transition-value);
}
}
.@{prefixCls}-menu-collapse {
width: @collapse-menu-width;
@transition-value:
all ease-in-out @motion-duration-a,
width ease-out @motion-duration-b @motion-duration-b;
.property-prefix(transition, @transition-value);
.@{prefixCls}-menu-line-title,
.@{prefixCls}-submenu-header-open-icon {
opacity: 0;
max-width: 0;
@transition-value:
all ease-in-out @motion-duration-a,
opacity ease-out @motion-duration-b,
max-width ease-out (@motion-duration-b * 0.4) (@motion-duration-b * 1.6);
.property-prefix(transition, @transition-value);
}
.@{prefixCls}-menu-line-icon {
margin-right: 0;
.property-prefix(transition, margin-right linear 0s @motion-duration-b);
}
.@{prefixCls}-submenu-header,
.@{prefixCls}-menu-item {
display: flex;
justify-content: center;
padding: 0 ;
height: @item-height;
line-height: @item-height;
@transition-value:
all ease-in-out @motion-duration-a,
padding linear 0s (@motion-duration-b * 2);
.property-prefix(transition, @transition-value);
}
}
.@{prefixCls}-submenu-popover {
width: @collapse-item-width;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.15);
.@{prefixCls}-popover-inner {
font-size: 12px;
border-radius: 0;
}
.@{prefixCls}-submenu-header,
.@{prefixCls}-item-group-header,
.@{prefixCls}-menu-item {
padding-right: 16px;
}
}