UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

302 lines (300 loc) 10 kB
/* * ProgressIndicator component * */ /* * Utilities */ .eufemia-scope--10_104_0 .dnb-progress-indicator { --progress-indicator-timing: cubic-bezier(0.5, 0, 0.5, 0.99); --progress-indicator-circular-circle: 314.159265359%; --progress-indicator-circular-circle-offset--min: 314.159265359%; --progress-indicator-circular-circle-offset--max: 1%; --progress-indicator-circular-size: 2rem; --progress-indicator-circular-stroke-width: calc( var(--progress-indicator-circular-size) / 8 ); --progress-indicator-circular-background-color: grey; --progress-indicator-circular-bar-color: var(--color-black); --progress-indicator-linear-size: 0.5rem; --progress-indicator-linear-background-color: grey; --progress-indicator-linear-bar-color: var(--color-black); position: relative; display: inline-flex; align-items: center; } .eufemia-scope--10_104_0 .dnb-progress-indicator--vertical { flex-direction: column; } .eufemia-scope--10_104_0 .dnb-progress-indicator--horizontal { justify-content: center; } .eufemia-scope--10_104_0 .dnb-progress-indicator__label { display: inline-flex; } .eufemia-scope--10_104_0 .dnb-progress-indicator__label .dnb-p { align-self: center; } .eufemia-scope--10_104_0 .dnb-spacing .dnb-progress-indicator .dnb-p, .eufemia-scope--10_104_0 .dnb-spacing .dnb-progress-indicator .dnb-p:not([class*=dnb-space]) { margin: 0; } .eufemia-scope--10_104_0 .dnb-progress-indicator--horizontal .dnb-progress-indicator__label { padding-left: 1rem; } .eufemia-scope--10_104_0 .dnb-progress-indicator--horizontal.dnb-progress-indicator--small .dnb-progress-indicator__label { padding-left: 0.5rem; } .eufemia-scope--10_104_0 .dnb-progress-indicator--vertical .dnb-progress-indicator__label { padding-top: 0.5rem; } .eufemia-scope--10_104_0 .dnb-progress-indicator--inside .dnb-progress-indicator__label { position: absolute; width: 100%; justify-content: center; padding: var(--progress-indicator-circular-stroke-width); } .eufemia-scope--10_104_0 .dnb-progress-indicator--small { --progress-indicator-circular-size: 1rem; --progress-indicator-linear-size: 0.25rem; } .eufemia-scope--10_104_0 .dnb-progress-indicator--medium { --progress-indicator-circular-size: 1.5rem; --progress-indicator-linear-size: 1rem; } .eufemia-scope--10_104_0 .dnb-progress-indicator--large { --progress-indicator-circular-size: 3.5rem; --progress-indicator-linear-size: 1.5rem; } .eufemia-scope--10_104_0 .dnb-progress-indicator--huge { --progress-indicator-circular-size: 20rem; --progress-indicator-linear-size: 2rem; } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular { position: relative; width: var(--progress-indicator-circular-size); height: var(--progress-indicator-circular-size); transform: rotate(-90deg); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular svg { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; padding: calc(var(--progress-indicator-circular-stroke-width) / 2); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular svg:not(:root) { overflow: visible; } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__background-padding { display: block; height: 100%; padding: calc(var(--progress-indicator-circular-stroke-width) / 2); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__background { display: block; height: 100%; background-color: transparent; border-radius: 50%; } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line { animation-duration: 2s; animation-delay: 200ms; animation-timing-function: var(--progress-indicator-timing); animation-iteration-count: infinite; } @media (prefers-reduced-motion: reduce) { .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line { animation-duration: 0.01ms; animation-iteration-count: 1; } } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line.background { stroke-dashoffset: var(--progress-indicator-circular-circle-offset--max); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line.light { animation-name: progress-indicator-circular-line-light; stroke-dasharray: var(--progress-indicator-circular-circle), var(--progress-indicator-circular-circle); stroke-dashoffset: var(--progress-indicator-circular-circle-offset--max); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line.dark { animation-name: progress-indicator-circular-line-dark; stroke-dasharray: var(--progress-indicator-circular-circle), var(--progress-indicator-circular-circle); stroke-dashoffset: var(--progress-indicator-circular-circle-offset--min); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line.paused { animation-play-state: paused; } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular--has-progress-value .dnb-progress-indicator__circular__line.dark { transition: stroke-dashoffset 600ms var(--progress-indicator-timing); } @media (prefers-reduced-motion: reduce) { .eufemia-scope--10_104_0 .dnb-progress-indicator__circular--has-progress-value .dnb-progress-indicator__circular__line.dark { transition-duration: 0.01ms; } } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__circle { stroke-linecap: round; stroke-width: var(--progress-indicator-circular-stroke-width); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line.light .dnb-progress-indicator__circular__circle { stroke: var(--progress-indicator-circular-background-color); } .eufemia-scope--10_104_0 .dnb-progress-indicator__circular__line.dark .dnb-progress-indicator__circular__circle { stroke: var(--progress-indicator-circular-bar-color); stroke-width: calc(var(--progress-indicator-circular-stroke-width) - 0.5px); } .eufemia-scope--10_104_0 .dnb-progress-indicator__linear { background-color: var(--progress-indicator-linear-background-color); position: relative; overflow: hidden; width: 100%; will-change: transform; height: var(--progress-indicator-linear-size); border-radius: calc(var(--progress-indicator-linear-size) / 2); } .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar { background-color: var(--progress-indicator-linear-bar-color); width: 100%; position: absolute; left: 0; bottom: 0; top: 0; transform-origin: left; border-radius: inherit; } .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar-transition { transition: transform 0.2s linear; } @media (prefers-reduced-motion: reduce) { .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar-transition { transition-duration: 0.01ms; } } .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar1-animation { width: auto; animation: progress-indicator-linear-bar-1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } @media (prefers-reduced-motion: reduce) { .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar1-animation { animation-duration: 0.01ms; animation-iteration-count: 1; } } .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar2-animation { width: auto; animation: progress-indicator-linear-bar-2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite; } @media (prefers-reduced-motion: reduce) { .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar2-animation { animation-duration: 0.01ms; animation-iteration-count: 1; } } html[data-visual-test] .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar1-animation { left: -35%; right: 100%; animation-duration: 0ms; animation-iteration-count: 0; } html[data-visual-test] .eufemia-scope--10_104_0 .dnb-progress-indicator__linear__bar2-animation { left: -200%; right: 100%; animation-duration: 0ms; animation-iteration-count: 0; } .eufemia-scope--10_104_0 .dnb-progress-indicator, .eufemia-scope--10_104_0 .dnb-progress-indicator--visible { opacity: 0; animation: progress-indicator-fade-in 200ms ease-out 1 forwards; } .eufemia-scope--10_104_0 .dnb-progress-indicator--complete:not(.dnb-progress-indicator--visible) { animation: progress-indicator-fade-out 600ms ease-out 1 forwards; } @media (prefers-reduced-motion: reduce) { .eufemia-scope--10_104_0 .dnb-progress-indicator { animation-duration: 0.01ms !important; } } html[data-visual-test] .eufemia-scope--10_104_0 .dnb-progress-indicator { opacity: 1; animation-duration: 0ms; } .eufemia-scope--10_104_0 .dnb-progress-indicator--no-animation, .eufemia-scope--10_104_0 .dnb-progress-indicator--no-animation.dnb-progress-indicator--complete { animation-duration: 0ms; } html[data-visual-test] .eufemia-scope--10_104_0 .dnb-progress-indicator__bar-transition { transition: none; } .eufemia-scope--10_104_0 .dnb-progress-indicator--full-width { width: 100%; min-width: 1rem; } @keyframes progress-indicator-fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes progress-indicator-fade-out { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes progress-indicator-circular-line-light { 0% { stroke-dashoffset: var(--progress-indicator-circular-circle-offset--min); } 50% { stroke-dashoffset: var(--progress-indicator-circular-circle-offset--min); } 100% { stroke-dashoffset: var(--progress-indicator-circular-circle-offset--max); } } @keyframes progress-indicator-circular-line-dark { 0% { stroke-dashoffset: var(--progress-indicator-circular-circle-offset--min); } 50% { stroke-dashoffset: var(--progress-indicator-circular-circle-offset--max); } 100% { stroke-dashoffset: var(--progress-indicator-circular-circle-offset--max); } } @keyframes progress-indicator-linear-bar-1 { 0% { left: -35%; right: 100%; } 60% { left: 100%; right: -90%; } 100% { left: 100%; right: -90%; } } @keyframes progress-indicator-linear-bar-2 { 0% { left: -200%; right: 100%; } 60% { left: 107%; right: -8%; } 100% { left: 107%; right: -8%; } }