diff --git a/ui.frontend/src/components/CodeExecuteButton.tsx b/ui.frontend/src/components/CodeExecuteButton.tsx index 8921c036..78f3e223 100644 --- a/ui.frontend/src/components/CodeExecuteButton.tsx +++ b/ui.frontend/src/components/CodeExecuteButton.tsx @@ -1,6 +1,7 @@ -import { Button, ButtonGroup, Content, Dialog, DialogContainer, Divider, Form, Heading, Item, TabList, TabPanels, Tabs, Text, View } from '@adobe/react-spectrum'; +import { Button, ButtonGroup, Content, Dialog, DialogContainer, Divider, Footer, Form, Heading, Item, TabList, TabPanels, Tabs, Text, View } from '@adobe/react-spectrum'; import Checkmark from '@spectrum-icons/workflow/Checkmark'; import Close from '@spectrum-icons/workflow/Close'; +import Copy from '@spectrum-icons/workflow/Copy'; import Gears from '@spectrum-icons/workflow/Gears'; import React, { useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; @@ -10,6 +11,7 @@ import { Objects } from '../utils/objects'; import { ToastTimeoutLong } from '../utils/spectrum.ts'; import { Strings } from '../utils/strings'; import CodeArgumentInput from './CodeArgumentInput'; +import PathPicker from './PathPicker.tsx'; interface CodeExecuteButtonProps { code: string; @@ -23,7 +25,7 @@ const CodeExecuteButton: React.FC = ({ code, onDescribeF const [description, setDescription] = useState(null); const [dialogOpen, setDialogOpen] = useState(false); const [described, setDescribed] = useState(false); - + const [pathPickerOpened, setPathPickerOpened] = useState(false); const methods = useForm({ mode: 'onChange', reValidateMode: 'onChange', @@ -89,6 +91,11 @@ const CodeExecuteButton: React.FC = ({ code, onDescribeF onExecute(description!, data); }; + const handlePathSelect = (path: string) => { + setPathPickerOpened(false); + navigator.clipboard.writeText(path); + }; + const descriptionArguments: Argument[] = Object.values(description?.arguments || []); const groups = Array.from(new Set(descriptionArguments.map((arg) => arg.group))); const shouldRenderTabs = groups.length > 1 || (groups.length === 1 && groups[0] !== ArgumentGroupDefault); @@ -96,6 +103,18 @@ const CodeExecuteButton: React.FC = ({ code, onDescribeF return ( <> + setPathPickerOpened(false)} + basePath="/" + confirmButtonLabel={ + <> + + Copy to clipboard + + } + open={pathPickerOpened} + /> + + + + + )} + + ); +}; + +export default PathPicker;