Explorar o código

Merge branch 'dev/7.4.x' into support/156162-174081-app-apiv3-routes-biome-1

Futa Arai hai 4 meses
pai
achega
a54bde5a7d

+ 3 - 3
apps/app/src/client/components/Hotkeys/Subscribers/EditPage.jsx

@@ -7,7 +7,7 @@ import { EditorMode, useEditorMode } from '~/states/ui/editor';
 
 
 const EditPage = (props) => {
 const EditPage = (props) => {
   const isEditable = useIsEditable();
   const isEditable = useIsEditable();
-  const { mutate: mutateEditorMode } = useEditorMode();
+  const { setEditorMode } = useEditorMode();
 
 
   // setup effect
   // setup effect
   useEffect(() => {
   useEffect(() => {
@@ -20,11 +20,11 @@ const EditPage = (props) => {
       return;
       return;
     }
     }
 
 
-    mutateEditorMode(EditorMode.Editor);
+    setEditorMode(EditorMode.Editor);
 
 
     // remove this
     // remove this
     props.onDeleteRender(this);
     props.onDeleteRender(this);
-  }, [isEditable, mutateEditorMode, props]);
+  }, [isEditable, props, setEditorMode]);
 
 
   return null;
   return null;
 };
 };

+ 1 - 1
apps/app/src/client/components/PageEditor/DrawioModal/DrawioModal.tsx

