Skip to content

Commit 8e4cf50

Browse files
committed
Merge remote-tracking branch 'origin/trunk' into trunk
2 parents 7968c85 + e14f726 commit 8e4cf50

File tree

20 files changed

+231
-275
lines changed

20 files changed

+231
-275
lines changed

src/assets/icons/github.svg

Lines changed: 3 additions & 1 deletion
Loading

src/assets/icons/puzzle.svg

Lines changed: 3 additions & 2 deletions
Loading

src/assets/icons/stub.svg

Lines changed: 3 additions & 1 deletion
Loading

src/header.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
import './style.css';
22
import icons from './icons';
3+
import { getBaseUrl } from './utils/utils';
34

45
export function getHeader(routes) {
5-
const header = document.createElement('header');
6-
const img = document.createElement('img');
7-
img.src = icons['puzzle.svg'];
8-
img.alt = 'puzzle';
9-
header.appendChild(img);
10-
header.appendChild(getNav(routes));
11-
return header;
6+
const header = document.createElement('header');
7+
8+
const link = document.createElement('a');
9+
link.href = getBaseUrl();
10+
11+
const img = document.createElement('img');
12+
img.src = icons['puzzle.svg'];
13+
img.alt = 'puzzle';
14+
img.classList.add('logo');
15+
16+
link.appendChild(img);
17+
header.appendChild(link);
18+
header.appendChild(getNav(routes));
19+
return header;
1220
}
1321

1422
function getNav(routes) {

src/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ const routes = {
4949
content: signup
5050
},
5151
signout: {
52-
linkLabel: 'Sign out',
5352
content: signout
5453
}
5554
};

