From 69e12163ad604fc9cbe20d6d9dc0b5632e6e89d0 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Thu, 6 Feb 2025 13:50:37 +0800 Subject: [PATCH] feat: add Radix UI Select component for improved sorting UI --- bun.lockb | Bin 202630 -> 209112 bytes package.json | 1 + src/components/ui/select.tsx | 126 +++++++++++++++++++++++++++++++++++ src/pages/Server.tsx | 76 ++++++++++----------- 4 files changed, 161 insertions(+), 42 deletions(-) create mode 100644 src/components/ui/select.tsx diff --git a/bun.lockb b/bun.lockb index 9cf11c376e759e29702a7508ad50b3ae009fb0ff..59fe87aa5cf54693c9e85fa45ec5206d1dbab3d8 100755 GIT binary patch delta 36797 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 Yu&eWhvP2Y~Q-(64&HjhJP@?<&AL&dlwEzGB diff --git a/package.json b/package.json index 6a93ff4..57e4de1 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@radix-ui/react-label": "^2.1.1", "@radix-ui/react-popover": "^1.1.5", "@radix-ui/react-progress": "^1.1.1", + "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-separator": "^1.1.1", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-switch": "^1.1.2", diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx new file mode 100644 index 0000000..f0e62b1 --- /dev/null +++ b/src/components/ui/select.tsx @@ -0,0 +1,126 @@ +import { cn } from "@/lib/utils" +import * as SelectPrimitive from "@radix-ui/react-select" +import { Check, ChevronDown, ChevronUp } from "lucide-react" +import * as React from "react" + +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.ComponentPropsWithoutRef>( + ({ className, ...props }, ref) => ( + + ), +) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef, 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, +} diff --git a/src/pages/Server.tsx b/src/pages/Server.tsx index a5b814f..891d906 100644 --- a/src/pages/Server.tsx +++ b/src/pages/Server.tsx @@ -7,6 +7,7 @@ import { ServiceTracker } from "@/components/ServiceTracker" import { Loader } from "@/components/loading/Loader" import { Label } from "@/components/ui/label" import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover" +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { SORT_ORDERS, SORT_TYPES } from "@/context/sort-context" import { useSort } from "@/hooks/use-sort" import { useStatus } from "@/hooks/use-status" @@ -294,7 +295,7 @@ export default function Servers() { - ))} - - -
- -
- {SORT_ORDERS.map((order) => ( - - ))} -
-
+ +
+
+ + +
+
+ + +