From 758f239ab637d72682e209ffcffc3a082f78c48e Mon Sep 17 00:00:00 2001 From: rkusan00 Date: Wed, 16 Jul 2025 09:20:07 +0200 Subject: [PATCH 1/3] Update dockerfile --- Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ee4a2d7..a346b07 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,7 @@ ARG PNPM_HOME="/root/.local/share/pnpm" -ARG PNPM_VERSION="8.8.0" +ARG PNPM_VERSION="10.12.3" -FROM node:20.10.0-alpine3.18 -ARG PNPM_HOME +FROM node:24-alpine ARG PNPM_VERSION # github and ssh RUN apk add openssh-client && apk add git From 7b49541f5bd95da95ef65fda34a51b6937609982 Mon Sep 17 00:00:00 2001 From: rkusan00 Date: Wed, 16 Jul 2025 09:20:22 +0200 Subject: [PATCH 2/3] Implement tooltip extension --- packages/display/src/components/Display.vue | 50 ++++++++ packages/edit/src/components/Edit.vue | 50 ++++++++ .../edit/src/components/EditorToolbar.vue | 2 + .../edit/src/components/actions/AddLink.vue | 9 +- .../src/components/actions/AddTooltip.vue | 107 ++++++++++++++++++ .../edit/src/components/extensions/index.ts | 2 + .../edit/src/components/extensions/tooltip.ts | 62 ++++++++++ 7 files changed, 279 insertions(+), 3 deletions(-) create mode 100644 packages/edit/src/components/actions/AddTooltip.vue create mode 100644 packages/edit/src/components/extensions/tooltip.ts diff --git a/packages/display/src/components/Display.vue b/packages/display/src/components/Display.vue index 53306d8..36187e4 100644 --- a/packages/display/src/components/Display.vue +++ b/packages/display/src/components/Display.vue @@ -115,5 +115,55 @@ defineProps<{ element: Element }>(); } } } + + :deep(.has-tooltip) { + $tooltip-color: rgba(33, 33, 33, 0.8); + $border-size: 6px; + + position: relative; + display: inline-block; + background: rgb(205 215 220 / 70%); + text-decoration: underline dashed $tooltip-color; + cursor: help; + + &::before { + content: ''; + position: absolute; + bottom: 100%; + border-left: $border-size solid transparent; + border-right: $border-size solid transparent; + border-top: $border-size solid $tooltip-color; + } + + &::after { + content: attr(data-tooltip); + position: absolute; + bottom: calc(100% + #{$border-size}); + left: -0.625rem; + border-radius: 4px; + max-width: 14rem; + padding: 0.375rem 0.675rem; + background: $tooltip-color; + font-size: 0.875rem; + color: #fff; + font-weight: normal; + width: max-content; + } + + &::before, + &::after { + text-decoration: none; + visibility: hidden; + opacity: 0; + transition: all 0.3s ease-out; + } + + &:hover::after, + &:hover::before { + visibility: visible; + opacity: 1; + margin-bottom: 0.25rem; + } + } } diff --git a/packages/edit/src/components/Edit.vue b/packages/edit/src/components/Edit.vue index 8806831..5a0dfa2 100644 --- a/packages/edit/src/components/Edit.vue +++ b/packages/edit/src/components/Edit.vue @@ -221,4 +221,54 @@ watch( } } } + +:deep(.has-tooltip) { + $tooltip-color: rgba(33, 33, 33, 0.8); + $border-size: 6px; + + position: relative; + display: inline-block; + background: rgb(205 215 220 / 70%); + text-decoration: underline dashed $tooltip-color; + cursor: help; + + &::before { + content: ''; + position: absolute; + bottom: 100%; + border-left: $border-size solid transparent; + border-right: $border-size solid transparent; + border-top: $border-size solid $tooltip-color; + } + + &::after { + content: attr(data-tooltip); + position: absolute; + bottom: calc(100% + #{$border-size}); + left: -0.625rem; + border-radius: 4px; + max-width: 14rem; + padding: 0.375rem 0.675rem; + background: $tooltip-color; + font-size: 0.875rem; + color: #fff; + font-weight: normal; + width: max-content; + } + + &::before, + &::after { + text-decoration: none; + visibility: hidden; + opacity: 0; + transition: all 0.3s ease-out; + } + + &:hover::after, + &:hover::before { + visibility: visible; + opacity: 1; + margin-bottom: 0.25rem; + } +} diff --git a/packages/edit/src/components/EditorToolbar.vue b/packages/edit/src/components/EditorToolbar.vue index a03bc45..0c7e495 100644 --- a/packages/edit/src/components/EditorToolbar.vue +++ b/packages/edit/src/components/EditorToolbar.vue @@ -30,6 +30,7 @@ import { Component as VueComponent } from 'vue'; import AddImage from './actions/AddImage.vue'; import AddLink from './actions/AddLink.vue'; import AddTable from './actions/AddTable.vue'; +import AddTooltip from './actions/AddTooltip.vue'; import FontFamily from './actions/FontFamily.vue'; import FontSize from './actions/FontSize.vue'; import IconButton from './IconButton.vue'; @@ -91,6 +92,7 @@ const toolbarItems: (Action | Component)[][] = [ { component: AddLink }, { component: AddTable }, { component: AddImage }, + { component: AddTooltip }, { label: 'Horizontal line', action: ['setHorizontalRule'], diff --git a/packages/edit/src/components/actions/AddLink.vue b/packages/edit/src/components/actions/AddLink.vue index df680ca..9295adf 100644 --- a/packages/edit/src/components/actions/AddLink.vue +++ b/packages/edit/src/components/actions/AddLink.vue @@ -11,7 +11,7 @@ size="32" v-bind="mergeProps(menu, tooltip)" > - mdi-link + mdi-link-variant-plus Add link @@ -39,12 +39,15 @@ Unlink - Confirm + + Confirm + diff --git a/packages/edit/src/components/actions/AddTooltip.vue b/packages/edit/src/components/actions/AddTooltip.vue new file mode 100644 index 0000000..a53d7af --- /dev/null +++ b/packages/edit/src/components/actions/AddTooltip.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/packages/edit/src/components/extensions/index.ts b/packages/edit/src/components/extensions/index.ts index 4334376..14f9242 100644 --- a/packages/edit/src/components/extensions/index.ts +++ b/packages/edit/src/components/extensions/index.ts @@ -17,6 +17,7 @@ import FontSize from './font-size.ts'; import Image from './image.ts'; import Link from './link.ts'; import Paragraph from './paragraph.ts'; +import Tooltip from './tooltip.ts'; export default [ Color, @@ -24,6 +25,7 @@ export default [ FontSize, Image, Link.configure({ openOnClick: false }), + Tooltip, StarterKit.configure({ paragraph: false }), Subscript, Superscript, diff --git a/packages/edit/src/components/extensions/tooltip.ts b/packages/edit/src/components/extensions/tooltip.ts new file mode 100644 index 0000000..4653063 --- /dev/null +++ b/packages/edit/src/components/extensions/tooltip.ts @@ -0,0 +1,62 @@ +import { Mark, mergeAttributes } from '@tiptap/vue-3'; + +declare module '@tiptap/vue-3' { + interface Commands { + tooltip: { + setTooltip: (attributes: { + tooltip?: string; + text?: string; + }) => ReturnType; + unsetTooltip: () => ReturnType; + }; + } +} + +export default Mark.create({ + name: 'tooltip', + + addAttributes() { + return { + 'data-tooltip': { + default: null, + parseHTML: (element) => element.getAttribute('data-tooltip'), + renderHTML: (attributes) => ({ + 'data-tooltip': attributes['data-tooltip'], + }), + }, + }; + }, + + parseHTML() { + return [{ tag: 'span[data-tooltip]' }]; + }, + + renderHTML({ HTMLAttributes }) { + return [ + 'span', + mergeAttributes({ class: 'has-tooltip' }, HTMLAttributes), + 0, + ]; + }, + + addCommands() { + return { + setTooltip: + ({ tooltip, text } = {}) => + ({ chain }) => { + return chain() + .setMark(this.name, { 'data-tooltip': tooltip }) + .command(({ tr }: any) => { + tr.insertText(text); + return true; + }) + .run(); + }, + unsetTooltip: + () => + ({ chain }) => { + return chain().unsetMark(this.name).run(); + }, + }; + }, +}); From 54765a5aa7e5655f9c3e595b97ea256ccf16f8f3 Mon Sep 17 00:00:00 2001 From: rkusan00 Date: Wed, 16 Jul 2025 09:22:37 +0200 Subject: [PATCH 3/3] Bump versions --- packages/display/CHANGELOG.md | 6 ++++++ packages/display/package.json | 2 +- packages/edit/CHANGELOG.md | 6 ++++++ packages/edit/package.json | 2 +- packages/manifest/CHANGELOG.md | 6 ++++++ packages/manifest/package.json | 2 +- packages/server/CHANGELOG.md | 6 ++++++ packages/server/package.json | 2 +- 8 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/display/CHANGELOG.md b/packages/display/CHANGELOG.md index 5dfda5d..60c0304 100644 --- a/packages/display/CHANGELOG.md +++ b/packages/display/CHANGELOG.md @@ -1,5 +1,11 @@ # @tailor-cms/ce-html-display +## 0.1.2 + +### Patch Changes + +- Add option to add text tooltips. + ## 0.1.1 ### Patch Changes diff --git a/packages/display/package.json b/packages/display/package.json index 41176e4..1798755 100644 --- a/packages/display/package.json +++ b/packages/display/package.json @@ -3,7 +3,7 @@ "description": "Tailor CMS HTML editor end-user component", "author": "Studion (https://github.com/tailor-cms)", "type": "module", - "version": "0.1.1", + "version": "0.1.2", "exports": { ".": { "import": "./dist/index.js", diff --git a/packages/edit/CHANGELOG.md b/packages/edit/CHANGELOG.md index 2cba92d..8875c78 100644 --- a/packages/edit/CHANGELOG.md +++ b/packages/edit/CHANGELOG.md @@ -1,5 +1,11 @@ # @tailor-cms/ce-html-edit +## 0.1.2 + +### Patch Changes + +- Add option to add text tooltips. + ## 0.1.1 ### Patch Changes diff --git a/packages/edit/package.json b/packages/edit/package.json index 9bbfcac..0f4b89a 100644 --- a/packages/edit/package.json +++ b/packages/edit/package.json @@ -3,7 +3,7 @@ "description": "Tailor CMS HTML editor authoring component", "author": "Studion (https://github.com/tailor-cms)", "type": "module", - "version": "0.1.1", + "version": "0.1.2", "exports": { ".": { "import": "./dist/index.js", diff --git a/packages/manifest/CHANGELOG.md b/packages/manifest/CHANGELOG.md index a852adc..b1f0ac6 100644 --- a/packages/manifest/CHANGELOG.md +++ b/packages/manifest/CHANGELOG.md @@ -1,5 +1,11 @@ # @tailor-cms/ce-html-manifest +## 0.1.2 + +### Patch Changes + +- Add option to add text tooltips. + ## 0.1.1 ### Patch Changes diff --git a/packages/manifest/package.json b/packages/manifest/package.json index 6146036..3aedb65 100644 --- a/packages/manifest/package.json +++ b/packages/manifest/package.json @@ -3,7 +3,7 @@ "description": "Tailor CMS HTML editor manifest", "author": "Studion (https://github.com/tailor-cms)", "type": "module", - "version": "0.1.1", + "version": "0.1.2", "exports": { ".": { "import": "./dist/index.js", diff --git a/packages/server/CHANGELOG.md b/packages/server/CHANGELOG.md index 1ee41ff..4508cc1 100644 --- a/packages/server/CHANGELOG.md +++ b/packages/server/CHANGELOG.md @@ -1,5 +1,11 @@ # @tailor-cms/ce-html-server +## 0.1.2 + +### Patch Changes + +- Add option to add text tooltips. + ## 0.1.1 ### Patch Changes diff --git a/packages/server/package.json b/packages/server/package.json index 1cad09b..90c7b3d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -3,7 +3,7 @@ "description": "Tailor CMS HTML editor server component", "author": "Studion (https://github.com/tailor-cms)", "type": "module", - "version": "0.1.1", + "version": "0.1.2", "exports": { ".": { "import": "./dist/index.js",