@@ -4,6 +4,7 @@ import React, {
 
 
 import { Lang } from '@growi/core';
 import { Lang } from '@growi/core';
 import { useCodeMirrorEditorIsolated } from '@growi/editor/dist/client/stores/codemirror-editor';
 import { useCodeMirrorEditorIsolated } from '@growi/editor/dist/client/stores/codemirror-editor';
+import { useDrawioModalForEditorStatus, useDrawioModalForEditorActions } from '@growi/editor/dist/states/modal/drawio-for-editor';
 import { LoadingSpinner } from '@growi/ui/dist/components';
 import { LoadingSpinner } from '@growi/ui/dist/components';
 import {
 import {
   Modal,
   Modal,
@@ -13,7 +14,6 @@ import {
 import { replaceFocusedDrawioWithEditor, getMarkdownDrawioMxfile } from '~/client/components/PageEditor/markdown-drawio-util-for-editor';
 import { replaceFocusedDrawioWithEditor, getMarkdownDrawioMxfile } from '~/client/components/PageEditor/markdown-drawio-util-for-editor';
 import { useRendererConfig } from '~/states/server-configurations';
 import { useRendererConfig } from '~/states/server-configurations';
 import { useDrawioModalActions, useDrawioModalStatus } from '~/states/ui/modal/drawio';
 import { useDrawioModalActions, useDrawioModalStatus } from '~/states/ui/modal/drawio';
-import { useDrawioModalForEditorStatus, useDrawioModalForEditorActions } from '~/states/ui/modal/drawio-for-editor';
 import { useSWRxPersonalSettings } from '~/stores/personal-settings';
 import { useSWRxPersonalSettings } from '~/stores/personal-settings';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 8 - 1
apps/app/src/client/components/PageEditor/DrawioModal/dynamic.tsx

@@ -1,17 +1,24 @@
 import type { JSX } from 'react';
 import type { JSX } from 'react';
 
 
+import { useDrawioModalForEditorStatus } from '@growi/editor/dist/states/modal/drawio-for-editor';
+
 import { useLazyLoader } from '~/components/utils/use-lazy-loader';
 import { useLazyLoader } from '~/components/utils/use-lazy-loader';
 import { useDrawioModalStatus } from '~/states/ui/modal/drawio';
 import { useDrawioModalStatus } from '~/states/ui/modal/drawio';
 
 
+
 type DrawioModalProps = Record<string, unknown>;
 type DrawioModalProps = Record<string, unknown>;
 
 
 export const DrawioModalLazyLoaded = (): JSX.Element => {
 export const DrawioModalLazyLoaded = (): JSX.Element => {
   const status = useDrawioModalStatus();
   const status = useDrawioModalStatus();
+  const statusForEditor = useDrawioModalForEditorStatus();
+
+  const isOpened = status?.isOpened ?? false;
+  const isOpenedInEditor = statusForEditor?.isOpened ?? false;
 
 
   const DrawioModal = useLazyLoader<DrawioModalProps>(
   const DrawioModal = useLazyLoader<DrawioModalProps>(
     'drawio-modal',
     'drawio-modal',
     () => import('./DrawioModal').then(mod => ({ default: mod.DrawioModal })),
     () => import('./DrawioModal').then(mod => ({ default: mod.DrawioModal })),
-    status?.isOpened ?? false,
+    isOpened || isOpenedInEditor,
   );
   );
 
 
   return DrawioModal ? <DrawioModal /> : <></>;
   return DrawioModal ? <DrawioModal /> : <></>;

+ 3 - 1
apps/app/src/client/components/PageEditor/HandsontableModal/HandsontableModal.tsx

@@ -2,7 +2,7 @@ import React, {
   useState, useCallback, useMemo, type JSX,
   useState, useCallback, useMemo, type JSX,
 } from 'react';
 } from 'react';
 
 
-import { MarkdownTable, useHandsontableModalForEditorStatus } from '@growi/editor';
+import { MarkdownTable, useHandsontableModalForEditorStatus, useHandsontableModalForEditorActions } from '@growi/editor';
 import { HotTable } from '@handsontable/react';
 import { HotTable } from '@handsontable/react';
 import type Handsontable from 'handsontable';
 import type Handsontable from 'handsontable';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
@@ -36,6 +36,7 @@ export const HandsontableModalSubstance = (): JSX.Element => {
   const handsontableModalData = useHandsontableModalStatus();
   const handsontableModalData = useHandsontableModalStatus();
   const { close: closeHandsontableModal } = useHandsontableModalActions();
   const { close: closeHandsontableModal } = useHandsontableModalActions();
   const handsontableModalForEditorData = useHandsontableModalForEditorStatus();
   const handsontableModalForEditorData = useHandsontableModalForEditorStatus();
+  const { close: closeHandsontableModalForEditor } = useHandsontableModalForEditorActions();
 
 
   const isOpened = handsontableModalData?.isOpened ?? false;
   const isOpened = handsontableModalData?.isOpened ?? false;
   const isOpendInEditor = handsontableModalForEditorData?.isOpened ?? false;
   const isOpendInEditor = handsontableModalForEditorData?.isOpened ?? false;
@@ -155,6 +156,7 @@ export const HandsontableModalSubstance = (): JSX.Element => {
 
 
   const cancel = () => {
   const cancel = () => {
     closeHandsontableModal();
     closeHandsontableModal();
+    closeHandsontableModalForEditor();
     setIsDataImportAreaExpanded(false);
     setIsDataImportAreaExpanded(false);
     setIsWindowExpanded(false);
     setIsWindowExpanded(false);
   };
   };

+ 0 - 2
apps/app/src/client/components/PagePathNavSticky/PagePathNavSticky.tsx

@@ -29,8 +29,6 @@ export const PagePathNavSticky = (props: PagePathNavLayoutProps): JSX.Element =>
 
 
   const isPrinting = usePrintMode();
   const isPrinting = usePrintMode();
 
 
-  const isPrinting = usePrintMode();
-
   const pageControlsX = usePageControlsX();
   const pageControlsX = usePageControlsX();
   const [sidebarWidth] = useCurrentProductNavWidth();
   const [sidebarWidth] = useCurrentProductNavWidth();
   const { sidebarMode } = useSidebarMode();
   const { sidebarMode } = useSidebarMode();

+ 2 - 2
apps/app/src/components/Common/PagePathHierarchicalLink/PagePathHierarchicalLink.tsx

@@ -1,4 +1,4 @@
-import { type JSX, memo, useCallback } from 'react';
+import { type FC, type JSX, memo, useCallback } from 'react';
 import Link from 'next/link';
 import Link from 'next/link';
 import urljoin from 'url-join';
 import urljoin from 'url-join';
 
 
@@ -17,7 +17,7 @@ type PagePathHierarchicalLinkProps = {
   isInnerElem?: boolean;
   isInnerElem?: boolean;
 };
 };
 
 
-export const PagePathHierarchicalLink = memo(
+export const PagePathHierarchicalLink: FC<PagePathHierarchicalLinkProps> = memo(
   (props: PagePathHierarchicalLinkProps): JSX.Element => {
   (props: PagePathHierarchicalLinkProps): JSX.Element => {
     const {
     const {
       linkedPagePath,
       linkedPagePath,

+ 1 - 0
apps/app/src/components/PageView/PageViewLayout.tsx

@@ -1,5 +1,6 @@
 import type { JSX, ReactNode } from 'react';
 import type { JSX, ReactNode } from 'react';
 
 
+// biome-ignore lint/style/noRestrictedImports: ignore
 import { usePrintMode } from '~/client/services/use-print-mode';
 import { usePrintMode } from '~/client/services/use-print-mode';
 
 
 import styles from './PageViewLayout.module.scss';
 import styles from './PageViewLayout.module.scss';

+ 8 - 2
apps/app/src/features/search/client/components/SearchPage/SearchResultList.tsx

@@ -1,4 +1,8 @@
-import type { ForwardRefRenderFunction } from 'react';
+import type {
+  ForwardRefExoticComponent,
+  ForwardRefRenderFunction,
+  RefAttributes,
+} from 'react';
 import { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
 import { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
 import {
 import {
   type IPageInfoForListing,
   type IPageInfoForListing,
@@ -184,4 +188,6 @@ const SearchResultListSubstance: ForwardRefRenderFunction<
   );
   );
 };
 };
 
 
-export const SearchResultList = forwardRef(SearchResultListSubstance);
+export const SearchResultList: ForwardRefExoticComponent<
+  Props & RefAttributes<ISelectableAll>
+> = forwardRef<ISelectableAll, Props>(SearchResultListSubstance);

+ 0 - 28
apps/app/src/states/ui/modal/drawio-for-editor.ts

@@ -1,28 +0,0 @@
-import { atom, useAtomValue, useSetAtom } from 'jotai';
-
-type DrawioModalForEditorState = {
-  isOpened: boolean;
-  editorKey?: string;
-};
-
-const drawioModalForEditorAtom = atom<DrawioModalForEditorState>({
-  isOpened: false,
-  editorKey: undefined,
-});
-
-export const useDrawioModalForEditorStatus = () => {
-  return useAtomValue(drawioModalForEditorAtom);
-};
-
-export const useDrawioModalForEditorActions = () => {
-  const setModalState = useSetAtom(drawioModalForEditorAtom);
-
-  return {
-    open: (editorKey: string) => {
-      setModalState({ isOpened: true, editorKey });
-    },
-    close: () => {
-      setModalState({ isOpened: false, editorKey: undefined });
-    },
-  };
-};