From d9c97fdb737b3e02536179f3a8a591b8428e6482 Mon Sep 17 00:00:00 2001 From: VladaHarbour Date: Tue, 13 May 2025 17:07:22 +0300 Subject: [PATCH] HAR-9619 Search and highlight matches --- package-lock.json | 13 ++- packages/super-editor/package.json | 1 + .../assets/styles/elements/prosemirror.css | 7 ++ .../src/components/toolbar/SearchInput.vue | 82 +++++++++++++++++++ .../src/components/toolbar/Toolbar.vue | 18 +++- .../src/components/toolbar/defaultItems.js | 54 ++++++++---- .../src/components/toolbar/super-toolbar.js | 4 + .../src/components/toolbar/toolbarIcons.js | 2 + .../components/toolbar/use-toolbar-item.js | 5 +- packages/super-editor/src/core/Editor.js | 38 ++++++++- shared/common/icons/magnifying-glass.svg | 1 + 11 files changed, 202 insertions(+), 23 deletions(-) create mode 100644 packages/super-editor/src/components/toolbar/SearchInput.vue create mode 100644 shared/common/icons/magnifying-glass.svg diff --git a/package-lock.json b/package-lock.json index 7cebf71a09..92bbb03624 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7790,6 +7790,16 @@ "prosemirror-transform": "^1.7.3" } }, + "node_modules/prosemirror-search": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/prosemirror-search/-/prosemirror-search-1.1.0.tgz", + "integrity": "sha512-hnGINlrRs+St6scaF4hoGiR8b7V0ffddzvO/zy+ON8RwvVinfLk4rVsuSztLNthgvfE2LAOU4blsPr7yoeoLOQ==", + "dependencies": { + "prosemirror-model": "^1.21.0", + "prosemirror-state": "^1.4.3", + "prosemirror-view": "^1.33.6" + } + }, "node_modules/prosemirror-state": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", @@ -10809,6 +10819,7 @@ "prosemirror-model": "^1.21.0", "prosemirror-schema-basic": "^1.2.2", "prosemirror-schema-list": "^1.3.0", + "prosemirror-search": "^1.1.0", "prosemirror-state": "^1.4.3", "prosemirror-tables": "^1.4.0", "prosemirror-transform": "^1.9.0", @@ -11145,7 +11156,7 @@ }, "packages/superdoc": { "name": "@harbour-enterprises/superdoc", - "version": "0.9.1", + "version": "0.10.64", "license": "AGPL-3.0", "dependencies": { "buffer-crc32": "^1.0.0", diff --git a/packages/super-editor/package.json b/packages/super-editor/package.json index 2d4bc38dd8..efd232a221 100644 --- a/packages/super-editor/package.json +++ b/packages/super-editor/package.json @@ -58,6 +58,7 @@ "prosemirror-model": "^1.21.0", "prosemirror-schema-basic": "^1.2.2", "prosemirror-schema-list": "^1.3.0", + "prosemirror-search": "^1.1.0", "prosemirror-state": "^1.4.3", "prosemirror-tables": "^1.4.0", "prosemirror-transform": "^1.9.0", diff --git a/packages/super-editor/src/assets/styles/elements/prosemirror.css b/packages/super-editor/src/assets/styles/elements/prosemirror.css index eb7f7287b0..4c53773874 100644 --- a/packages/super-editor/src/assets/styles/elements/prosemirror.css +++ b/packages/super-editor/src/assets/styles/elements/prosemirror.css @@ -317,3 +317,10 @@ https://github.com/ProseMirror/prosemirror-tables/blob/master/demo/index.html align-items: baseline; margin-top: -5px; } + +.ProseMirror-search-match { + background-color: #ffff0054; +} +.ProseMirror-active-search-match { + background-color: #ff6a0054; +} diff --git a/packages/super-editor/src/components/toolbar/SearchInput.vue b/packages/super-editor/src/components/toolbar/SearchInput.vue new file mode 100644 index 0000000000..27fa7227d3 --- /dev/null +++ b/packages/super-editor/src/components/toolbar/SearchInput.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/packages/super-editor/src/components/toolbar/Toolbar.vue b/packages/super-editor/src/components/toolbar/Toolbar.vue index 3d7bd7b9dd..034738e0a1 100644 --- a/packages/super-editor/src/components/toolbar/Toolbar.vue +++ b/packages/super-editor/src/components/toolbar/Toolbar.vue @@ -1,5 +1,5 @@