@meta-1/design 0.0.186 → 0.0.188
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/package.json
CHANGED
|
@@ -29,7 +29,7 @@ function TooltipContent({
|
|
|
29
29
|
<TooltipPrimitive.Portal>
|
|
30
30
|
<TooltipPrimitive.Content
|
|
31
31
|
className={cn(
|
|
32
|
-
"fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in
|
|
32
|
+
"fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-primary px-3 py-1.5 text-primary-foreground text-xs data-[state=closed]:animate-out",
|
|
33
33
|
className,
|
|
34
34
|
)}
|
|
35
35
|
data-slot="tooltip-content"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { forwardRef, type MouseEvent, type ReactNode, useState } from "react";
|
|
1
|
+
import { forwardRef, type MouseEvent, type ReactNode, useRef, useState } from "react";
|
|
2
2
|
import { XIcon } from "lucide-react";
|
|
3
3
|
|
|
4
4
|
import { Empty } from "@meta-1/design/components/uix/empty";
|
|
@@ -46,22 +46,25 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>((props, _ref) =
|
|
|
46
46
|
onOpenChange,
|
|
47
47
|
...rest
|
|
48
48
|
} = props;
|
|
49
|
-
|
|
50
|
-
const [innerValue, setInnerValue] = useState<string | undefined>(
|
|
51
|
-
const isControlled =
|
|
49
|
+
const initValue = useRef(value);
|
|
50
|
+
const [innerValue, setInnerValue] = useState<string | undefined>();
|
|
51
|
+
const isControlled = initValue.current !== undefined;
|
|
52
52
|
const currentValue = isControlled ? value : innerValue;
|
|
53
53
|
|
|
54
54
|
const handleChange = (val: string) => {
|
|
55
|
-
if (onChange) {
|
|
56
|
-
// 尝试找到原始选项,返回原始类型的 value
|
|
57
|
-
const option = options.find((opt) => String(opt.value) === val);
|
|
58
|
-
if (option) {
|
|
59
|
-
onChange(option.value);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
55
|
if (!isControlled) {
|
|
63
56
|
setInnerValue(val);
|
|
64
57
|
}
|
|
58
|
+
if (onChange) {
|
|
59
|
+
if (val === "") {
|
|
60
|
+
onChange("");
|
|
61
|
+
} else {
|
|
62
|
+
const option = options.find((opt) => String(opt.value) === val);
|
|
63
|
+
if (option) {
|
|
64
|
+
onChange(option.value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
65
68
|
};
|
|
66
69
|
|
|
67
70
|
const clear = (e: MouseEvent<HTMLDivElement>) => {
|
|
@@ -76,7 +79,7 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>((props, _ref) =
|
|
|
76
79
|
onOpenChange={onOpenChange}
|
|
77
80
|
onValueChange={handleChange}
|
|
78
81
|
open={open}
|
|
79
|
-
value={currentValue
|
|
82
|
+
value={currentValue as string | undefined}
|
|
80
83
|
>
|
|
81
84
|
<div className={cn("relative inline-block", allowClear && currentValue ? "group" : "", className)}>
|
|
82
85
|
<SelectTrigger className={cn("flex w-full", triggerClassName)}>
|
|
@@ -14,15 +14,18 @@ export type TooltipProps = PropsWithChildren & {
|
|
|
14
14
|
side?: Side;
|
|
15
15
|
open?: boolean;
|
|
16
16
|
onOpenChange?: (open: boolean) => void;
|
|
17
|
+
className?: string;
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
export const Tooltip: FC<TooltipProps> = (props) => {
|
|
20
|
-
const { open, onOpenChange } = props;
|
|
21
|
+
const { open, onOpenChange, className } = props;
|
|
21
22
|
return (
|
|
22
23
|
<TooltipProvider>
|
|
23
24
|
<TooltipUI onOpenChange={onOpenChange} open={open}>
|
|
24
25
|
<TooltipTrigger asChild={true}>{props.children}</TooltipTrigger>
|
|
25
|
-
<TooltipContent side={props.side}>
|
|
26
|
+
<TooltipContent className={className} side={props.side}>
|
|
27
|
+
{props.content}
|
|
28
|
+
</TooltipContent>
|
|
26
29
|
</TooltipUI>
|
|
27
30
|
</TooltipProvider>
|
|
28
31
|
);
|