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 @@