@solace-health/ui 0.10.717 → 0.10.719
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-5EK4BBD6.cjs +2 -0
- package/dist/chunk-5EK4BBD6.cjs.map +1 -0
- package/dist/{chunk-PBVKIV4W.cjs → chunk-CIS7NHMS.cjs} +2 -2
- package/dist/{chunk-PBVKIV4W.cjs.map → chunk-CIS7NHMS.cjs.map} +1 -1
- package/dist/{chunk-2BHGUK45.cjs → chunk-GYVGTJX4.cjs} +2 -2
- package/dist/{chunk-2BHGUK45.cjs.map → chunk-GYVGTJX4.cjs.map} +1 -1
- package/dist/chunk-J3TZ7WPF.js +2 -0
- package/dist/chunk-J3TZ7WPF.js.map +1 -0
- package/dist/{chunk-D5AT3ZJD.js → chunk-K7VBPJUA.js} +2 -2
- package/dist/{chunk-D5AT3ZJD.js.map → chunk-K7VBPJUA.js.map} +1 -1
- package/dist/{chunk-RXTVQ2XW.js → chunk-XA4UER6K.js} +2 -2
- package/dist/{chunk-RXTVQ2XW.js.map → chunk-XA4UER6K.js.map} +1 -1
- package/dist/chunk-YNO7JCKX.cjs +2 -0
- package/dist/chunk-YNO7JCKX.cjs.map +1 -0
- package/dist/chunk-YOXQYCZI.js +2 -0
- package/dist/chunk-YOXQYCZI.js.map +1 -0
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/v2/address-input/address-input.cjs +1 -1
- package/dist/v2/address-input/address-input.js +1 -1
- package/dist/v2/combobox/combobox.cjs +1 -1
- package/dist/v2/combobox/combobox.d.ts +5 -1
- package/dist/v2/combobox/combobox.js +1 -1
- package/dist/v2/combobox/combobox.stories.d.ts +11 -0
- package/dist/v2/combobox/input-variant.cjs +2 -0
- package/dist/v2/combobox/input-variant.cjs.map +1 -0
- package/dist/v2/combobox/input-variant.d.ts +6 -0
- package/dist/v2/combobox/input-variant.js +2 -0
- package/dist/v2/combobox/input-variant.js.map +1 -0
- package/dist/v2/date-picker/date-picker-input.cjs +1 -1
- package/dist/v2/date-picker/date-picker-input.js +1 -1
- package/dist/v2/date-picker/date-picker.cjs +1 -1
- package/dist/v2/date-picker/date-picker.js +1 -1
- package/dist/v2/image-preview/image-preview.cjs +1 -1
- package/dist/v2/image-preview/image-preview.js +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.js +1 -1
- package/dist/v2/multiselect/components/MultiSelectDropdown.cjs +1 -1
- package/dist/v2/multiselect/components/MultiSelectDropdown.js +1 -1
- package/dist/v2/multiselect/multiselect.cjs +1 -1
- package/dist/v2/multiselect/multiselect.js +1 -1
- package/dist/v2/time-select/time-select.cjs +1 -1
- package/dist/v2/time-select/time-select.js +1 -1
- package/package.json +4 -3
- package/dist/chunk-3ZCSAQG7.js +0 -2
- package/dist/chunk-3ZCSAQG7.js.map +0 -1
- package/dist/chunk-6C5ROFWH.cjs +0 -2
- package/dist/chunk-6C5ROFWH.cjs.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),combobox=require('@base-ui/react/combobox'),react=require('react'),lu=require('react-icons/lu'),jsxRuntime=require('react/jsx-runtime');var v=o=>typeof o.label=="string"?o.label:o.additionalSearchText??"",R=o=>[v(o),o.additionalSearchText,o.secondaryLabel].filter(Boolean).join(" "),U=({classNames:o=void 0,disabled:f=false,options:d,preSearchOptions:h=void 0,onSearchChange:x=void 0,onChange:y=void 0,onOpenChange:C=void 0,placeholder:P="Select an option",searchLabel:w="Search...",notFoundMessage:S="Not found.",value:s=void 0,size:k="default",error:c=false,shouldFilter:L=true,pinnedOption:n=void 0,side:N="bottom"})=>{let[_,I]=react.useState(false),{contains:T}=combobox.Combobox.useFilter({sensitivity:"base"}),[z,b]=react.useState(false),E=z?d:h||d,O=n&&n.value===s?n:d.find(e=>e.value===s)??null,m=e=>{I(e),b(false),C?.(e);},u=e=>{y?.(e===s?"":e);};return jsxRuntime.jsxs(combobox.Combobox.Root,{items:E,value:O,onValueChange:(e,{reason:r})=>{r==="item-press"&&e&&u(e.value);},open:_,onOpenChange:m,onInputValueChange:(e,{reason:r})=>{r!=="input-change"&&r!=="input-clear"||(b(!!e),x?.(e));},itemToStringLabel:v,isItemEqualToValue:(e,r)=>e.value===r.value,filter:L?(e,r)=>T(e,r,R):null,disabled:f,children:[jsxRuntime.jsxs(combobox.Combobox.InputGroup,{"aria-invalid":c,className:chunkQRO22BPZ_cjs.a("focus-within:border-dark-green focus-within:ring-ring/50 aria-invalid:border-destructive hover:border-dark-green flex h-12 w-full items-center gap-2 rounded-md border bg-white px-4 transition-all focus-within:ring-[3px] data-disabled:pointer-events-none data-disabled:bg-gray-200 data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",k==="sm"&&"h-8 px-3 [&_svg:not([class*='size-'])]:size-4",o?.trigger),children:[jsxRuntime.jsx(lu.LuSearch,{className:chunkQRO22BPZ_cjs.a(c&&"text-red")}),jsxRuntime.jsx(combobox.Combobox.Input,{"aria-label":w,placeholder:P,className:chunkQRO22BPZ_cjs.a("placeholder:text-muted-foreground h-full min-w-0 flex-1 truncate bg-transparent outline-none",o?.input)}),jsxRuntime.jsx(combobox.Combobox.Trigger,{"aria-label":"Show options",className:"flex cursor-pointer items-center opacity-50",children:jsxRuntime.jsx(lu.LuChevronsUpDown,{})})]}),jsxRuntime.jsx(combobox.Combobox.Portal,{children:jsxRuntime.jsx(combobox.Combobox.Positioner,{side:N,sideOffset:4,align:"start",className:chunkQRO22BPZ_cjs.a("z-modal-stacking-context",o?.positioner),children:jsxRuntime.jsxs(combobox.Combobox.Popup,{className:chunkQRO22BPZ_cjs.a("bg-popover text-popover-foreground pointer-events-auto flex max-h-[min(360px,var(--available-height))] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col overflow-hidden rounded-md border shadow-md outline-hidden",o?.content),children:[jsxRuntime.jsx(combobox.Combobox.Empty,{className:"py-6 text-center empty:hidden",children:S}),jsxRuntime.jsx(combobox.Combobox.List,{onWheel:e=>e.stopPropagation(),className:"min-h-0 scroll-py-1 overflow-y-auto overscroll-contain p-1 empty:hidden",children:e=>jsxRuntime.jsxs(combobox.Combobox.Item,{value:e,disabled:e.disabled,className:chunkQRO22BPZ_cjs.a("data-highlighted:bg-accent data-highlighted:text-primary [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",o?.item),children:[jsxRuntime.jsx("span",{className:"min-w-0 truncate",children:e.label}),e.secondaryLabel&&jsxRuntime.jsx("span",{className:"text-muted-foreground ml-auto shrink-0",children:e.secondaryLabel}),jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a(!e.secondaryLabel&&"ml-auto",s===e.value?"opacity-100":"opacity-0")})]},e.value)}),n&&jsxRuntime.jsx("div",{className:"p-1",children:jsxRuntime.jsxs("button",{type:"button",disabled:n.disabled,onClick:()=>{u(n.value),m(false);},className:chunkQRO22BPZ_cjs.a("text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",o?.pinnedOption),children:[n.label,jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a("ml-auto",s===n.value?"opacity-100":"opacity-0")})]})})]})})})]})};exports.a=U;//# sourceMappingURL=chunk-5EK4BBD6.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-5EK4BBD6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/combobox/input-variant.tsx"],"names":["toLabelText","option","toSearchText","InputVariantCombobox","classNames","disabled","options","preSearchOptions","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","pinnedOption","side","open","setOpen","useState","contains","ComboboxPrimitive","isSearching","setIsSearching","optionsToDisplay","selectedOption","item","handleOpenChange","nextOpen","handleSelect","selectedValue","jsxs","reason","inputValue","selected","query","cn","jsx","LuSearch","LuChevronsUpDown","LuCheck"],"mappings":"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","file":"chunk-5EK4BBD6.cjs","sourcesContent":["import { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { useState } from 'react';\nimport { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\nimport type { ComboboxOption, ComboboxProps } from './combobox';\n\nconst toLabelText = (option: ComboboxOption) =>\n typeof option.label === 'string' ? option.label : (option.additionalSearchText ?? '');\n\nconst toSearchText = (option: ComboboxOption) =>\n [toLabelText(option), option.additionalSearchText, option.secondaryLabel]\n .filter(Boolean)\n .join(' ');\n\n/**\n * The `input` variant of Combobox: the search happens in the input itself, built on the Base UI\n * combobox (https://ui.shadcn.com/docs/components/base/combobox).\n */\nexport const InputVariantCombobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n pinnedOption = undefined,\n side = 'bottom',\n}: Omit<ComboboxProps, 'variant'>) => {\n const [open, setOpen] = useState(false);\n const { contains } = ComboboxPrimitive.useFilter({ sensitivity: 'base' });\n\n const [isSearching, setIsSearching] = useState(false);\n const optionsToDisplay = isSearching ? options : preSearchOptions || options;\n\n const selectedOption =\n pinnedOption && pinnedOption.value === value\n ? pinnedOption\n : (options.find((item) => item.value === value) ?? null);\n\n const handleOpenChange = (nextOpen: boolean) => {\n setOpen(nextOpen);\n setIsSearching(false);\n onOpenChange?.(nextOpen);\n };\n\n const handleSelect = (selectedValue: string) => {\n onChange?.(selectedValue === value ? '' : selectedValue);\n };\n\n return (\n <ComboboxPrimitive.Root\n items={optionsToDisplay}\n value={selectedOption}\n onValueChange={(option, { reason }) => {\n if (reason === 'item-press' && option) {\n handleSelect(option.value);\n }\n }}\n open={open}\n onOpenChange={handleOpenChange}\n onInputValueChange={(inputValue, { reason }) => {\n if (reason !== 'input-change' && reason !== 'input-clear') {\n return;\n }\n\n setIsSearching(!!inputValue);\n onSearchChange?.(inputValue);\n }}\n itemToStringLabel={toLabelText}\n isItemEqualToValue={(item, selected) => item.value === selected.value}\n filter={shouldFilter ? (option, query) => contains(option, query, toSearchText) : null}\n disabled={disabled}\n >\n <ComboboxPrimitive.InputGroup\n aria-invalid={error}\n className={cn(\n \"focus-within:border-dark-green focus-within:ring-ring/50 aria-invalid:border-destructive hover:border-dark-green flex h-12 w-full items-center gap-2 rounded-md border bg-white px-4 transition-all focus-within:ring-[3px] data-disabled:pointer-events-none data-disabled:bg-gray-200 data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <LuSearch className={cn(error && 'text-red')} />\n <ComboboxPrimitive.Input\n aria-label={searchLabel}\n placeholder={placeholder}\n className={cn(\n 'placeholder:text-muted-foreground h-full min-w-0 flex-1 truncate bg-transparent outline-none',\n classNames?.input,\n )}\n />\n <ComboboxPrimitive.Trigger\n aria-label=\"Show options\"\n className=\"flex cursor-pointer items-center opacity-50\"\n >\n <LuChevronsUpDown />\n </ComboboxPrimitive.Trigger>\n </ComboboxPrimitive.InputGroup>\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={4}\n align=\"start\"\n className={cn('z-modal-stacking-context', classNames?.positioner)}\n >\n <ComboboxPrimitive.Popup\n className={cn(\n 'bg-popover text-popover-foreground pointer-events-auto flex max-h-[min(360px,var(--available-height))] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col overflow-hidden rounded-md border shadow-md outline-hidden',\n classNames?.content,\n )}\n >\n <ComboboxPrimitive.Empty className=\"py-6 text-center empty:hidden\">\n {notFoundMessage}\n </ComboboxPrimitive.Empty>\n <ComboboxPrimitive.List\n onWheel={(e) => e.stopPropagation()}\n className=\"min-h-0 scroll-py-1 overflow-y-auto overscroll-contain p-1 empty:hidden\"\n >\n {(item: ComboboxOption) => (\n <ComboboxPrimitive.Item\n key={item.value}\n value={item}\n disabled={item.disabled}\n className={cn(\n \"data-highlighted:bg-accent data-highlighted:text-primary [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.item,\n )}\n >\n <span className=\"min-w-0 truncate\">{item.label}</span>\n {item.secondaryLabel && (\n <span className=\"text-muted-foreground ml-auto shrink-0\">\n {item.secondaryLabel}\n </span>\n )}\n <LuCheck\n className={cn(\n !item.secondaryLabel && 'ml-auto',\n value === item.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </ComboboxPrimitive.Item>\n )}\n </ComboboxPrimitive.List>\n {pinnedOption && (\n <div className=\"p-1\">\n <button\n type=\"button\"\n disabled={pinnedOption.disabled}\n onClick={() => {\n handleSelect(pinnedOption.value);\n handleOpenChange(false);\n }}\n className={cn(\n \"text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0\",\n classNames?.pinnedOption,\n )}\n >\n {pinnedOption.label}\n <LuCheck\n className={cn(\n 'ml-auto',\n value === pinnedOption.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </button>\n </div>\n )}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkKLVOKO56_cjs=require('./chunk-KLVOKO56.cjs'),chunkAYDT2WNR_cjs=require('./chunk-AYDT2WNR.cjs'),chunkUQH4L66A_cjs=require('./chunk-UQH4L66A.cjs'),chunkDBJQ7H6H_cjs=require('./chunk-DBJQ7H6H.cjs'),
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkUYX4D44N_cjs=require('./chunk-UYX4D44N.cjs'),chunkKLVOKO56_cjs=require('./chunk-KLVOKO56.cjs'),chunkAYDT2WNR_cjs=require('./chunk-AYDT2WNR.cjs'),chunkUQH4L66A_cjs=require('./chunk-UQH4L66A.cjs'),chunkDBJQ7H6H_cjs=require('./chunk-DBJQ7H6H.cjs'),chunkGYVGTJX4_cjs=require('./chunk-GYVGTJX4.cjs'),chunk4MTRF322_cjs=require('./chunk-4MTRF322.cjs'),chunk4VLWKHXC_cjs=require('./chunk-4VLWKHXC.cjs'),chunkPM4UNYHM_cjs=require('./chunk-PM4UNYHM.cjs'),chunk4CHRDQR7_cjs=require('./chunk-4CHRDQR7.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var ae=react.forwardRef((C,P)=>{let{id:x,value:s,onChange:D,placeholder:F,defaultOptions:T=[],options:K=[],delay:V,onSearch:n,triggerSearchOnOpen:W,loading:B=false,loadingIndicator:E,emptyIndicator:H,maxSelected:k=0,onMaxSelected:q,hidePlaceholderWhenSelected:L=true,disabled:a,className:Y,classNames:z,badgeWrapperClassName:A,badgeClassName:G,getBadgeClassName:J=()=>"",selectFirstItem:Q=true,commandProps:e,inputProps:U,persistInputOnSelect:X=false,persistInputOnBlur:Z=false}=C,{inputRef:t,commandRef:c,onSearchRef:_,scrollbarRef:u,prevExternalOptionsRef:$}=chunkKLVOKO56_cjs.a({onSearch:n}),{uniqueId:p,open:o,setOpen:m,selected:r,setSelected:l,options:j,setOptions:ee,inputSearchValue:te,setInputSearchValue:d,debouncedSearchTerm:re}=chunkUYX4D44N_cjs.a({id:x,value:s,defaultOptions:T,delay:V}),{toggleOption:f,handleKeyDown:oe}=chunkPM4UNYHM_cjs.a({open:o,selected:r,maxSelected:k,onChange:D,onMaxSelected:q,setInputSearchValue:d,commandRef:c,inputRef:t,setSelected:l,setOpen:m,persistInputOnSelect:X});chunkAYDT2WNR_cjs.a({debouncedSearchTerm:re,open:o,onSearchRef:_,triggerSearchOnOpen:W}),chunkUQH4L66A_cjs.a({externalOptions:K,setOptions:ee,prevExternalOptionsRef:$}),chunkDBJQ7H6H_cjs.a({value:s,setSelected:l}),react.useImperativeHandle(P,()=>({selectedValue:[...r],input:t.current,focus:()=>t?.current?.focus(),reset:()=>l([])}),[r,t,l]);let le=react.useCallback(()=>{if(e?.filter)return e.filter},[e?.filter]);return jsxRuntime.jsxs(chunk4CHRDQR7_cjs.a,{ref:c,...e,onKeyDown:S=>{oe(S),e?.onKeyDown?.(S);},className:chunkQRO22BPZ_cjs.a("h-auto overflow-visible bg-transparent",e?.className),shouldFilter:e?.shouldFilter!==void 0?e.shouldFilter:!n,filter:le(),children:[jsxRuntime.jsx(chunk4VLWKHXC_cjs.a,{open:o,disabled:a,inputRef:t,selected:r,uniqueId:p,className:Y,children:jsxRuntime.jsx(chunk4MTRF322_cjs.a,{selected:r,scrollbarRef:u,toggleOption:f,inputProps:U,inputRef:t,open:o,setOpen:m,placeholder:F,hidePlaceholderWhenSelected:L,disabled:a,classNames:z,badgeWrapperClassName:A,badgeClassName:G,getBadgeClassName:J,inputSearchValue:te,setInputSearchValue:d,persistInputOnBlur:Z})}),jsxRuntime.jsx(chunkGYVGTJX4_cjs.a,{uniqueId:p,scrollbarRef:u,open:o,loading:B,options:j,selected:r,toggleOption:f,onSearch:n,inputRef:t,emptyIndicator:H,loadingIndicator:E,selectFirstItem:Q})]})});ae.displayName="MultiSelect";exports.a=ae;//# sourceMappingURL=chunk-CIS7NHMS.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-CIS7NHMS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/multiselect/multiselect.tsx"],"names":["MultiSelect","forwardRef","props","ref","id","value","onChange","placeholder","externalDefaultOptions","externalOptions","delay","onSearch","triggerSearchOnOpen","loading","loadingIndicator","emptyIndicator","maxSelected","onMaxSelected","hidePlaceholderWhenSelected","disabled","className","classNames","badgeWrapperClassName","badgeClassName","getBadgeClassName","selectFirstItem","commandProps","inputProps","persistInputOnSelect","persistInputOnBlur","inputRef","commandRef","onSearchRef","scrollbarRef","prevExternalOptionsRef","useRefs","uniqueId","open","setOpen","selected","setSelected","options","setOptions","inputSearchValue","setInputSearchValue","debouncedSearchTerm","useMultiSelect","toggleOption","handleKeyDown","useInteractions","useSearch","useSyncOptions","useSyncSelected","useImperativeHandle","commandFilter","useCallback","jsxs","Command","e","cn","jsx","MultiSelectTrigger","MultiSelectInput","MultiSelectDropdown"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/multiselect/multiselect.tsx"],"names":["MultiSelect","forwardRef","props","ref","id","value","onChange","placeholder","externalDefaultOptions","externalOptions","delay","onSearch","triggerSearchOnOpen","loading","loadingIndicator","emptyIndicator","maxSelected","onMaxSelected","hidePlaceholderWhenSelected","disabled","className","classNames","badgeWrapperClassName","badgeClassName","getBadgeClassName","selectFirstItem","commandProps","inputProps","persistInputOnSelect","persistInputOnBlur","inputRef","commandRef","onSearchRef","scrollbarRef","prevExternalOptionsRef","useRefs","uniqueId","open","setOpen","selected","setSelected","options","setOptions","inputSearchValue","setInputSearchValue","debouncedSearchTerm","useMultiSelect","toggleOption","handleKeyDown","useInteractions","useSearch","useSyncOptions","useSyncSelected","useImperativeHandle","commandFilter","useCallback","jsxs","Command","e","cn","jsx","MultiSelectTrigger","MultiSelectInput","MultiSelectDropdown"],"mappings":"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","file":"chunk-CIS7NHMS.cjs","sourcesContent":["import { forwardRef, Ref, useCallback, useImperativeHandle } from 'react';\nimport { Command } from '@/v2/command/command';\nimport { cn } from '@/lib/utils';\nimport { MultiSelectProps, MultiSelectRef } from './types';\nimport { useMultiSelect } from './hooks/useMultiSelect';\nimport { useRefs } from './hooks/useRefs';\nimport { useInteractions } from './hooks/useInteractions';\nimport { useSearch } from './hooks/useSearch';\nimport { MultiSelectTrigger } from './components/MultiSelectTrigger';\nimport { MultiSelectInput } from './components/MultiSelectInput';\nimport { MultiSelectDropdown } from './components/MultiSelectDropdown';\nimport { useSyncOptions } from './hooks/useSyncOptions';\nimport { useSyncSelected } from './hooks/useSyncSelected';\n\nexport const MultiSelect = forwardRef<MultiSelectRef, MultiSelectProps>(\n (props: MultiSelectProps, ref: Ref<MultiSelectRef>) => {\n const {\n id,\n value,\n onChange,\n placeholder,\n defaultOptions: externalDefaultOptions = [],\n options: externalOptions = [],\n delay,\n onSearch,\n triggerSearchOnOpen,\n loading = false,\n loadingIndicator,\n emptyIndicator,\n maxSelected = 0,\n onMaxSelected,\n hidePlaceholderWhenSelected = true,\n disabled,\n className,\n classNames,\n badgeWrapperClassName,\n badgeClassName,\n getBadgeClassName = () => '',\n selectFirstItem = true,\n commandProps,\n inputProps,\n persistInputOnSelect = false,\n persistInputOnBlur = false,\n } = props;\n\n const { inputRef, commandRef, onSearchRef, scrollbarRef, prevExternalOptionsRef } = useRefs({\n onSearch,\n });\n\n const {\n uniqueId,\n open,\n setOpen,\n selected,\n setSelected,\n options,\n setOptions,\n inputSearchValue,\n setInputSearchValue,\n debouncedSearchTerm,\n } = useMultiSelect({\n id,\n value,\n defaultOptions: externalDefaultOptions,\n delay,\n });\n\n const { toggleOption, handleKeyDown } = useInteractions({\n open,\n selected,\n maxSelected,\n onChange,\n onMaxSelected,\n setInputSearchValue,\n commandRef,\n inputRef,\n setSelected,\n setOpen,\n persistInputOnSelect,\n });\n\n useSearch({\n debouncedSearchTerm,\n open,\n onSearchRef,\n triggerSearchOnOpen,\n });\n\n useSyncOptions({\n externalOptions,\n setOptions,\n prevExternalOptionsRef,\n });\n\n useSyncSelected({\n value,\n setSelected,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n selectedValue: [...selected],\n input: inputRef.current as HTMLInputElement,\n focus: () => inputRef?.current?.focus(),\n reset: () => setSelected([]),\n }),\n [selected, inputRef, setSelected],\n );\n\n const commandFilter = useCallback(() => {\n if (commandProps?.filter) {\n return commandProps.filter;\n }\n\n // Using default filter in `cmdk`. We don't have to provide it.\n return undefined;\n }, [commandProps?.filter]);\n\n return (\n <Command\n ref={commandRef}\n {...commandProps}\n onKeyDown={(e) => {\n handleKeyDown(e);\n commandProps?.onKeyDown?.(e);\n }}\n className={cn('h-auto overflow-visible bg-transparent', commandProps?.className)}\n shouldFilter={\n commandProps?.shouldFilter !== undefined ? commandProps.shouldFilter : !onSearch\n } // When onSearch is provided, we don't want to filter the options. You can still override it.\n filter={commandFilter()}\n >\n <MultiSelectTrigger {...{ open, disabled, inputRef, selected, uniqueId, className }}>\n <MultiSelectInput\n {...{\n selected,\n scrollbarRef,\n toggleOption,\n inputProps,\n inputRef,\n open,\n setOpen,\n placeholder,\n hidePlaceholderWhenSelected,\n disabled,\n classNames,\n badgeWrapperClassName,\n badgeClassName,\n getBadgeClassName,\n inputSearchValue,\n setInputSearchValue,\n persistInputOnBlur,\n }}\n />\n </MultiSelectTrigger>\n\n <MultiSelectDropdown\n {...{\n uniqueId,\n scrollbarRef,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n }}\n />\n </Command>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkPXY2YVT5_cjs=require('./chunk-PXY2YVT5.cjs'),chunkASNQTAAZ_cjs=require('./chunk-ASNQTAAZ.cjs'),chunk4CHRDQR7_cjs=require('./chunk-4CHRDQR7.cjs'),jsxRuntime=require('react/jsx-runtime');var g=({uniqueId:t,open:p,loading:l,options:o,selected:c,toggleOption:a,onSearch:d,scrollbarRef:r,inputRef:f,emptyIndicator:R,loadingIndicator:n,selectFirstItem:M})=>jsxRuntime.jsx("div",{className:"relative",children:p&&jsxRuntime.jsx(chunk4CHRDQR7_cjs.d,{id:t,className:"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none",onMouseLeave:()=>{r.current=false;},onMouseEnter:()=>{r.current=true;},onMouseUp:()=>{f?.current?.focus();},children:l&&n?n:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkASNQTAAZ_cjs.a,{onSearch:d,options:o,emptyIndicator:R}),!M&&jsxRuntime.jsx(chunk4CHRDQR7_cjs.h,{value:"-",className:"hidden"}),jsxRuntime.jsx(chunkPXY2YVT5_cjs.a,{options:o,uniqueId:t,selected:c,toggleOption:a})]})})});exports.a=g;//# sourceMappingURL=chunk-GYVGTJX4.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-GYVGTJX4.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"+MAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,cAAAA,CAACC,mBAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,eAAAA,CAAAC,mBAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,cAAAA,CAACI,mBAAAA,CAAA,CAAgB,QAAA,CAAAV,CAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,cAAAA,CAACK,oBAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,eAACM,mBAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,CAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"+MAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,cAAAA,CAACC,mBAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,eAAAA,CAAAC,mBAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,cAAAA,CAACI,mBAAAA,CAAA,CAAgB,QAAA,CAAAV,CAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,cAAAA,CAACK,oBAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,eAACM,mBAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,CAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-GYVGTJX4.cjs","sourcesContent":["import { CommandItem, CommandList } from '@/v2/command/command';\nimport { MultiSelectProps } from '../types';\nimport { MultiSelectCommandGroup } from './MultiSelectCommandGroup';\nimport { EmptyItem } from './EmptyItem';\nimport type { UseRefsReturn } from '../hooks/useRefs';\nimport { UseMultiSelectReturn } from '../hooks/useMultiSelect';\nimport { UseInteractionsReturn } from '../hooks/useInteractions';\n\ntype Props = Pick<\n MultiSelectProps,\n 'loading' | 'loadingIndicator' | 'emptyIndicator' | 'onSearch' | 'selectFirstItem'\n> &\n Pick<UseRefsReturn, 'inputRef' | 'scrollbarRef'> &\n Pick<UseMultiSelectReturn, 'uniqueId' | 'open' | 'selected' | 'options'> &\n Pick<UseInteractionsReturn, 'toggleOption'>;\n\nexport const MultiSelectDropdown = ({\n uniqueId,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n scrollbarRef,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n}: Props) => {\n return (\n <div className=\"relative\">\n {open && (\n <CommandList\n id={uniqueId}\n className=\"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none\"\n onMouseLeave={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = false;\n // setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = true;\n // setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {loading && loadingIndicator ? (\n loadingIndicator\n ) : (\n <>\n <EmptyItem {...{ onSearch, options, emptyIndicator }} />\n {!selectFirstItem && <CommandItem value=\"-\" className=\"hidden\" />}\n <MultiSelectCommandGroup {...{ options, uniqueId, selected, toggleOption }} />\n </>\n )}\n </CommandList>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-YTIIAU4W.js';import {Combobox}from'@base-ui/react/combobox';import {useState}from'react';import {LuSearch,LuChevronsUpDown,LuCheck}from'react-icons/lu';import {jsxs,jsx}from'react/jsx-runtime';var v=o=>typeof o.label=="string"?o.label:o.additionalSearchText??"",R=o=>[v(o),o.additionalSearchText,o.secondaryLabel].filter(Boolean).join(" "),U=({classNames:o=void 0,disabled:f=false,options:d,preSearchOptions:h=void 0,onSearchChange:x=void 0,onChange:y=void 0,onOpenChange:C=void 0,placeholder:P="Select an option",searchLabel:w="Search...",notFoundMessage:S="Not found.",value:s=void 0,size:k="default",error:c=false,shouldFilter:L=true,pinnedOption:n=void 0,side:N="bottom"})=>{let[_,I]=useState(false),{contains:T}=Combobox.useFilter({sensitivity:"base"}),[z,b]=useState(false),E=z?d:h||d,O=n&&n.value===s?n:d.find(e=>e.value===s)??null,m=e=>{I(e),b(false),C?.(e);},u=e=>{y?.(e===s?"":e);};return jsxs(Combobox.Root,{items:E,value:O,onValueChange:(e,{reason:r})=>{r==="item-press"&&e&&u(e.value);},open:_,onOpenChange:m,onInputValueChange:(e,{reason:r})=>{r!=="input-change"&&r!=="input-clear"||(b(!!e),x?.(e));},itemToStringLabel:v,isItemEqualToValue:(e,r)=>e.value===r.value,filter:L?(e,r)=>T(e,r,R):null,disabled:f,children:[jsxs(Combobox.InputGroup,{"aria-invalid":c,className:a("focus-within:border-dark-green focus-within:ring-ring/50 aria-invalid:border-destructive hover:border-dark-green flex h-12 w-full items-center gap-2 rounded-md border bg-white px-4 transition-all focus-within:ring-[3px] data-disabled:pointer-events-none data-disabled:bg-gray-200 data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",k==="sm"&&"h-8 px-3 [&_svg:not([class*='size-'])]:size-4",o?.trigger),children:[jsx(LuSearch,{className:a(c&&"text-red")}),jsx(Combobox.Input,{"aria-label":w,placeholder:P,className:a("placeholder:text-muted-foreground h-full min-w-0 flex-1 truncate bg-transparent outline-none",o?.input)}),jsx(Combobox.Trigger,{"aria-label":"Show options",className:"flex cursor-pointer items-center opacity-50",children:jsx(LuChevronsUpDown,{})})]}),jsx(Combobox.Portal,{children:jsx(Combobox.Positioner,{side:N,sideOffset:4,align:"start",className:a("z-modal-stacking-context",o?.positioner),children:jsxs(Combobox.Popup,{className:a("bg-popover text-popover-foreground pointer-events-auto flex max-h-[min(360px,var(--available-height))] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col overflow-hidden rounded-md border shadow-md outline-hidden",o?.content),children:[jsx(Combobox.Empty,{className:"py-6 text-center empty:hidden",children:S}),jsx(Combobox.List,{onWheel:e=>e.stopPropagation(),className:"min-h-0 scroll-py-1 overflow-y-auto overscroll-contain p-1 empty:hidden",children:e=>jsxs(Combobox.Item,{value:e,disabled:e.disabled,className:a("data-highlighted:bg-accent data-highlighted:text-primary [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",o?.item),children:[jsx("span",{className:"min-w-0 truncate",children:e.label}),e.secondaryLabel&&jsx("span",{className:"text-muted-foreground ml-auto shrink-0",children:e.secondaryLabel}),jsx(LuCheck,{className:a(!e.secondaryLabel&&"ml-auto",s===e.value?"opacity-100":"opacity-0")})]},e.value)}),n&&jsx("div",{className:"p-1",children:jsxs("button",{type:"button",disabled:n.disabled,onClick:()=>{u(n.value),m(false);},className:a("text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",o?.pinnedOption),children:[n.label,jsx(LuCheck,{className:a("ml-auto",s===n.value?"opacity-100":"opacity-0")})]})})]})})})]})};export{U as a};//# sourceMappingURL=chunk-J3TZ7WPF.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-J3TZ7WPF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/combobox/input-variant.tsx"],"names":["toLabelText","option","toSearchText","InputVariantCombobox","classNames","disabled","options","preSearchOptions","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","pinnedOption","side","open","setOpen","useState","contains","ComboboxPrimitive","isSearching","setIsSearching","optionsToDisplay","selectedOption","item","handleOpenChange","nextOpen","handleSelect","selectedValue","jsxs","reason","inputValue","selected","query","cn","jsx","LuSearch","LuChevronsUpDown","LuCheck"],"mappings":"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","file":"chunk-J3TZ7WPF.js","sourcesContent":["import { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { useState } from 'react';\nimport { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\nimport type { ComboboxOption, ComboboxProps } from './combobox';\n\nconst toLabelText = (option: ComboboxOption) =>\n typeof option.label === 'string' ? option.label : (option.additionalSearchText ?? '');\n\nconst toSearchText = (option: ComboboxOption) =>\n [toLabelText(option), option.additionalSearchText, option.secondaryLabel]\n .filter(Boolean)\n .join(' ');\n\n/**\n * The `input` variant of Combobox: the search happens in the input itself, built on the Base UI\n * combobox (https://ui.shadcn.com/docs/components/base/combobox).\n */\nexport const InputVariantCombobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n pinnedOption = undefined,\n side = 'bottom',\n}: Omit<ComboboxProps, 'variant'>) => {\n const [open, setOpen] = useState(false);\n const { contains } = ComboboxPrimitive.useFilter({ sensitivity: 'base' });\n\n const [isSearching, setIsSearching] = useState(false);\n const optionsToDisplay = isSearching ? options : preSearchOptions || options;\n\n const selectedOption =\n pinnedOption && pinnedOption.value === value\n ? pinnedOption\n : (options.find((item) => item.value === value) ?? null);\n\n const handleOpenChange = (nextOpen: boolean) => {\n setOpen(nextOpen);\n setIsSearching(false);\n onOpenChange?.(nextOpen);\n };\n\n const handleSelect = (selectedValue: string) => {\n onChange?.(selectedValue === value ? '' : selectedValue);\n };\n\n return (\n <ComboboxPrimitive.Root\n items={optionsToDisplay}\n value={selectedOption}\n onValueChange={(option, { reason }) => {\n if (reason === 'item-press' && option) {\n handleSelect(option.value);\n }\n }}\n open={open}\n onOpenChange={handleOpenChange}\n onInputValueChange={(inputValue, { reason }) => {\n if (reason !== 'input-change' && reason !== 'input-clear') {\n return;\n }\n\n setIsSearching(!!inputValue);\n onSearchChange?.(inputValue);\n }}\n itemToStringLabel={toLabelText}\n isItemEqualToValue={(item, selected) => item.value === selected.value}\n filter={shouldFilter ? (option, query) => contains(option, query, toSearchText) : null}\n disabled={disabled}\n >\n <ComboboxPrimitive.InputGroup\n aria-invalid={error}\n className={cn(\n \"focus-within:border-dark-green focus-within:ring-ring/50 aria-invalid:border-destructive hover:border-dark-green flex h-12 w-full items-center gap-2 rounded-md border bg-white px-4 transition-all focus-within:ring-[3px] data-disabled:pointer-events-none data-disabled:bg-gray-200 data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <LuSearch className={cn(error && 'text-red')} />\n <ComboboxPrimitive.Input\n aria-label={searchLabel}\n placeholder={placeholder}\n className={cn(\n 'placeholder:text-muted-foreground h-full min-w-0 flex-1 truncate bg-transparent outline-none',\n classNames?.input,\n )}\n />\n <ComboboxPrimitive.Trigger\n aria-label=\"Show options\"\n className=\"flex cursor-pointer items-center opacity-50\"\n >\n <LuChevronsUpDown />\n </ComboboxPrimitive.Trigger>\n </ComboboxPrimitive.InputGroup>\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={4}\n align=\"start\"\n className={cn('z-modal-stacking-context', classNames?.positioner)}\n >\n <ComboboxPrimitive.Popup\n className={cn(\n 'bg-popover text-popover-foreground pointer-events-auto flex max-h-[min(360px,var(--available-height))] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) flex-col overflow-hidden rounded-md border shadow-md outline-hidden',\n classNames?.content,\n )}\n >\n <ComboboxPrimitive.Empty className=\"py-6 text-center empty:hidden\">\n {notFoundMessage}\n </ComboboxPrimitive.Empty>\n <ComboboxPrimitive.List\n onWheel={(e) => e.stopPropagation()}\n className=\"min-h-0 scroll-py-1 overflow-y-auto overscroll-contain p-1 empty:hidden\"\n >\n {(item: ComboboxOption) => (\n <ComboboxPrimitive.Item\n key={item.value}\n value={item}\n disabled={item.disabled}\n className={cn(\n \"data-highlighted:bg-accent data-highlighted:text-primary [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.item,\n )}\n >\n <span className=\"min-w-0 truncate\">{item.label}</span>\n {item.secondaryLabel && (\n <span className=\"text-muted-foreground ml-auto shrink-0\">\n {item.secondaryLabel}\n </span>\n )}\n <LuCheck\n className={cn(\n !item.secondaryLabel && 'ml-auto',\n value === item.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </ComboboxPrimitive.Item>\n )}\n </ComboboxPrimitive.List>\n {pinnedOption && (\n <div className=\"p-1\">\n <button\n type=\"button\"\n disabled={pinnedOption.disabled}\n onClick={() => {\n handleSelect(pinnedOption.value);\n handleOpenChange(false);\n }}\n className={cn(\n \"text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0\",\n classNames?.pinnedOption,\n )}\n >\n {pinnedOption.label}\n <LuCheck\n className={cn(\n 'ml-auto',\n value === pinnedOption.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </button>\n </div>\n )}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-DMGSZX4T.js';import {a}from'./chunk-Z2IHO2AX.js';import {d,h}from'./chunk-J624VXFX.js';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var g=({uniqueId:t,open:p,loading:l,options:o,selected:c,toggleOption:a$2,onSearch:d$1,scrollbarRef:r,inputRef:f,emptyIndicator:R,loadingIndicator:n,selectFirstItem:M})=>jsx("div",{className:"relative",children:p&&jsx(d,{id:t,className:"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none",onMouseLeave:()=>{r.current=false;},onMouseEnter:()=>{r.current=true;},onMouseUp:()=>{f?.current?.focus();},children:l&&n?n:jsxs(Fragment,{children:[jsx(a,{onSearch:d$1,options:o,emptyIndicator:R}),!M&&jsx(h,{value:"-",className:"hidden"}),jsx(a$1,{options:o,uniqueId:t,selected:c,toggleOption:a$2})]})})});export{g as a};//# sourceMappingURL=chunk-K7VBPJUA.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-K7VBPJUA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"uKAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,GAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,GAAAA,CAACC,CAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAgB,QAAA,CAAAV,GAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,GAAAA,CAACK,EAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,IAACM,GAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,GAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"uKAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,GAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,GAAAA,CAACC,CAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAgB,QAAA,CAAAV,GAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,GAAAA,CAACK,EAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,IAACM,GAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,GAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-K7VBPJUA.js","sourcesContent":["import { CommandItem, CommandList } from '@/v2/command/command';\nimport { MultiSelectProps } from '../types';\nimport { MultiSelectCommandGroup } from './MultiSelectCommandGroup';\nimport { EmptyItem } from './EmptyItem';\nimport type { UseRefsReturn } from '../hooks/useRefs';\nimport { UseMultiSelectReturn } from '../hooks/useMultiSelect';\nimport { UseInteractionsReturn } from '../hooks/useInteractions';\n\ntype Props = Pick<\n MultiSelectProps,\n 'loading' | 'loadingIndicator' | 'emptyIndicator' | 'onSearch' | 'selectFirstItem'\n> &\n Pick<UseRefsReturn, 'inputRef' | 'scrollbarRef'> &\n Pick<UseMultiSelectReturn, 'uniqueId' | 'open' | 'selected' | 'options'> &\n Pick<UseInteractionsReturn, 'toggleOption'>;\n\nexport const MultiSelectDropdown = ({\n uniqueId,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n scrollbarRef,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n}: Props) => {\n return (\n <div className=\"relative\">\n {open && (\n <CommandList\n id={uniqueId}\n className=\"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none\"\n onMouseLeave={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = false;\n // setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = true;\n // setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {loading && loadingIndicator ? (\n loadingIndicator\n ) : (\n <>\n <EmptyItem {...{ onSearch, options, emptyIndicator }} />\n {!selectFirstItem && <CommandItem value=\"-\" className=\"hidden\" />}\n <MultiSelectCommandGroup {...{ options, uniqueId, selected, toggleOption }} />\n </>\n )}\n </CommandList>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a}from'./chunk-7GJG2HUA.js';import {a as a$3}from'./chunk-4GCD4SP5.js';import {a as a$4}from'./chunk-274XPO4S.js';import {a as a$5}from'./chunk-XJ7ZDJZG.js';import {a as a$9}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-Q27GDY4Y.js';import {a}from'./chunk-7GJG2HUA.js';import {a as a$3}from'./chunk-4GCD4SP5.js';import {a as a$4}from'./chunk-274XPO4S.js';import {a as a$5}from'./chunk-XJ7ZDJZG.js';import {a as a$9}from'./chunk-K7VBPJUA.js';import {a as a$8}from'./chunk-4L5ZRFHA.js';import {a as a$7}from'./chunk-44OJTSLO.js';import {a as a$2}from'./chunk-HDSZKGQO.js';import {a as a$6}from'./chunk-J624VXFX.js';import {a as a$a}from'./chunk-YTIIAU4W.js';import {forwardRef,useImperativeHandle,useCallback}from'react';import {jsxs,jsx}from'react/jsx-runtime';var ae=forwardRef((C,P)=>{let{id:x,value:s,onChange:D,placeholder:F,defaultOptions:T=[],options:K=[],delay:V,onSearch:n,triggerSearchOnOpen:W,loading:B=false,loadingIndicator:E,emptyIndicator:H,maxSelected:k=0,onMaxSelected:q,hidePlaceholderWhenSelected:L=true,disabled:a$b,className:Y,classNames:z,badgeWrapperClassName:A,badgeClassName:G,getBadgeClassName:J=()=>"",selectFirstItem:Q=true,commandProps:e,inputProps:U,persistInputOnSelect:X=false,persistInputOnBlur:Z=false}=C,{inputRef:t,commandRef:c,onSearchRef:_,scrollbarRef:u,prevExternalOptionsRef:$}=a({onSearch:n}),{uniqueId:p,open:o,setOpen:m,selected:r,setSelected:l,options:j,setOptions:ee,inputSearchValue:te,setInputSearchValue:d,debouncedSearchTerm:re}=a$1({id:x,value:s,defaultOptions:T,delay:V}),{toggleOption:f,handleKeyDown:oe}=a$2({open:o,selected:r,maxSelected:k,onChange:D,onMaxSelected:q,setInputSearchValue:d,commandRef:c,inputRef:t,setSelected:l,setOpen:m,persistInputOnSelect:X});a$3({debouncedSearchTerm:re,open:o,onSearchRef:_,triggerSearchOnOpen:W}),a$4({externalOptions:K,setOptions:ee,prevExternalOptionsRef:$}),a$5({value:s,setSelected:l}),useImperativeHandle(P,()=>({selectedValue:[...r],input:t.current,focus:()=>t?.current?.focus(),reset:()=>l([])}),[r,t,l]);let le=useCallback(()=>{if(e?.filter)return e.filter},[e?.filter]);return jsxs(a$6,{ref:c,...e,onKeyDown:S=>{oe(S),e?.onKeyDown?.(S);},className:a$a("h-auto overflow-visible bg-transparent",e?.className),shouldFilter:e?.shouldFilter!==void 0?e.shouldFilter:!n,filter:le(),children:[jsx(a$7,{open:o,disabled:a$b,inputRef:t,selected:r,uniqueId:p,className:Y,children:jsx(a$8,{selected:r,scrollbarRef:u,toggleOption:f,inputProps:U,inputRef:t,open:o,setOpen:m,placeholder:F,hidePlaceholderWhenSelected:L,disabled:a$b,classNames:z,badgeWrapperClassName:A,badgeClassName:G,getBadgeClassName:J,inputSearchValue:te,setInputSearchValue:d,persistInputOnBlur:Z})}),jsx(a$9,{uniqueId:p,scrollbarRef:u,open:o,loading:B,options:j,selected:r,toggleOption:f,onSearch:n,inputRef:t,emptyIndicator:H,loadingIndicator:E,selectFirstItem:Q})]})});ae.displayName="MultiSelect";export{ae as a};//# sourceMappingURL=chunk-XA4UER6K.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-XA4UER6K.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/multiselect/multiselect.tsx"],"names":["MultiSelect","forwardRef","props","ref","id","value","onChange","placeholder","externalDefaultOptions","externalOptions","delay","onSearch","triggerSearchOnOpen","loading","loadingIndicator","emptyIndicator","maxSelected","onMaxSelected","hidePlaceholderWhenSelected","disabled","className","classNames","badgeWrapperClassName","badgeClassName","getBadgeClassName","selectFirstItem","commandProps","inputProps","persistInputOnSelect","persistInputOnBlur","inputRef","commandRef","onSearchRef","scrollbarRef","prevExternalOptionsRef","useRefs","uniqueId","open","setOpen","selected","setSelected","options","setOptions","inputSearchValue","setInputSearchValue","debouncedSearchTerm","useMultiSelect","toggleOption","handleKeyDown","useInteractions","useSearch","useSyncOptions","useSyncSelected","useImperativeHandle","commandFilter","useCallback","jsxs","Command","e","cn","jsx","MultiSelectTrigger","MultiSelectInput","MultiSelectDropdown"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/multiselect/multiselect.tsx"],"names":["MultiSelect","forwardRef","props","ref","id","value","onChange","placeholder","externalDefaultOptions","externalOptions","delay","onSearch","triggerSearchOnOpen","loading","loadingIndicator","emptyIndicator","maxSelected","onMaxSelected","hidePlaceholderWhenSelected","disabled","className","classNames","badgeWrapperClassName","badgeClassName","getBadgeClassName","selectFirstItem","commandProps","inputProps","persistInputOnSelect","persistInputOnBlur","inputRef","commandRef","onSearchRef","scrollbarRef","prevExternalOptionsRef","useRefs","uniqueId","open","setOpen","selected","setSelected","options","setOptions","inputSearchValue","setInputSearchValue","debouncedSearchTerm","useMultiSelect","toggleOption","handleKeyDown","useInteractions","useSearch","useSyncOptions","useSyncSelected","useImperativeHandle","commandFilter","useCallback","jsxs","Command","e","cn","jsx","MultiSelectTrigger","MultiSelectInput","MultiSelectDropdown"],"mappings":"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","file":"chunk-XA4UER6K.js","sourcesContent":["import { forwardRef, Ref, useCallback, useImperativeHandle } from 'react';\nimport { Command } from '@/v2/command/command';\nimport { cn } from '@/lib/utils';\nimport { MultiSelectProps, MultiSelectRef } from './types';\nimport { useMultiSelect } from './hooks/useMultiSelect';\nimport { useRefs } from './hooks/useRefs';\nimport { useInteractions } from './hooks/useInteractions';\nimport { useSearch } from './hooks/useSearch';\nimport { MultiSelectTrigger } from './components/MultiSelectTrigger';\nimport { MultiSelectInput } from './components/MultiSelectInput';\nimport { MultiSelectDropdown } from './components/MultiSelectDropdown';\nimport { useSyncOptions } from './hooks/useSyncOptions';\nimport { useSyncSelected } from './hooks/useSyncSelected';\n\nexport const MultiSelect = forwardRef<MultiSelectRef, MultiSelectProps>(\n (props: MultiSelectProps, ref: Ref<MultiSelectRef>) => {\n const {\n id,\n value,\n onChange,\n placeholder,\n defaultOptions: externalDefaultOptions = [],\n options: externalOptions = [],\n delay,\n onSearch,\n triggerSearchOnOpen,\n loading = false,\n loadingIndicator,\n emptyIndicator,\n maxSelected = 0,\n onMaxSelected,\n hidePlaceholderWhenSelected = true,\n disabled,\n className,\n classNames,\n badgeWrapperClassName,\n badgeClassName,\n getBadgeClassName = () => '',\n selectFirstItem = true,\n commandProps,\n inputProps,\n persistInputOnSelect = false,\n persistInputOnBlur = false,\n } = props;\n\n const { inputRef, commandRef, onSearchRef, scrollbarRef, prevExternalOptionsRef } = useRefs({\n onSearch,\n });\n\n const {\n uniqueId,\n open,\n setOpen,\n selected,\n setSelected,\n options,\n setOptions,\n inputSearchValue,\n setInputSearchValue,\n debouncedSearchTerm,\n } = useMultiSelect({\n id,\n value,\n defaultOptions: externalDefaultOptions,\n delay,\n });\n\n const { toggleOption, handleKeyDown } = useInteractions({\n open,\n selected,\n maxSelected,\n onChange,\n onMaxSelected,\n setInputSearchValue,\n commandRef,\n inputRef,\n setSelected,\n setOpen,\n persistInputOnSelect,\n });\n\n useSearch({\n debouncedSearchTerm,\n open,\n onSearchRef,\n triggerSearchOnOpen,\n });\n\n useSyncOptions({\n externalOptions,\n setOptions,\n prevExternalOptionsRef,\n });\n\n useSyncSelected({\n value,\n setSelected,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n selectedValue: [...selected],\n input: inputRef.current as HTMLInputElement,\n focus: () => inputRef?.current?.focus(),\n reset: () => setSelected([]),\n }),\n [selected, inputRef, setSelected],\n );\n\n const commandFilter = useCallback(() => {\n if (commandProps?.filter) {\n return commandProps.filter;\n }\n\n // Using default filter in `cmdk`. We don't have to provide it.\n return undefined;\n }, [commandProps?.filter]);\n\n return (\n <Command\n ref={commandRef}\n {...commandProps}\n onKeyDown={(e) => {\n handleKeyDown(e);\n commandProps?.onKeyDown?.(e);\n }}\n className={cn('h-auto overflow-visible bg-transparent', commandProps?.className)}\n shouldFilter={\n commandProps?.shouldFilter !== undefined ? commandProps.shouldFilter : !onSearch\n } // When onSearch is provided, we don't want to filter the options. You can still override it.\n filter={commandFilter()}\n >\n <MultiSelectTrigger {...{ open, disabled, inputRef, selected, uniqueId, className }}>\n <MultiSelectInput\n {...{\n selected,\n scrollbarRef,\n toggleOption,\n inputProps,\n inputRef,\n open,\n setOpen,\n placeholder,\n hidePlaceholderWhenSelected,\n disabled,\n classNames,\n badgeWrapperClassName,\n badgeClassName,\n getBadgeClassName,\n inputSearchValue,\n setInputSearchValue,\n persistInputOnBlur,\n }}\n />\n </MultiSelectTrigger>\n\n <MultiSelectDropdown\n {...{\n uniqueId,\n scrollbarRef,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n }}\n />\n </Command>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkODAOIGPB_cjs=require('./chunk-ODAOIGPB.cjs'),chunk5EK4BBD6_cjs=require('./chunk-5EK4BBD6.cjs'),chunk4CHRDQR7_cjs=require('./chunk-4CHRDQR7.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),lu=require('react-icons/lu'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var j=({classNames:i=void 0,disabled:l=false,options:d,preSearchOptions:z=void 0,onSearchChange:F=void 0,onChange:O=void 0,onOpenChange:m=void 0,placeholder:I="Select an option",searchLabel:T="Search...",notFoundMessage:D="Not found.",value:n=void 0,size:E="default",error:b=false,shouldFilter:G=true,pinnedOption:a=void 0})=>{let[p,u]=react.useState(false),[R,c]=react.useState(false),V=R?d:z||d,[H,s]=react.useState(""),K=()=>{u(!p),c(false),s(""),m?.(!p);},v=e=>{O?.(e===n?"":e),u(false),c(false),s(""),m?.(false);},M=a&&a.value===n?a:d.find(e=>e.value===n);return jsxRuntime.jsxs(chunkODAOIGPB_cjs.a,{open:p,onOpenChange:K,children:[jsxRuntime.jsxs(chunkODAOIGPB_cjs.b,{"aria-invalid":b,"data-placeholder":n?void 0:"",disabled:l,className:chunkQRO22BPZ_cjs.a("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",E==="sm"&&"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4",i?.trigger),children:[jsxRuntime.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!n&&jsxRuntime.jsx(lu.LuSearch,{className:chunkQRO22BPZ_cjs.a(b&&"text-red")}),jsxRuntime.jsx("span",{className:chunkQRO22BPZ_cjs.a("block min-w-0 truncate",!n&&"text-gray-700"),children:n?M?.label:I})]}),jsxRuntime.jsx(lu.LuChevronsUpDown,{className:"opacity-50"})]}),jsxRuntime.jsx(chunkODAOIGPB_cjs.c,{align:"start",className:chunkQRO22BPZ_cjs.a("w-[var(--radix-popover-trigger-width)] p-0",i?.content),children:jsxRuntime.jsxs(chunk4CHRDQR7_cjs.a,{shouldFilter:G,value:H,onValueChange:s,children:[jsxRuntime.jsx(chunk4CHRDQR7_cjs.c,{placeholder:T,className:chunkQRO22BPZ_cjs.a("h-9",i?.input),onValueChange:e=>{c(!!e),F?.(e);}}),jsxRuntime.jsxs(chunk4CHRDQR7_cjs.d,{onWheel:e=>e.stopPropagation(),children:[jsxRuntime.jsx(chunk4CHRDQR7_cjs.e,{children:D}),jsxRuntime.jsx(chunk4CHRDQR7_cjs.f,{children:V.map(e=>jsxRuntime.jsxs(chunk4CHRDQR7_cjs.h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:v,className:i?.item,disabled:e.disabled,children:[e.label,jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a("ml-auto",n===e.value?"opacity-100":"opacity-0")})]},e.value))})]}),a&&jsxRuntime.jsx(chunk4CHRDQR7_cjs.j,{className:"border-t-0",children:jsxRuntime.jsxs("button",{type:"button",disabled:a.disabled,onClick:()=>v(a.value),onPointerEnter:()=>s(""),onFocus:()=>s(""),onKeyDown:e=>{e.key==="Enter"&&e.stopPropagation();},className:chunkQRO22BPZ_cjs.a("text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",i?.pinnedOption),children:[a.label,jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a("ml-auto",n===a.value?"opacity-100":"opacity-0")})]})})]})})]})},Y=({variant:i="default",...l})=>i==="input"?jsxRuntime.jsx(chunk5EK4BBD6_cjs.a,{...l}):jsxRuntime.jsx(j,{...l});exports.a=Y;//# sourceMappingURL=chunk-YNO7JCKX.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-YNO7JCKX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/combobox/combobox.tsx"],"names":["DefaultCombobox","classNames","disabled","options","preSearchOptions","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","pinnedOption","open","setOpen","useState","isSearching","setIsSearching","optionsToDisplay","highlighted","setHighlighted","handleOpenChange","handleSelect","selectedValue","selectedOption","item","jsxs","Popover","PopoverTrigger","cn","jsx","LuSearch","LuChevronsUpDown","PopoverContent","Command","CommandInput","val","CommandList","CommandEmpty","CommandGroup","CommandItem","LuCheck","CommandFooter","Combobox","variant","props","InputVariantCombobox"],"mappings":"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","file":"chunk-YNO7JCKX.cjs","sourcesContent":["import { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { useState } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/v2/popover/popover';\nimport { cn } from '@/lib/utils';\nimport {\n Command,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/v2/command/command';\nimport { InputVariantCombobox } from './input-variant';\n\nexport type ComboboxOption = {\n label: string | React.ReactNode;\n value: string;\n additionalSearchText?: string;\n secondaryLabel?: string;\n disabled?: boolean;\n};\n\nexport type ComboboxProps = {\n classNames?: {\n content?: string;\n input?: string;\n item?: string;\n pinnedOption?: string;\n positioner?: string;\n trigger?: string;\n };\n disabled?: boolean;\n options: ComboboxOption[];\n preSearchOptions?: ComboboxOption[];\n onSearchChange?: (value: string) => void;\n onChange?: (value: string) => void;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchLabel?: string;\n notFoundMessage?: string;\n value?: string;\n size?: 'default' | 'sm';\n error?: boolean;\n shouldFilter?: boolean;\n /**\n * An option pinned below the scrollable list, always visible and never filtered.\n * Selecting it calls `onChange` like any other option.\n */\n pinnedOption?: ComboboxOption;\n side?: 'top' | 'bottom';\n variant?: 'default' | 'input';\n};\n\nconst DefaultCombobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n pinnedOption = undefined,\n}: Omit<ComboboxProps, 'side' | 'variant'>) => {\n const [open, setOpen] = useState(false);\n\n // Allow filtering down to just a subset of options before searching\n // NOTE: preSearchOptions is optional, while options is a required prop that we can fallback to\n const [isSearching, setIsSearching] = useState(false);\n const optionsToDisplay = isSearching ? options : preSearchOptions || options;\n\n // cmdk's highlighted item, controlled so hovering the pinned option can clear it\n const [highlighted, setHighlighted] = useState('');\n\n const handleOpenChange = () => {\n setOpen(!open);\n setIsSearching(false);\n setHighlighted('');\n onOpenChange?.(!open);\n };\n\n // Shared by the list items and the pinned option so they can't drift apart\n const handleSelect = (selectedValue: string) => {\n onChange?.(selectedValue === value ? '' : selectedValue);\n setOpen(false);\n setIsSearching(false);\n setHighlighted('');\n onOpenChange?.(false);\n };\n\n const selectedOption =\n pinnedOption && pinnedOption.value === value\n ? pinnedOption\n : options.find((item) => item.value === value);\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger\n aria-invalid={error}\n data-placeholder={!value ? '' : undefined}\n disabled={disabled}\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {!value && <LuSearch className={cn(error && 'text-red')} />}\n <span className={cn('block min-w-0 truncate', !value && 'text-gray-700')}>\n {value ? selectedOption?.label : placeholder}\n </span>\n </div>\n <LuChevronsUpDown className=\"opacity-50\" />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <Command\n shouldFilter={\n // This should be mainly be driven by the presence of the `onSearchChange` function\n // to match multiselect's behavior, however we omit this for backwards compatibility.\n shouldFilter\n }\n value={highlighted}\n onValueChange={setHighlighted}\n >\n <CommandInput\n placeholder={searchLabel}\n className={cn('h-9', classNames?.input)}\n onValueChange={(val) => {\n setIsSearching(!!val);\n onSearchChange?.(val);\n }}\n />\n <CommandList onWheel={(e) => e.stopPropagation()}>\n <CommandEmpty>{notFoundMessage}</CommandEmpty>\n <CommandGroup>\n {optionsToDisplay.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n keywords={[\n typeof item.label === 'string' ? item.label : '',\n item.additionalSearchText ?? '',\n ]}\n onSelect={handleSelect}\n className={classNames?.item}\n disabled={item.disabled}\n >\n {item.label}\n <LuCheck\n className={cn('ml-auto', value === item.value ? 'opacity-100' : 'opacity-0')}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n {pinnedOption && (\n // A plain button, not a CommandItem, so cmdk never filters it out. The trade-off is\n // that arrow keys don't reach it; it's reachable with Tab from the search input instead.\n <CommandFooter className=\"border-t-0\">\n <button\n type=\"button\"\n disabled={pinnedOption.disabled}\n onClick={() => handleSelect(pinnedOption.value)}\n // cmdk keeps the last hovered item highlighted; clear it so only one row looks active\n onPointerEnter={() => setHighlighted('')}\n onFocus={() => setHighlighted('')}\n onKeyDown={(e) => {\n // cmdk's root handles Enter by preventing the default and selecting the\n // highlighted option, which would swallow this button's own activation\n if (e.key === 'Enter') e.stopPropagation();\n }}\n className={cn(\n \"text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0\",\n classNames?.pinnedOption,\n )}\n >\n {pinnedOption.label}\n <LuCheck\n className={cn(\n 'ml-auto',\n value === pinnedOption.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </button>\n </CommandFooter>\n )}\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Combobox = ({ variant = 'default', ...props }: ComboboxProps) =>\n variant === 'input' ? <InputVariantCombobox {...props} /> : <DefaultCombobox {...props} />;\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1,b,c}from'./chunk-YVP6QCW6.js';import {a}from'./chunk-J3TZ7WPF.js';import {a as a$3,c as c$1,d,e,f,h,j as j$1}from'./chunk-J624VXFX.js';import {a as a$2}from'./chunk-YTIIAU4W.js';import {LuSearch,LuChevronsUpDown,LuCheck}from'react-icons/lu';import {useState}from'react';import {jsx,jsxs}from'react/jsx-runtime';var j=({classNames:i=void 0,disabled:l=false,options:d$1,preSearchOptions:z=void 0,onSearchChange:F=void 0,onChange:O=void 0,onOpenChange:m=void 0,placeholder:I="Select an option",searchLabel:T="Search...",notFoundMessage:D="Not found.",value:n=void 0,size:E="default",error:b$1=false,shouldFilter:G=true,pinnedOption:a=void 0})=>{let[p,u]=useState(false),[R,c$2]=useState(false),V=R?d$1:z||d$1,[H,s]=useState(""),K=()=>{u(!p),c$2(false),s(""),m?.(!p);},v=e=>{O?.(e===n?"":e),u(false),c$2(false),s(""),m?.(false);},M=a&&a.value===n?a:d$1.find(e=>e.value===n);return jsxs(a$1,{open:p,onOpenChange:K,children:[jsxs(b,{"aria-invalid":b$1,"data-placeholder":n?void 0:"",disabled:l,className:a$2("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",E==="sm"&&"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4",i?.trigger),children:[jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!n&&jsx(LuSearch,{className:a$2(b$1&&"text-red")}),jsx("span",{className:a$2("block min-w-0 truncate",!n&&"text-gray-700"),children:n?M?.label:I})]}),jsx(LuChevronsUpDown,{className:"opacity-50"})]}),jsx(c,{align:"start",className:a$2("w-[var(--radix-popover-trigger-width)] p-0",i?.content),children:jsxs(a$3,{shouldFilter:G,value:H,onValueChange:s,children:[jsx(c$1,{placeholder:T,className:a$2("h-9",i?.input),onValueChange:e=>{c$2(!!e),F?.(e);}}),jsxs(d,{onWheel:e=>e.stopPropagation(),children:[jsx(e,{children:D}),jsx(f,{children:V.map(e=>jsxs(h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:v,className:i?.item,disabled:e.disabled,children:[e.label,jsx(LuCheck,{className:a$2("ml-auto",n===e.value?"opacity-100":"opacity-0")})]},e.value))})]}),a&&jsx(j$1,{className:"border-t-0",children:jsxs("button",{type:"button",disabled:a.disabled,onClick:()=>v(a.value),onPointerEnter:()=>s(""),onFocus:()=>s(""),onKeyDown:e=>{e.key==="Enter"&&e.stopPropagation();},className:a$2("text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",i?.pinnedOption),children:[a.label,jsx(LuCheck,{className:a$2("ml-auto",n===a.value?"opacity-100":"opacity-0")})]})})]})})]})},Y=({variant:i="default",...l})=>i==="input"?jsx(a,{...l}):jsx(j,{...l});export{Y as a};//# sourceMappingURL=chunk-YOXQYCZI.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-YOXQYCZI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/combobox/combobox.tsx"],"names":["DefaultCombobox","classNames","disabled","options","preSearchOptions","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","pinnedOption","open","setOpen","useState","isSearching","setIsSearching","optionsToDisplay","highlighted","setHighlighted","handleOpenChange","handleSelect","selectedValue","selectedOption","item","jsxs","Popover","PopoverTrigger","cn","jsx","LuSearch","LuChevronsUpDown","PopoverContent","Command","CommandInput","val","CommandList","CommandEmpty","CommandGroup","CommandItem","LuCheck","CommandFooter","Combobox","variant","props","InputVariantCombobox"],"mappings":"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","file":"chunk-YOXQYCZI.js","sourcesContent":["import { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { useState } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/v2/popover/popover';\nimport { cn } from '@/lib/utils';\nimport {\n Command,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/v2/command/command';\nimport { InputVariantCombobox } from './input-variant';\n\nexport type ComboboxOption = {\n label: string | React.ReactNode;\n value: string;\n additionalSearchText?: string;\n secondaryLabel?: string;\n disabled?: boolean;\n};\n\nexport type ComboboxProps = {\n classNames?: {\n content?: string;\n input?: string;\n item?: string;\n pinnedOption?: string;\n positioner?: string;\n trigger?: string;\n };\n disabled?: boolean;\n options: ComboboxOption[];\n preSearchOptions?: ComboboxOption[];\n onSearchChange?: (value: string) => void;\n onChange?: (value: string) => void;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchLabel?: string;\n notFoundMessage?: string;\n value?: string;\n size?: 'default' | 'sm';\n error?: boolean;\n shouldFilter?: boolean;\n /**\n * An option pinned below the scrollable list, always visible and never filtered.\n * Selecting it calls `onChange` like any other option.\n */\n pinnedOption?: ComboboxOption;\n side?: 'top' | 'bottom';\n variant?: 'default' | 'input';\n};\n\nconst DefaultCombobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n pinnedOption = undefined,\n}: Omit<ComboboxProps, 'side' | 'variant'>) => {\n const [open, setOpen] = useState(false);\n\n // Allow filtering down to just a subset of options before searching\n // NOTE: preSearchOptions is optional, while options is a required prop that we can fallback to\n const [isSearching, setIsSearching] = useState(false);\n const optionsToDisplay = isSearching ? options : preSearchOptions || options;\n\n // cmdk's highlighted item, controlled so hovering the pinned option can clear it\n const [highlighted, setHighlighted] = useState('');\n\n const handleOpenChange = () => {\n setOpen(!open);\n setIsSearching(false);\n setHighlighted('');\n onOpenChange?.(!open);\n };\n\n // Shared by the list items and the pinned option so they can't drift apart\n const handleSelect = (selectedValue: string) => {\n onChange?.(selectedValue === value ? '' : selectedValue);\n setOpen(false);\n setIsSearching(false);\n setHighlighted('');\n onOpenChange?.(false);\n };\n\n const selectedOption =\n pinnedOption && pinnedOption.value === value\n ? pinnedOption\n : options.find((item) => item.value === value);\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger\n aria-invalid={error}\n data-placeholder={!value ? '' : undefined}\n disabled={disabled}\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {!value && <LuSearch className={cn(error && 'text-red')} />}\n <span className={cn('block min-w-0 truncate', !value && 'text-gray-700')}>\n {value ? selectedOption?.label : placeholder}\n </span>\n </div>\n <LuChevronsUpDown className=\"opacity-50\" />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <Command\n shouldFilter={\n // This should be mainly be driven by the presence of the `onSearchChange` function\n // to match multiselect's behavior, however we omit this for backwards compatibility.\n shouldFilter\n }\n value={highlighted}\n onValueChange={setHighlighted}\n >\n <CommandInput\n placeholder={searchLabel}\n className={cn('h-9', classNames?.input)}\n onValueChange={(val) => {\n setIsSearching(!!val);\n onSearchChange?.(val);\n }}\n />\n <CommandList onWheel={(e) => e.stopPropagation()}>\n <CommandEmpty>{notFoundMessage}</CommandEmpty>\n <CommandGroup>\n {optionsToDisplay.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n keywords={[\n typeof item.label === 'string' ? item.label : '',\n item.additionalSearchText ?? '',\n ]}\n onSelect={handleSelect}\n className={classNames?.item}\n disabled={item.disabled}\n >\n {item.label}\n <LuCheck\n className={cn('ml-auto', value === item.value ? 'opacity-100' : 'opacity-0')}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n {pinnedOption && (\n // A plain button, not a CommandItem, so cmdk never filters it out. The trade-off is\n // that arrow keys don't reach it; it's reachable with Tab from the search input instead.\n <CommandFooter className=\"border-t-0\">\n <button\n type=\"button\"\n disabled={pinnedOption.disabled}\n onClick={() => handleSelect(pinnedOption.value)}\n // cmdk keeps the last hovered item highlighted; clear it so only one row looks active\n onPointerEnter={() => setHighlighted('')}\n onFocus={() => setHighlighted('')}\n onKeyDown={(e) => {\n // cmdk's root handles Enter by preventing the default and selecting the\n // highlighted option, which would swallow this button's own activation\n if (e.key === 'Enter') e.stopPropagation();\n }}\n className={cn(\n \"text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0\",\n classNames?.pinnedOption,\n )}\n >\n {pinnedOption.label}\n <LuCheck\n className={cn(\n 'ml-auto',\n value === pinnedOption.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </button>\n </CommandFooter>\n )}\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Combobox = ({ variant = 'default', ...props }: ComboboxProps) =>\n variant === 'input' ? <InputVariantCombobox {...props} /> : <DefaultCombobox {...props} />;\n"]}
|