mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
### What problem does this PR solve? Fix: Bug fixes and removed previous settings page code - Modified the default text color class name in the FileStatusBadge component - Adjusted the FilterType interface definition for ListFilterBar to support JSX labels and an optional count field - Removed redundant changeRaptor callback functions and comment blocks in RaptorFormFields - Corrected the isHorizontal check logic in SliderInputFormField - Optimized the Command component's scrolling behavior and enhanced its event handling - Adjusted the TooltipContent style to support automatic scrollbar display - Removed the old settings page ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: jinhai <haijin.chn@gmail.com> Signed-off-by: Jin Hai <haijin.chn@gmail.com> Co-authored-by: balibabu <cike8899@users.noreply.github.com> Co-authored-by: Kevin Hu <kevinhu.sh@gmail.com> Co-authored-by: Lynn <lynn_inf@hotmail.com> Co-authored-by: 纷繁下的无奈 <zhileihuang@126.com> Co-authored-by: huangzl <huangzl@shinemo.com> Co-authored-by: writinwaters <93570324+writinwaters@users.noreply.github.com> Co-authored-by: Wilmer <33392318@qq.com> Co-authored-by: Adrian Weidig <adrianweidig@gmx.net> Co-authored-by: Zhichang Yu <yuzhichang@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Yongteng Lei <yongtengrey@outlook.com> Co-authored-by: Liu An <asiro@qq.com> Co-authored-by: buua436 <66937541+buua436@users.noreply.github.com> Co-authored-by: BadwomanCraZY <511528396@qq.com> Co-authored-by: cucusenok <31804608+cucusenok@users.noreply.github.com> Co-authored-by: Russell Valentine <russ@coldstonelabs.org> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Billy Bao <newyorkupperbay@gmail.com> Co-authored-by: Zhedong Cen <cenzhedong2@126.com> Co-authored-by: TensorNull <129579691+TensorNull@users.noreply.github.com> Co-authored-by: TensorNull <tensor.null@gmail.com> Co-authored-by: TeslaZY <TeslaZY@outlook.com> Co-authored-by: Ajay <160579663+aybanda@users.noreply.github.com> Co-authored-by: AB <aj@Ajays-MacBook-Air.local> Co-authored-by: 天海蒼灆 <huangaoqin@tecpie.com> Co-authored-by: He Wang <wanghechn@qq.com> Co-authored-by: Atsushi Hatakeyama <atu729@icloud.com> Co-authored-by: Jin Hai <haijin.chn@gmail.com> Co-authored-by: Mohamed Mathari <155896313+melmathari@users.noreply.github.com> Co-authored-by: Mohamed Mathari <nocodeventure@Mac-mini-van-Mohamed.fritz.box> Co-authored-by: Stephen Hu <stephenhu@seismic.com> Co-authored-by: Shaun Zhang <zhangwfjh@users.noreply.github.com> Co-authored-by: zhimeng123 <60221886+zhimeng123@users.noreply.github.com> Co-authored-by: mxc <mxc@example.com> Co-authored-by: Dominik Novotný <50611433+SgtMarmite@users.noreply.github.com> Co-authored-by: EVGENY M <168018528+rjohny55@users.noreply.github.com> Co-authored-by: mcoder6425 <mcoder64@gmail.com> Co-authored-by: lemsn <lemsn@msn.com> Co-authored-by: lemsn <lemsn@126.com> Co-authored-by: Adrian Gora <47756404+adagora@users.noreply.github.com> Co-authored-by: Womsxd <45663319+Womsxd@users.noreply.github.com> Co-authored-by: FatMii <39074672+FatMii@users.noreply.github.com>
139 lines
4.0 KiB
TypeScript
139 lines
4.0 KiB
TypeScript
'use client';
|
|
|
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
import * as React from 'react';
|
|
|
|
import { cn } from '@/lib/utils';
|
|
import { Info } from 'lucide-react';
|
|
|
|
const TooltipProvider = TooltipPrimitive.Provider;
|
|
|
|
const Tooltip = TooltipPrimitive.Root;
|
|
|
|
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
|
|
const TooltipContent = React.forwardRef<
|
|
React.ElementRef<typeof TooltipPrimitive.Content>,
|
|
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
|
|
>(({ className, sideOffset = 4, ...props }, ref) => (
|
|
<TooltipPrimitive.Content
|
|
ref={ref}
|
|
sideOffset={sideOffset}
|
|
className={cn(
|
|
'z-50 overflow-auto scrollbar-auto rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out 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 max-w-[20vw]',
|
|
className,
|
|
)}
|
|
{...props}
|
|
/>
|
|
));
|
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
|
|
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
|
|
export const FormTooltip = ({ tooltip }: { tooltip: React.ReactNode }) => {
|
|
return (
|
|
<Tooltip>
|
|
<TooltipTrigger
|
|
tabIndex={-1}
|
|
onClick={(e) => {
|
|
e.preventDefault(); // Prevent clicking the tooltip from triggering form save
|
|
}}
|
|
>
|
|
<Info className="size-3 ml-2" />
|
|
</TooltipTrigger>
|
|
<TooltipContent>
|
|
<p>{tooltip}</p>
|
|
</TooltipContent>
|
|
</Tooltip>
|
|
);
|
|
};
|
|
|
|
export interface AntToolTipProps {
|
|
title: React.ReactNode;
|
|
children: React.ReactNode;
|
|
placement?: 'top' | 'bottom' | 'left' | 'right';
|
|
trigger?: 'hover' | 'click' | 'focus';
|
|
className?: string;
|
|
}
|
|
|
|
export const AntToolTip: React.FC<AntToolTipProps> = ({
|
|
title,
|
|
children,
|
|
placement = 'top',
|
|
trigger = 'hover',
|
|
className,
|
|
}) => {
|
|
const [visible, setVisible] = React.useState(false);
|
|
|
|
const showTooltip = () => {
|
|
if (trigger === 'hover' || trigger === 'focus') {
|
|
setVisible(true);
|
|
}
|
|
};
|
|
|
|
const hideTooltip = () => {
|
|
if (trigger === 'hover' || trigger === 'focus') {
|
|
setVisible(false);
|
|
}
|
|
};
|
|
|
|
const toggleTooltip = () => {
|
|
if (trigger === 'click') {
|
|
setVisible(!visible);
|
|
}
|
|
};
|
|
|
|
const getPlacementClasses = () => {
|
|
switch (placement) {
|
|
case 'top':
|
|
return 'bottom-full left-1/2 transform -translate-x-1/2 mb-2';
|
|
case 'bottom':
|
|
return 'top-full left-1/2 transform -translate-x-1/2 mt-2';
|
|
case 'left':
|
|
return 'right-full top-1/2 transform -translate-y-1/2 mr-2';
|
|
case 'right':
|
|
return 'left-full top-1/2 transform -translate-y-1/2 ml-2';
|
|
default:
|
|
return 'bottom-full left-1/2 transform -translate-x-1/2 mb-2';
|
|
}
|
|
};
|
|
|
|
return (
|
|
<div className="inline-block relative">
|
|
<div
|
|
onMouseEnter={showTooltip}
|
|
onMouseLeave={hideTooltip}
|
|
onClick={toggleTooltip}
|
|
onFocus={showTooltip}
|
|
onBlur={hideTooltip}
|
|
>
|
|
{children}
|
|
</div>
|
|
{visible && title && (
|
|
<div
|
|
className={cn(
|
|
'absolute z-50 px-2.5 py-2 text-xs text-text-primary bg-muted rounded-sm shadow-sm whitespace-wrap w-max',
|
|
getPlacementClasses(),
|
|
className,
|
|
)}
|
|
>
|
|
{title}
|
|
<div
|
|
className={cn(
|
|
'absolute w-2 h-2 bg-muted ',
|
|
placement === 'top' &&
|
|
'bottom-[-4px] left-1/2 transform -translate-x-1/2 rotate-45',
|
|
placement === 'bottom' &&
|
|
'top-[-4px] left-1/2 transform -translate-x-1/2 rotate-45',
|
|
placement === 'left' &&
|
|
'right-[-4px] top-1/2 transform -translate-y-1/2 rotate-45',
|
|
placement === 'right' &&
|
|
'left-[-4px] top-1/2 transform -translate-y-1/2 rotate-45',
|
|
)}
|
|
/>
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
};
|