UNPKG

@zag-js/toggle-group

Version:

Core logic for the toggle widget implemented as a state machine

26 lines (25 loc) 931 B
// 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 };