standard-ui/components/dist/spinner.js
2022-09-13 04:11:11 +05:30

48 lines
1.0 KiB
JavaScript

const spinner = document.createElement('template');
spinner.innerHTML = `
<style>
*{
padding: 0;
margin: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.loader {
display: flex;
height: var(--size, 1.5rem);
width: var(--size, 1.5rem);
stroke-width: 8;
overflow: visible;
stroke: var(--accent-color, teal);
fill: none;
stroke-dashoffset: 180;
stroke-dasharray: 180;
animation: load 2s infinite, spin 1s linear infinite;
}
@keyframes load {
50% {
stroke-dashoffset: 0;
}
100%{
stroke-dashoffset: -180;
}
}
@keyframes spin {
100% {
transform: rotate(360deg);
}
}
</style>
<svg viewBox="0 0 64 64" class="loader"><circle cx="32" cy="32" r="32" /></svg>
`;
class SpinnerLoader extends HTMLElement {
constructor() {
super();
this.attachShadow({
mode: 'open'
}).append(spinner.content.cloneNode(true));
}
}
window.customElements.define('sm-spinner', SpinnerLoader);