1.0.2 • Published 3 years ago

svelte-media-observer v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Svelte Media Observer

Svelte Media observer is small utility media queries observer built for Svelte framework.

Try it in the Svelte REPL.

Getting started

The package is available via npm:

npm i svelte-media-observer

Usage

import { mediaObserver } from "svelte-media-observer";
import type { MediaQueries } from "svelte-media-observer";

const mediaQueries: MediaQueries<"small" | "medium" | "dark"> = [
  [ "small", "(max-width: 640px)" ],
  [ "medium", "(max-width: 935px)" ],
  [ "dark", "(prefers-color-scheme: dark)" ]
];

export const media = mediaObserver(mediaQueries);

observer contains all named media queries as Record<breakpointName: string, queryMatch: boolean>. It is build on svelte/stores, so the usage is the same:

<script>
  import { media } from "your-observer-path";
</script>

{#if $media.small}
  <NavMobile />
{:else}
  <NavDesktop />
{/if}

Note

It is a nice idea to create several observers depending on your need and the rate the media queries will change.

Issues

While using Typescript and ESLint for Svelte, you might meet some limitations to type-aware rules. Link to the issue.

<script>
  import { media } from "your-observer-path";
</script>

// incorrect no-unsafe-member-access error
{#if $media.small}
  <NavMobile />
{:else}
  <NavDesktop />
{/if}

Attribution

Observer alien was created by FreakAddL.