diff --git a/src/components/react/ChessStudy.tsx b/src/components/react/ChessStudy.tsx index f040058..dfe4514 100644 --- a/src/components/react/ChessStudy.tsx +++ b/src/components/react/ChessStudy.tsx @@ -271,6 +271,14 @@ export const ChessStudy = ({ }) } onSaveButtonClick={onSaveButtonClick} + onCopyButtonClick={() => { + try { + navigator.clipboard.writeText(chessLogic.fen()) + new Notice('Copied to clipboard!'); + } catch (e) { + new Notice('Could not copy to clipboard:', e); + } + }} /> diff --git a/src/components/react/PgnViewer/index.tsx b/src/components/react/PgnViewer/index.tsx index d4066dd..3e3d2b8 100644 --- a/src/components/react/PgnViewer/index.tsx +++ b/src/components/react/PgnViewer/index.tsx @@ -1,4 +1,4 @@ -import { ArrowLeft, ArrowRight, Save } from 'lucide-react'; +import { ArrowLeft, ArrowRight, Copy, Save, Undo2 } from 'lucide-react'; import * as React from 'react'; import { ReactNode, useEffect, useMemo, useRef } from 'react'; import { ChessStudyMove } from 'src/lib/storage'; @@ -112,6 +112,7 @@ export const PgnViewer = React.memo( onForwardButtonClick, onMoveItemClick, onSaveButtonClick, + onCopyButtonClick, }: { history: ChessStudyMove[]; currentMoveId: string; @@ -119,6 +120,7 @@ export const PgnViewer = React.memo( onForwardButtonClick: () => void; onMoveItemClick: (moveId: string) => void; onSaveButtonClick: () => void; + onCopyButtonClick: () => void; }) => { const movePairs = useMemo(() => chunkArray(history, 2), [history]); @@ -268,15 +270,23 @@ export const PgnViewer = React.memo(
+ +
+
+
); diff --git a/src/main.css b/src/main.css index 322cb71..7d186f9 100644 --- a/src/main.css +++ b/src/main.css @@ -78,7 +78,7 @@ /* PGN Viewer */ .chess-study .move-item-section { - height: 415px; + height: 380px; } .chess-study .button-section { @@ -97,7 +97,7 @@ grid-template-columns: 0.15fr 0.425fr 0.425fr; grid-auto-rows: minmax(30px, auto); width: 100%; - max-height: 415px; + max-height: 380px; overflow-y: scroll; }