Summary
Spinners are used for showing a system process of unknown length going on that ends with the system displaying results to the user.
Status
API status:
general
Included in AUI core?
Not in core
You must explicitly require the web resource key.
Web resource key:
com.atlassian.auiplugin:aui-spinner
AMD Module key:
N/A
Experimental API:
5.1
General API:
5.8
Web Component API:
7.7
Contents
Hide
Examples
Normal spinner
AUI's spinner is just an HTML element. Add it to wherever you need to indicate progress is being made.
Edit icon Edit in codepen
Split more
Example
Small spinner
Medium spinner
Large spinner
Small spinner
Medium spinner
Large spinner
Spinners are integrated in to AUI buttons for you.
Edit icon Edit in codepen
Split more
Example
Do Something
Do Something
Do Something
Do Something
AJS.$(document).on('click', '#button-spin-1, #button-spin-2', function() {
var that = this;
if (!that.isBusy()) {
that.busy();
setTimeout(function() {
that.idle();
}, 2000);
}
});
Spinners in toggles
Spinners are integrated in to AUI toggles .
Edit icon Edit in codepen
Split more
Example
var toggle = document.getElementById('wifi-toggle');
toggle.addEventListener('change', function(e) {
var isChecked = toggle.checked; // new value of the toggle
toggle.busy = true;
$.post('set/my/variable', { value: isChecked })
.done(function () {
console.log('success');
})
.fail(function () {
toggle.checked = !isChecked;
console.error('display an error message');
})
.always(function () {
toggle.busy = false;
});
});
// create fake server response
var url = "set/my/variable";
var server = sinon.fakeServer.create();
server.autoRespond = true;
server.autoRespondAfter = 2000;
server.respondWith('POST', url, [
200,
{ 'Content-Type': 'application/json' },
''
]);
Positioning spinners inside other components
As a discrete HTML element, spinners can be positioned by adding CSS to the spinner's parent element.
Edit icon Edit in codepen
Split more
Example
#search-area-example {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
#search-area-example aui-spinner {
margin: 1em;
}
.custom-card-style {
border-radius: 3px;
box-shadow:
0 1px 1px rgba(9, 30, 66, 0.25),
0 0 1px 0 rgba(9, 30, 66, 0.31);
margin: 0 auto;
padding: 10px;
width: 20em;
}
Edit icon Edit in codepen
Split more
Example
#custom-spinner-example .aui-quicksearch input {
width: 20em;
}
#custom-spinner-example .aui-quicksearch.custom-quicksearch-indicator::after {
display: none;
}
#custom-spinner-example .aui-quicksearch.custom-quicksearch-indicator aui-spinner {
color: inherit;
position: absolute;
right: 20px;
}
(function() {
var spinner = document.createElement('aui-spinner');
spinner.setAttribute('size', 'small');
function startSearching() {
var $container = AJS.$('.aui-quicksearch');
$container.addClass('custom-quicksearch-indicator');
$container.append(spinner);
return function stop() {
$container.removeClass('custom-quicksearch-indicator');
$container.find(spinner).remove();
}
}
var searchTimeout = null;
AJS.$(document).on('input', '#quicksearchid', function(e) {
var stopSearching = startSearching();
clearTimeout(searchTimeout);
searchTimeout = setTimeout(stopSearching, 2000);
});
AJS.$(document).on('submit', '.aui-quicksearch', function(e) {
e.preventDefault();
});
}());
HTML API
<aui-spinner>
Name
Attribute
Property
Type
Default
Description
size
is an attribute
is a property
Enum
medium
An Enum which provides size of the spinner.
Possible values are: small
(20px), medium
(30px) and large
(50px).
filled
Deprecated
is an attribute
is a property
Boolean
false
A Boolean which changes behavior of the spinner.
When present, the spinner element will be placed in the middle of the parent element and have a width and height of zero.
JavaScript API Deprecated
There are two jQuery functions available you can call on an element to add and remove a filled spinner.
Edit icon Edit in codepen
Split more
Example
Do Something
Do Something
AJS.$(function() {
var spinning = false;
AJS.$('#spinner-trigger').on('click', function() {
if (!spinning) {
AJS.$(this).text('Stop Spinning!');
AJS.$('.button-spinner').spin();
spinning = true;
} else {
AJS.$(this).text('Do Something');
AJS.$('.button-spinner').spinStop();
spinning = false;
}
});
});
Calling AJS.$(element).spin()
will append the following spinner to element
:
Calling AJS.$(element).spinStop()
will remove the spinner element.