From 8e9d7a229d063640a456fcf7011756b4ae2ee3f0 Mon Sep 17 00:00:00 2001 From: Joel Date: Mon, 21 Oct 2024 18:21:45 +0800 Subject: [PATCH] feat: scroll to view and fix action hidden --- .../workflow/block-selector/all-tools.tsx | 1 + .../block-selector/market-place-plugin/action.tsx | 14 +++++++++----- .../block-selector/market-place-plugin/item.tsx | 9 +++++++-- .../block-selector/market-place-plugin/list.tsx | 10 +++++++++- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/web/app/components/workflow/block-selector/all-tools.tsx b/web/app/components/workflow/block-selector/all-tools.tsx index a9a316b272..67c30f4aea 100644 --- a/web/app/components/workflow/block-selector/all-tools.tsx +++ b/web/app/components/workflow/block-selector/all-tools.tsx @@ -89,6 +89,7 @@ const AllTools = ({ onSelect={onSelect} viewType={activeView} /> + {/* Plugins from marketplace */} diff --git a/web/app/components/workflow/block-selector/market-place-plugin/action.tsx b/web/app/components/workflow/block-selector/market-place-plugin/action.tsx index df606fdb41..d77ea248fe 100644 --- a/web/app/components/workflow/block-selector/market-place-plugin/action.tsx +++ b/web/app/components/workflow/block-selector/market-place-plugin/action.tsx @@ -1,6 +1,6 @@ 'use client' import type { FC } from 'react' -import React, { useCallback, useRef, useState } from 'react' +import React, { useCallback, useRef } from 'react' import { useTranslation } from 'react-i18next' import { RiMoreFill } from '@remixicon/react' import ActionButton from '@/app/components/base/action-button' @@ -13,16 +13,20 @@ import { import cn from '@/utils/classnames' type Props = { + open: boolean + onOpenChange: (v: boolean) => void } -const OperationDropdown: FC = () => { +const OperationDropdown: FC = ({ + open, + onOpenChange, +}) => { const { t } = useTranslation() - const [open, doSetOpen] = useState(false) const openRef = useRef(open) const setOpen = useCallback((v: boolean) => { - doSetOpen(v) + onOpenChange(v) openRef.current = v - }, [doSetOpen]) + }, [onOpenChange]) const handleTrigger = useCallback(() => { setOpen(!openRef.current) diff --git a/web/app/components/workflow/block-selector/market-place-plugin/item.tsx b/web/app/components/workflow/block-selector/market-place-plugin/item.tsx index 8d3dff4cc6..b5a73b9743 100644 --- a/web/app/components/workflow/block-selector/market-place-plugin/item.tsx +++ b/web/app/components/workflow/block-selector/market-place-plugin/item.tsx @@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next' import Action from './action' import type { Plugin } from '@/app/components/plugins/types.ts' import I18n from '@/context/i18n' +import cn from '@/utils/classnames' import { formatNumber } from '@/utils/format' @@ -23,6 +24,7 @@ const Item: FC = ({ payload, }) => { const { t } = useTranslation() + const [open, setOpen] = React.useState(false) const { locale } = useContext(I18n) return ( @@ -42,9 +44,12 @@ const Item: FC = ({ {/* Action */} -
+
{t('plugin.installAction')}
- +
diff --git a/web/app/components/workflow/block-selector/market-place-plugin/list.tsx b/web/app/components/workflow/block-selector/market-place-plugin/list.tsx index baf506c7d4..9861cf2a9e 100644 --- a/web/app/components/workflow/block-selector/market-place-plugin/list.tsx +++ b/web/app/components/workflow/block-selector/market-place-plugin/list.tsx @@ -39,17 +39,25 @@ const List = ({ handleScroll, })) + const scrollToView = () => { + if (scrollPosition !== ScrollPosition.belowTheWrap) + return + + nextToStickyELemRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' }) + } + return ( <>
{t('plugin.fromMarketplace')} {/* {scrollPosition === ScrollPosition.belowTheWrap && ( )} */}
-
+
{list.map((item, index) => (