stew/* Packages / 14.7

⌨️ stew/event

The stew/event package allows you to listen to global events (keyboard, window, network) that are not attached to a specific DOM element.

Keyboard Events

Listen for key presses at the global window level. Ideal for keyboard shortcuts or closing modals.

<goscript client>
    import "stew/event"
    import "stew/io"

    event.OnKeyDown("Enter", func() {
        io.Alert("You pressed Enter!")
    })

    event.OnKeyUp("Shift", func() {
        Console.Log("Shift released")
    })

    event.OnKeyDown("Escape", func() {
        closeModal()
    })
</goscript>

Window and Browser State

Track window resizing or the user's network connection status.

<goscript client>
    import "stew/event"

    event.OnResize(func(w, h int) {
        Console.Log("New size:", w, "x", h)
    })

    event.OnOffline(func() {
        ui.ToggleClass("#offline-banner", "hidden")
    })

    event.OnOnline(func() {
        ui.AddClass("#offline-banner", "hidden")
    })
</goscript>

Global Scrolling

The package allows you to track the scrolling of the entire page.

<goscript client>
    import "stew/event"

    event.OnScroll(func(top, left int) {
        if top > 100 {
            ui.AddClass("#navbar", "shadow-md")
        } else {
            ui.RemoveClass("#navbar", "shadow-md")
        }
    })
</goscript>
🔌 OnOnline & IsOnline

Use event.IsOnline() to check the current state upon loading, and OnOnline/OnOffline to react to changes in real-time.