diff --git a/packages/backend/src/apps/slack/info.json b/packages/backend/src/apps/slack/info.json index b8d57e35..2f91909d 100644 --- a/packages/backend/src/apps/slack/info.json +++ b/packages/backend/src/apps/slack/info.json @@ -122,10 +122,6 @@ "type": "query", "name": "getData", "arguments": [ - { - "name": "stepId", - "value": "{step.id}" - }, { "name": "key", "value": "listChannels" diff --git a/packages/backend/src/graphql/queries/get-data.ts b/packages/backend/src/graphql/queries/get-data.ts index ec7a426a..68907ea6 100644 --- a/packages/backend/src/graphql/queries/get-data.ts +++ b/packages/backend/src/graphql/queries/get-data.ts @@ -1,9 +1,5 @@ import App from '../../models/app'; -import Connection from '../../models/connection'; -import Step from '../../models/step'; -import { IApp } from '@automatisch/types'; import Context from '../../types/express/context'; -import ListData from '../../apps/slack/data/list-channels'; type Params = { stepId: string; diff --git a/packages/types/index.d.ts b/packages/types/index.d.ts index 905c6715..ba814e5b 100644 --- a/packages/types/index.d.ts +++ b/packages/types/index.d.ts @@ -96,7 +96,7 @@ export interface IFieldDropdown { export interface IFieldText { key: string; label: string; - type: string; + type: 'string'; required: boolean; readOnly: boolean; value: string; diff --git a/packages/web/src/components/AppBar/index.tsx b/packages/web/src/components/AppBar/index.tsx index 329344a8..58420a22 100644 --- a/packages/web/src/components/AppBar/index.tsx +++ b/packages/web/src/components/AppBar/index.tsx @@ -3,7 +3,6 @@ import type { ContainerProps } from '@mui/material/Container'; import { useTheme } from '@mui/material/styles'; import useMediaQuery from '@mui/material/useMediaQuery'; import MuiAppBar from '@mui/material/AppBar'; -import Box from '@mui/material/Box'; import Toolbar from '@mui/material/Toolbar'; import IconButton from '@mui/material/IconButton'; import Typography from '@mui/material/Typography'; diff --git a/packages/web/src/components/ChooseAccountSubstep/index.tsx b/packages/web/src/components/ChooseAccountSubstep/index.tsx index c9d7139b..eda9327f 100644 --- a/packages/web/src/components/ChooseAccountSubstep/index.tsx +++ b/packages/web/src/components/ChooseAccountSubstep/index.tsx @@ -7,7 +7,7 @@ import ListItem from '@mui/material/ListItem'; import Autocomplete from '@mui/material/Autocomplete'; import FlowSubstepTitle from 'components/FlowSubstepTitle'; -import type { IApp, IConnection, IStep, ISubstep, IJSONObject } from '@automatisch/types'; +import type { IApp, IConnection, IStep, ISubstep } from '@automatisch/types'; import { GET_APP_CONNECTIONS } from 'graphql/queries/get-app-connections'; import { TEST_CONNECTION } from 'graphql/queries/test-connection'; diff --git a/packages/web/src/components/ControlledAutocomplete/index.tsx b/packages/web/src/components/ControlledAutocomplete/index.tsx new file mode 100644 index 00000000..de6410ba --- /dev/null +++ b/packages/web/src/components/ControlledAutocomplete/index.tsx @@ -0,0 +1,63 @@ +import * as React from 'react'; +import { Controller, useFormContext } from 'react-hook-form'; +import Autocomplete, { AutocompleteProps } from '@mui/material/Autocomplete'; + +interface ControlledAutocompleteProps extends AutocompleteProps { + shouldUnregister?: boolean; + name: string; + required?: boolean; +} + +type Option = { + label: string; + value: string; +} + +const getOption = (options: readonly Option[], value: string) => options.find(option => option.value === value); + +function ControlledAutocomplete(props: ControlledAutocompleteProps): React.ReactElement { + const { control } = useFormContext(); + + const { + required = false, + name, + defaultValue, + shouldUnregister, + onBlur, + onChange, + ...autocompleteProps + } = props; + + if (!autocompleteProps.options) return (); + + return ( + ( + { + const typedSelectedOption = selectedOption as Option; + if (typedSelectedOption?.value) { + controllerOnChange(typedSelectedOption.value); + } else { + controllerOnChange(typedSelectedOption); + } + + onChange?.(event, selectedOption, reason, details); + }} + onBlur={(...args) => { controllerOnBlur(); onBlur?.(...args); }} + ref={ref} + /> + )} + /> + ); +} + +export default ControlledAutocomplete; diff --git a/packages/web/src/components/FlowSubstep/index.tsx b/packages/web/src/components/FlowSubstep/index.tsx index f3a1e17d..bd6d0d58 100644 --- a/packages/web/src/components/FlowSubstep/index.tsx +++ b/packages/web/src/components/FlowSubstep/index.tsx @@ -3,6 +3,7 @@ import { useFormContext } from 'react-hook-form'; import Collapse from '@mui/material/Collapse'; import ListItem from '@mui/material/ListItem'; import Button from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; import FlowSubstepTitle from 'components/FlowSubstepTitle'; import InputCreator from 'components/InputCreator'; @@ -92,13 +93,19 @@ function FlowSubstep(props: FlowSubstepProps): React.ReactElement { /> - {args?.map((argument) => ( - - ))} + + {args?.map((argument) => ( + + ))} +