@use 'sass:map';
|
|
@use 'mixins/mixins' as *;
|
@use 'mixins/var' as *;
|
@use 'common/var' as *;
|
|
@include b(tag) {
|
@include set-component-css-var('tag', $tag);
|
}
|
|
$tag-border-width: 1px;
|
|
$tag-icon-span-gap: () !default;
|
$tag-icon-span-gap: map.merge(
|
(
|
'large': 8px,
|
'default': 6px,
|
'small': 4px,
|
),
|
$tag-icon-span-gap
|
);
|
|
@function returnVarList($var, $type: 'primary') {
|
$list: ('fill-color', 'blank');
|
@if $var != false {
|
$list: ('color', $type, $var);
|
}
|
@return $list;
|
}
|
// false mean --el-color-white
|
@mixin genTheme($backgroundColorWeight, $borderColorWeight, $hoverColorWeight) {
|
@include css-var-from-global(
|
('tag', 'bg-color'),
|
returnVarList($backgroundColorWeight)
|
);
|
@include css-var-from-global(
|
('tag', 'border-color'),
|
returnVarList($borderColorWeight)
|
);
|
@include css-var-from-global(
|
('tag', 'hover-color'),
|
returnVarList($hoverColorWeight)
|
);
|
|
@each $type in $types {
|
&.#{bem('tag', '', $type)} {
|
@include css-var-from-global(
|
('tag', 'bg-color'),
|
returnVarList($backgroundColorWeight, $type)
|
);
|
@include css-var-from-global(
|
('tag', 'border-color'),
|
returnVarList($borderColorWeight, $type)
|
);
|
@include css-var-from-global(
|
('tag', 'hover-color'),
|
returnVarList($hoverColorWeight, $type)
|
);
|
}
|
}
|
}
|
|
@include b(tag) {
|
@include genTheme('light-9', 'light-8', '');
|
|
@include css-var-from-global(('tag', 'text-color'), ('color', 'primary'));
|
@each $type in $types {
|
&.#{bem('tag', '', $type)} {
|
@include css-var-from-global(('tag', 'text-color'), ('color', $type));
|
}
|
}
|
|
@include when(hit) {
|
border-color: getCssVar('color', 'primary');
|
}
|
@include when(round) {
|
border-radius: getCssVar('tag', 'border-radius-rounded');
|
}
|
|
.#{$namespace}-tag__close {
|
color: getCssVar('tag', 'text-color');
|
&:hover {
|
color: getCssVar('color-white');
|
background-color: getCssVar('tag-hover-color');
|
}
|
}
|
|
background-color: getCssVar('tag-bg-color');
|
border-color: getCssVar('tag-border-color');
|
color: getCssVar('tag-text-color');
|
|
display: inline-flex;
|
justify-content: center;
|
align-items: center;
|
|
height: map.get($tag-height, 'default');
|
padding: 0 map.get($tag-padding, 'default') - $border-width;
|
|
font-size: getCssVar('tag-font-size');
|
line-height: 1;
|
border-width: $tag-border-width;
|
border-style: solid;
|
border-radius: getCssVar('tag-border-radius');
|
box-sizing: border-box;
|
white-space: nowrap;
|
|
@include set-css-var-value('icon-size', 14px);
|
|
$svg-margin-size: 1px;
|
.#{$namespace}-icon {
|
border-radius: 50%;
|
cursor: pointer;
|
|
font-size: calc(#{getCssVar('icon-size')} - #{$svg-margin-size * 2});
|
height: getCssVar('icon-size');
|
width: getCssVar('icon-size');
|
}
|
|
.#{$namespace}-tag__close {
|
margin-left: map.get($tag-icon-span-gap, 'default');
|
}
|
|
@include m(dark) {
|
@include genTheme('', '', 'light-3');
|
@include css-var-from-global(('tag', 'text-color'), ('color', 'white'));
|
|
@include css-var-from-global(('tag', 'text-color'), ('color', 'white'));
|
@each $type in $types {
|
&.#{bem('tag', '', $type)} {
|
@include css-var-from-global(('tag', 'text-color'), ('color', 'white'));
|
}
|
}
|
}
|
|
@include m(plain) {
|
@include genTheme(false, 'light-5', '');
|
@include css-var-from-global(('tag', 'bg-color'), ('fill-color', 'blank'));
|
}
|
|
&.is-closable {
|
padding-right: map.get($tag-icon-span-gap, 'default') - $border-width;
|
}
|
|
@each $size in (large, small) {
|
@include m($size) {
|
padding: 0 map.get($tag-padding, $size) - $tag-border-width;
|
height: map.get($tag-height, $size);
|
|
@include set-css-var-value(
|
'icon-size',
|
#{map.get($tag-icon-size, $size)}
|
);
|
|
.#{$namespace}-tag__close {
|
margin-left: map.get($tag-icon-span-gap, $size);
|
}
|
|
&.is-closable {
|
padding-right: map.get($tag-icon-span-gap, $size) - $border-width;
|
}
|
}
|
}
|
|
@include m(small) {
|
.#{$namespace}-icon-close {
|
transform: scale(0.8);
|
}
|
}
|
|
@each $type in $types {
|
&.#{bem('tag', '', $type)} {
|
@include when(hit) {
|
border-color: getCssVar('color', $type);
|
}
|
}
|
}
|
}
|