diff --git a/rsconcept/frontend/src/pages/LibraryPage/LibraryFolders.tsx b/rsconcept/frontend/src/pages/LibraryPage/LibraryFolders.tsx index 5ed6ca76..52573f0b 100644 --- a/rsconcept/frontend/src/pages/LibraryPage/LibraryFolders.tsx +++ b/rsconcept/frontend/src/pages/LibraryPage/LibraryFolders.tsx @@ -3,6 +3,7 @@ import clsx from 'clsx'; import { AnimatePresence, motion } from 'framer-motion'; import { useCallback, useLayoutEffect, useMemo, useState } from 'react'; +import { toast } from 'react-toastify'; import { IconFolder, IconFolderClosed, IconFolderEmpty, IconFolderOpened, IconFolderTree } from '@/components/Icons'; import BadgeHelp from '@/components/info/BadgeHelp'; @@ -12,7 +13,7 @@ import { FolderNode, FolderTree } from '@/models/FolderTree'; import { HelpTopic } from '@/models/miscellaneous'; import { animateSideAppear, animateSideView } from '@/styling/animations'; import { globals, PARAMETER, prefixes } from '@/utils/constants'; -import { describeFolderNode, labelFolderNode } from '@/utils/labels'; +import { describeFolderNode, information, labelFolderNode } from '@/utils/labels'; interface LibraryTableProps { folders: FolderTree; @@ -49,11 +50,18 @@ function LibraryFolders({ folders, currentFolder, setFolder, toggleFolderMode }: [items] ); - const handleSetValue = useCallback( + const handleClickFolder = useCallback( (event: CProps.EventMouse, target: FolderNode) => { event.preventDefault(); event.stopPropagation(); - setFolder(target.getPath()); + if (event.ctrlKey) { + navigator.clipboard + .writeText(target.getPath()) + .then(() => toast.success(information.pathReady)) + .catch(console.error); + } else { + setFolder(target.getPath()); + } }, [setFolder] ); @@ -69,7 +77,7 @@ function LibraryFolders({ folders, currentFolder, setFolder, toggleFolderMode }: return ( 5 ? 5 : item.rank) * 0.5 + 0.5}rem` }} data-tooltip-id={globals.tooltip} data-tooltip-html={describeFolderNode(item)} - onClick={event => handleSetValue(event, item)} + onClick={event => handleClickFolder(event, item)} initial={{ ...animateSideAppear.initial }} animate={{ ...animateSideAppear.animate }} exit={{ ...animateSideAppear.exit }} diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpLibrary.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpLibrary.tsx index 37f2ddc7..858a5c6f 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpLibrary.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpLibrary.tsx @@ -34,6 +34,7 @@ function HelpLibrary() {

Проводник

  • клик по папке отображает справа файлы в ней
  • +
  • Ctrl + клик по папке копирует путь в буфер обмена
  • клик по иконке сворачивает/разворачивает вложенные
  • переключение между Проводник и Поиск diff --git a/rsconcept/frontend/src/utils/labels.ts b/rsconcept/frontend/src/utils/labels.ts index ce766cf7..5a2b39b6 100644 --- a/rsconcept/frontend/src/utils/labels.ts +++ b/rsconcept/frontend/src/utils/labels.ts @@ -898,6 +898,7 @@ export const information = { subscribed: 'Отслеживание отключено', unsubscribed: 'Отслеживание выключено', + pathReady: 'Путь скопирован', substituteSingle: 'Отождествление завершено', reorderComplete: 'Упорядочение завершено', reindexComplete: 'Имена конституент обновлены',