@prokodo/ui
Version:
UI components for production-grade Next.js + Headless CMS (Strapi, Contentful, Headless WordPress) websites by prokodo – built for Core Web Vitals & SEO.
46 lines (45 loc) • 1.34 kB
JavaScript
"use client";
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { jsx } from "react/jsx-runtime";
import { useCallback } from "react";
import { ChipView } from "./Chip.view.js";
function ChipClient(props) {
const { color, onClick, onKeyDown, onDelete, ...rest } = props;
const clickable = typeof onClick === "function";
const handleKey = useCallback(
(e) => {
if ((e.key === "Enter" || e.key === " ") && clickable) {
e.preventDefault();
onClick == null ? void 0 : onClick(e);
}
onKeyDown == null ? void 0 : onKeyDown(e);
},
[clickable, onClick, onKeyDown]
);
const handleKeyDelete = useCallback(
(e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
onDelete == null ? void 0 : onDelete(e);
}
},
[onDelete]
);
const dom = clickable ? { role: "button", tabIndex: 0, onClick } : { tabIndex: -1 };
return /* @__PURE__ */ jsx(
ChipView,
{
...rest,
...dom,
color,
buttonProps: onDelete ? { onClick: onDelete, onKeyDown: handleKeyDelete } : void 0,
onDelete,
onKeyDown: clickable || onKeyDown ? handleKey : void 0
}
);
}
__name(ChipClient, "ChipClient");
export {
ChipClient as default
};