Selaa lähdekoodia

Delegate processing when clicking outside input to ClosableTextInput

Shun Miyazawa 2 vuotta sitten
vanhempi
sitoutus
25f628d216
1 muutettua tiedostoa jossa 3 lisäystä ja 20 poistoa
  1. 3 20
      apps/app/src/components/PageHeader/PagePathHeader.tsx

+ 3 - 20
apps/app/src/components/PageHeader/PagePathHeader.tsx

@@ -1,4 +1,4 @@
-import { useState, useEffect, useCallback } from 'react';
+import { useState, useCallback } from 'react';
 import type { FC } from 'react';
 import type { FC } from 'react';
 
 
 import type { IPagePopulatedToShowRevision } from '@growi/core';
 import type { IPagePopulatedToShowRevision } from '@growi/core';
@@ -67,29 +67,11 @@ export const PagePathHeader: FC<Props> = (props) => {
 
 
   const isOpened = PageSelectModalData?.isOpened ?? false;
   const isOpened = PageSelectModalData?.isOpened ?? false;
 
 
-  const clickOutSideHandler = useCallback((e) => {
-    const container = document.getElementById('page-path-header');
-
-    if (container && !container.contains(e.target)) {
-      setRenameInputShown(false);
-    }
-  }, []);
-
-  useEffect(() => {
-    document.addEventListener('click', clickOutSideHandler);
-
-    return () => {
-      document.removeEventListener('click', clickOutSideHandler);
-    };
-  }, [clickOutSideHandler]);
-
-
   return (
   return (
     <div
     <div
-      id="page-path-header"
       className="d-flex align-items-center"
       className="d-flex align-items-center"
-      onMouseLeave={() => setButtonShown(false)}
       onMouseEnter={() => setButtonShown(true)}
       onMouseEnter={() => setButtonShown(true)}
+      onMouseLeave={() => setButtonShown(false)}
     >
     >
       {isRenameInputShown
       {isRenameInputShown
         ? (
         ? (
@@ -101,6 +83,7 @@ export const PagePathHeader: FC<Props> = (props) => {
               onPressEnter={onPressEnter}
               onPressEnter={onPressEnter}
               onPressEscape={onPressEscape}
               onPressEscape={onPressEscape}
               onChange={onInputChange}
               onChange={onInputChange}
+              onClickOutside={() => setRenameInputShown(false)}
               validationTarget={ValidationTarget.PAGE}
               validationTarget={ValidationTarget.PAGE}
             />
             />
           </div>
           </div>