Skip to content

Commit 64fbd30

Browse files
committed
Implement "Toggle Design" button and global toggleDesign() function
1 parent 9023f82 commit 64fbd30

File tree

6 files changed

+85
-2
lines changed

6 files changed

+85
-2
lines changed

app/components/footer.module.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
display: flex;
33
justify-content: center;
44
width: 100%;
5+
background: var(--footer-bg-color);
56
}
67

78
.sep {

app/controllers/application.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ import Controller from '@ember/controller';
22
import { inject as service } from '@ember/service';
33

44
export default Controller.extend({
5+
design: service(),
56
flashMessages: service(),
67
});

app/helpers/add-html-class.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import Helper from '@ember/component/helper';
2+
3+
export default class extends Helper {
4+
cssClass = null;
5+
6+
compute(positional, options) {
7+
this.cssClass = options.class;
8+
document.documentElement.classList.add(this.cssClass);
9+
}
10+
11+
willDestroy() {
12+
document.documentElement.classList.remove(this.cssClass);
13+
}
14+
}

app/services/design.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { action } from '@ember/object';
2+
import Service, { inject as service } from '@ember/service';
3+
import { tracked } from '@glimmer/tracking';
4+
5+
import window from 'ember-window-mock';
6+
7+
import config from '../config/environment';
8+
9+
export default class DesignService extends Service {
10+
@service fastboot;
11+
12+
@tracked useNewDesign = !this.fastboot.isFastBoot && window.localStorage.getItem('use-new-design') === 'true';
13+
@tracked showToggleButton = config.environment === 'development';
14+
15+
constructor() {
16+
super(...arguments);
17+
window.toggleDesign = () => this.toggle();
18+
}
19+
20+
@action
21+
toggle() {
22+
this.useNewDesign = !this.useNewDesign;
23+
window.localStorage.setItem('use-new-design', String(this.useNewDesign));
24+
}
25+
}

app/styles/application.module.css

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
:root {
2+
--violet: #2e2359;
3+
--dark-grey: #2a3439;
4+
--dark-green: #3b6837;
5+
6+
--header-bg-color: var(--dark-green);
7+
--footer-bg-color: var(--dark-green);
8+
29
--main-color: #383838;
310
--main-color-light: #858585;
411
--main-bg: #f9f7ec;
@@ -9,12 +16,18 @@
916
--separator-color: #284725;
1017
}
1118

19+
:global(.new-design) {
20+
--header-bg-color: var(--violet);
21+
--main-bg: white;
22+
--footer-bg-color: var(--dark-grey);
23+
}
24+
1225
* {
1326
box-sizing: border-box;
1427
}
1528

1629
html {
17-
background-color: #3b6837;
30+
background-color: var(--header-bg-color);
1831
}
1932

2033
html, body {
@@ -94,3 +107,22 @@ noscript {
94107
display: none;
95108
}
96109
}
110+
111+
.toggle-design-button {
112+
position: fixed;
113+
bottom: 30px;
114+
left: 30px;
115+
z-index: 100;
116+
padding: 10px;
117+
border: none;
118+
border-radius: 5px;
119+
background: white;
120+
box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
121+
color: black;
122+
cursor: pointer;
123+
124+
&:hover {
125+
background: #f7f7f7;
126+
box-shadow: 0 0 6px rgba(0, 0, 0, 0.2);
127+
}
128+
}

app/templates/application.hbs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,14 @@
1616

1717
<a href='https://github.com/rust-lang/crates.io' local-class='fork-me'>
1818
<img src='/assets/forkme.png' alt="Fork me on GitHub">
19-
</a>
19+
</a>
20+
21+
{{#if this.design.showToggleButton}}
22+
<button type="button" local-class="toggle-design-button" {{on "click" this.design.toggle}}>
23+
Toggle Design
24+
</button>
25+
{{/if}}
26+
{{#if this.design.useNewDesign}}
27+
{{! template-lint-disable no-curly-component-invocation }}
28+
{{add-html-class class="new-design"}}
29+
{{/if}}

0 commit comments

Comments
 (0)