mirror of
https://github.com/Yidadaa/ChatGPT-Next-Web.git
synced 2025-09-04 22:46:55 +08:00
feat: ui fixed
This commit is contained in:
@@ -12,6 +12,7 @@ interface Action {
|
||||
icons: JSX.Element | IconMap;
|
||||
className?: string;
|
||||
onClick?: () => void;
|
||||
activeClassName?: string;
|
||||
}
|
||||
|
||||
type Groups = {
|
||||
@@ -100,7 +101,7 @@ export default function ActionsBar(props: ActionsBarProps) {
|
||||
key={action.id}
|
||||
className={`cursor-pointer p-3 ${
|
||||
selected === action.id
|
||||
? "bg-actions-bar-btn-default"
|
||||
? `!bg-actions-bar-btn-default ${action.activeClassName}`
|
||||
: "bg-transparent"
|
||||
} rounded-md items-center ${action.className}`}
|
||||
onClick={handlerClick(action)}
|
||||
|
@@ -36,10 +36,10 @@ export default function Btn(props: {
|
||||
} text-text-btn-primary `;
|
||||
break;
|
||||
case "danger":
|
||||
btnClassName = `bg-danger-btn text-text-btn-danger`;
|
||||
btnClassName = `bg-danger-btn text-text-btn-danger hover:bg-hovered-btn`;
|
||||
break;
|
||||
default:
|
||||
btnClassName = `bg-default-btn text-text-btn-default`;
|
||||
btnClassName = `bg-default-btn text-text-btn-default hover:bg-hovered-btn`;
|
||||
}
|
||||
|
||||
return (
|
||||
|
@@ -73,11 +73,11 @@ export default function MenuLayout<
|
||||
max-md:w-[100%] max-md:px-4 max-md:pb-4 max-md:flex-1
|
||||
md:relative md:basis-sidebar md:h-[calc(100%-1.25rem)] md:pb-6 md:rounded-md md:my-2.5 md:bg-menu
|
||||
`}
|
||||
onClick={(e) => {
|
||||
if (e.target === e.currentTarget) {
|
||||
navigate(Path.Home);
|
||||
}
|
||||
}}
|
||||
// onClick={(e) => {
|
||||
// if (e.target === e.currentTarget) {
|
||||
// navigate(Path.Home);
|
||||
// }
|
||||
// }}
|
||||
>
|
||||
<ListComponent
|
||||
{...props}
|
||||
|
@@ -79,7 +79,7 @@ export default function Popover(props: PopoverProps) {
|
||||
|
||||
const mergedShow = show ?? internalShow;
|
||||
|
||||
const { arrowClassName, placementStyle } = useMemo(() => {
|
||||
const { arrowClassName, placementStyle, placementClassName } = useMemo(() => {
|
||||
const arrowCommonClassName = `${
|
||||
noArrow ? "hidden" : ""
|
||||
} absolute z-10 left-[50%] translate-x-[calc(-50%)]`;
|
||||
@@ -105,28 +105,32 @@ export default function Popover(props: PopoverProps) {
|
||||
bottom: `calc(${distanceToBottomBoundary + targetH}px + 0.5rem)`,
|
||||
left: `calc(${distanceToLeftBoundary}px - ${targetW * 0.02}px)`,
|
||||
},
|
||||
arrowClassName: `${arrowCommonClassName} bottom-[calc(100%+0.5rem)] translate-y-[calc(100%)]`,
|
||||
arrowClassName: `${arrowCommonClassName} bottom-[calc(100%+0.5rem)] translate-y-[calc(100%)] pb-[0.5rem]`,
|
||||
placementClassName: "bottom-[calc(100%+0.5rem)] left-[calc(-2%)]",
|
||||
},
|
||||
lb: {
|
||||
placementStyle: {
|
||||
top: `calc(-${distanceToBottomBoundary}px + 0.5rem)`,
|
||||
left: `calc(${distanceToLeftBoundary}px - ${targetW * 0.02}px)`,
|
||||
},
|
||||
arrowClassName: `${arrowCommonClassName} top-[calc(100%+0.5rem)] translate-y-[calc(-100%)]`,
|
||||
arrowClassName: `${arrowCommonClassName} top-[calc(100%+0.5rem)] translate-y-[calc(-100%)] pt-[0.5rem]`,
|
||||
placementClassName: "top-[calc(100%+0.5rem)] left-[calc(-2%)]",
|
||||
},
|
||||
rt: {
|
||||
placementStyle: {
|
||||
bottom: `calc(${distanceToBottomBoundary + targetH}px + 0.5rem)`,
|
||||
right: `calc(${distanceToRightBoundary}px - ${targetW * 0.02}px)`,
|
||||
},
|
||||
arrowClassName: `${arrowCommonClassName} bottom-[calc(100%+0.5rem)] translate-y-[calc(100%)]`,
|
||||
arrowClassName: `${arrowCommonClassName} bottom-[calc(100%+0.5rem)] translate-y-[calc(100%)] pb-[0.5rem]`,
|
||||
placementClassName: "bottom-[calc(100%+0.5rem)] right-[calc(-2%)]",
|
||||
},
|
||||
rb: {
|
||||
placementStyle: {
|
||||
top: `calc(-${distanceToBottomBoundary}px + 0.5rem)`,
|
||||
right: `calc(${distanceToRightBoundary}px - ${targetW * 0.02}px)`,
|
||||
},
|
||||
arrowClassName: `${arrowCommonClassName} top-[calc(100%+0.5rem)] translate-y-[calc(-100%)]`,
|
||||
arrowClassName: `${arrowCommonClassName} top-[calc(100%+0.5rem)] translate-y-[calc(-100%)] pt-[0.5rem]`,
|
||||
placementClassName: "top-[calc(100%+0.5rem)] right-[calc(-2%)]",
|
||||
},
|
||||
t: {
|
||||
placementStyle: {
|
||||
@@ -134,7 +138,9 @@ export default function Popover(props: PopoverProps) {
|
||||
left: `calc(${distanceToLeftBoundary + targetW / 2}px`,
|
||||
transform: "translateX(-50%)",
|
||||
},
|
||||
arrowClassName: `${arrowCommonClassName} bottom-[calc(100%+0.5rem)] translate-y-[calc(100%)]`,
|
||||
arrowClassName: `${arrowCommonClassName} bottom-[calc(100%+0.5rem)] translate-y-[calc(100%)] pb-[0.5rem]`,
|
||||
placementClassName:
|
||||
"bottom-[calc(100%+0.5rem)] left-[50%] translate-x-[calc(-50%)]",
|
||||
},
|
||||
b: {
|
||||
placementStyle: {
|
||||
@@ -142,7 +148,9 @@ export default function Popover(props: PopoverProps) {
|
||||
left: `calc(${distanceToLeftBoundary + targetW / 2}px`,
|
||||
transform: "translateX(-50%)",
|
||||
},
|
||||
arrowClassName: `${arrowCommonClassName} top-[calc(100%+0.5rem)] translate-y-[calc(-100%)]`,
|
||||
arrowClassName: `${arrowCommonClassName} top-[calc(100%+0.5rem)] translate-y-[calc(-100%)] pt-[0.5rem]`,
|
||||
placementClassName:
|
||||
"top-[calc(100%+0.5rem)] left-[50%] translate-x-[calc(-50%)]",
|
||||
},
|
||||
};
|
||||
|
||||
@@ -236,54 +244,83 @@ export default function Popover(props: PopoverProps) {
|
||||
);
|
||||
}
|
||||
|
||||
// return (
|
||||
// <div
|
||||
// className={`relative ${className}`}
|
||||
// onPointerEnter={(e) => {
|
||||
// e.preventDefault();
|
||||
// clearTimeout(closeTimer.current);
|
||||
// onShow?.(true);
|
||||
// setShow(true);
|
||||
// getRelativePosition(e.currentTarget, "");
|
||||
// window.document.documentElement.style.overflow = "hidden";
|
||||
// }}
|
||||
// onPointerLeave={(e) => {
|
||||
// e.preventDefault();
|
||||
// if (delayClose) {
|
||||
// closeTimer.current = window.setTimeout(() => {
|
||||
// onShow?.(false);
|
||||
// setShow(false);
|
||||
// }, delayClose);
|
||||
// } else {
|
||||
// onShow?.(false);
|
||||
// setShow(false);
|
||||
// }
|
||||
// window.document.documentElement.style.overflow = "auto";
|
||||
// }}
|
||||
// >
|
||||
// {children}
|
||||
// {mergedShow && (
|
||||
// <>
|
||||
// <div
|
||||
// className={`${
|
||||
// noArrow ? "opacity-0" : ""
|
||||
// } bg-inherit ${arrowClassName}`}
|
||||
// style={{ zIndex: baseZIndex + 1 }}
|
||||
// >
|
||||
// <ArrowIcon sibling={popoverRef} />
|
||||
// </div>
|
||||
// {createPortal(
|
||||
// <div
|
||||
// className={` whitespace-nowrap ${popoverCommonClass} ${popoverClassName} cursor-pointer`}
|
||||
// style={{ zIndex: baseZIndex + 1, ...placementStyle }}
|
||||
// ref={popoverRef}
|
||||
// >
|
||||
// {content}
|
||||
// </div>,
|
||||
// popoverRoot,
|
||||
// )}
|
||||
// </>
|
||||
// )}
|
||||
// </div>
|
||||
// );
|
||||
|
||||
return (
|
||||
<div
|
||||
className={`relative ${className}`}
|
||||
className={`group relative ${className}`}
|
||||
onPointerEnter={(e) => {
|
||||
e.preventDefault();
|
||||
clearTimeout(closeTimer.current);
|
||||
onShow?.(true);
|
||||
setShow(true);
|
||||
getRelativePosition(e.currentTarget, "");
|
||||
window.document.documentElement.style.overflow = "hidden";
|
||||
}}
|
||||
onPointerLeave={(e) => {
|
||||
e.preventDefault();
|
||||
if (delayClose) {
|
||||
closeTimer.current = window.setTimeout(() => {
|
||||
onShow?.(false);
|
||||
setShow(false);
|
||||
}, delayClose);
|
||||
} else {
|
||||
onShow?.(false);
|
||||
setShow(false);
|
||||
}
|
||||
window.document.documentElement.style.overflow = "auto";
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
{mergedShow && (
|
||||
<>
|
||||
<div
|
||||
className={`${
|
||||
noArrow ? "opacity-0" : ""
|
||||
} bg-inherit ${arrowClassName}`}
|
||||
style={{ zIndex: baseZIndex + 1 }}
|
||||
>
|
||||
<ArrowIcon sibling={popoverRef} />
|
||||
</div>
|
||||
{createPortal(
|
||||
<div
|
||||
className={` whitespace-nowrap ${popoverCommonClass} ${popoverClassName} cursor-pointer`}
|
||||
style={{ zIndex: baseZIndex + 1, ...placementStyle }}
|
||||
ref={popoverRef}
|
||||
>
|
||||
{content}
|
||||
</div>,
|
||||
popoverRoot,
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
<div
|
||||
className={`
|
||||
hidden group-hover:block
|
||||
${noArrow ? "opacity-0" : ""}
|
||||
bg-inherit
|
||||
${arrowClassName}
|
||||
`}
|
||||
style={{ zIndex: baseZIndex + 1 }}
|
||||
>
|
||||
<ArrowIcon sibling={popoverRef} />
|
||||
</div>
|
||||
<div
|
||||
className={`hidden group-hover:block whitespace-nowrap ${popoverCommonClass} ${placementClassName} ${popoverClassName}`}
|
||||
ref={popoverRef}
|
||||
style={{ zIndex: 10000 }}
|
||||
>
|
||||
{content}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@@ -58,7 +58,7 @@ const Select = <Value extends number | string>(props: SearchProps<Value>) => {
|
||||
{options?.map((o) => (
|
||||
<div
|
||||
key={o.value}
|
||||
className={`flex items-center p-3 gap-2 rounded-action-btn hover:bg-select-option-hovered`}
|
||||
className={`flex items-center p-3 gap-2 rounded-action-btn hover:bg-select-option-hovered cursor-pointer`}
|
||||
onClick={() => {
|
||||
onSelect?.(o.value);
|
||||
}}
|
||||
|
Reference in New Issue
Block a user