@zag-js/toggle-group
Version:
Core logic for the toggle widget implemented as a state machine
26 lines (25 loc) • 931 B
JavaScript
// src/toggle-group.dom.ts
import { nextById, prevById, queryAll } from "@zag-js/dom-query";
import { first, last } from "@zag-js/utils";
var getRootId = (ctx) => ctx.ids?.root ?? `toggle-group:${ctx.id}`;
var getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `toggle-group:${ctx.id}:${value}`;
var getRootEl = (ctx) => ctx.getById(getRootId(ctx));
var getElements = (ctx) => {
const ownerId = CSS.escape(getRootId(ctx));
const selector = `[data-ownedby='${ownerId}']:not([data-disabled])`;
return queryAll(getRootEl(ctx), selector);
};
var getFirstEl = (ctx) => first(getElements(ctx));
var getLastEl = (ctx) => last(getElements(ctx));
var getNextEl = (ctx, id, loopFocus) => nextById(getElements(ctx), id, loopFocus);
var getPrevEl = (ctx, id, loopFocus) => prevById(getElements(ctx), id, loopFocus);
export {
getElements,
getFirstEl,
getItemId,
getLastEl,
getNextEl,
getPrevEl,
getRootEl,
getRootId
};