UNPKG

bits-ui

Version:

The headless components for Svelte.

98 lines (97 loc) 2.9 kB
export function getDataOpenClosed(condition) { return condition ? "open" : "closed"; } export function getDataChecked(condition) { return condition ? "checked" : "unchecked"; } export function getAriaDisabled(condition) { return condition ? "true" : "false"; } export function getAriaReadonly(condition) { return condition ? "true" : "false"; } export function getAriaExpanded(condition) { return condition ? "true" : "false"; } export function getDataDisabled(condition) { return condition ? "" : undefined; } export function getAriaRequired(condition) { return condition ? "true" : "false"; } export function getAriaSelected(condition) { return condition ? "true" : "false"; } export function getAriaChecked(checked, indeterminate) { if (indeterminate) { return "mixed"; } return checked ? "true" : "false"; } export function getAriaOrientation(orientation) { return orientation; } export function getAriaHidden(condition) { return condition ? "true" : undefined; } export function getAriaInvalid(condition) { return condition ? "true" : undefined; } export function getDataOrientation(orientation) { return orientation; } export function getDataInvalid(condition) { return condition ? "" : undefined; } export function getDataRequired(condition) { return condition ? "" : undefined; } export function getDataReadonly(condition) { return condition ? "" : undefined; } export function getDataSelected(condition) { return condition ? "" : undefined; } export function getDataUnavailable(condition) { return condition ? "" : undefined; } export function getHidden(condition) { return condition ? true : undefined; } export function getDisabled(condition) { return condition ? true : undefined; } export function getAriaPressed(condition) { return condition ? "true" : "false"; } export function getRequired(condition) { return condition ? true : undefined; } export class BitsAttrs { #variant; #prefix; attrs; constructor(config) { this.#variant = config.getVariant ? config.getVariant() : null; this.#prefix = this.#variant ? `data-${this.#variant}-` : `data-${config.component}-`; this.getAttr = this.getAttr.bind(this); this.selector = this.selector.bind(this); this.attrs = Object.fromEntries(config.parts.map((part) => [part, this.getAttr(part)])); } getAttr(part, variantOverride) { if (variantOverride) return `data-${variantOverride}-${part}`; return `${this.#prefix}${part}`; } selector(part, variantOverride) { return `[${this.getAttr(part, variantOverride)}]`; } } export function createBitsAttrs(config) { const bitsAttrs = new BitsAttrs(config); return { ...bitsAttrs.attrs, selector: bitsAttrs.selector, getAttr: bitsAttrs.getAttr, }; }