UNPKG

@nlabs/gothamjs

Version:
101 lines (100 loc) 14.2 kB
"use client"; import { Label, Listbox, ListboxButton, ListboxOptions } from "@headlessui/react"; import { cn } from "@nlabs/utils"; import { ChevronsUpDown } from "lucide-react"; import { useMemo, useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useIsMobile } from "../../hooks/useIsMobile.js"; import { getBackgroundClasses, getOutlineClasses, getTextClasses } from "../../utils/colorUtils.js"; import { getInputBorderClass } from "../InputField/InputField.js"; import { Svg } from "../Svg/Svg.js"; import { SelectOption } from "./SelectOption.js"; import { jsx, jsxs } from "react/jsx-runtime"; const SelectField = ({ backgroundColor = "transparent", borderColor = "black", borderType = "solid", className = "cursor-default grid outline-1 w-full grid-cols-1 rounded-md px-3.5 py-2 text-left sm:text-sm/6", color = "primary", defaultValue, label, labelClass, labelColor = "neutral", name, options }) => { const isMobile = useIsMobile(); const { control, trigger } = useFormContext(); const [selected, setSelected] = useState(options?.find((option) => option?.value === defaultValue)); const selectClasses = useMemo( () => cn( "flex relative w-full", getInputBorderClass(borderType, borderColor, color, "transparent"), className ), [borderType, borderColor, color, className] ); const labelClasses = useMemo(() => cn( labelClass, "block text-sm/6 font-medium", getTextClasses(labelColor) ), [labelClass, labelColor]); const optionsClasses = useMemo(() => cn( "absolute z-10 max-h-56 w-full overflow-auto rounded-md py-1 text-base focus:outline-hidden data-leave:transition data-leave:duration-100 data-leave:ease-in data-closed:data-leave:opacity-0 sm:text-sm", getBackgroundClasses("white"), getOutlineClasses(color, { hasFocus: true, hasHover: true }) ), [backgroundColor, color]); const chevronClasses = useMemo(() => cn( "col-start-1 row-start-1 size-5 self-center justify-self-end sm:size-4", getTextClasses(color) ), [color]); const onChange = (value) => { setSelected(options?.find((option) => option?.value === value)); trigger(name); }; return /* @__PURE__ */ jsx( Controller, { control, defaultValue, name, render: ({ field }) => { return isMobile ? /* @__PURE__ */ jsx("select", { ...field, value: selected?.value, children: options.map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: option.label }, option.id)) }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col w-full", children: /* @__PURE__ */ jsxs(Listbox, { value: selected, onChange: (value) => onChange(value), children: [ /* @__PURE__ */ jsx(Label, { className: labelClasses, children: label }), /* @__PURE__ */ jsx("select", { ...field, hidden: true, value: selected?.value }), /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col relative w-full", { "mt-2": label }), children: [ /* @__PURE__ */ jsxs(ListboxButton, { className: selectClasses, children: [ /* @__PURE__ */ jsxs("span", { className: "col-start-1 row-start-1 flex items-center gap-3 pr-6", children: [ selected?.image && /* @__PURE__ */ jsx("img", { alt: "", src: selected.image, className: "size-5 shrink-0 rounded-full" }), selected?.icon && /* @__PURE__ */ jsx(Svg, { className: "size-5 shrink-0 rounded-full", name: selected.icon }), /* @__PURE__ */ jsxs("span", { className: "block truncate", children: [ selected?.label, "\xA0" ] }) ] }), /* @__PURE__ */ jsx( ChevronsUpDown, { "aria-hidden": "true", className: chevronClasses } ) ] }), /* @__PURE__ */ jsx( ListboxOptions, { transition: true, className: optionsClasses, children: options.map((option) => option && /* @__PURE__ */ jsx(SelectOption, { option }, option?.id || option?.label)) } ) ] }) ] }) }); } } ); }; export { SelectField }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2VsZWN0RmllbGQvU2VsZWN0RmllbGQudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7TGFiZWwsIExpc3Rib3gsIExpc3Rib3hCdXR0b24sIExpc3Rib3hPcHRpb25zfSBmcm9tICdAaGVhZGxlc3N1aS9yZWFjdCc7XG5pbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHtDaGV2cm9uc1VwRG93bn0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7dXNlTWVtbywgdXNlU3RhdGUsIHR5cGUgRkN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Q29udHJvbGxlciwgdXNlRm9ybUNvbnRleHR9IGZyb20gJ3JlYWN0LWhvb2stZm9ybSc7XG5cbmltcG9ydCB7dXNlSXNNb2JpbGV9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUlzTW9iaWxlLmpzJztcbmltcG9ydCB7Z2V0QmFja2dyb3VuZENsYXNzZXMsIGdldE91dGxpbmVDbGFzc2VzLCBnZXRUZXh0Q2xhc3Nlc30gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5pbXBvcnQge0lucHV0Qm9yZGVyVHlwZSwgZ2V0SW5wdXRCb3JkZXJDbGFzc30gZnJvbSAnLi4vSW5wdXRGaWVsZC9JbnB1dEZpZWxkLmpzJztcbmltcG9ydCB7U3ZnfSBmcm9tICcuLi9TdmcvU3ZnLmpzJztcbmltcG9ydCB7U2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Qcm9wc30gZnJvbSAnLi9TZWxlY3RPcHRpb24uanMnO1xuXG5pbXBvcnQgdHlwZSB7R290aGFtQ29sb3J9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yVXRpbHMuanMnO1xuXG5leHBvcnQgdHlwZSBTZWxlY3RGaWVsZFByb3BzID0ge1xuICByZWFkb25seSBiYWNrZ3JvdW5kQ29sb3I/OiBHb3RoYW1Db2xvcjtcbiAgcmVhZG9ubHkgYm9yZGVyQ29sb3I/OiBHb3RoYW1Db2xvcjtcbiAgcmVhZG9ubHkgYm9yZGVyVHlwZT86IElucHV0Qm9yZGVyVHlwZTtcbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xvcj86IEdvdGhhbUNvbG9yXG4gIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxhYmVsQ29sb3I/OiBHb3RoYW1Db2xvcjtcbiAgcmVhZG9ubHkgbGFiZWxDbGFzcz86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zOiBTZWxlY3RPcHRpb25Qcm9wc1snb3B0aW9uJ11bXTtcbn07XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RGaWVsZDogRkM8U2VsZWN0RmllbGRQcm9wcz4gPSAoe1xuICBiYWNrZ3JvdW5kQ29sb3IgPSAndHJhbnNwYXJlbnQnLFxuICBib3JkZXJDb2xvciA9ICdibGFjaycsXG4gIGJvcmRlclR5cGUgPSAnc29saWQnLFxuICBjbGFzc05hbWUgPSAnY3Vyc29yLWRlZmF1bHQgZ3JpZCBvdXRsaW5lLTEgdy1mdWxsIGdyaWQtY29scy0xIHJvdW5kZWQtbWQgcHgtMy41IHB5LTIgdGV4dC1sZWZ0IHNtOnRleHQtc20vNicsXG4gIGNvbG9yID0gJ3ByaW1hcnknLFxuICBkZWZhdWx0VmFsdWUsXG4gIGxhYmVsLFxuICBsYWJlbENsYXNzLFxuICBsYWJlbENvbG9yID0gJ25ldXRyYWwnLFxuICBuYW1lLFxuICBvcHRpb25zXG59KSA9PiB7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlSXNNb2JpbGUoKTtcbiAgY29uc3Qge2NvbnRyb2wsIHRyaWdnZXJ9ID0gdXNlRm9ybUNvbnRleHQoKTtcbiAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSB1c2VTdGF0ZTxTZWxlY3RPcHRpb25Qcm9wc1snb3B0aW9uJ10+KG9wdGlvbnM/LmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uPy52YWx1ZSA9PT0gZGVmYXVsdFZhbHVlKSBhcyBTZWxlY3RPcHRpb25Qcm9wc1snb3B0aW9uJ10pO1xuICAvLyBjb25zdCBzZWxlY3RDbGFzc2VzID0gdXNlTWVtbygoKSA9PiBjbihcbiAgLy8gICBjbGFzc05hbWUsXG4gIC8vICAgYm9yZGVyVHlwZSA9PT0gJ3VuZGVybGluZScgPyAnYmctdHJhbnNwYXJlbnQnIDogJ2JnLXdoaXRlLzMwIGRhcms6YmctYmxhY2svMzAnLFxuICAvLyAgIGdldE91dGxpbmVDbGFzc2VzKGNvbG9yLCB7aGFzRm9jdXM6IHRydWUsIGhhc0hvdmVyOiB0cnVlfSlcbiAgLy8gKSwgW2JhY2tncm91bmRDb2xvciwgY2xhc3NOYW1lLCBjb2xvcl0pO1xuICBjb25zdCBzZWxlY3RDbGFzc2VzID0gdXNlTWVtbygoKSA9PiBjbihcbiAgICAnZmxleCByZWxhdGl2ZSB3LWZ1bGwnLFxuICAgIGdldElucHV0Qm9yZGVyQ2xhc3MoYm9yZGVyVHlwZSwgYm9yZGVyQ29sb3IsIGNvbG9yLCAndHJhbnNwYXJlbnQnKSwgY2xhc3NOYW1lKSwgW2JvcmRlclR5cGUsIGJvcmRlckNvbG9yLCBjb2xvciwgY2xhc3NOYW1lXVxuICApO1xuICBjb25zdCBsYWJlbENsYXNzZXMgPSB1c2VNZW1vKCgpID0+IGNuKFxuICAgIGxhYmVsQ2xhc3MsXG4gICAgJ2Jsb2NrIHRleHQtc20vNiBmb250LW1lZGl1bScsXG4gICAgZ2V0VGV4dENsYXNzZXMobGFiZWxDb2xvcilcbiAgKSwgW2xhYmVsQ2xhc3MsIGxhYmVsQ29sb3JdKTtcbiAgY29uc3Qgb3B0aW9uc0NsYXNzZXMgPSB1c2VNZW1vKCgpID0+IGNuKFxuICAgICdhYnNvbHV0ZSB6LTEwIG1heC1oLTU2IHctZnVsbCBvdmVyZmxvdy1hdXRvIHJvdW5kZWQtbWQgcHktMSB0ZXh0LWJhc2UgZm9jdXM6b3V0bGluZS1oaWRkZW4gZGF0YS1sZWF2ZTp0cmFuc2l0aW9uIGRhdGEtbGVhdmU6ZHVyYXRpb24tMTAwIGRhdGEtbGVhdmU6ZWFzZS1pbiBkYXRhLWNsb3NlZDpkYXRhLWxlYXZlOm9wYWNpdHktMCBzbTp0ZXh0LXNtJyxcbiAgICBnZXRCYWNrZ3JvdW5kQ2xhc3Nlcygnd2hpdGUnKSxcbiAgICBnZXRPdXRsaW5lQ2xhc3Nlcyhjb2xvciwge2hhc0ZvY3VzOiB0cnVlLCBoYXNIb3ZlcjogdHJ1ZX0pXG4gICksIFtiYWNrZ3JvdW5kQ29sb3IsIGNvbG9yXSk7XG4gIGNvbnN0IGNoZXZyb25DbGFzc2VzID0gdXNlTWVtbygoKSA9PiBjbihcbiAgICAnY29sLXN0YXJ0LTEgcm93LXN0YXJ0LTEgc2l6ZS01IHNlbGYtY2VudGVyIGp1c3RpZnktc2VsZi1lbmQgc206c2l6ZS00JyxcbiAgICBnZXRUZXh0Q2xhc3Nlcyhjb2xvcilcbiAgKSwgW2NvbG9yXSk7XG4gIGNvbnN0IG9uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRTZWxlY3RlZChvcHRpb25zPy5maW5kKChvcHRpb24pID0+IG9wdGlvbj8udmFsdWUgPT09IHZhbHVlKSBhcyBTZWxlY3RPcHRpb25Qcm9wc1snb3B0aW9uJ10pO1xuICAgIHRyaWdnZXIobmFtZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udHJvbGxlclxuICAgICAgY29udHJvbD17Y29udHJvbH1cbiAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIHJlbmRlcj17KHtmaWVsZH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgICAgICAgIDxzZWxlY3Qgey4uLmZpZWxkfSB2YWx1ZT17c2VsZWN0ZWQ/LnZhbHVlfT5cbiAgICAgICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtvcHRpb24uaWR9IHZhbHVlPXtvcHRpb24udmFsdWV9PntvcHRpb24ubGFiZWx9PC9vcHRpb24+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgdy1mdWxsXCI+XG4gICAgICAgICAgICA8TGlzdGJveCB2YWx1ZT17c2VsZWN0ZWR9IG9uQ2hhbmdlPXsodmFsdWUpID0+IG9uQ2hhbmdlKHZhbHVlIGFzIHVua25vd24gYXMgc3RyaW5nKX0+XG4gICAgICAgICAgICAgIDxMYWJlbCBjbGFzc05hbWU9e2xhYmVsQ2xhc3Nlc30+XG4gICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICA8c2VsZWN0IHsuLi5maWVsZH0gaGlkZGVuIHZhbHVlPXtzZWxlY3RlZD8udmFsdWV9IC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZmxleCBmbGV4LWNvbCByZWxhdGl2ZSB3LWZ1bGwnLCB7J210LTInOiBsYWJlbH0pfT5cbiAgICAgICAgICAgICAgICA8TGlzdGJveEJ1dHRvbiBjbGFzc05hbWU9e3NlbGVjdENsYXNzZXN9PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY29sLXN0YXJ0LTEgcm93LXN0YXJ0LTEgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcHItNlwiPlxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWQ/LmltYWdlICYmIDxpbWcgYWx0PVwiXCIgc3JjPXtzZWxlY3RlZC5pbWFnZX0gY2xhc3NOYW1lPVwic2l6ZS01IHNocmluay0wIHJvdW5kZWQtZnVsbFwiIC8+fVxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWQ/Lmljb24gJiYgPFN2ZyBjbGFzc05hbWU9XCJzaXplLTUgc2hyaW5rLTAgcm91bmRlZC1mdWxsXCIgbmFtZT17c2VsZWN0ZWQuaWNvbn0gLz59XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJsb2NrIHRydW5jYXRlXCI+e3NlbGVjdGVkPy5sYWJlbH0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbnNVcERvd25cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjaGV2cm9uQ2xhc3Nlc31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9MaXN0Ym94QnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPExpc3Rib3hPcHRpb25zXG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e29wdGlvbnNDbGFzc2VzfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0T3B0aW9uIGtleT17b3B0aW9uPy5pZCB8fCBvcHRpb24/LmxhYmVsfSBvcHRpb249e29wdGlvbn0gLz5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvTGlzdGJveE9wdGlvbnM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9MaXN0Ym94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFFQSxTQUFRLE9BQU8sU0FBUyxlQUFlLHNCQUFxQjtBQUM1RCxTQUFRLFVBQVM7QUFDakIsU0FBUSxzQkFBcUI7QUFDN0IsU0FBUSxTQUFTLGdCQUF3QjtBQUN6QyxTQUFRLFlBQVksc0JBQXFCO0FBRXpDLFNBQVEsbUJBQWtCO0FBQzFCLFNBQVEsc0JBQXNCLG1CQUFtQixzQkFBcUI7QUFDdEUsU0FBeUIsMkJBQTBCO0FBQ25ELFNBQVEsV0FBVTtBQUNsQixTQUFRLG9CQUFzQztBQXVFaEMsY0FlTSxZQWZOO0FB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