linkmore-design
Version:
🌈 🚀lm组件库。🚀
914 lines (783 loc) • 19.2 kB
text/less
@import '../../style/themes/index.less';
// 居中
.flex_center {
display: flex;
align-items: center;
justify-content: center;
}
.lm_filter_wrapper {
.lm_filter_container {
.lm_filter {
display: flex;
flex-wrap: wrap;
gap: @gap-base;
align-items: center;
font-size: @font-size-base;
// 自定义筛选
.lm_filter_custom {
display: inline-flex;
gap: @gap-base;
.lm_filter_custom_select_wrapper {
display: inline-flex;
border-collapse: separate;
border-spacing: 0;
.lm_filter_custom_select {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin-right: -1px;
}
.lm_filter_custom_addon {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
&.addon_highlight {
color: @primary-color;
}
}
}
.lm_filter_custom_select {
position: relative;
display: inline-flex;
align-items: center;
justify-content: space-between;
min-width: 100px;
max-width: 180px;
height: @height-base;
padding: 0 @padding-xs;
color: @text-color-secondary-deep;
line-height: 1;
border: @border-width-base @border-style-base @border-color-base;
border-radius: @border-radius-base;
cursor: pointer;
transition: 0.3s;
gap: 4px;
&.small {
height: @height-sm;
}
.lm_filter_custom_select_label {
overflow: hidden;
text-overflow: ellipsis;
span {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.lm_filter_custom_select_icon {
color: @text-color-secondary;
font-size: @font-size-base;
transition: 0.3s;
}
&:hover {
z-index: 1;
border-color: @primary-color-hover;
}
&.expand {
z-index: 1;
color: @text-color-secondary;
border-color: @primary-color-hover;
.lm_filter_custom_select_icon {
transform: rotateX(180deg);
}
}
}
.lm_filter_custom_line {
width: @border-width-base;
height: @height-base;
background-color: @border-color-split;
}
}
.lm_filter_search {
width: 140px;
max-width: 140px;
}
.lm_filter_complex {
display: inline-flex;
&:hover {
.addon_before {
color: @text-color-new;
}
}
}
&.lm_filter_small {
.lm_filter_custom_line {
height: @height-sm;
}
}
}
}
}
.lm_filter_basic_item {
display: inline-flex;
gap: 4px;
align-items: center;
height: @height-base;
padding: 0 @padding-xs;
font-size: @font-size-base;
line-height: 1;
vertical-align: middle;
border-radius: @border-radius-base;
cursor: pointer;
transition: 0.3s;
&.small {
height: @height-sm;
}
// 悬浮/展开/选中都展示背景色
&:hover,
&.expand,
&.active {
background-color: @background-color-base;
}
.filter_item_label {
flex: 0 0 auto;
}
.filter_item_value {
display: inline-flex;
gap: 4px;
align-items: center;
max-width: 552px;
overflow: hidden;
color: @text-color-secondary-deep;
transition: 0.3s;
span {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.filter_item_icon {
color: @text-color-secondary;
font-size: @font-size-lg;
transition: 0.3s;
&.addon_before {
color: @text-color-secondary-deep;
}
.icon_clear {
display: none;
}
}
&.expand {
.filter_item_icon.addon_after {
transform: rotateX(180deg);
}
}
&.active {
.filter_item_value {
color: @primary-color;
}
// 选中时不转动清除图标
.filter_item_icon.addon_after {
transform: rotateX(180deg);
}
// 高级筛选选中
&.lm_filter_complex_item {
.filter_item_icon,
.filter_item_label {
color: @primary-color;
}
}
// 存在选中项时,hover展示
&:hover {
.icon_down {
display: none;
}
.icon_clear {
display: inline-block;
}
}
}
}
// 下拉样式
.ant-dropdown {
// 解决级联选择的偏移不同问题
&.filter_dropdown_container_cascader > div {
transform: translateY(-4px);
}
&.filter_dropdown_container_date .ant-picker {
transform: translateY(-36px);
visibility: hidden;
}
& > .ant-picker {
transform: translateY(-36px);
visibility: hidden;
}
&.filter_dropdown_container_numberRange {
.filter_body_range {
display: flex;
align-items: center;
gap: @gap-base;
.number_range {
display: flex;
min-width: 128px;
align-items: center;
border: @border-width-base @border-style-base @input-border-color;
border-radius: @control-border-radius;
.ant-input-number-input {
text-align: center;
}
}
.ant-input-number-handler-wrap {
display: none;
}
}
.filter_body_footer {
padding-top: @dropdown-edge-child-vertical-padding;
text-align: right;
}
}
}
// 单选、多选、级联选择下拉菜单样式
.filter_dropdown {
display: flex;
flex-flow: column;
background-color: #fff;
box-shadow: 0 2px 6px @shadow-color;
/** last add */
position: relative;
margin: 0;
padding: @dropdown-edge-child-vertical-padding;
text-align: left;
list-style-type: none;
background-color: @dropdown-menu-bg;
background-clip: padding-box;
border-radius: @border-radius-middle;
outline: none;
box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.15);
overflow: hidden;
.filter_header {
min-height: 40px;
padding: @padding-xs 0;
.filter_header_operate {
display: flex;
align-items: center;
justify-content: space-between;
.filter_header_operate_checked {
display: inline-flex;
align-items: center;
}
.filter_reset {
color: @primary-color;
font-size: @font-size-base;
cursor: pointer;
}
.filter_tip {
color: @text-color-secondary;
font-size: @font-size-base;
}
}
.ant-input-group {
line-height: 1;
}
input {
font-size: @font-size-base;
}
.ant-input-search + .filter_header_operate,
.ant-input-affix-wrapper + .filter_header_operate,
& > :nth-child(2).filter_header_operate {
margin-top: @margin-xs;
}
}
.filter_body {
width: 100%;
.virtual_list {
min-width: 168px;
max-height: 224px;
overflow: auto;
&.filter_list {
.filter_item {
clear: both;
margin: 0;
padding: 5px 12px;
color: @text-color;
font-weight: normal;
font-size: @dropdown-font-size;
line-height: @dropdown-line-height;
cursor: pointer;
transition: all @animation-duration-slow;
border-radius: @border-radius-base;
margin-bottom: 4px;
}
}
}
.filter_item {
display: flex;
gap: @gap-base;
align-items: center;
justify-content: space-between;
min-width: 120px;
height: @height-base;
padding: 0 @padding-xs;
font-size: @font-size-base;
white-space: nowrap;
cursor: pointer;
transition: 0.3s;
&.last_item {
position: relative;
border-radius: @border-radius-base;
&::before {
content: '';
width: 100%;
position: absolute;
height: @border-width-base;
background-color: @border-color-base;
top: -6px;
left: 0;
}
// border-top: @border-width-base @border-style-base @border-color-base;
margin-top: @padding-xs;
}
.filter_item_content {
flex: auto;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&.lm-checkbox > span:last-child {
max-width: none;
overflow: hidden;
text-overflow: ellipsis;
}
}
.filter_item_operate {
display: inline-flex;
gap: 4px;
align-items: center;
.icon_hover {
font-size: @font-size-lg;
opacity: 0;
transition: 0.3s;
&:hover {
color: @primary-color;
}
}
}
&[disabled] {
display: none;
}
&.checked {
color: @text-color-new;
background-color: @primary-10;
}
&:hover,
&:focus {
background-color: @text-color-bg;
.filter_item_operate .icon_hover {
opacity: 1;
}
}
}
.filter_body_footer {
padding-top: @dropdown-edge-child-vertical-padding;
text-align: right;
}
}
& > :nth-child(2).filter_body {
border-top: @border-width-base @border-style-base @border-color-base;
padding-top: 4px;
}
.filter_footer {
display: flex;
align-items: center;
justify-content: space-between;
min-height: @height-base;
padding: 6px @padding-xs 0 @padding-xs;
font-size: @font-size-base;
letter-spacing: 1px;
border-top: @border-width-base @border-style-base @border-color-base;
margin-top: 4px;
button {
padding: 0 @padding-xs;
font-size: @font-size-base;
}
.footer_save {
color: @primary-color;
cursor: pointer;
transition: 0.3s;
}
.footer_clear {
color: @text-color-secondary;
cursor: pointer;
transition: 0.3s;
&:hover {
color: @text-color-new;
}
}
}
.filter_empty {
display: flex;
flex-flow: column;
gap: 4px;
align-items: center;
justify-content: center;
min-height: 40px;
margin: auto;
padding: @padding-md @padding-xs;
color: @text-color-secondary-new;
font-size: @font-size-base;
.filter_empty_text {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 20px;
color: @text-color-new;
}
}
// 组件的样式重置
.ant-checkbox-wrapper {
flex: 1;
align-items: center;
font-size: @font-size-base;
.ant-checkbox {
top: initial;
}
}
.ant-cascader-menu {
padding: 0;
}
}
// 抽屉组件样式
.ant-drawer {
.ant-drawer-header {
.ant-drawer-title {
font-size: @font-size-base;
}
}
&.lm_filter_drawer {
// 自定义筛选抽屉样式
.filter_drawer_group {
font-size: @font-size-base;
line-height: 1;
.ant-form-item {
margin-bottom: @margin-md;
}
.ant-form-item-label {
padding-bottom: 0;
label {
font-size: @font-size-base;
}
}
input {
font-size: @font-size-base;
}
// 单选按钮
.ant-radio-wrapper {
display: inline-flex;
align-items: center;
font-size: @font-size-base;
.ant-radio {
top: 0;
}
}
}
.filter_drawer_group_add {
padding: 0 0 @padding-xs;
.ant-btn {
max-width: initial;
font-size: @font-size-base;
}
}
.filter_drawer_group_list {
.filter_drawer_group_item {
margin-bottom: @margin-xs;
.item_box {
padding: @padding-md;
line-height: 1;
background: @background-color-base;
border: @border-width-base @border-style-base transparent;
border-radius: @border-radius-base;
cursor: pointer;
transition: 0.3s;
.item_header {
display: flex;
align-items: center;
justify-content: space-between;
.item_header_title {
font-weight: 500;
font-size: @font-size-base;
}
.item_header_icon {
color: @text-color-secondary-deep;
font-size: @font-size-lg;
transition: 0.3s;
&.icon_plus {
color: @text-color-new;
}
&:hover {
color: @text-color-new;
}
}
}
.item_tags {
display: flex;
flex-flow: wrap;
gap: @gap-base;
padding-top: @font-size-base;
.ant-tag {
margin: 0;
color: @text-color-new;
background-color: @background-color-base;
&.add_tags {
background: transparent;
border-style: dashed;
cursor: pointer;
&:hover {
color: @primary-color;
border-color: @primary-color;
}
}
}
.tag-input {
width: 78px;
margin-right: @margin-xs;
vertical-align: top;
}
}
}
}
}
// 高级筛选抽屉样式
.complex_filter_body {
.checked_group {
margin-bottom: @margin-lg;
}
.list_group {
.list_group_title {
font-weight: 500;
font-size: @font-size-base;
line-height: 1.25;
}
.list_group_search {
margin: @margin-md 0;
}
}
}
}
// 高级筛选二层抽屉
&.lm_det_drawer {
.checkbox_tag {
display: inline-flex;
align-items: center;
justify-content: center;
height: @height-sm;
padding: 0 @padding-xs;
color: @text-color-new;
font-size: @font-size-base;
background-color: @background-color-base;
border-radius: @border-radius-base;
cursor: pointer;
transition: 0.3s;
&:hover,
&.active {
color: @btn-primary-color;
background-color: @btn-primary-bg;
}
}
.ant-form-item {
margin-bottom: @margin-md;
.ant-form-item-label > label {
font-weight: 500;
}
}
.auto_height {
max-height: 418px;
overflow-y: auto;
}
// 单选按钮
.ant-radio-wrapper {
display: inline-flex;
align-items: center;
font-size: @font-size-base;
.ant-radio {
top: 0;
}
}
.ant-select {
width: 100%;
font-size: @font-size-base;
}
// 自定义表单样式
.custom_form {
display: flex;
flex-flow: column;
gap: 24px;
height: 100%;
.custom_label {
margin-bottom: @margin-md;
color: @text-color-new;
font-weight: 500;
font-size: @font-size-base;
}
// 自适应高度
.custom_full {
display: flex;
flex: 1;
flex-flow: column;
}
}
}
}
// 日期区间下拉框
.lm_filter_dropdown_picker {
padding: 0 ; // 解决下拉菜单偏移问题
.filter_picker_box {
display: flex;
.filter_picker_aside {
padding: 6px 0;
font-size: @font-size-base;
border-right: @border-width-base @border-style-base @border-color-split;
.filter_picker_aside_item {
display: flex;
align-items: center;
height: @height-base;
padding: 0 @padding-xs;
cursor: pointer;
transition: 0.3s;
&:hover,
&.active {
background-color: @primary-color-hover;
}
}
}
.filter_picker_main {
.filter_picker_header {
display: flex;
align-items: center;
justify-content: space-between;
min-height: 40px;
padding: 0 @padding-md;
line-height: 1;
border-bottom: @border-width-base @border-style-base @border-color-split;
.ant-radio-button-wrapper {
color: @text-color-secondary-new;
font-size: @font-size-base;
&:hover,
&.ant-radio-button-wrapper-checked {
color: @primary-color;
}
}
}
}
}
.ant-picker-range-arrow {
display: none;
}
}
// 级联选择弹窗
.ant-select-dropdown.ant-cascader-dropdown {
padding: 0;
}
// 下拉菜单共用样式
.common_dropdown {
position: relative;
text-align: left;
list-style-type: none;
border-radius: @border-radius-middle;
box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.15);
background-color: @dropdown-menu-bg;
background-clip: padding-box;
overflow: hidden;
outline: none;
}
.filter_dropdown_complex {
.common_dropdown();
display: flex;
flex-flow: column;
padding: @padding-sm @padding-lg 0;
min-width: 552px;
}
.complex_container {
.complex_header {
.flex_center();
justify-content: space-between;
gap: @gap-base;
padding-bottom: @padding-sm;
.header_title {
font-size: @font-size-lg;
font-weight: bold;
color: @text-color;
}
.header_condition_group {
.flex_center();
gap: @gap-base;
.condition_select {
width: 80px;
}
& > span {
color: @text-color-secondary-deep;
}
}
}
.complex_body {
.complex_list {
display: flex;
flex-flow: column;
gap: @gap-base;
margin-bottom: @margin-xs;
max-height: 600px;
overflow-y: auto;
.complex_list_item {
.flex_center();
gap: @gap-base;
overflow: hidden;
& > :nth-child(1) {
width: 140px;
}
& > :nth-child(2) {
width: 140px;
}
& > :nth-child(3) {
flex: 1 1 0;
}
}
}
}
.complex_footer {
.flex_center();
justify-content: flex-end;
gap: @gap-base;
padding: @padding-sm 0;
.anticon {
font-size: @font-size-lg;
}
}
}
.ant-modal-wrap {
&.custom_save_confirm {
.ant-modal-body {
.custom_save_modal_title {
font-size: @font-size-lg;
font-weight: bold;
line-height: @line-height-base;
color: @text-color;
}
.custom_save_modal_content {
font-size: @font-size-sm;
color: @text-color-secondary-deep;
margin-top: 10px;
}
}
.ant-modal-footer {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 @padding-lg @padding-lg;
.footer_link_text {
font-size: @font-size-base;
color: @primary-color;
cursor: pointer;
}
}
}
&.custom_save_modal {
.ant-modal-body {
padding: 0 @padding-lg;
.ant-form-item-label {
font-size: @font-size-base;
font-weight: 500;
}
.form_label {
font-size: @font-size-base;
font-weight: 500;
padding-bottom: @padding-xs;
}
}
}
}