diff options
Diffstat (limited to 'app/assets/stylesheets/utilities/_loading.scss')
-rw-r--r-- | app/assets/stylesheets/utilities/_loading.scss | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/app/assets/stylesheets/utilities/_loading.scss b/app/assets/stylesheets/utilities/_loading.scss new file mode 100644 index 0000000..c6f3afe --- /dev/null +++ b/app/assets/stylesheets/utilities/_loading.scss @@ -0,0 +1,58 @@ +/** + * Loading ([aria-busy=true]) + */ + + +// Cursor +[aria-busy="true"] { + cursor: progress; +} + +// Everyting except form elements +[aria-busy="true"]:not(input, select, textarea, html) { + + &::before { + display: inline-block; + width: 1em; + height: 1em; + border: 0.1875em solid currentColor; + border-radius: 1em; + border-right-color: transparent; + content: ""; + vertical-align: text-bottom; + vertical-align: -.125em; // Visual alignment + animation: spinner 0.75s linear infinite; + opacity: var(--loading-spinner-opacity); + } + + &:not(:empty) { + &::before { + margin-right: calc(var(--spacing) * 0.5); + margin-left: 0; + margin-inline-start: 0; + margin-inline-end: calc(var(--spacing) * 0.5); + } + } + + &:empty { + text-align: center; + } +} + +// Buttons and links +button, +input[type="submit"], +input[type="button"], +input[type="reset"], +a { + &[aria-busy="true"] { + pointer-events: none; + } +} + +// Animation: rotate +@keyframes spinner { + to { + transform: rotate(360deg); + } +} |