Skip to content

Commit e04d9e6

Browse files
authored
versions: Improve the loading indicator (#10740)
This shows a loading indicator for the initial load, and a loading button when loading more.
1 parent 9b114db commit e04d9e6

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

app/styles/crate/versions.module.css

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
display: block;
1717
margin-bottom: var(--space-s);
1818
}
19+
20+
&:global(.is-empty) {
21+
visibility: hidden;
22+
}
1923
}
2024
.list {
2125
list-style: none;
@@ -25,9 +29,13 @@
2529
> * + * {
2630
margin-top: var(--space-2xs);
2731
}
32+
33+
&:global(.is-empty) {
34+
min-height: calc(2 * var(--space-s) + var(--space-xl));
35+
}
2836
}
2937

30-
.load-more {
38+
.load-more, .loading {
3139
--shadow: 0 1px 3px light-dark(hsla(51, 90%, 42%, .35), #232321);
3240

3341
/* TODO: move to shared */
@@ -36,13 +44,18 @@
3644
border: 0;
3745
padding: 0 var(--space-m);
3846

39-
button {
47+
:not(:global(.is-empty)) + & button {
4048
border-radius: var(--space-3xs);
4149
box-shadow: var(--shadow);
4250
cursor: pointer;
4351
position: relative;
4452
}
4553

54+
:global(.is-empty) + & button {
55+
background-color: transparent;
56+
position: relative;
57+
}
58+
4659
.loading-spinner {
4760
display: inline-flex;
4861
align-items: center;

app/templates/crate/versions.hbs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<CrateHeader @crate={{this.crate}} />
22

33
<div local-class="results-meta">
4-
<span local-class="page-description" data-test-page-description>
4+
<span local-class="page-description"
5+
class="{{if (and this.loadMoreTask.isRunning (not this.sortedVersions)) 'is-empty'}}"
6+
data-test-page-description
7+
>
58
<strong>{{ this.sortedVersions.length }}</strong> of <strong>{{ this.crate.num_versions }}</strong>
69
<strong>{{ this.crate.name }}</strong> versions since
710
{{date-format this.crate.created_at 'PPP'}}
@@ -16,22 +19,27 @@
1619
</div>
1720
</div>
1821

19-
<ul local-class="list">
22+
<ul local-class="list" class="{{unless this.sortedVersions 'is-empty'}}">
2023
{{#each this.sortedVersions as |version|}}
2124
<li>
2225
<VersionList::Row @version={{version}} local-class="row" data-test-version={{version.num}} />
2326
</li>
2427
{{/each}}
2528
</ul>
26-
{{#if this.next_page}}
29+
{{#if this.loadMoreTask.isRunning}}
30+
<div local-class="loading">
31+
<button type="button" data-test-id="loading" disabled={{this.loadMoreTask.isRunning}}
32+
{{on "click" (perform this.loadMoreTask)}}
33+
>
34+
Loading...<LoadingSpinner local-class="loading-spinner" />
35+
</button>
36+
</div>
37+
{{else if this.next_page}}
2738
<div local-class="load-more">
2839
<button type="button" data-test-id="load-more" disabled={{this.loadMoreTask.isRunning}}
2940
{{on "click" (perform this.loadMoreTask)}}
3041
>
3142
Load More
32-
{{#if this.loadMoreTask.isRunning}}
33-
<LoadingSpinner local-class="loading-spinner" />
34-
{{/if}}
3543
</button>
3644
</div>
37-
{{/if}}
45+
{{/if}}

0 commit comments

Comments
 (0)