You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

140 lines
3.5 KiB

@use "sass:map";
@use "sass:list";
@use '../helpers/baseMixin.scss';
$sliderThemeList: (
(
name: "primary",
textColor: var(--vxe-ui-font-primary-color),
hoverColor: var(--vxe-ui-font-primary-lighten-color),
activeColor: var(--vxe-ui-font-primary-darken-color),
disabledColor: var(--vxe-ui-font-primary-disabled-color)
),
(
name: "success",
textColor: var(--vxe-ui-status-success-color),
hoverColor: var(--vxe-ui-status-success-lighten-color),
activeColor: var(--vxe-ui-status-success-darken-color),
disabledColor: var(--vxe-ui-status-success-disabled-color)
),
(
name: "info",
textColor: var(--vxe-ui-status-info-color),
hoverColor: var(--vxe-ui-status-info-lighten-color),
activeColor: var(--vxe-ui-status-info-darken-color),
disabledColor: var(--vxe-ui-status-info-disabled-color)
),
(
name: "warning",
textColor: var(--vxe-ui-status-warning-color),
hoverColor: var(--vxe-ui-status-warning-lighten-color),
activeColor: var(--vxe-ui-status-warning-darken-color),
disabledColor: var(--vxe-ui-status-warning-disabled-color)
),
(
name: "danger",
textColor: var(--vxe-ui-status-danger-color),
hoverColor: var(--vxe-ui-status-danger-lighten-color),
activeColor: var(--vxe-ui-status-danger-darken-color),
disabledColor: var(--vxe-ui-status-danger-disabled-color)
),
(
name: "error",
textColor: var(--vxe-ui-status-error-color),
hoverColor: var(--vxe-ui-status-error-lighten-color),
activeColor: var(--vxe-ui-status-error-darken-color),
disabledColor: var(--vxe-ui-status-error-disabled-color)
)
);
.vxe-slider {
position: relative;
display: block;
padding: 0.5em 1em;
@for $index from 0 to list.length($sliderThemeList) {
$item: list.nth($sliderThemeList, $index + 1);
&.theme--#{map.get($item, name)} {
.vxe-slider--bar-track {
background-color: map.get($item, textColor);
&:hover {
background-color: map.get($item, hoverColor);
}
&:hover {
background-color: map.get($item, activeColor);
}
}
.vxe-slider--bar-btn {
background-color: map.get($item, textColor);
}
}
}
&.is--disabled {
.vxe-slider--bar-btn {
cursor: not-allowed;
}
}
&:not(.is--disabled) {
.vxe-slider--bar-wrapper,
.vxe-slider--inner {
cursor: pointer;
}
.vxe-slider--bar-btn {
&:hover {
transform: scale(1.2);
}
&:active {
transform: scale(1.1);
}
}
}
&.is--readonly {
.vxe-slider--bar-wrapper,
.vxe-slider--inner {
cursor: default;
}
}
}
.vxe-slider--inner {
position: relative;
}
.vxe-slider--bar-wrapper {
background-color: #e4e7ed;
}
.vxe-slider--bar-track {
position: absolute;
left: 0;
top: 0;
z-index: 1;
background-color: var(--vxe-ui-font-primary-color);
&:hover {
background-color: var(--vxe-ui-font-primary-lighten-color);
}
&:active {
background-color: var(--vxe-ui-font-primary-darken-color);
}
}
.vxe-slider--bar-wrapper,
.vxe-slider--bar-track {
height: 0.3em;
border-radius: var(--vxe-ui-base-border-radius);
}
.vxe-slider--bar-btn {
position: absolute;
width: 0.9em;
height: 0.9em;
top: -0.3em;
border-radius: 50%;
border: 0.15em solid var(--vxe-ui-font-primary-color);
background-color: #fff;
cursor: pointer;
z-index: 1;
@include baseMixin.createAnimationTransition(transform, 0.1s);
}
.vxe-slider--start-btn {
left: -0.45em;
}
.vxe-slider--end-btn {
right: -0.45em;
}