Sfoglia il codice sorgente

fix: window size changed causes result regeneration (#1908)

Joel 1 anno fa
parent
commit
891218615e
1 ha cambiato i file con 25 aggiunte e 17 eliminazioni
  1. 25 17
      web/app/components/share/text-generation/index.tsx

+ 25 - 17
web/app/components/share/text-generation/index.tsx

@@ -374,7 +374,13 @@ const TextGeneration: FC<IMainProps> = ({
     }
     }
   }, [siteInfo?.title, canReplaceLogo])
   }, [siteInfo?.title, canReplaceLogo])
 
 
-  const [isShowResSidebar, { setTrue: showResSidebar, setFalse: hideResSidebar }] = useBoolean(false)
+  const [isShowResSidebar, { setTrue: doShowResSidebar, setFalse: hideResSidebar }] = useBoolean(false)
+  const showResSidebar = () => {
+    // fix: useClickAway hideResSidebar will close sidebar
+    setTimeout(() => {
+      doShowResSidebar()
+    }, 0)
+  }
   const resRef = useRef<HTMLDivElement>(null)
   const resRef = useRef<HTMLDivElement>(null)
   useClickAway(() => {
   useClickAway(() => {
     hideResSidebar()
     hideResSidebar()
@@ -406,6 +412,16 @@ const TextGeneration: FC<IMainProps> = ({
     return (showTaskList.map(task => renderRes(task)))
     return (showTaskList.map(task => renderRes(task)))
   }
   }
 
 
+  const resWrapClassNames = (() => {
+    if (isPC)
+      return 'grow h-full'
+
+    if (!isShowResSidebar)
+      return 'none'
+
+    return cn('fixed z-50 inset-0', isTablet ? 'pl-[128px]' : 'pl-6')
+  })()
+
   const renderResWrap = (
   const renderResWrap = (
     <div
     <div
       ref={resRef}
       ref={resRef}
@@ -578,22 +594,14 @@ const TextGeneration: FC<IMainProps> = ({
         </div>
         </div>
 
 
         {/* Result */}
         {/* Result */}
-        {isPC && (
-          <div className='grow h-full'>
-            {renderResWrap}
-          </div>
-        )}
-
-        {(!isPC && isShowResSidebar) && (
-          <div
-            className={cn('fixed z-50 inset-0', isTablet ? 'pl-[128px]' : 'pl-6')}
-            style={{
-              background: 'rgba(35, 56, 118, 0.2)',
-            }}
-          >
-            {renderResWrap}
-          </div>
-        )}
+        <div
+          className={resWrapClassNames}
+          style={{
+            background: (!isPC && isShowResSidebar) ? 'rgba(35, 56, 118, 0.2)' : 'none',
+          }}
+        >
+          {renderResWrap}
+        </div>
       </div>
       </div>
     </>
     </>
   )
   )