- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
99 lines
2.8 KiB
TypeScript
99 lines
2.8 KiB
TypeScript
import { t } from 'i18next';
|
|
import { ChevronDown, Puzzle, Workflow } from 'lucide-react';
|
|
import { useState } from 'react';
|
|
|
|
import { Button } from '@/components/ui/button';
|
|
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuTrigger,
|
|
} from '@/components/ui/dropdown-menu';
|
|
import { AgentTool, AgentToolType } from '@activepieces/shared';
|
|
|
|
import { AgentFlowToolDialog } from './flow-tool-dialog';
|
|
import { AgentPieceDialog } from './piece-tool-dialog';
|
|
|
|
type AddAgentToolDropdownProps = {
|
|
tools: AgentTool[];
|
|
disabled?: boolean;
|
|
onToolsUpdate: (tools: AgentTool[]) => void;
|
|
};
|
|
|
|
export const AddAgentToolDropdown = ({
|
|
tools,
|
|
disabled,
|
|
onToolsUpdate,
|
|
}: AddAgentToolDropdownProps) => {
|
|
const [openDropdown, setOpenDropdown] = useState(false);
|
|
const [showAddPieceDialog, setShowAddPieceDialog] = useState(false);
|
|
const [showAddFlowDialog, setShowAddFlowDialog] = useState(false);
|
|
|
|
return (
|
|
<DropdownMenu
|
|
modal={false}
|
|
open={openDropdown}
|
|
onOpenChange={setOpenDropdown}
|
|
>
|
|
<DropdownMenuTrigger disabled={disabled} asChild>
|
|
<Button variant="basic">
|
|
<span>{t('Add tool')}</span>
|
|
<ChevronDown className="h-4 w-4" />
|
|
</Button>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent>
|
|
<AgentPieceDialog
|
|
tools={tools}
|
|
open={showAddPieceDialog}
|
|
onToolsUpdate={(tools) => {
|
|
onToolsUpdate(tools);
|
|
setShowAddPieceDialog(false);
|
|
setOpenDropdown(false);
|
|
}}
|
|
onClose={() => {
|
|
setShowAddPieceDialog(false);
|
|
setOpenDropdown(false);
|
|
}}
|
|
>
|
|
<DropdownMenuItem
|
|
onSelect={(e) => {
|
|
e.preventDefault();
|
|
setShowAddPieceDialog(true);
|
|
}}
|
|
>
|
|
<Puzzle className="h-4 w-4 me-2" />
|
|
<span>{t('From piece')}</span>
|
|
</DropdownMenuItem>
|
|
</AgentPieceDialog>
|
|
<AgentFlowToolDialog
|
|
open={showAddFlowDialog}
|
|
selectedFlows={tools
|
|
.filter((tool) => tool.type === AgentToolType.FLOW)
|
|
.map((tool) => tool.flowId!)}
|
|
onToolsUpdate={(newTools) => {
|
|
onToolsUpdate(newTools);
|
|
setShowAddFlowDialog(false);
|
|
setOpenDropdown(false);
|
|
}}
|
|
onClose={() => {
|
|
setShowAddFlowDialog(false);
|
|
setOpenDropdown(false);
|
|
}}
|
|
tools={tools}
|
|
>
|
|
<DropdownMenuItem
|
|
onSelect={(e) => {
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
setShowAddFlowDialog(true);
|
|
}}
|
|
>
|
|
<Workflow className="h-4 w-4 me-2" />
|
|
<span>{t('From flow')}</span>
|
|
</DropdownMenuItem>
|
|
</AgentFlowToolDialog>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
);
|
|
};
|