@@ -76,54 +76,34 @@ import { Icon } from '../user'
7676 </div >
7777</header-component>
7878
79- { /* Use inline to load icon quicker firstly */ }
80- <!-- <script is:inline>
81- const toggleDarkModeElement = document.getElementById('toggleDarkMode')
82- const initialTheme = localStorage.getItem('theme') || 'system'
83- if (toggleDarkModeElement) {
84- toggleDarkModeElement.dataset.theme = initialTheme
85- document.documentElement.dataset.theme = initialTheme
86- }
87- </script>
8879<script >
89- import { setTheme, showToast } from '../../utils'
90-
9180 class Header extends HTMLElement {
9281 constructor() {
9382 super()
9483 }
9584
9685 connectedCallback() {
97- // Header
86+ // Header scroll behavior - auto hide/show on scroll
9887 let preScrollY = window.scrollY
9988 this.classList.toggle('not-top', preScrollY > 20)
89+
10090 window.addEventListener('scroll', () => {
101- this.classList.toggle('not-top', window.scrollY > 20)
102- this.dataset.show = (window.scrollY < 350 || window.scrollY < preScrollY).toString()
103- preScrollY = window.scrollY
91+ const currentScrollY = window.scrollY
92+ this.classList.toggle('not-top', currentScrollY > 20)
93+ // Show header when scrolling up or near top, hide when scrolling down
94+ this.dataset.show = (currentScrollY < 350 || currentScrollY < preScrollY).toString()
95+ preScrollY = currentScrollY
10496 })
10597
106- // Dark Mode
107- const darkModeBtn = this.querySelector('#toggleDarkMode') as HTMLElement
108- if (darkModeBtn) {
109- darkModeBtn.addEventListener('click', () => {
110- const newTheme = setTheme(undefined, true)
111- // Update both button and html root element
112- darkModeBtn.dataset.theme = newTheme
113- document.documentElement.dataset.theme = newTheme
114- showToast({ message: `Set theme to ${newTheme}` })
115- })
116- }
117-
118- // Menu
98+ // Menu toggle
11999 this.querySelector('#toggleMenu')?.addEventListener('click', () => {
120100 this.classList.toggle('expanded')
121101 })
122102 }
123103 }
124104
125105 customElements.define('header-component', Header)
126- </script> -->
106+ </script >
127107
128108<style >
129109 header-component {
0 commit comments