import type { Accessor } from "solid-js"; import type { SliderRootState } from "../slider-root-context.ts"; /** * Reactive `data-*` getter bag shared by every `` part. Each key is * a live getter reading through the supplied `state` accessor — safe to spread * into `mergeRootProps` without losing reactivity. * * Mirrors `sliderStateAttributesMapping` (see `../root/state-attributes-mapping.ts`): * keys mapped to `() => null` there are intentionally omitted here, and * `valid` follows the tri-state `fieldValidityMapping` (`null` → no attr, * `true` → `data-valid`, `false` → `data-invalid`). * * Established as part of §1 wave 3 alongside `numberFieldDataAttrs` and the * sibling `scrollAreaDataAttrs` factory. */ export function sliderDataAttrs( state: Accessor, ): Record { return { get "data-valid"(): "" | undefined { return state().valid === true ? "" : undefined; }, get "data-invalid"(): "" | undefined { return state().valid === false ? "" : undefined; }, get "data-touched"(): "" | undefined { return state().touched ? "" : undefined; }, get "data-dirty"(): "" | undefined { return state().dirty ? "" : undefined; }, get "data-filled"(): "" | undefined { return state().filled ? "" : undefined; }, get "data-focused"(): "" | undefined { return state().focused ? "" : undefined; }, get "data-disabled"(): "" | undefined { return state().disabled ? "" : undefined; }, get "data-dragging"(): "" | undefined { return state().dragging ? "" : undefined; }, get "data-orientation"(): string { return state().orientation; }, }; }