UNPKG

@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
"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 };