From 9007aa00ea045a6de05915a84419e4755473c753 Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Sun, 21 Dec 2025 00:20:51 -0500 Subject: [PATCH] table --- bun.lockb | Bin 356670 -> 358422 bytes package.json | 4 + src/app.css | 83 +++++++++ src/components/blog/TextEditor.tsx | 269 ++++++++++++++++++++++++++++- 4 files changed, 355 insertions(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 2f225b105e2b3a2fc58bddba937ed23f7ac6f994..f91f653f06d401f8439e5bf8b65df2ca2f5a0cc5 100755 GIT binary patch delta 60564 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%0AIP&Z@<}A}grGp~+Zn)F}TR+v=L+ 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�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 diff --git a/package.json b/package.json index 5cc19a7..59062f8 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,10 @@ "@tiptap/extension-image": "^3.14.0", "@tiptap/extension-link": "^3.14.0", "@tiptap/extension-list-item": "^3.14.0", + "@tiptap/extension-table": "^3.14.0", + "@tiptap/extension-table-cell": "^3.14.0", + "@tiptap/extension-table-header": "^3.14.0", + "@tiptap/extension-table-row": "^3.14.0", "@tiptap/extension-text-style": "^3.14.0", "@tiptap/pm": "^3.14.0", "@tiptap/starter-kit": "^3.14.0", diff --git a/src/app.css b/src/app.css index 51c505b..df5de34 100644 --- a/src/app.css +++ b/src/app.css @@ -726,3 +726,86 @@ a.hover-underline-animation:hover::after { } } } + +/* Table styles for TipTap editor */ +.tiptap-table { + border-collapse: collapse; + table-layout: fixed; + width: 100%; + margin: 1rem 0; + overflow: hidden; +} + +.tiptap-table td, +.tiptap-table th { + min-width: 1em; + border: 2px solid var(--color-surface2); + padding: 0.5rem; + vertical-align: top; + box-sizing: border-box; + position: relative; +} + +.tiptap-table th { + font-weight: bold; + text-align: left; + background-color: var(--color-surface0); +} + +.tiptap-table .selectedCell { + background-color: var(--color-surface1); +} + +.tiptap-table p { + margin: 0; +} + +/* Additional table styles for ProseMirror */ +.ProseMirror table { + border-collapse: collapse; + table-layout: fixed; + width: 100%; + margin: 1rem 0; + overflow: hidden; +} + +.ProseMirror table td, +.ProseMirror table th { + min-width: 3em; + border: 2px solid var(--color-text); + padding: 0.5rem; + vertical-align: top; + box-sizing: border-box; + position: relative; + background-color: var(--color-mantle); +} + +.ProseMirror table th { + font-weight: bold; + text-align: left; + background-color: var(--color-surface0); +} + +.ProseMirror table .selectedCell:after { + z-index: 2; + position: absolute; + content: ""; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: var(--color-blue); + opacity: 0.2; + pointer-events: none; +} + +.ProseMirror table .column-resize-handle { + position: absolute; + right: -2px; + top: 0; + bottom: 0; + width: 4px; + z-index: 20; + background-color: var(--color-blue); + pointer-events: none; +} diff --git a/src/components/blog/TextEditor.tsx b/src/components/blog/TextEditor.tsx index 3e168ba..5ae8d1b 100644 --- a/src/components/blog/TextEditor.tsx +++ b/src/components/blog/TextEditor.tsx @@ -4,6 +4,10 @@ import StarterKit from "@tiptap/starter-kit"; import Link from "@tiptap/extension-link"; import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight"; import Image from "@tiptap/extension-image"; +import { Table } from "@tiptap/extension-table"; +import { TableRow } from "@tiptap/extension-table-row"; +import { TableHeader } from "@tiptap/extension-table-header"; +import { TableCell } from "@tiptap/extension-table-cell"; import { Node } from "@tiptap/core"; import { createLowlight, common } from "lowlight"; import css from "highlight.js/lib/languages/css"; @@ -196,6 +200,12 @@ export default function TextEditor(props: TextEditorProps) { left: 0 }); + const [showTableMenu, setShowTableMenu] = createSignal(false); + const [tableMenuPosition, setTableMenuPosition] = createSignal({ + top: 0, + left: 0 + }); + const editor = createTiptapEditor(() => ({ element: editorRef, extensions: [ @@ -205,7 +215,28 @@ export default function TextEditor(props: TextEditorProps) { openOnClick: true }), Image, - IframeEmbed + IframeEmbed, + Table.configure({ + resizable: true, + HTMLAttributes: { + class: "tiptap-table" + } + }), + TableRow.configure({ + HTMLAttributes: { + class: "tiptap-table-row" + } + }), + TableHeader.configure({ + HTMLAttributes: { + class: "tiptap-table-header" + } + }), + TableCell.configure({ + HTMLAttributes: { + class: "tiptap-table-cell" + } + }) ], content: props.preSet || `

Hello! World

`, editorProps: { @@ -319,6 +350,31 @@ export default function TextEditor(props: TextEditorProps) { setShowLanguageSelector(!showLanguageSelector()); }; + const insertTable = (rows: number, cols: number) => { + const instance = editor(); + if (!instance) return; + + console.log("Inserting table:", rows, "x", cols); + + instance + .chain() + .focus() + .insertTable({ rows, cols, withHeaderRow: true }) + .run(); + + console.log("Table inserted, isActive:", instance.isActive("table")); + setShowTableMenu(false); + }; + + const showTableInserter = (e: MouseEvent) => { + const buttonRect = (e.currentTarget as HTMLElement).getBoundingClientRect(); + setTableMenuPosition({ + top: buttonRect.bottom + 5, + left: buttonRect.left + }); + setShowTableMenu(!showTableMenu()); + }; + // Close language selector on outside click createEffect(() => { if (showLanguageSelector()) { @@ -340,6 +396,78 @@ export default function TextEditor(props: TextEditorProps) { } }); + // Close table menu on outside click + createEffect(() => { + if (showTableMenu()) { + const handleClickOutside = (e: MouseEvent) => { + const target = e.target as HTMLElement; + if ( + !target.closest(".table-menu") && + !target.closest("[data-table-trigger]") + ) { + setShowTableMenu(false); + } + }; + + setTimeout(() => { + document.addEventListener("click", handleClickOutside); + }, 0); + + return () => document.removeEventListener("click", handleClickOutside); + } + }); + + // Table Grid Selector Component + const TableGridSelector = () => { + const [hoverCell, setHoverCell] = createSignal({ row: 0, col: 0 }); + const maxRows = 10; + const maxCols = 10; + + return ( +
+
+ Insert Table: {hoverCell().row + 1} × {hoverCell().col + 1} +
+
+ + {(_, idx) => { + const row = Math.floor(idx() / maxCols); + const col = idx() % maxCols; + + return ( +
setHoverCell({ row, col })} + onClick={() => insertTable(row + 1, col + 1)} + /> + ); + }} + +
+
+ +
+
+ ); + }; + return (
@@ -499,6 +627,19 @@ export default function TextEditor(props: TextEditorProps) {
+ {/* Table Grid Selector */} + +
+ +
+
+
+
+ + {/* Table controls - shown when cursor is in a table */} + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + + +
)}