UNPKG

reka-ui

Version:

Vue port for Radix UI Primitives.

31 lines (23 loc) 1.02 kB
import { isEqual } from 'ohash' export function queryCheckedElement(parentEl: HTMLElement | null) { return parentEl?.querySelector('[data-state=checked]') as HTMLElement | null } export function valueComparator<T>(value: T | T[] | undefined, currentValue: T, comparator?: string | ((a: T, b: T) => boolean)) { if (value === undefined) return false else if (Array.isArray(value)) return value.some(val => compare(val, currentValue, comparator)) else return compare(value, currentValue, comparator) } export function compare<T>(value?: T, currentValue?: T, comparator?: string | ((a: T, b: T) => boolean)) { if (value === undefined || currentValue === undefined) return false if (typeof value === 'string') return value === currentValue if (typeof comparator === 'function') return comparator(value, currentValue) if (typeof comparator === 'string') return value?.[comparator as keyof T] === currentValue?.[comparator as keyof T] return isEqual(value, currentValue) }