Skip to content

Commit fbf4013

Browse files
committed
Style and behavior for flash messages
1 parent 05e5a35 commit fbf4013

File tree

7 files changed

+73
-9
lines changed

7 files changed

+73
-9
lines changed

app/javascript/controllers/flash.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Controller } from '@hotwired/stimulus';
2+
3+
export default class extends Controller {
4+
connect() {
5+
setTimeout(() => {
6+
this.dismiss();
7+
}, 5000);
8+
}
9+
10+
dismiss() {
11+
this.element.style.opacity = 0;
12+
setTimeout(() => this.element.remove(), 1000);
13+
}
14+
}

app/javascript/controllers/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { application } from './application';
77
import CodeExample from './code-example';
88
import ClipboardCopy from './clipboard-copy';
99
import Darkmode from './darkmode';
10+
import Flash from './flash';
1011

1112
import PwaInstallation from './pwa/installation';
1213
import PwaWebPushSubscription from './pwa/web-push-subscription';
@@ -25,6 +26,7 @@ application.register('analytics', AnalyticsCustomEvent);
2526
application.register('code-example', CodeExample);
2627
application.register('clipboard-copy', ClipboardCopy);
2728
application.register('darkmode', Darkmode);
29+
application.register('flash', Flash);
2830

2931
application.register('pwa-installation', PwaInstallation);
3032
application.register('pwa-web-push-subscription', PwaWebPushSubscription);

app/javascript/controllers/snippets/preview.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ export default class extends Controller<HTMLFormElement> {
1313
connect(): void {
1414
console.log('Connect!');
1515

16-
this.element.addEventListener('turbo:submit-start', this.disable);
16+
// this.element.addEventListener('turbo:submit-start', this.disable);
1717

18-
this.element.addEventListener('turbo:submit-end', this.enable);
18+
// this.element.addEventListener('turbo:submit-end', this.enable);
1919
}
2020

2121
disable = (event): void => {

app/javascript/controllers/snippets/screenshot.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import debug from '../../utils/debug';
66
const console = debug('app:javascript:controllers:snippets:screenshot');
77

88
export default class extends Controller<HTMLFormElement> {
9-
static targets = ['snippet'];
9+
static targets = ['snippet', 'submitButton'];
1010

11-
declare readonly hasSnippetTarget: boolean;
1211
declare readonly snippetTarget: HTMLInputElement;
12+
declare readonly submitButtonTarget: HTMLInputElement;
1313

1414
connect(): void {
1515
console.log('Connect!');
@@ -18,6 +18,10 @@ export default class extends Controller<HTMLFormElement> {
1818
'turbo:before-fetch-request',
1919
this.prepareScreenshot,
2020
);
21+
22+
// submit immediately
23+
// this.submitButtonTarget.click();
24+
// this.submitButtonTarget.disabled = true;
2125
}
2226

2327
prepareScreenshot = async (event) => {

app/javascript/css/application.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@
3737
@import './components/color-scheme.scss';
3838
@import './components/table.css';
3939
@import './components/snippet.css';
40+
@import './components/flash.css';
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.flash__container {
2+
position: fixed;
3+
bottom: 0;
4+
right: 0;
5+
z-index: 1000;
6+
width: 100%;
7+
max-width: 100%;
8+
display: flex;
9+
flex-direction: column;
10+
align-items: flex-end;
11+
padding: var(--space-s);
12+
gap: var(--space-xs);
13+
width: fit-content;
14+
15+
& .flash__message {
16+
padding: var(--space-xs) var(--space-s);
17+
border-radius: 4px;
18+
transition: opacity 750ms ease-out;
19+
}
20+
21+
& .flash__alert {
22+
background-color: var(--joy-background-error);
23+
border: 1px solid var(--joy-border-error);
24+
}
25+
26+
& .flash__notice {
27+
background-color: var(--joy-background-success);
28+
border: 1px solid var(--joy-border-success);
29+
}
30+
31+
& .flash__warning {
32+
background-color: var(--joy-background-warn);
33+
border: 1px solid var(--joy-border-warn);
34+
}
35+
}

app/javascript/css/config/theme.css

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,15 @@
4949
--joy-background-mask: var(--color-darken);
5050
--joy-background-reset: white;
5151

52-
--joy-background-success: var(--dracula-green-800);
53-
--joy-background-error: var(--dracula-red-900);
52+
--joy-background-inline-code: ghostwhite;
53+
54+
--joy-background-success: var(--dracula-green-400);
55+
--joy-background-error: var(--dracula-red-400);
5456
--joy-background-warn: var(--dracula-orange-800);
5557

56-
--joy-background-inline-code: ghostwhite;
58+
--joy-border-success: var(--dracula-green-900);
59+
--joy-border-error: var(--dracula-red-900);
60+
--joy-border-warn: var(--dracula-orange-900);
5761

5862
--joy-border-quiet: var(--joy-color-100);
5963
--joy-border-subtle: var(--joy-color-200);
@@ -95,11 +99,15 @@
9599
--joy-background-mask: var(--color-lighten);
96100
--joy-background-reset: var(--color-slate-950);
97101

98-
--joy-background-success: var(--dracula-green-400);
102+
--joy-background-inline-code: var(--dracula-black);
103+
104+
/* --joy-background-success: var(--dracula-green-400);
99105
--joy-background-error: var(--dracula-red-500);
100106
--joy-background-warn: var(--dracula-orange-500);
101107
102-
--joy-background-inline-code: var(--dracula-black);
108+
--joy-border-success: var(--dracula-green-900);
109+
--joy-border-error: var(--dracula-red-950);
110+
--joy-border-warn: var(--dracula-orange-950); */
103111

104112
--joy-border-quiet: var(--joy-color-900);
105113
--joy-border-subtle: var(--joy-color-800);

0 commit comments

Comments
 (0)