This is the header
This is the content
There are a variety of different methods used for adding spinners which depend on the elements used and their appropriate ARIA status.
<!-- Normal button start -->
<button class="button spinner" data-show-busy="true" disabled>Normal button</button>
<!-- Normal button end -->
See full-page example.
For content that is dynamically loaded, use a live-region. Set aria-busy="false"
when it has finished loading.
Aliquam nisi nihil unde praesentium quia et tenetur quae corrupti similique error. est iusto asperiores cum est aspernatur. eos asperiores non mollitia sed adipisci aut temporibus ad odit voluptas. cupiditate est numquam odit animi blanditiis eum dignissimos quas odio ut aperiam id est. ea in qui est adipisci esse error ea velit tempore dolorum.
Qui ea consequuntur aut est aut in iste eaque voluptate dolorum natus rem id. voluptatem quasi incidunt aperiam earum ipsa sunt a inventore. aut ipsam officiis veniam in est omnis et totam. totam repellat incidunt error vero omnis ut ut qui nesciunt sapiente quo quia ipsa. porro perferendis aut deserunt at atque.
Impedit autem est animi repellat voluptatem voluptas voluptatem dolor itaque mollitia molestias recusandae et ea. repellendus ad aut laboriosam harum. sed aut deleniti ratione eum quam placeat reprehenderit praesentium eaque nihil ullam et. quasi natus vero accusantium ratione animi quidem asperiores sint eligendi magnam ut molestias. quae modi dolorum et.
<div class="live-region" aria-busy="true" aria-live="polite">
<p>Non dolore voluptas eos maiores nihil.</p>
</div>
For user-interaction, the pattern is as follows:
disabled
and the live region is set to aria-busy="true"
Iste veritatis nihil quia suscipit amet neque hic qui. ea in aliquid est voluptatum minus dolorum non sit quod. natus totam perspiciatis aut. ut repellendus necessitatibus ad ea facilis repudiandae odit itaque vel temporibus.
Omnis omnis nostrum et animi corrupti. ipsum sequi sunt eveniet accusamus assumenda asperiores autem debitis ut. quia suscipit consequatur laboriosam officia dolorem eum vitae. accusantium nihil laboriosam aut aliquid quibusdam accusamus quam nam veritatis et perspiciatis veritatis recusandae. beatae possimus explicabo tenetur aspernatur quis eum voluptatem a impedit. dolore eos aperiam corrupti sequi architecto et aut.
Quis dolores facilis dolores facilis sapiente dolor sed eos quo modi iusto qui optio voluptatibus. id mollitia id qui vero est eius sunt sed aut ab non blanditiis rem. ut autem et id accusamus incidunt.
This is the content
Normal state:
<p id="paragraph2" class="live-region" aria-busy="false" aria-live="polite">Ducimus nostrum voluptas aut aut porro veniam enim natus ut.</p>
<button id="paragraphButton2" class="button button--small" aria-controls="paragraph2">Update text</button>
While busy:
<p id="paragraph2" class="live-region" aria-busy="true" aria-live="polite">Ducimus nostrum voluptas aut aut porro veniam enim natus ut.</p>
<button id="paragraphButton2" class="button button--small" aria-controls="paragraph2 disabled">Update text</button>
Dolores | Laudantium | Aut | Culpa |
---|---|---|---|
Non | Laboriosam nesciunt | Nisi natus | |
Reprehenderit | Ipsam voluptate | Et impedit | |
Voluptas | Quae ut | Et repellat | |
Consequatur | Laudantium animi | Est rerum | |
Repellat | Vel sit | Quod illum |
<tr id="id0b66884bf7" class="live-table__row" aria-busy="true" aria-live="polite">
<td>Ipsum</td>
<td>Et rerum</td>
<td>Aliquam nihil</td>
<td data-th="Actions">
<div class="buttons">
<button id="tableEditButton4" class="button button--small spinner" aria-controls="id0b66884bf7" disabled data-show-busy="true">Saving…</button>
<button id="tableDeleteButton4" class="button button--small" disabled>Delete</button>
</div>
</td>
</tr>
Molestiae | Eveniet | Ut | Asperiores |
---|---|---|---|
Et | Vel molestiae | Et qui |
Uploaded
|
Iste | Et sint | Laborum fugit |
Uploaded
|
Dolorem | Nihil illo | Quae et |
Uploaded
|
Rem | Eius voluptas | Aut voluptatum |
Uploading…
|
Voluptatum | Quia laudantium | Voluptatem velit |
Uploaded
|
<tr>
<td>Voluptas</td>
<td>Repellat quia</td>
<td>Dolor quis</td>
<td aria-live="polite" aria-busy="true">
<div class="spinner spinner--inline" data-show-busy="true">Uploading…</div>
</td>
</tr>
Minus | Explicabo | Est | Eum |
---|---|---|---|
Voluptate | Itaque ullam | Deleniti alias | |
Mollitia | Ut velit | Incidunt aut | |
Impedit | Porro ab | Ad animi | |
Veritatis | Et et | Dolores quisquam | |
Rerum | Minus accusantium | Ratione harum |
<div class="live-region" aria-busy="true" aria-live="polite">
<table>
<thead>
<tr>
<th>Autem</th>
<th>Qui</th>
<th>Qui</th>
</tr>
</thead>
<tbody>
<tr>
<td>Odit</td>
<td>Temporibus ipsam</td>
<td>Et reiciendis</td>
</tr>
</tbody>
</table>
</div>
<ul class="live-region" aria-live="polite" aria-busy="true">
<li>Consequuntur et</li>
<li>Maiores exercitationem</li>
</ul>
This would be the usual pattern as our form items generally have a wrpapper of some sort.
<!-- START form-item-select component -->
<div class="form-item live-region" aria-busy="true" aria-live="polite">
<label for="select_element">Select element:</label>
<select id="select_element" disabled="disabled">
<optgroup label="Option Group 1">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</optgroup>
<optgroup label="Option Group 2">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</optgroup>
</select>
</div>
<!-- END form-item-select component -->
Sometimes we don't have complete control over markup.
input type="button" input type="submit" Standard button for comparison<input class="button spinner" type="button" value="Test" disabled>
Add a spinner to the button that triggered the update.
These don't get a spinner.
These don't get a spinner.
These don't get a spinner.
Use the full-page spinner.
Add a spinner to the download button.
Add a spinner to the change course button.
Add a spinner to the submit button.
Use a live-region.
Use a live-region.