mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
### What problem does this PR solve? Feat: Adjust the style of the toolbar at the bottom of the agent canvas #10703 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
@ -93,7 +93,9 @@ function InnerButtonEdge({
|
|||||||
}, [data?.isHovered, isTargetPlaceholder, sourceHandleId, target]);
|
}, [data?.isHovered, isTargetPlaceholder, sourceHandleId, target]);
|
||||||
|
|
||||||
const activeMarkerEnd =
|
const activeMarkerEnd =
|
||||||
selected || !isEmpty(showHighlight) ? 'url(#selected-marker)' : markerEnd;
|
selected || !isEmpty(showHighlight) || isTargetPlaceholder
|
||||||
|
? 'url(#selected-marker)'
|
||||||
|
: markerEnd;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -311,7 +311,11 @@ function AgentCanvas({ drawerVisible, hideDrawer }: IProps) {
|
|||||||
>
|
>
|
||||||
<AgentBackground></AgentBackground>
|
<AgentBackground></AgentBackground>
|
||||||
<Spotlight className="z-0" opcity={0.7} coverage={70} />
|
<Spotlight className="z-0" opcity={0.7} coverage={70} />
|
||||||
<Controls position={'bottom-center'} orientation="horizontal">
|
<Controls
|
||||||
|
position={'bottom-center'}
|
||||||
|
orientation="horizontal"
|
||||||
|
className="bg-bg-base px-4 py-2 h-auto w-auto [&>button]:bg-transparent [&>button]:border-0 [&>button]:text-text-primary [&>button]:hover:bg-bg-base-hover [&>button]:hover:text-text-primary [&>button]:active:bg-bg-base-active [&>button]:p-0 [&>button]:size-4 gap-2.5 rounded-md"
|
||||||
|
>
|
||||||
<ControlButton>
|
<ControlButton>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
|
|||||||
@ -6,10 +6,18 @@ import {
|
|||||||
} from '@/components/ui/accordion';
|
} from '@/components/ui/accordion';
|
||||||
import { Operator } from '@/constants/agent';
|
import { Operator } from '@/constants/agent';
|
||||||
import useGraphStore from '@/pages/agent/store';
|
import useGraphStore from '@/pages/agent/store';
|
||||||
import { useCallback, useMemo } from 'react';
|
import { PropsWithChildren, useCallback, useMemo } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { OperatorItemList } from './operator-item-list';
|
import { OperatorItemList } from './operator-item-list';
|
||||||
|
|
||||||
|
function OperatorAccordionTrigger({ children }: PropsWithChildren) {
|
||||||
|
return (
|
||||||
|
<AccordionTrigger className="text-xs text-text-secondary hover:no-underline items-center">
|
||||||
|
<span className="h-4 translate-y-1"> {children}</span>
|
||||||
|
</AccordionTrigger>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export function AccordionOperators({
|
export function AccordionOperators({
|
||||||
isCustomDropdown = false,
|
isCustomDropdown = false,
|
||||||
mousePosition,
|
mousePosition,
|
||||||
@ -26,10 +34,10 @@ export function AccordionOperators({
|
|||||||
defaultValue={['item-1', 'item-2', 'item-3', 'item-4', 'item-5']}
|
defaultValue={['item-1', 'item-2', 'item-3', 'item-4', 'item-5']}
|
||||||
>
|
>
|
||||||
<AccordionItem value="item-1">
|
<AccordionItem value="item-1">
|
||||||
<AccordionTrigger className="text-xl">
|
<OperatorAccordionTrigger>
|
||||||
{t('flow.foundation')}
|
{t('flow.foundation')}
|
||||||
</AccordionTrigger>
|
</OperatorAccordionTrigger>
|
||||||
<AccordionContent className="flex flex-col gap-4 text-balance">
|
<AccordionContent className="flex flex-col gap-4 text-text-primary">
|
||||||
<OperatorItemList
|
<OperatorItemList
|
||||||
operators={[Operator.Agent, Operator.Retrieval]}
|
operators={[Operator.Agent, Operator.Retrieval]}
|
||||||
isCustomDropdown={isCustomDropdown}
|
isCustomDropdown={isCustomDropdown}
|
||||||
@ -38,10 +46,8 @@ export function AccordionOperators({
|
|||||||
</AccordionContent>
|
</AccordionContent>
|
||||||
</AccordionItem>
|
</AccordionItem>
|
||||||
<AccordionItem value="item-2">
|
<AccordionItem value="item-2">
|
||||||
<AccordionTrigger className="text-xl">
|
<OperatorAccordionTrigger>{t('flow.dialog')}</OperatorAccordionTrigger>
|
||||||
{t('flow.dialog')}
|
<AccordionContent className="flex flex-col gap-4 text-text-primary">
|
||||||
</AccordionTrigger>
|
|
||||||
<AccordionContent className="flex flex-col gap-4 text-balance">
|
|
||||||
<OperatorItemList
|
<OperatorItemList
|
||||||
operators={[Operator.Message, Operator.UserFillUp]}
|
operators={[Operator.Message, Operator.UserFillUp]}
|
||||||
isCustomDropdown={isCustomDropdown}
|
isCustomDropdown={isCustomDropdown}
|
||||||
@ -50,10 +56,8 @@ export function AccordionOperators({
|
|||||||
</AccordionContent>
|
</AccordionContent>
|
||||||
</AccordionItem>
|
</AccordionItem>
|
||||||
<AccordionItem value="item-3">
|
<AccordionItem value="item-3">
|
||||||
<AccordionTrigger className="text-xl">
|
<OperatorAccordionTrigger>{t('flow.flow')}</OperatorAccordionTrigger>
|
||||||
{t('flow.flow')}
|
<AccordionContent className="flex flex-col gap-4 text-text-primary">
|
||||||
</AccordionTrigger>
|
|
||||||
<AccordionContent className="flex flex-col gap-4 text-balance">
|
|
||||||
<OperatorItemList
|
<OperatorItemList
|
||||||
operators={[
|
operators={[
|
||||||
Operator.Switch,
|
Operator.Switch,
|
||||||
@ -66,10 +70,10 @@ export function AccordionOperators({
|
|||||||
</AccordionContent>
|
</AccordionContent>
|
||||||
</AccordionItem>
|
</AccordionItem>
|
||||||
<AccordionItem value="item-4">
|
<AccordionItem value="item-4">
|
||||||
<AccordionTrigger className="text-xl">
|
<OperatorAccordionTrigger>
|
||||||
{t('flow.dataManipulation')}
|
{t('flow.dataManipulation')}
|
||||||
</AccordionTrigger>
|
</OperatorAccordionTrigger>
|
||||||
<AccordionContent className="flex flex-col gap-4 text-balance">
|
<AccordionContent className="flex flex-col gap-4 text-text-primary">
|
||||||
<OperatorItemList
|
<OperatorItemList
|
||||||
operators={[Operator.Code, Operator.StringTransform]}
|
operators={[Operator.Code, Operator.StringTransform]}
|
||||||
isCustomDropdown={isCustomDropdown}
|
isCustomDropdown={isCustomDropdown}
|
||||||
@ -78,10 +82,8 @@ export function AccordionOperators({
|
|||||||
</AccordionContent>
|
</AccordionContent>
|
||||||
</AccordionItem>
|
</AccordionItem>
|
||||||
<AccordionItem value="item-5">
|
<AccordionItem value="item-5">
|
||||||
<AccordionTrigger className="text-xl">
|
<OperatorAccordionTrigger>{t('flow.tools')}</OperatorAccordionTrigger>
|
||||||
{t('flow.tools')}
|
<AccordionContent className="flex flex-col gap-4 text-text-primary">
|
||||||
</AccordionTrigger>
|
|
||||||
<AccordionContent className="flex flex-col gap-4 text-balance">
|
|
||||||
<OperatorItemList
|
<OperatorItemList
|
||||||
operators={[
|
operators={[
|
||||||
Operator.TavilySearch,
|
Operator.TavilySearch,
|
||||||
@ -180,8 +182,10 @@ export function PipelineAccordionOperators({
|
|||||||
defaultValue="item-1"
|
defaultValue="item-1"
|
||||||
>
|
>
|
||||||
<AccordionItem value="item-1">
|
<AccordionItem value="item-1">
|
||||||
<AccordionTrigger>Chunker</AccordionTrigger>
|
<AccordionTrigger className="translate-y-2 hover:no-underline text-text-primary font-normal">
|
||||||
<AccordionContent className="flex flex-col gap-4 text-balance">
|
Chunker
|
||||||
|
</AccordionTrigger>
|
||||||
|
<AccordionContent className="flex flex-col gap-4">
|
||||||
<OperatorItemList
|
<OperatorItemList
|
||||||
operators={chunkerOperators}
|
operators={chunkerOperators}
|
||||||
isCustomDropdown={isCustomDropdown}
|
isCustomDropdown={isCustomDropdown}
|
||||||
|
|||||||
@ -96,5 +96,9 @@ export function OperatorItemList({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
return <ul className="space-y-2">{operators.map(renderOperatorItem)}</ul>;
|
return (
|
||||||
|
<ul className="space-y-2 text-text-primary font-normal">
|
||||||
|
{operators.map(renderOperatorItem)}
|
||||||
|
</ul>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user