Skip to content

Commit cfa8ca7

Browse files
committed
feat: emitting event to recognize a key hit
1 parent 9396685 commit cfa8ca7

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed

scripts/ColorSchemeSwitchThreeStates/js/switch-script.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
};
1010

1111
window.inlineScripts.switchColorScheme = function () {
12+
const previousScheme = localStorage.colorScheme;
13+
1214
if (localStorage.colorScheme === "__DARK__") {
1315

1416
setColorScheme("__LIGHT__");
@@ -30,6 +32,15 @@
3032
localStorage.colorScheme = "__DARK__";
3133

3234
}
35+
36+
const event = new CustomEvent("colorSchemeChanged", {
37+
detail: {
38+
previousScheme: previousScheme,
39+
currentScheme: localStorage.colorScheme,
40+
},
41+
});
42+
43+
document.dispatchEvent(event);
3344
};
3445

3546
document.addEventListener("keydown", (event) => {

scripts/ColorSchemeSwitchThreeStates/view/hero-icons-tailwind.blade.php

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,37 @@
55
@endphp
66

77
<script>
8-
(function() {
8+
(function() {
99
window.inlineScripts = window.inlineScripts || {};
10-
10+
1111
window.inlineScripts.refreshColorSchemeIcon = function() {
12-
const currentScheme = localStorage.getItem('colorScheme');
13-
14-
const icons = document.querySelectorAll('[data-colorschemeicon]');
15-
icons.forEach(function(icon) {
16-
const iconScheme = icon.getAttribute('data-icon');
17-
if (iconScheme === currentScheme) {
18-
icon.classList.remove('hidden');
19-
} else {
20-
icon.classList.add('hidden');
21-
}
22-
});
12+
const currentScheme = localStorage.getItem('colorScheme');
13+
14+
const icons = document.querySelectorAll('[data-colorschemeicon]');
15+
icons.forEach(function(icon) {
16+
const iconScheme = icon.getAttribute('data-colorschemeicon');
17+
if (iconScheme === currentScheme) {
18+
icon.classList.remove('hidden');
19+
} else {
20+
icon.classList.add('hidden');
21+
}
22+
});
2323
};
2424
2525
document.addEventListener('DOMContentLoaded', function() {
26-
window.inlineScripts.refreshColorSchemeIcon();
26+
window.inlineScripts.refreshColorSchemeIcon();
27+
});
28+
29+
document.addEventListener('colorSchemeChanged', function() {
30+
window.inlineScripts.refreshColorSchemeIcon();
2731
});
28-
})();
32+
})();
2933
</script>
3034

3135
<button
32-
{{-- .switchColorScheme() is defined in switch-script.js --}}
33-
title="Color scheme switcher"
34-
onclick="window.inlineScripts.switchColorScheme(); window.inlineScripts.refreshColorSchemeIcon();"
36+
{{-- .switchColorScheme() is defined in switch-script.js --}}
37+
title="Color scheme switcher"
38+
onclick="window.inlineScripts.switchColorScheme(); window.inlineScripts.refreshColorSchemeIcon();"
3539
>
3640

3741
<span class="hidden" data-colorschemeicon="{{ SchemeTypeEnum::SYSTEM }}">

0 commit comments

Comments
 (0)