From 8fbab67060fe5e4e3b5c3be8a547d05d5c75a38a Mon Sep 17 00:00:00 2001 From: Markus Thielker Date: Thu, 20 Feb 2025 20:59:29 +0100 Subject: [PATCH] NORY-46: add multi-select component --- dashboard/bun.lockb | Bin 270420 -> 291060 bytes dashboard/package.json | 4 +- dashboard/src/components/ui/command.tsx | 154 ++++++++++++++++++ dashboard/src/components/ui/dialog.tsx | 123 ++++++++++++++ dashboard/src/components/ui/multi-select.tsx | 129 +++++++++++++++ dashboard/src/components/ui/select.tsx | 160 +++++++++++++++++++ 6 files changed, 569 insertions(+), 1 deletion(-) create mode 100644 dashboard/src/components/ui/command.tsx create mode 100644 dashboard/src/components/ui/dialog.tsx create mode 100644 dashboard/src/components/ui/multi-select.tsx create mode 100644 dashboard/src/components/ui/select.tsx diff --git a/dashboard/bun.lockb b/dashboard/bun.lockb index 457965a40f7a0aaced242625b14554add2363733..92f5ffc97ef6ddd4ea77423e893905262488f643 100755 GIT binary patch delta 60056 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 Zebo{Bu@zpv>_36QpTS8K?_zZ0{{dHts}cYJ delta 49623 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, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +Command.displayName = CommandPrimitive.displayName; + +const CommandDialog = ({ children, ...props }: DialogProps) => { + return ( + + + + {children} + + + + ); +}; + +const CommandInput = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( +
+ + +
+)); + +CommandInput.displayName = CommandPrimitive.Input.displayName; + +const CommandList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); + +CommandList.displayName = CommandPrimitive.List.displayName; + +const CommandEmpty = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>((props, ref) => ( + +)); + +CommandEmpty.displayName = CommandPrimitive.Empty.displayName; + +const CommandGroup = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); + +CommandGroup.displayName = CommandPrimitive.Group.displayName; + +const CommandSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +CommandSeparator.displayName = CommandPrimitive.Separator.displayName; + +const CommandItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); + +CommandItem.displayName = CommandPrimitive.Item.displayName; + +const CommandShortcut = ({ + className, + ...props + }: React.HTMLAttributes) => { + return ( + + ); +}; +CommandShortcut.displayName = 'CommandShortcut'; + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +}; diff --git a/dashboard/src/components/ui/dialog.tsx b/dashboard/src/components/ui/dialog.tsx new file mode 100644 index 0000000..c7b4160 --- /dev/null +++ b/dashboard/src/components/ui/dialog.tsx @@ -0,0 +1,123 @@ +'use client'; + +import * as React from 'react'; +import * as DialogPrimitive from '@radix-ui/react-dialog'; +import { X } from 'lucide-react'; + +import { cn } from '@/lib/utils'; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = DialogPrimitive.Portal; + +const DialogClose = DialogPrimitive.Close; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props + }: React.HTMLAttributes) => ( +
+); +DialogHeader.displayName = 'DialogHeader'; + +const DialogFooter = ({ + className, + ...props + }: React.HTMLAttributes) => ( +
+); +DialogFooter.displayName = 'DialogFooter'; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/dashboard/src/components/ui/multi-select.tsx b/dashboard/src/components/ui/multi-select.tsx new file mode 100644 index 0000000..266eea7 --- /dev/null +++ b/dashboard/src/components/ui/multi-select.tsx @@ -0,0 +1,129 @@ +'use client'; + +import * as React from 'react'; +import { X } from 'lucide-react'; + +import { Badge } from '@/components/ui/badge'; +import { Command, CommandGroup, CommandItem, CommandList } from '@/components/ui/command'; +import { Command as CommandPrimitive } from 'cmdk'; + +type MultiSelectItem = Record<'value' | 'label', string>; + +interface MultiSelectProps { + items: MultiSelectItem[]; + placeholder?: string; +} + +// Credits: https://github.com/mxkaske/mxkaske.dev/blob/main/components/craft/fancy-multi-select.tsx +export function MultiSelect({ items, placeholder }: MultiSelectProps) { + const inputRef = React.useRef(null); + const [open, setOpen] = React.useState(false); + const [selected, setSelected] = React.useState([]); + const [inputValue, setInputValue] = React.useState(''); + + const handleUnselect = React.useCallback((item: MultiSelectItem) => { + setSelected((prev) => prev.filter((s) => s.value !== item.value)); + }, []); + + const handleKeyDown = React.useCallback( + (e: React.KeyboardEvent) => { + const input = inputRef.current; + if (input) { + if (e.key === 'Delete' || e.key === 'Backspace') { + if (input.value === '') { + setSelected((prev) => { + const newSelected = [...prev]; + newSelected.pop(); + return newSelected; + }); + } + } + // This is not a default behaviour of the field + if (e.key === 'Escape') { + input.blur(); + } + } + }, + [], + ); + + const selectables = items.filter( + (item) => !selected.includes(item), + ); + + console.log(selectables, selected, inputValue); + + return ( + +
+
+ {selected.map((item) => { + return ( + + {item.label} + + + ); + })} + {/* Avoid having the "Search" Icon */} + setOpen(false)} + onFocus={() => setOpen(true)} + placeholder={placeholder ?? 'Select an item...'} + className="ml-2 flex-1 bg-transparent outline-none placeholder:text-muted-foreground" + /> +
+
+
+ + {open && selectables.length > 0 ? ( +
+ + {selectables.map((item) => { + return ( + { + e.preventDefault(); + e.stopPropagation(); + }} + onSelect={(value) => { + setInputValue(''); + setSelected((prev) => [...prev, item]); + }} + className={'cursor-pointer'} + > + {item.label} + + ); + })} + +
+ ) : null} +
+
+
+ ); +} \ No newline at end of file diff --git a/dashboard/src/components/ui/select.tsx b/dashboard/src/components/ui/select.tsx new file mode 100644 index 0000000..ddd77ac --- /dev/null +++ b/dashboard/src/components/ui/select.tsx @@ -0,0 +1,160 @@ +'use client'; + +import * as React from 'react'; +import * as SelectPrimitive from '@radix-ui/react-select'; +import { Check, ChevronDown, ChevronUp } from 'lucide-react'; + +import { cn } from '@/lib/utils'; + +const Select = SelectPrimitive.Root; + +const SelectGroup = SelectPrimitive.Group; + +const SelectValue = SelectPrimitive.Value; + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + span]:line-clamp-1', + className, + )} + {...props} + > + {children} + + + + +)); +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)); +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName; + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)); +SelectScrollDownButton.displayName = + SelectPrimitive.ScrollDownButton.displayName; + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = 'popper', ...props }, ref) => ( + + + + + {children} + + + + +)); +SelectContent.displayName = SelectPrimitive.Content.displayName; + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectLabel.displayName = SelectPrimitive.Label.displayName; + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)); +SelectItem.displayName = SelectPrimitive.Item.displayName; + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectSeparator.displayName = SelectPrimitive.Separator.displayName; + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, +};