@zag-js/radio-group
Version:
Core logic for the radio group widget implemented as a state machine
93 lines (91 loc) • 3.78 kB
JavaScript
;
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
});