diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml
index f0fba9e4f0..d88692a53c 100644
--- a/common/config/rush/pnpm-lock.yaml
+++ b/common/config/rush/pnpm-lock.yaml
@@ -656,6 +656,16 @@ dependencies:
packages:
+ /@_ueberdosis/prosemirror-tables/1.1.3:
+ resolution: {integrity: sha512-su3pbFi1DT89g6Cuh72TE0MWWKHmWgHcQJ3ODRkm6XfIppWaGpU49t02ur3sgJc7hUhfQXjB93aSkDgOmIii2w==}
+ dependencies:
+ prosemirror-keymap: 1.2.0
+ prosemirror-model: 1.18.1
+ prosemirror-state: 1.4.1
+ prosemirror-transform: 1.7.0
+ prosemirror-view: 1.29.0
+ dev: false
+
/@ampproject/remapping/2.2.0:
resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==}
engines: {node: '>=6.0.0'}
@@ -1861,6 +1871,42 @@ packages:
'@tiptap/core': 2.0.0-beta.199
dev: false
+ /@tiptap/extension-table-cell/2.0.0-beta.202_@tiptap+core@2.0.0-beta.199:
+ resolution: {integrity: sha512-Ypmcq7zaMSZ0VNKwDPINOsSzyuH+gSIw+FrXy6O1dzVHAo1gNFJ2pEG/ZhQ2RqpDTpGfJFD8tNDx8wjCCAVlxA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0-beta.193
+ dependencies:
+ '@tiptap/core': 2.0.0-beta.199
+ dev: false
+
+ /@tiptap/extension-table-header/2.0.0-beta.202_@tiptap+core@2.0.0-beta.199:
+ resolution: {integrity: sha512-/l0lz3Hmc+hikj+RfSW7F6B/jYV2dROGQnK1/EYjgbvOK0158ml1mB6/Dhm+BhldV73MI7eU8+3YLB9uhsPR4w==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0-beta.193
+ dependencies:
+ '@tiptap/core': 2.0.0-beta.199
+ dev: false
+
+ /@tiptap/extension-table-row/2.0.0-beta.202_@tiptap+core@2.0.0-beta.199:
+ resolution: {integrity: sha512-IsHBT3lp//XSqcAWPIGWjPIKQ4okVaDJbwcElehlOo/rcRBeK0orT+c10T08PoOsozi4BeMYRo0nfA5tvrJMEw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0-beta.193
+ dependencies:
+ '@tiptap/core': 2.0.0-beta.199
+ dev: false
+
+ /@tiptap/extension-table/2.0.0-beta.202_@tiptap+core@2.0.0-beta.199:
+ resolution: {integrity: sha512-WMfXtDfx45FgU81WnfxGOSJbVoaDpe8hjuBJSGbwJj+Qj4HGhbK7/RbTtDrM8oqseHRzHuGWgNX+EfOUQppjdA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0-beta.193
+ dependencies:
+ '@_ueberdosis/prosemirror-tables': 1.1.3
+ '@tiptap/core': 2.0.0-beta.199
+ prosemirror-model: 1.18.1
+ prosemirror-state: 1.4.1
+ prosemirror-view: 1.29.0
+ dev: false
+
/@tiptap/extension-task-item/2.0.0-beta.199_@tiptap+core@2.0.0-beta.199:
resolution: {integrity: sha512-dvMgXr4B/V8dYvksLtbby3R2wM9zk3xdkOBuohTLQuRq73dK12Bh/h5xrl4cey8i/2tQBWgUfFiGVPsEUJjQCQ==}
peerDependencies:
@@ -14540,7 +14586,7 @@ packages:
dev: false
file:projects/text-editor.tgz_13653a9d42656433759444fbd2afc848:
- resolution: {integrity: sha512-fTQmayD5wtd7FqRklhl13kDS5Y9tyBXfC5FAoJP+xUHbNk61+FzgKnmHFOjbsJVvgFVkag98AJA9xb9nHfjFzw==, tarball: file:projects/text-editor.tgz}
+ resolution: {integrity: sha512-CUuJVSwdoBUNvSy7GIaxemhr6fLCaU1BrbzzEpecP4HuRfQviyQQ2ME6gj4PWhcYVweFmUa1g3gRrCECtWIU8g==, tarball: file:projects/text-editor.tgz}
id: file:projects/text-editor.tgz
name: '@rush-temp/text-editor'
version: 0.0.0
@@ -14555,6 +14601,10 @@ packages:
'@tiptap/extension-link': 2.0.0-beta.199_@tiptap+core@2.0.0-beta.199
'@tiptap/extension-mention': 2.0.0-beta.199_c8f353cb3abc70247a8f6c56ebb87d62
'@tiptap/extension-placeholder': 2.0.0-beta.199_@tiptap+core@2.0.0-beta.199
+ '@tiptap/extension-table': 2.0.0-beta.202_@tiptap+core@2.0.0-beta.199
+ '@tiptap/extension-table-cell': 2.0.0-beta.202_@tiptap+core@2.0.0-beta.199
+ '@tiptap/extension-table-header': 2.0.0-beta.202_@tiptap+core@2.0.0-beta.199
+ '@tiptap/extension-table-row': 2.0.0-beta.202_@tiptap+core@2.0.0-beta.199
'@tiptap/extension-task-item': 2.0.0-beta.199_ec97b388f910dbe754a14ff2f0072b88
'@tiptap/extension-task-list': 2.0.0-beta.199_@tiptap+core@2.0.0-beta.199
'@tiptap/extension-typography': 2.0.0-beta.199_@tiptap+core@2.0.0-beta.199
diff --git a/packages/text-editor/lang/en.json b/packages/text-editor/lang/en.json
index dbc19cee53..a002b62751 100644
--- a/packages/text-editor/lang/en.json
+++ b/packages/text-editor/lang/en.json
@@ -23,6 +23,20 @@
"Food": "Food",
"FullDescription": "Full description",
"NoFullDescription": "There are no detailed description",
- "EnableDiffMode": "Diff mode"
+ "EnableDiffMode": "Diff mode",
+
+ "AddColumnBefore": "Add before",
+ "AddColumnAfter": "Add after",
+ "DeleteColumn": "Delete",
+ "AddRowBefore": "Add before",
+ "AddRowAfter": "Add after",
+ "DeleteRow": "Delete",
+ "DeleteTable": "Delete",
+
+ "CategoryRow": "Rows",
+ "CategoryColumn": "Columns",
+ "Table": "Table",
+ "InsertTable": "Insert table",
+ "TableOptions": "Customize table"
}
}
diff --git a/packages/text-editor/lang/ru.json b/packages/text-editor/lang/ru.json
index d2afcc2c50..6cb42e125f 100644
--- a/packages/text-editor/lang/ru.json
+++ b/packages/text-editor/lang/ru.json
@@ -23,6 +23,20 @@
"Food": "Еда",
"FullDescription": "Детальное описание",
"NoFullDescription": "Нет детального описания",
- "EnableDiffMode": "Режим сравнения"
+ "EnableDiffMode": "Режим сравнения",
+
+ "AddColumnBefore": "Добавить до",
+ "AddColumnAfter": "Добавить после",
+ "DeleteColumn": "Удалить",
+ "AddRowBefore": "Добавить до",
+ "AddRowAfter": "Добавить после",
+ "DeleteRow": "Удалить",
+ "DeleteTable": "Удалить",
+
+ "CategoryRow": "Строки",
+ "CategoryColumn": "Колонки",
+ "Table": "Таблица",
+ "InsertTable": "Добавить таблицу",
+ "TableOptions": "Настроить таблицу"
}
}
diff --git a/packages/text-editor/package.json b/packages/text-editor/package.json
index b11a4cbb97..c9e2842a58 100644
--- a/packages/text-editor/package.json
+++ b/packages/text-editor/package.json
@@ -62,6 +62,10 @@
"diff": "~5.1.0",
"@tiptap/extension-code-block": "~2.0.0-beta.200",
"@tiptap/extension-gapcursor": "~2.0.0-beta.200",
- "@tiptap/extension-heading": "~2.0.0-beta.200"
+ "@tiptap/extension-heading": "~2.0.0-beta.200",
+ "@tiptap/extension-table": "~2.0.0-beta.202",
+ "@tiptap/extension-table-cell": "~2.0.0-beta.202",
+ "@tiptap/extension-table-header": "~2.0.0-beta.202",
+ "@tiptap/extension-table-row": "~2.0.0-beta.202"
}
}
diff --git a/packages/text-editor/src/components/CollaborationDiffViewer.svelte b/packages/text-editor/src/components/CollaborationDiffViewer.svelte
index 07c5f9bcc0..2358b89048 100644
--- a/packages/text-editor/src/components/CollaborationDiffViewer.svelte
+++ b/packages/text-editor/src/components/CollaborationDiffViewer.svelte
@@ -16,13 +16,7 @@
-->
+
+{#if style === 'table'}
+
+{:else if style === 'grid'}
+
+{/if}
diff --git a/packages/text-editor/src/plugin.ts b/packages/text-editor/src/plugin.ts
index acd83f45d4..52eac4fb69 100644
--- a/packages/text-editor/src/plugin.ts
+++ b/packages/text-editor/src/plugin.ts
@@ -55,6 +55,19 @@ export default plugin(textEditorId, {
Objects: '' as IntlString,
FullDescription: '' as IntlString,
NoFullDescription: '' as IntlString,
- EnableDiffMode: '' as IntlString
+ EnableDiffMode: '' as IntlString,
+
+ InsertTable: '' as IntlString,
+ AddColumnBefore: '' as IntlString,
+ AddColumnAfter: '' as IntlString,
+ DeleteColumn: '' as IntlString,
+ AddRowBefore: '' as IntlString,
+ AddRowAfter: '' as IntlString,
+ DeleteRow: '' as IntlString,
+ DeleteTable: '' as IntlString,
+ CategoryRow: '' as IntlString,
+ CategoryColumn: '' as IntlString,
+ Table: '' as IntlString,
+ TableOptions: '' as IntlString
}
})
diff --git a/packages/text-editor/src/types.ts b/packages/text-editor/src/types.ts
index 03fbc2b9a6..7a081df227 100644
--- a/packages/text-editor/src/types.ts
+++ b/packages/text-editor/src/types.ts
@@ -35,7 +35,8 @@ export const FORMAT_MODES = [
'blockquote',
'code',
'codeBlock',
- 'heading'
+ 'heading',
+ 'table'
] as const
export type FormatMode = typeof FORMAT_MODES[number]
diff --git a/packages/theme/styles/components.scss b/packages/theme/styles/components.scss
index b248b93d6d..8277136770 100644
--- a/packages/theme/styles/components.scss
+++ b/packages/theme/styles/components.scss
@@ -372,6 +372,13 @@
.checkall { visibility: visible; }
}
+ &.editable {
+ th, td, tr {
+ border: 1px dashed var(--divider-color);
+ }
+ }
+
+
&.metaColumn {
th, td {
&:first-child {
diff --git a/plugins/document-resources/src/components/EditDoc.svelte b/plugins/document-resources/src/components/EditDoc.svelte
index 69a8d9884e..fe6ba4faf3 100644
--- a/plugins/document-resources/src/components/EditDoc.svelte
+++ b/plugins/document-resources/src/components/EditDoc.svelte
@@ -234,8 +234,8 @@
let mode: ModelType = 'view'
const modeLabels = {
view: document.string.ViewMode,
- edit: document.string.EditMode,
- suggest: document.string.SuggestMode
+ edit: document.string.EditMode
+ // suggest: document.string.SuggestMode
}
function selectMode (event: MouseEvent): void {
@@ -534,7 +534,7 @@