UNPKG

@nlabs/gothamjs

Version:
124 lines (123 loc) 17.4 kB
'use client'; import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; 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'; export 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( // className, // borderType === 'underline' ? 'bg-transparent' : 'bg-white/30 dark:bg-black/30', // getOutlineClasses(color, {hasFocus: true, hasHover: true}) // ), [backgroundColor, className, color]); 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: control, defaultValue: defaultValue, name: 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, " " ] }) ] }), /*#__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 }, option?.id || option?.label)) }) ] }) ] }) }); } }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1NlbGVjdEZpZWxkL1NlbGVjdEZpZWxkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7TGFiZWwsIExpc3Rib3gsIExpc3Rib3hCdXR0b24sIExpc3Rib3hPcHRpb25zfSBmcm9tICdAaGVhZGxlc3N1aS9yZWFjdCc7XG5pbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHtDaGV2cm9uc1VwRG93bn0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7dXNlTWVtbywgdXNlU3RhdGUsIHR5cGUgRkN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Q29udHJvbGxlciwgdXNlRm9ybUNvbnRleHR9IGZyb20gJ3JlYWN0LWhvb2stZm9ybSc7XG5cbmltcG9ydCB7dXNlSXNNb2JpbGV9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUlzTW9iaWxlLmpzJztcbmltcG9ydCB7Z2V0QmFja2dyb3VuZENsYXNzZXMsIGdldE91dGxpbmVDbGFzc2VzLCBnZXRUZXh0Q2xhc3Nlc30gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5pbXBvcnQge0lucHV0Qm9yZGVyVHlwZSwgZ2V0SW5wdXRCb3JkZXJDbGFzc30gZnJvbSAnLi4vSW5wdXRGaWVsZC9JbnB1dEZpZWxkLmpzJztcbmltcG9ydCB7U3ZnfSBmcm9tICcuLi9TdmcvU3ZnLmpzJztcbmltcG9ydCB7U2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Qcm9wc30gZnJvbSAnLi9TZWxlY3RPcHRpb24uanMnO1xuXG5pbXBvcnQgdHlwZSB7R290aGFtQ29sb3J9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yVXRpbHMuanMnO1xuXG5leHBvcnQgdHlwZSBTZWxlY3RGaWVsZFByb3BzID0ge1xuICByZWFkb25seSBiYWNrZ3JvdW5kQ29sb3I/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+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9MaXN0Ym94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6WyJMYWJlbCIsIkxpc3Rib3giLCJMaXN0Ym94QnV0dG9uIiwiTGlzdGJveE9wdGlvbnMiLCJjbiIsIkNoZXZyb25zVXBEb3duIiwidXNlTWVtbyIsInVzZVN0YXRlIiwiQ29udHJvbGxlciIsInVzZUZvcm1Db250ZXh0IiwidXNlSXNNb2JpbGUiLCJnZXRCYWNrZ3JvdW5kQ2xhc3NlcyIsImdldE91dGxpbmVDbGFzc2VzIiwiZ2V0VGV4dENsYXNzZXMiLCJnZXRJbnB1dEJvcmRlckNsYXNzIiwiU3ZnIiwiU2VsZWN0T3B0aW9uIiwiU2VsZWN0RmllbGQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDb2xvciIsImJvcmRlclR5cGUiLCJjbGFzc05hbWUiLCJjb2xvciIsImRlZmF1bHRWYWx1ZSIsImxhYmVsIiwibGFiZWxDbGFzcyIsImxhYmVsQ29sb3IiLCJuYW1lIiwib3B0aW9ucyIsImlzTW9iaWxlIiwiY29udHJvbCIsInRyaWdnZXIiLCJzZWxlY3RlZCIsInNldFNlbGVjdGVkIiwiZmluZCIsIm9wdGlvbiIsInZhbHVlIiwic2VsZWN0Q2xhc3NlcyIsImxhYmVsQ2xhc3NlcyIsIm9wdGlvbnNDbGFzc2VzIiwiaGFzRm9jdXMiLCJoYXNIb3ZlciIsImNoZXZyb25DbGFzc2VzIiwib25DaGFuZ2UiLCJyZW5kZXIiLCJmaWVsZCIsInNlbGVjdCIsIm1hcCIsImlkIiwiZGl2IiwiaGlkZGVuIiwic3BhbiIsImltYWdlIiwiaW1nIiwiYWx0Iiwic3JjIiwiaWNvbiIsImFyaWEtaGlkZGVuIiwidHJhbnNpdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsU0FBUUEsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLGFBQWEsRUFBRUMsY0FBYyxRQUFPLG9CQUFvQjtBQUNoRixTQUFRQyxFQUFFLFFBQU8sZUFBZTtBQUNoQyxTQUFRQyxjQUFjLFFBQU8sZUFBZTtBQUM1QyxTQUFRQyxPQUFPLEVBQUVDLFFBQVEsUUFBZ0IsUUFBUTtBQUNqRCxTQUFRQyxVQUFVLEVBQUVDLGNBQWMsUUFBTyxrQkFBa0I7QUFFM0QsU0FBUUMsV0FBVyxRQUFPLDZCQUE2QjtBQUN2RCxTQUFRQyxvQkFBb0IsRUFBRUMsaUJBQWlCLEVBQUVDLGNBQWMsUUFBTyw0QkFBNEI7QUFDbEcsU0FBeUJDLG1CQUFtQixRQUFPLDhCQUE4QjtBQUNqRixTQUFRQyxHQUFHLFFBQU8sZ0JBQWdCO0FBQ2xDLFNBQVFDLFlBQVksUUFBMEIsb0JBQW9CO0FBa0JsRSxPQUFPLE1BQU1DLGNBQW9DLENBQUMsRUFDaERDLGtCQUFrQixhQUFhLEVBQy9CQyxj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