Skip to content

Commit 5019f59

Browse files
authored
Split "loading" placeholder from "load more" button (#10990)
Restyling the button to not be visible as a button makes the CSS more complicated than it needs to be. This commit splits the load more button into a loading placeholder for the initial load, and the actual load more button with a loading indicator for subsequent loads.
1 parent c635ea4 commit 5019f59

File tree

2 files changed

+42
-29
lines changed

2 files changed

+42
-29
lines changed

app/styles/crate/versions.module.css

+13-7
Original file line numberDiff line numberDiff line change
@@ -33,24 +33,30 @@
3333
}
3434
}
3535

36+
.loading {
37+
margin: var(--space-xl);
38+
display: flex;
39+
align-items: center;
40+
justify-content: center;
41+
gap: var(--space-2xs);
42+
43+
.loading-spinner {
44+
--spinner-size: var(--space-xl);
45+
}
46+
}
47+
3648
.load-more {
3749
--shadow: 0 1px 3px light-dark(hsla(51, 90%, 42%, .35), #232321);
3850

39-
border: 0;
4051
padding: 0 var(--space-m);
4152

42-
:not(:global(.is-empty)) + & button {
53+
button {
4354
border-radius: var(--space-3xs);
4455
box-shadow: var(--shadow);
4556
cursor: pointer;
4657
position: relative;
4758
}
4859

49-
:global(.is-empty) + & button {
50-
background-color: transparent;
51-
position: relative;
52-
}
53-
5460
.loading-spinner {
5561
display: inline-flex;
5662
align-items: center;

app/templates/crate/versions.hbs

+29-22
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,34 @@
1919
</div>
2020
</div>
2121

22-
<ul local-class="list" class="{{unless this.sortedVersions 'is-empty'}}">
23-
{{#each this.sortedVersions as |version|}}
24-
<li>
25-
<VersionList::Row @version={{version}} local-class="row" data-test-version={{version.num}} />
26-
</li>
27-
{{/each}}
28-
</ul>
29-
{{#if (or this.loadMoreTask.isRunning this.next_page)}}
30-
<div local-class="load-more">
31-
<button
32-
type="button"
33-
class="load-more-button"
34-
data-test-id={{if this.loadMoreTask.isRunning "loading" "load-more"}}
35-
disabled={{this.loadMoreTask.isRunning}}
36-
{{on "click" (perform this.loadMoreTask)}}
37-
>
38-
{{#if this.loadMoreTask.isRunning}}
39-
Loading...<LoadingSpinner local-class="loading-spinner" />
40-
{{else}}
41-
Load More
42-
{{/if}}
43-
</button>
22+
{{#if this.sortedVersions}}
23+
<ul local-class="list">
24+
{{#each this.sortedVersions as |version|}}
25+
<li>
26+
<VersionList::Row @version={{version}} local-class="row" data-test-version={{version.num}} />
27+
</li>
28+
{{/each}}
29+
</ul>
30+
31+
{{#if (or this.loadMoreTask.isRunning this.next_page)}}
32+
<div local-class="load-more">
33+
<button
34+
type="button"
35+
class="load-more-button"
36+
data-test-id={{if this.loadMoreTask.isRunning "loading" "load-more"}}
37+
disabled={{this.loadMoreTask.isRunning}}
38+
{{on "click" (perform this.loadMoreTask)}}
39+
>
40+
{{#if this.loadMoreTask.isRunning}}
41+
Loading...<LoadingSpinner local-class="loading-spinner" />
42+
{{else}}
43+
Load More
44+
{{/if}}
45+
</button>
46+
</div>
47+
{{/if}}
48+
{{else if this.loadMoreTask.isRunning}}
49+
<div local-class="loading">
50+
<LoadingSpinner local-class="loading-spinner" />
4451
</div>
4552
{{/if}}

0 commit comments

Comments
 (0)