@taiga-ui/kit
Version:
Taiga UI Angular main components kit
118 lines (96 loc) • 2.71 kB
text/less
@import '@taiga-ui/core/styles/taiga-ui-local.less';
/**
* @name ProgressBar
* @selector [tuiProgressBar]
*
* @description
* A stylized native progress element
*
* @attributes
* data-size — size (default: 'm') ('xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' )
*
* @example
* <progress tuiProgressBar value="33"></progress>
*/
.clearProgress() {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border: none;
}
/* used to style inner value bar */
.progressValue(@ruleset) {
&::-webkit-progress-value {
@ruleset(); // Chromium Edge | Chrome | Opera | Safari
}
&::-moz-progress-bar {
@ruleset(); // Mozilla
}
}
/*
* Edge and IE animate the progress bar right out of the box
* Chrome | Opera | Safari animation is controlled by its mixins
* No possibility for firefox animation (https://snook.ca/archives/html_and_css/animating-progress)
*/
.progressAnimation() {
&::-webkit-progress-value {
transition: width var(--tui-duration) linear;
}
}
@keyframes tuiIndeterminateAnimation {
50% {
background-position: left;
}
}
[tuiProgressBar] {
@track-color: var(--tui-background-neutral-1);
@progress-color: var(--tui-progress-color, currentColor);
.clearProgress();
.progressAnimation();
.progressValue({ background: @progress-color; border-radius: inherit });
--t-height: 0.75rem;
display: block;
inline-size: 100%;
block-size: var(--t-height);
color: var(--tui-background-accent-1);
background: @track-color;
clip-path: inset(0 0.5px round var(--tui-radius-m)); // 0.5px is a hack to prevent jagged edges on low dpi screens
overflow: hidden;
border-radius: 1rem;
flex-shrink: 0;
&[data-size='xxs'] {
--t-height: 0.125rem;
}
&[data-size='xs'] {
--t-height: 0.25rem;
}
&[data-size='s'] {
--t-height: 0.5rem;
}
&[data-size='l'] {
--t-height: 1rem;
}
&[data-size='xl'] {
--t-height: 1.25rem;
}
&[data-size='xxl'] {
--t-height: 1.5rem;
}
&:indeterminate {
.progressValue({ background: transparent });
background: linear-gradient(to right, @track-color 0 45%, @progress-color 45% 55%, @track-color 55% 100%) right;
background-size: 225%;
animation: tuiIndeterminateAnimation 3s infinite ease-in-out;
}
&::-webkit-progress-inner-element {
border-radius: inherit;
}
&::-webkit-progress-bar {
background: transparent;
border-radius: inherit;
}
label[tuiProgressLabel] &:not(:first-child) {
.fullsize();
background: transparent;
}
}