@kadoui/react
Version:
Kadoui primitive components for React
34 lines (33 loc) • 1.2 kB
JavaScript
"use client";
import { jsx as _jsx } from "react/jsx-runtime";
import { use } from "react";
import { ChoiceContext } from "./ChoiceContext";
export function ChoiceTrigger({ choiceName, onClick, ...p }) {
const { multiple, activeChoice, setActiveChoice, requiredOne } = use(ChoiceContext);
const isActive = multiple
? activeChoice.includes(choiceName)
: activeChoice === choiceName;
return (_jsx("button", { "data-state": isActive, onClick: (ev) => {
onClick?.(ev);
if (isActive) {
if (multiple) {
if (!requiredOne || activeChoice.length > 1) {
setActiveChoice((prev) => prev.filter((item) => item !== choiceName));
}
}
else {
if (!requiredOne) {
setActiveChoice(null);
}
}
}
else {
if (multiple) {
setActiveChoice((prev) => [...prev, choiceName]);
}
else {
setActiveChoice(choiceName);
}
}
}, ...p }));
}