carbon-components-svelte/src/Breakpoint/Breakpoint.svelte
brunnerh 5de0d9a357
breaking(breakpoint): add breakpointObserver store (#1092)
* breaking: re-name event "on:match" to "on:change" in `Breakpoint.svelte`

* feat: add `breakpointObserver` read-only store

* refactor: export breakpoint constants from `breakpoints.js`
2022-03-08 08:38:58 -08:00

46 lines
1.2 KiB
Svelte

<script>
/**
* @typedef {"sm" | "md" | "lg" | "xlg" | "max"} BreakpointSize
* @typedef {320 | 672 | 1056 | 1312 | 1584} BreakpointValue
* @event {{ size: BreakpointSize; breakpointValue: BreakpointValue; }} change
* @slot {{ size: BreakpointSize; sizes: Record<BreakpointSize, boolean>; }}
*/
/**
* Determine the current Carbon grid breakpoint size
* @type {BreakpointSize}
*/
export let size = undefined;
/**
* Carbon grid sizes as an object
* @type {Record<BreakpointSize, boolean>}
*/
export let sizes = {
sm: false,
md: false,
lg: false,
xlg: false,
max: false,
};
import { createEventDispatcher } from "svelte";
import { breakpointObserver } from "./breakpointObserver";
import { breakpoints } from "./breakpoints";
const dispatch = createEventDispatcher();
const observer = breakpointObserver();
$: size = $observer;
$: sizes = {
sm: size == "sm",
md: size == "md",
lg: size == "lg",
xlg: size == "xlg",
max: size == "max",
};
$: if (size != undefined)
dispatch("change", { size, breakpointValue: breakpoints[size] });
</script>
<slot size="{size}" sizes="{sizes}" />