src/pages/alerts.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { getDefaultContainer } from '../utils/utils';
2+
13
const buttons = [
24
{
35
id: 'alert-trigger',
@@ -35,10 +37,8 @@ function showPrompt() {
3537
}
3638

3739
export default function alerts() {
38-
const container = document.createElement('div');
39-
const title = document.createElement('h1');
40-
title.textContent = 'Alerts';
41-
container.appendChild(title);
40+
const container = getDefaultContainer('Alerts');
41+
4242
for (const button of buttons) {
4343
const buttonElement = document.createElement('button');
4444
buttonElement.id = button.id;

src/pages/cookie.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
#cookie-value {
22
font-size: 2rem;
3+
padding-top: 1vh;
34
}

src/pages/cookie.js

Lines changed: 15 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { getCookie, getValueFromCookie } from '../utils/utils';
1+
import { getCookie, getDefaultContainer, getValueFromCookie } from '../utils/utils';
22
import './cookie.css';
33

4-
let cookieValue;
54
const cookieName = 'gibberish';
5+
let cookieValue = getCookieValue();
66

77
function randomString() {
88
let text = '';
@@ -15,67 +15,39 @@ function randomString() {
1515
function setCookie(value, expirationDays) {
1616
let d = new Date();
1717
d.setTime(d.getTime() + expirationDays * 24 * 60 * 60 * 1000);
18-
let expires = 'expires=' + d.toUTCString();
19-
let v = cookieName + '=' + value + '; ' + expires;
18+
let v = `${cookieName}=${value};expires=${d.toUTCString()}`;
2019
console.log('Setting cookie ' + v);
2120
document.cookie = v;
2221

23-
cookieValue = getCookieValue();
22+
document.getElementById('cookie-value').textContent = getCookieValue();
2423
}
2524

2625
function getCookieValue() {
2726
const cookieValue = getValueFromCookie(getCookie(cookieName));
2827
return cookieValue ? cookieValue : '';
2928
}
3029

31-
function update(shouldDelete) {
32-
if (shouldDelete) {
33-
setCookie('', -1);
34-
} else {
35-
setCookie(randomString(), 5);
36-
}
37-
}
38-
39-
export default function alerts() {
40-
const container = document.createElement('div');
41-
42-
const title = document.createElement('h1');
43-
title.textContent = 'The gibberish talking cookie';
44-
container.appendChild(title);
45-
46-
const row = document.createElement('div');
47-
row.classList.add('row');
48-
container.appendChild(row);
49-
50-
const col = document.createElement('div');
51-
col.classList.add('col', 'text-center');
52-
row.appendChild(col);
53-
54-
const buttonGroupDiv = document.createElement('div');
55-
col.appendChild(buttonGroupDiv);
56-
57-
const buttonGroup = document.createElement('div');
58-
buttonGroup.classList.add('btn-group');
59-
buttonGroupDiv.appendChild(buttonGroup);
30+
export default function main() {
31+
const container = getDefaultContainer('The gibberish talking cookie');
6032

6133
const setButton = document.createElement('button');
62-
setButton.classList.add('btn', 'btn-success');
34+
setButton.classList.add('success');
6335
setButton.id = 'set-cookie';
64-
setButton.textContent = cookieValue ? 'Update' : 'Set' + ' the cookie';
65-
setButton.addEventListener('click', () => update(false));
66-
buttonGroup.appendChild(setButton);
36+
setButton.textContent = 'Set the cookie';
37+
setButton.addEventListener('click', () => setCookie(randomString(), 1));
38+
container.appendChild(setButton);
6739

6840
const deleteButton = document.createElement('button');
69-
deleteButton.classList.add('btn', 'btn-danger');
41+
deleteButton.classList.add('danger');
7042
deleteButton.id = 'delete-cookie';
7143
deleteButton.textContent = 'Remove the cookie';
72-
deleteButton.addEventListener('click', () => update(true));
73-
buttonGroup.appendChild(deleteButton);
44+
deleteButton.addEventListener('click', () => setCookie('', -1));
45+
container.appendChild(deleteButton);
7446

7547
const cookieValueDiv = document.createElement('div');
76-
col.appendChild(cookieValueDiv);
48+
container.appendChild(cookieValueDiv);
7749

78-
const cookieValueSpan = document.createElement('span');
50+
const cookieValueSpan = document.createElement('div');
7951
cookieValueSpan.id = 'cookie-value';
8052
cookieValueSpan.textContent = cookieValue ? cookieValue : '';
8153
cookieValueDiv.appendChild(cookieValueSpan);

src/pages/forms.css

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

src/pages/home.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@ export default function home() {
88
const title = document.createElement('h1');
99
title.textContent = `Welcome to web-stubs, ${userWithActiveSession ? userWithActiveSession : 'guest'}!`;
1010

11-
if (userWithActiveSession) {
12-
const signOut = document.createElement('a');
13-
signOut.textContent = 'Sign out';
14-
signOut.href = '?page=signout';
15-
title.appendChild(signOut);
16-
}
11+
const action = document.createElement('a');
12+
action.classList.add('signInLink');
13+
action.textContent = userWithActiveSession ? 'Sign out' : 'Sign in';
14+
action.href = userWithActiveSession ? '?page=signout' : '?page=login';
15+
title.appendChild(action);
1716

1817
container.appendChild(title);
1918

src/pages/hover.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
.actionBtn {
2+
margin-bottom: 200px;
3+
}
4+
15
.dropdown {
26
position: relative;
37
display: inline-block;
@@ -14,11 +18,11 @@
1418
.dropdown-content div {
1519
cursor: pointer;
1620
width: 100%;
17-
padding: 6px 0 6px 0;
21+
padding: 16px 0 6px 0;
1822
}
1923

2024
.dropdown-content div:hover {
21-
background-color: #ddd;
25+
opacity: 0.8;
2226
}
2327

2428
.dropdown:hover .dropdown-content {

src/pages/hover.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
import './hover.css';
2+
import { getDefaultContainer } from '../utils/utils';
23

3-
export default function hover() {
4-
const container = document.createElement('div');
5-
6-
const title = document.createElement('h1');
7-
title.textContent = 'Hover';
8-
container.appendChild(title);
4+
export default function main() {
5+
const container = getDefaultContainer('Hover');
96

107
const result = document.createElement('p');
118
result.id = 'result';
129
result.innerHTML = `<span class='clicked'></span>`;
1310
container.appendChild(result);
1411

1512
const row = document.createElement('div');
16-
row.classList.add('row', 'dropdown');
13+
row.classList.add('dropdown');
1714
container.appendChild(row);
1815

1916
const button = document.createElement('button');
2017
button.textContent = 'Hover me';
18+
row.classList.add('actionBtn');
2119
row.appendChild(button);
2220

2321
const dropdownContent = document.createElement('div');

src/pages/interceptor.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import './interceptor.css';
2+
import { getDefaultContainer } from '../utils/utils';
23

34
export default function interceptor() {
4-
const container = document.createElement('div');
5-
6-
const title = document.createElement('h1');
7-
title.textContent = 'Click intercepted';
8-
container.appendChild(title);
5+
const container = getDefaultContainer('Click intercepted');
96

107
const content = document.createElement('div');
118
content.classList.add('interceptor-content');

src/pages/login.js

Lines changed: 7 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import './forms.css';
21
import users from '../data/users.json';
3-
import { createSession, getActiveUserSession, goHome } from '../utils/utils.js';
2+
import { createSession, getActiveUserSession, getDefaultContainer, goHome } from '../utils/utils.js';
43

54
function validCredentials(values) {
65
const user = users.filter((u) => u.username === values.user)[0];
@@ -13,11 +12,7 @@ export default function login() {
1312
goHome();
1413
}
1514

16-
const container = document.createElement('div');
17-
18-
const title = document.createElement('h1');
19-
title.textContent = 'Sign in';
20-
container.appendChild(title);
15+
const container = getDefaultContainer('Sign in');
2116

2217
const description = document.createElement('p');
2318
description.classList.add('page-description');
@@ -28,17 +23,9 @@ export default function login() {
2823
registerLink.innerHTML = `<Col>No account yet? Register one <a href='?page=signup'>here</a></Col>`;
2924
container.appendChild(registerLink);
3025

31-
const row = document.createElement('div');
32-
row.classList.add('row');
33-
container.appendChild(row);
34-
35-
const col = document.createElement('div');
36-
col.classList.add('col', 'lg-4');
37-
row.appendChild(col);
38-
3926
const formContainer = document.createElement('div');
4027
formContainer.classList.add('form-container');
41-
col.appendChild(formContainer);
28+
container.appendChild(formContainer);
4229

4330
const form = document.createElement('form');
4431
form.addEventListener('submit', handleSubmit);
@@ -54,59 +41,22 @@ export default function login() {
5441
formGroupUser.classList.add('form-group');
5542
form.appendChild(formGroupUser);
5643

57-
const labelUser = document.createElement('label');
58-
labelUser.setAttribute('for', 'user');
59-
labelUser.textContent = 'Username';
60-
formGroupUser.appendChild(labelUser);
61-
62-
const inputGroupUser = document.createElement('div');
63-
inputGroupUser.classList.add('input-group');
64-
formGroupUser.appendChild(inputGroupUser);
65-
66-
const inputGroupTextUser = document.createElement('div');
67-
inputGroupTextUser.classList.add('input-group-text');
68-
inputGroupTextUser.innerHTML = '<i class="icon-person"></i>';
69-
inputGroupUser.appendChild(inputGroupTextUser);
70-
7144
const inputUser = document.createElement('input');
7245
inputUser.id = 'user';
73-
inputGroupUser.appendChild(inputUser);
46+
inputUser.placeholder = 'Enter your username';
47+
formGroupUser.appendChild(inputUser);
7448

7549
const formGroupPass = document.createElement('div');
7650
formGroupPass.classList.add('form-group');
7751
form.appendChild(formGroupPass);
7852

79-
const labelPass = document.createElement('label');
80-
labelPass.setAttribute('for', 'pass');
81-
labelPass.textContent = 'Password';
82-
formGroupPass.appendChild(labelPass);
83-
84-
const inputGroupPass = document.createElement('div');
85-
inputGroupPass.classList.add('input-group');
86-
formGroupPass.appendChild(inputGroupPass);
87-
88-
const inputGroupTextPass = document.createElement('div');
89-
inputGroupTextPass.classList.add('input-group-text');
90-
inputGroupTextPass.innerHTML = '<i class="icon-key"></i>';
91-
inputGroupPass.appendChild(inputGroupTextPass);
92-
9353
const inputPass = document.createElement('input');
9454
inputPass.id = 'pass';
9555
inputPass.type = 'password';
96-
inputGroupPass.appendChild(inputPass);
97-
98-
const formGroupRemember = document.createElement('div');
99-
formGroupRemember.classList.add('form-group');
100-
form.appendChild(formGroupRemember);
101-
102-
const inputRemember = document.createElement('input');
103-
inputRemember.id = 'remember';
104-
inputRemember.type = 'checkbox';
105-
inputRemember.label = 'Remember me';
106-
formGroupRemember.appendChild(inputRemember);
56+
inputPass.placeholder = 'Enter your password';
57+
formGroupPass.appendChild(inputPass);
10758

10859
const submitButton = document.createElement('button');
109-
submitButton.classList.add('btn', 'btn-primary');
11060
submitButton.textContent = 'Sign in';
11161
form.appendChild(submitButton);
11262

0 commit comments

Comments
 (0)