Skip to content

Commit e9c9341

Browse files
committed
Auto merge of #2111 - Turbo87:css-modules, r=locks
Use `ember-css-modules` for automatic style scoping This PR allows us to use per-component/route CSS modules from now on. More information is available at https://github.com/salsify/ember-css-modules, but the tl;dr is that these files are automatically scoped to the corresponding component/route, which reduces the potential for class name conflicts. Unfortunately, our CSS is currently a bit of a 🍝 bowl, so it will take some time to untangle this into properly scoped modules. r? @locks
2 parents c7a37b3 + 0b5082d commit e9c9341

21 files changed

+659
-58
lines changed

app/components/flash-message.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<p id="flash" class={{if this.message "shown"}} data-test-flash-message ...attributes>
1+
<p local-class="flash {{if this.message "shown"}}" data-test-flash-message ...attributes>
22
{{this.message}}
33
</p>

app/styles/components/flash-message.scss renamed to app/components/flash-message.module.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#flash {
1+
.flash {
22
display: none;
33
font-weight: bold;
44
font-size: 110%;

app/components/pagination.hbs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<nav class='pagination' aria-label="Pagination navigation">
2-
<LinkTo @query={{hash page=@prevPage}} class="prev" @rel="prev" @title="previous page" data-test-pagination-prev>
1+
<nav local-class='pagination' aria-label="Pagination navigation">
2+
<LinkTo @query={{hash page=@prevPage}} local-class="prev" @rel="prev" @title="previous page" data-test-pagination-prev>
33
{{svg-jar "left-pag"}}
44
</LinkTo>
55
<ol>
@@ -11,7 +11,7 @@
1111
</li>
1212
{{/each}}
1313
</ol>
14-
<LinkTo @query={{hash page=@nextPage}} class="next" @rel="next" @title="next page" data-test-pagination-next>
14+
<LinkTo @query={{hash page=@nextPage}} local-class="next" @rel="next" @title="next page" data-test-pagination-next>
1515
{{svg-jar "right-pag"}}
1616
</LinkTo>
1717
</nav>

app/styles/app.scss

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,14 @@ $link-color: rgb(0, 172, 91);
1212

1313
@import "application";
1414
@import "home";
15-
@import "catch-all";
1615
@import "category-slugs";
1716
@import "crate";
1817
@import "crate/version";
1918
@import "components/crate-toml-copy";
20-
@import "components/flash-message";
21-
@import "components/pagination";
2219
@import "dashboard";
23-
@import "index";
24-
@import "loading";
2520
@import "me";
26-
@import "search";
21+
22+
@import "modules";
2723

2824
* {
2925
box-sizing: border-box;

app/styles/catch-all.module.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.p404 {
2+
font-size: 120%;
3+
line-height: 3em;
4+
}
5+
6+
.search-field {
7+
width: 100%;
8+
padding: 5px;
9+
}

app/styles/catch-all.scss

Lines changed: 0 additions & 8 deletions
This file was deleted.

app/styles/crate/versions.scss renamed to app/styles/crate/versions.module.scss

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
#crate-all-versions {
1+
.list {
22
margin-top: 10px;
33

4-
.small { margin-left: 20px; display: inline-block; }
4+
:global(.small) {
5+
margin-left: 20px;
6+
display: inline-block;
7+
}
8+
59
a.arrow {
610
display: inline-block;
711
float: right;

app/styles/index.scss renamed to app/styles/index.module.scss

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#title-header {
1+
.title-header {
22
text-align: center;
33
border-bottom: 5px solid $gray-border;
44
padding-bottom: 40px;
@@ -19,13 +19,13 @@
1919
}
2020
}
2121

22-
#blurb {
22+
.blurb {
2323
margin: 30px 0 40px 0;
2424
display: flex;
2525

26-
#intro { flex: 6; line-height: 25px; padding: 10px;}
26+
.intro { flex: 6; line-height: 25px; padding: 10px;}
2727

28-
#stats {
28+
.stats {
2929
flex: 4;
3030
display: flex;
3131
flex-direction: column;
@@ -47,7 +47,7 @@
4747

4848
@media only screen and (max-width: 530px) {
4949
flex-direction: column;
50-
#stats {
50+
.stats {
5151
border: none;
5252
margin: auto;
5353
}
@@ -57,19 +57,19 @@
5757
}
5858
}
5959

60-
#home-crates {
60+
.lists {
6161
flex-wrap: wrap;
6262
justify-content: left;
6363

6464
> section {
65-
margin: 0;
66-
padding: 0 15px;
67-
width: 33.33%;
68-
@media only screen and (max-width: 750px) {
69-
width: 50%;
70-
}
71-
@media only screen and (max-width: 550px) {
72-
width: 100%;
73-
}
65+
margin: 0;
66+
padding: 0 15px;
67+
width: 33.33%;
68+
@media only screen and (max-width: 750px) {
69+
width: 50%;
70+
}
71+
@media only screen and (max-width: 550px) {
72+
width: 100%;
73+
}
7474
}
7575
}

app/styles/loading.scss renamed to app/styles/loading.module.scss

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
div.loading-state {
1+
.loading-state {
22
text-align: center;
33
height: 65vh;
44
padding-top: 30vh;
55
}
6-
span.loading {
6+
7+
.loading {
78
display: inline-block;
89
width: 16px;
910
height: 16px;

app/styles/search.module.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.loading-spinner {
2+
margin: 0 15px;
3+
}

app/styles/search.scss

Lines changed: 0 additions & 3 deletions
This file was deleted.

app/templates/catch-all.hbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<FlashMessage @message="Oops, that route doesn't exist!" />
22

3-
<p id='p404'>
3+
<p local-class='p404'>
44
Perhaps a search of the site may help?
55

66
<Input
77
@type="text"
8+
local-class="search-field"
89
class="search"
910
placeholder="Search"
1011
@value={{this.search}}

app/templates/crate/versions.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</span>
1111
</div>
1212

13-
<div id='crate-all-versions' class='white-rows'>
13+
<div local-class='list' class='white-rows'>
1414
{{#each this.model.versions as |version|}}
1515
<div class='row'>
1616
<div>

app/templates/index.hbs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<div id='title-header'>
1+
<div local-class='title-header'>
22
<h1>The Rust community&rsquo;s crate registry</h1>
33

4-
<div class='links'>
4+
<div local-class='links'>
55
<a href="https://doc.rust-lang.org/cargo/getting-started/installation.html" class='yellow-button' data-test-install-cargo-link>
66
{{svg-jar "button-download"}}
77
Install Cargo
@@ -14,28 +14,28 @@
1414
</div>
1515
</div>
1616

17-
<div id='blurb'>
18-
<div id='intro'>
17+
<div local-class='blurb'>
18+
<div local-class='intro'>
1919
Instantly publish your crates and install them. Use the API to
2020
interact and find out more information about available crates. Become
2121
a contributor and enhance the site with your work.
2222
</div>
2323

24-
<div id='stats'>
25-
<div class='downloads'>
24+
<div local-class='stats'>
25+
<div local-class='downloads'>
2626
{{svg-jar "download"}}
27-
<span class='num' data-test-total-downloads>{{if this.hasData (format-num this.model.num_downloads) "---,---,---"}}</span>
27+
<span local-class='num' data-test-total-downloads>{{if this.hasData (format-num this.model.num_downloads) "---,---,---"}}</span>
2828
<span class='desc small'>Downloads</span>
2929
</div>
30-
<div class='crates'>
30+
<div local-class='crates'>
3131
{{svg-jar "crate"}}
32-
<span class='num' data-test-total-crates>{{if this.hasData (format-num this.model.num_crates) "---,---"}}</span>
32+
<span local-class='num' data-test-total-crates>{{if this.hasData (format-num this.model.num_crates) "---,---"}}</span>
3333
<span class='desc small'>Crates in stock</span>
3434
</div>
3535
</div>
3636
</div>
3737

38-
<div id='home-crates' class='crate-lists'>
38+
<div local-class='lists' class='crate-lists'>
3939
<section id='new-crates' data-test-new-crates aria-busy="{{this.dataTask.isRunning}}">
4040
<h2>New Crates</h2>
4141
<CrateListNewest @crates={{this.model.new_crates}} />

app/templates/loading.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<div class="loading-state">
2-
<span class="loading"></span> Loading...
1+
<div local-class="loading-state">
2+
<span local-class="loading"></span> Loading...
33
</div>

app/templates/search.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<h2>for '{{ this.q }}'</h2>
1010
{{/if}}
1111

12-
{{#if this.dataTask.isRunning}}<img src="/assets/ajax-loader.gif" class="loading-spinner">{{/if}}
12+
{{#if this.dataTask.isRunning}}<img src="/assets/ajax-loader.gif" local-class="loading-spinner">{{/if}}
1313
</div>
1414

1515
{{#if this.firstResultPending}}

ember-cli-build.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ module.exports = function(defaults) {
3131
sassOptions: {
3232
includePaths: ['node_modules/normalize.css'],
3333
},
34+
cssModules: {
35+
extension: 'module.scss',
36+
intermediateOutputPath: 'app/styles/_modules.scss',
37+
},
3438
fingerprint: {
3539
extensions: ['js', 'css', 'png', 'jpg', 'gif', 'map', 'svg', 'ttf', 'woff', 'woff2'],
3640
},

0 commit comments

Comments
 (0)