UNPKG

@zag-js/radio-group

Version:

Core logic for the radio group widget implemented as a state machine

93 lines (91 loc) 3.78 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/radio-group.dom.ts var radio_group_dom_exports = {}; __export(radio_group_dom_exports, { getFirstEnabledAndCheckedInputEl: () => getFirstEnabledAndCheckedInputEl, getFirstEnabledInputEl: () => getFirstEnabledInputEl, getIndicatorEl: () => getIndicatorEl, getIndicatorId: () => getIndicatorId, getInputEls: () => getInputEls, getItemControlId: () => getItemControlId, getItemHiddenInputEl: () => getItemHiddenInputEl, getItemHiddenInputId: () => getItemHiddenInputId, getItemId: () => getItemId, getItemLabelId: () => getItemLabelId, getLabelId: () => getLabelId, getOffsetRect: () => getOffsetRect, getRadioEl: () => getRadioEl, getRectById: () => getRectById, getRootEl: () => getRootEl, getRootId: () => getRootId }); module.exports = __toCommonJS(radio_group_dom_exports); var import_dom_query = require("@zag-js/dom-query"); var getRootId = (ctx) => ctx.ids?.root ?? `radio-group:${ctx.id}`; var getLabelId = (ctx) => ctx.ids?.label ?? `radio-group:${ctx.id}:label`; var getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `radio-group:${ctx.id}:radio:${value}`; var getItemHiddenInputId = (ctx, value) => ctx.ids?.itemHiddenInput?.(value) ?? `radio-group:${ctx.id}:radio:input:${value}`; var getItemControlId = (ctx, value) => ctx.ids?.itemControl?.(value) ?? `radio-group:${ctx.id}:radio:control:${value}`; var getItemLabelId = (ctx, value) => ctx.ids?.itemLabel?.(value) ?? `radio-group:${ctx.id}:radio:label:${value}`; var getIndicatorId = (ctx) => ctx.ids?.indicator ?? `radio-group:${ctx.id}:indicator`; var getRootEl = (ctx) => ctx.getById(getRootId(ctx)); var getItemHiddenInputEl = (ctx, value) => ctx.getById(getItemHiddenInputId(ctx, value)); var getIndicatorEl = (ctx) => ctx.getById(getIndicatorId(ctx)); var getFirstEnabledInputEl = (ctx) => getRootEl(ctx)?.querySelector("input:not(:disabled)"); var getFirstEnabledAndCheckedInputEl = (ctx) => getRootEl(ctx)?.querySelector("input:not(:disabled):checked"); var getInputEls = (ctx) => { const ownerId = CSS.escape(getRootId(ctx)); const selector = `input[type=radio][data-ownedby='${ownerId}']:not([disabled])`; return (0, import_dom_query.queryAll)(getRootEl(ctx), selector); }; var getRadioEl = (ctx, value) => { if (!value) return; return ctx.getById(getItemId(ctx, value)); }; var getOffsetRect = (el) => ({ x: el?.offsetLeft ?? 0, y: el?.offsetTop ?? 0, width: el?.offsetWidth ?? 0, height: el?.offsetHeight ?? 0 }); var getRectById = (ctx, id) => { const radioEl = ctx.getById(getItemId(ctx, id)); if (!radioEl) return; return getOffsetRect(radioEl); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { getFirstEnabledAndCheckedInputEl, getFirstEnabledInputEl, getIndicatorEl, getIndicatorId, getInputEls, getItemControlId, getItemHiddenInputEl, getItemHiddenInputId, getItemId, getItemLabelId, getLabelId, getOffsetRect, getRadioEl, getRectById, getRootEl, getRootId });