Compare commits

..

14 Commits

Author SHA1 Message Date
renovate aac70d3823 fix(deps): update dependency @kyvg/vue3-notification to v3.1.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2024-02-07 09:20:36 +00:00
kolaente 21126793ab
fix(test): make test assertion work again
continuous-integration/drone/push Build is passing Details
2024-02-06 23:13:38 +01:00
kolaente b057fb2784
fix(reminders): set reminder date on datepicker when editing a reminder
continuous-integration/drone/push Build is failing Details
Setting an actual reminder date (not a relative one) flowed only from the component to the outside when setting it. When editing it, the reminder date would not be populated, causing the datepicker date to stay at the current date.
2024-02-06 18:46:15 +01:00
kolaente 58c7da019d
fix(notifications): mark all notifications as read in ui directly when marking as read on the server
continuous-integration/drone/push Build is failing Details
This caused the notifications to stay on "unread" when marking them as read, making an unpleasant user experience
2024-02-06 18:34:42 +01:00
kolaente 70f48eaaca
fix(task): make sure the drag handle is shown as intended
continuous-integration/drone/push Build is failing Details
Due to a previous refactoring, the drag handle was always shown instead of only on hover. The css class was moved out of the task component, but its styles weren't

Related to #3934
2024-02-06 18:29:17 +01:00
kolaente 6cc75928d8
fix(task): remove default task color
continuous-integration/drone/push Build is failing Details
Previously, the task would use the default color. This was now removed, as this resulted in the default color not being visible on tasks.

Resolves https://github.com/go-vikunja/frontend/issues/135#issuecomment-1917576392
2024-02-06 18:18:44 +01:00
kolaente dc360d4a18
chore(editor): don't set editor content intitially
continuous-integration/drone/push Build is failing Details
2024-02-06 18:03:27 +01:00
kolaente 45ca0602f5
feat(editor): use primary color for currently selected node 2024-02-06 16:09:38 +01:00
kolaente 9d39ccf15c
fix(assignees): use correct amount of spacing in assignee selection
continuous-integration/drone/push Build is failing Details
2024-02-06 15:44:39 +01:00
kolaente 28e83325d7
fix(kanban): assignee spacing 2024-02-06 15:39:05 +01:00
kolaente aff48ddd9d
fix(kanban): bottom spacing of labels 2024-02-06 15:34:22 +01:00
kolaente 5b2a9a42c0
fix(gantt): correctly import languages from dayjs
continuous-integration/drone/push Build is failing Details
Resolves https://community.vikunja.io/t/error-in-gannt-with-spanish-language/1973/3
2024-02-05 21:57:21 +01:00
kolaente 45f5d522d1
docs: update readme
continuous-integration/drone/push Build is failing Details
Copied from https://github.com/go-vikunja/frontend/pull/146
2024-02-05 21:16:30 +01:00
renovate 4f27e4a477 fix(deps): update tiptap to v2.2.1 2024-02-05 10:37:28 +00:00
19 changed files with 321 additions and 260 deletions

View File

@ -25,7 +25,7 @@ export DOCKER_BUILDKIT=1
docker build -t vikunja/frontend .
```
Refer to Refer [to multi-platform documentation](https://docs.docker.com/build/building/multi-platform/) in order to build for the different platform.
Refer to [multi-platform documentation](https://docs.docker.com/build/building/multi-platform/) in order to build for different platforms.
## Project setup
@ -49,4 +49,4 @@ pnpm run build
```shell
pnpm run lint
```
```

View File

@ -562,7 +562,7 @@ describe('Task', () => {
.click()
const today = new Date()
const day = today.toLocaleString('default', {day: '2-digit'})
const day = today.toLocaleString('default', {day: 'numeric'})
const month = today.toLocaleString('default', {month: 'short'})
const year = today.toLocaleString('default', {year: 'numeric'})
const date = `${day} ${month} ${year}, 12:00:00`
@ -605,7 +605,7 @@ describe('Task', () => {
.click()
const today = new Date()
const day = today.toLocaleString('default', {day: '2-digit'})
const day = today.toLocaleString('default', {day: 'numeric'})
const month = today.toLocaleString('default', {month: 'short'})
const year = today.toLocaleString('default', {year: 'numeric'})
const date = `${day} ${month} ${year}, 12:00:00`

View File

@ -55,39 +55,39 @@
"@kyvg/vue3-notification": "3.1.4",
"@sentry/tracing": "7.99.0",
"@sentry/vue": "7.99.0",
"@tiptap/core": "2.2.0",
"@tiptap/extension-blockquote": "2.2.0",
"@tiptap/extension-bold": "2.2.0",
"@tiptap/extension-bullet-list": "2.2.0",
"@tiptap/extension-code": "2.2.0",
"@tiptap/extension-code-block-lowlight": "2.2.0",
"@tiptap/extension-document": "2.2.0",
"@tiptap/extension-dropcursor": "2.2.0",
"@tiptap/extension-gapcursor": "2.2.0",
"@tiptap/extension-hard-break": "2.2.0",
"@tiptap/extension-heading": "2.2.0",
"@tiptap/extension-history": "2.2.0",
"@tiptap/extension-horizontal-rule": "2.2.0",
"@tiptap/extension-image": "2.2.0",
"@tiptap/extension-italic": "2.2.0",
"@tiptap/extension-link": "2.2.0",
"@tiptap/extension-list-item": "2.2.0",
"@tiptap/extension-ordered-list": "2.2.0",
"@tiptap/extension-paragraph": "2.2.0",
"@tiptap/extension-placeholder": "2.2.0",
"@tiptap/extension-strike": "2.2.0",
"@tiptap/extension-table": "2.2.0",
"@tiptap/extension-table-cell": "2.2.0",
"@tiptap/extension-table-header": "2.2.0",
"@tiptap/extension-table-row": "2.2.0",
"@tiptap/extension-task-item": "2.2.0",
"@tiptap/extension-task-list": "2.2.0",
"@tiptap/extension-text": "2.2.0",
"@tiptap/extension-typography": "2.2.0",
"@tiptap/extension-underline": "2.2.0",
"@tiptap/pm": "2.2.0",
"@tiptap/suggestion": "2.2.0",
"@tiptap/vue-3": "2.2.0",
"@tiptap/core": "2.2.1",
"@tiptap/extension-blockquote": "2.2.1",
"@tiptap/extension-bold": "2.2.1",
"@tiptap/extension-bullet-list": "2.2.1",
"@tiptap/extension-code": "2.2.1",
"@tiptap/extension-code-block-lowlight": "2.2.1",
"@tiptap/extension-document": "2.2.1",
"@tiptap/extension-dropcursor": "2.2.1",
"@tiptap/extension-gapcursor": "2.2.1",
"@tiptap/extension-hard-break": "2.2.1",
"@tiptap/extension-heading": "2.2.1",
"@tiptap/extension-history": "2.2.1",
"@tiptap/extension-horizontal-rule": "2.2.1",
"@tiptap/extension-image": "2.2.1",
"@tiptap/extension-italic": "2.2.1",
"@tiptap/extension-link": "2.2.1",
"@tiptap/extension-list-item": "2.2.1",
"@tiptap/extension-ordered-list": "2.2.1",
"@tiptap/extension-paragraph": "2.2.1",
"@tiptap/extension-placeholder": "2.2.1",
"@tiptap/extension-strike": "2.2.1",
"@tiptap/extension-table": "2.2.1",
"@tiptap/extension-table-cell": "2.2.1",
"@tiptap/extension-table-header": "2.2.1",
"@tiptap/extension-table-row": "2.2.1",
"@tiptap/extension-task-item": "2.2.1",
"@tiptap/extension-task-list": "2.2.1",
"@tiptap/extension-text": "2.2.1",
"@tiptap/extension-typography": "2.2.1",
"@tiptap/extension-underline": "2.2.1",
"@tiptap/pm": "2.2.1",
"@tiptap/suggestion": "2.2.1",
"@tiptap/vue-3": "2.2.1",
"@types/is-touch-device": "1.0.2",
"@types/lodash.clonedeep": "4.5.9",
"@vueuse/core": "10.7.2",

View File

@ -41,104 +41,104 @@ dependencies:
specifier: 7.99.0
version: 7.99.0(vue@3.4.15)
'@tiptap/core':
specifier: 2.2.0
version: 2.2.0(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/extension-blockquote':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-bold':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-bullet-list':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-code':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-code-block-lowlight':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.2.1)
'@tiptap/extension-document':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-dropcursor':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-gapcursor':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-hard-break':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-heading':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-history':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-horizontal-rule':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-image':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-italic':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-link':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-list-item':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-ordered-list':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-paragraph':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-placeholder':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-strike':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-table':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-table-cell':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-table-header':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-table-row':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-task-item':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-task-list':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-text':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-typography':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/extension-underline':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)
'@tiptap/pm':
specifier: 2.2.0
version: 2.2.0
specifier: 2.2.1
version: 2.2.1
'@tiptap/suggestion':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/vue-3':
specifier: 2.2.0
version: 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)(vue@3.4.15)
specifier: 2.2.1
version: 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)(vue@3.4.15)
'@types/is-touch-device':
specifier: 1.0.2
version: 1.0.2
@ -4378,301 +4378,301 @@ packages:
defer-to-connect: 1.1.3
dev: true
/@tiptap/core@2.2.0(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-ped7XlQ9k5VyE2xUwyRegn1yVF/CAsaF+riBUBJ9+71/gSo2mCZ+6gQvee+LVN1+rD1qN/vWgKhKNDVaU+VaFg==}
/@tiptap/core@2.2.1(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-9G6N2d5q4M5i/elK61qu28uO5MBDKEbStQnHuVKNe+LVNpb6xZal1AcIilmq1FVeuCUh3kYl3cFH3nBQOXtZUw==}
peerDependencies:
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/pm': 2.2.0
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-blockquote@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-zINqjH/Kb0qiDxb4ndlruN/g5ZDt+Og2QTyrYGs27xoNmFoHez0Xqi+ID5yFSYBSCGkf0GeNMqW9LjfiCObvww==}
/@tiptap/extension-blockquote@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-KfL7c28ueH8yKTkZiO9LlErAVjZyi5j+Kw42pu06aOrXWNH6TW8CSufR6UB2XZcFX6Sixi2qYpwxs1YNnItmcg==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-bold@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-GlrI0FzUSzYhXoYbctcXALbyc22uKfZ0nv1k0qTw8qkKbWsz6qT/rm+rcB2YgugW3r6cu5n5HDQbzbgjapNAEA==}
/@tiptap/extension-bold@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-MSFbbrUG0hErM9sUmJenGPRBjQV/HfcLf7kqpxduPoxA4r2XOsbUKGSbPEQ3vU3vMi9Obkknt0JLnS5WofIIGw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-bubble-menu@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-ukwFb9wbwA/GkM7wGGv/ScKRBn4QSZkNzObhU6TgDKISjo1b7gGaUdC6gPoAFtQamCOCL8559PJIXXJ4wtL5/w==}
/@tiptap/extension-bubble-menu@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-FQO1CDS777E34T8jwnYDBz3VmGyVzv3Olj0o01c3fHR7OSnA7urAxx+z9Z4CWqUJhRMV9td0v0wiZjQ4q1DdYw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
tippy.js: 6.3.7
dev: false
/@tiptap/extension-bullet-list@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-V/jVw5g1c7EIKo+44Rw1WeQ9NUzXjtecnCclDALXOlhZ3Kz+a6mBOkuMSeoZhlH0sZ7Cq5u4W+64IuDOstA9yg==}
/@tiptap/extension-bullet-list@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-MvMQRykJUdIocLNmilHO8smbttWwuXUGlnlW+DpIAK7DNih3aHjdFlRbixPqVQLicFMiI5+ixw+EM1ZQr0S59A==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-code-block-lowlight@2.2.0(@tiptap/core@2.2.0)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-s/ZvePEwyovQtoTHFq/TYZU/+rTdWEAhocsnbRD6BVolwFi5NiE9iRtIt2gTL1PVxi6UNK/zxqrtBaQpBffeqg==}
/@tiptap/extension-code-block-lowlight@2.2.1(@tiptap/core@2.2.1)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-XrgDfqfuyYQ7xtjCALUbh5Qu4NAD9WXjE8T51C9aL60A6eMcd78QUDYtNEpHEIARqHLC1lWfUN1HhdkG3bFtuA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/extension-code-block': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/extension-code-block': 2.1.12(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/extension-code-block': 2.1.12(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-code-block@2.1.12(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
/@tiptap/extension-code-block@2.1.12(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-code@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-SqAoJFuwqMzxyaKoULxEgo0e0fJjr/iOLQbnPSQEOuhgVaqRsaBSS3dbxgm94Gt29P7YPZ6IMqLSv/QZQzyjXw==}
/@tiptap/extension-code@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-nRYeiw9MtV6x3klcQd2X3fJ7r8J1Zy+KHTvfJFYsK8SacSVl+tYi8/FsjbmzGmnO3NYUlDzdyPq/woT+cKk20Q==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-document@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-P21yqZP8DQQ03Q84jO4l73XPswCqjCPb318/eSdovF7m7xXcY55HkHtWU5Fvt/KJxhwvG6WWGmvoox9/bDW0DQ==}
/@tiptap/extension-document@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-Pb0jSY6wYSKd8fgDotKiQN3mc4dKLWVq0IzYOpBGTLn+37WmyPzWCnA1vWjp81u2XRXvr3gFQBEa+zYXonG//w==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-dropcursor@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-7OfGn/EmDp3IN+OyjlFrgeO/GfmBZXMzwW/yWl+42ulhWItqeQ1qmApxOAj1zWes0hbVcULZXIpw3alfTvfPOA==}
/@tiptap/extension-dropcursor@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-Y9MmqRv0MMzhy8efVvHV1zAwr4oEiodggYOLC8Vav0IubWXqd8mVDCdz3DjEqGOdeR9Qy/zt4ohQlbkRno9twA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-floating-menu@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-psvRz/69Q/DnVHABYwMKlZv2C6AuLmcQQKTrEBHZKz7OX6E3pLveRVIjaetFg8jci8ZeNMPupKmeLzBVuN8U2A==}
/@tiptap/extension-floating-menu@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-2lQaEIUbexw8yCGDLxNqhCwpZMoclnDtAdObDKCgufLcA+tVSdVirfcx7HJZ4kmRXmUhdG3uvawQVchZJ7FGiw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
tippy.js: 6.3.7
dev: false
/@tiptap/extension-gapcursor@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-FsIoLA2xC1tUCK2cw5jWOKlwYNZgex3puMRwQaZjbph2oz8Jel8SRAzAwsfoi4JkaN9TpNlRP1i00xzGGaezow==}
/@tiptap/extension-gapcursor@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-/OCQDwa1/LwFVEFWCkU4dnUt4pGt1IJKOEzT2JETrRQB4VzP1flIpwPAy5tJ3i2abkCZtnEGOJ5ZsXC01LgOxg==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-hard-break@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-VptjsgvYOK6EcErn7GdEZZ5CjRkC4O6dsz2cRFA/DIY1IecB628X81n4G6cCyVsb+D98cYnsY44D3Qo+70Xkzw==}
/@tiptap/extension-hard-break@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-wKRujmJlaBOv+PEnaUL2C9fEjiq1YDsm/SbHzAPYn/+8CRHOLrcJpUAq9rUo7u6+bEBD2PxbN1pPNrfS3QtPLw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-heading@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-4VwRtGDhRhUtP/c8BB6pPMS6g8PRv5cs+pYxCp466en5awSBhM4AN2cxDD6ruXP4YvNTDprky9H0IKjhs6Ym4Q==}
/@tiptap/extension-heading@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-BI14qTOWTcabvobSo8QBAXQqmz4vQ9HjInK9btKEAJ027BHFk08n6YoovQDcTH5Z2nvwPN4N3RW0JupmgwflAQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-history@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-djHQxD5KP4EI3U6cri0/wcJxyMspU1B6+UVXL1G7867JiV9mvAw/HUoZsHTOsn+kajTi8szFfl2exa6dCYVrmA==}
/@tiptap/extension-history@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-MZyIKWgNLzsEysyzWwsUE705+x4GRuLluS5cWGzZ/CKjSEUO152DVlM50MPpKqH+o1SW3cR7RUvDPJlpM7Lymw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-horizontal-rule@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-AmaMBZwCEBH2eoy9Qt8Z+fiP6olSelz/cODz8/8XiXXi8ydY6oHW2s4pmrEYZH0un9dQAGWMP/LGUwyQZof1GQ==}
/@tiptap/extension-horizontal-rule@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-M6mi6CPMeO/1i/0qqEIVbObB3VDT6HhO4cxvjiaWxRXsU+79kdvx33Mk6GHKuXZizAYN1qxeM7byAtFiRu/aIw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-image@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-xP+V+n6GQ/iHbDzX7wKy++klTUFQsvrtOtS2cWJCmUUH9qHJ2vHoaLEKAaroIaAaq/QMroCuEItpbevC3hbnpg==}
/@tiptap/extension-image@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-Rbj3dwcAfmLmKgv6ymfLUWlpb5xS3W4Bl/xC9EKbTFvRG+OHJyDjKxUipjNlaycuhgO01i2N9Jftclg4ZVed+g==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-italic@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-eOesosmbf8mXCJ8E58PnuhO5gtDpviCTpi3ZaGn1yP0gLRV3wlo8wpCbxlGXLStgFT0tejN26MGbEHCJHkRkFQ==}
/@tiptap/extension-italic@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-x3cWWgup7SZIq8ugfJ8IFpvOROwU0KuAZFJlSk9eL9Qszff2ZG8kPUuQ8HklSdmoafSluv0mUhDSFTc52E/Yzg==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-link@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-1evYv5Fjod47kobd/0RsHYyCFWrkU5IYZSIBC7bAGsnzG4fId2O5SEyn9SPsMYOVtEL2EIhiqb0i+wcwXf6jOQ==}
/@tiptap/extension-link@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-3oh+tRFGtj3Scv3i6FBJOakX650NBI+cmemJxggaiH8PPw3+q+eZneqDQHqINcgel5/HQXFdXWSpfYsZi7EDoQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
linkifyjs: 4.1.1
dev: false
/@tiptap/extension-list-item@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-st5S4z2+IXsaX9Otm+4y1NZhE/yLtfFELn5VIUX69PwnNThaN2/ioBXkO1o2ZdLex++D0oMaY5ILIW/PhCWP8Q==}
/@tiptap/extension-list-item@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-6seOMXbji+ptW9OiOig8BVBxnGZhHgWEU6tmsMxsf61dt8b1CElf04oTbvn1hzkCjQQXJbsztU87Q7FLTfLE0w==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-ordered-list@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-LR+RQdv8yEqSYkTBGYuh099wr4r0QIosxfGe/ZlshwDJ4qFKVhyWSZ8qyaEiufmXDadTasj7WQvlbpVAhrVTBQ==}
/@tiptap/extension-ordered-list@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-6OcdBALgYnj/TKSV+ouT202U1ydJGenGL9ofhpdogC1scE0oMaR25f1T9k7RMUGAv+7FNIcVZp2+bf1SLCTX1A==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-paragraph@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-niuvuBEkhz9gnQvFHbxs5z044bpDXRH9zz8QW2bA8+IDSxWHfnVmSZ3AZsed7OJ4EK1AcgGxy+gFOpAcZ73XTw==}
/@tiptap/extension-paragraph@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-SaSnWml4DTzG9kTEq/diL6XQGSgNaZJPOIGTPL2/1idHrx4/JrZ87VIbChJwVqbDuAvAxbidAqxKJuYObSzhhg==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-placeholder@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-YAvq4VwjI9SitRHHQBoI2YHvKlmXvLag+z336HYyEiHDkoadek6zWLIb+RY/D0lAPBMBzgN+LoknYhC1VdgdYA==}
/@tiptap/extension-placeholder@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-QEUEhzvUOLRjdvzm45CGNqdzqNalKjYgnkmdiNr7HPsmXJ+Teoe/dP7HTo2ssGRqkziE9OJrDRu12kCr+H73MQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-strike@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-AMVC94mWNCAXLyZdkB5KqLai9FMUaQDkWAZSD1DKCRq2OJeA71nW9G1eDPa2TzQezl2IVTW9mU4m37hcsTmRfg==}
/@tiptap/extension-strike@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-4XntI9CLteDeu1ZBWqTygiuut2mJbS5E6SxDD0LZ6EtXM1LdTkh5xhDdviErsqlAe1PUtrFcGUAfdyMOdp26uQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-table-cell@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-wWLJnQdxF7tnS0oyZGWlUj3k+wf0R2fbq1n0n0EbnOmZV9CWhYwmKnUbdMEsW/HCYm1lgc94TAYGwaHkqQvHWQ==}
/@tiptap/extension-table-cell@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-AeoIAuE+WLh69r/irk9lXo0wVCYpV1CI7aTcrWRP8P4t+wELfBPq/2dT1ETZ1dFWg1JXdq4FFtZ0Cw8lqlJnFQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-table-header@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-U2XQcXinMNlx4fhRI7mivx8mFclajR7q3+gU1sFwGaRuyufOUM/1LwoiuzHK1VqMQWkWq8u+XEqtw9K6BtmyNw==}
/@tiptap/extension-table-header@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-OQR9hNFSTGQFnoWf4SBIsnjgim8yWgMHT/SfCKyFWvgJnSGJS0VHVRItML1sFs8U4xJccfeNK8AiaaQUbMRiFg==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-table-row@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-sR0MWUz5hy6QZsaaI/v4+wC8V8IKRZOZvl7PMhKAJVnAGr5nF34V8h/E9kWGDDyYw2mKi5dSf1E/cEZVAwdlVQ==}
/@tiptap/extension-table-row@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-3eFeuxOBzyEVcoo8CyFjJHPY4V1doZDxCdVXuFVoDcukQV12aJaV9TCeo3XjjAvs6Sqmm5G49M7JyIlCYIx20g==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-table@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-Kv9QhD3DXroygoQ9yY0fiZFsEDyiM10kwRrBdv05EE3+QJhkv+NaX6OgRxiOa6/AyxC1/SyTjjeKz0IgA/XZgA==}
/@tiptap/extension-table@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-5CovUPpa1yC0JEkuQ80B1r/i2SP/NjMCG+1AMCxQJg/a+rjP3DWK+FubhE67455YvwjxdllCvlZyruludCWXxQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-task-item@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-5Tty8sEE7fS6Ymdpd81Y+ci9FS8bctvPfqF2CPjgrbd4TesXGmPoUz6XBm2Pfh2MBBQhUIy0+3au5mDzcVq2SA==}
/@tiptap/extension-task-item@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-gu8XJ6OCw1VZNe/Q/bTzk214d9bq5B/zN4BR/l+2ogbb5eXi00yEiatqMX40Ee4HzVqVGHJhclDHYRK9k+oAIw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/extension-task-list@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-+W4uVup/v/P67sSJ8bAbbR7lCKZl+Jrm66lIV4etGjhO9Hs2ZnV9KrAjTHh8SbZZSNybDTOOaV74Wo73KqoVUQ==}
/@tiptap/extension-task-list@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-hE/h7a2fYm0olWax7ywm+K10L4whyWZdlwDSTHiuE44++o+ANn4AcV/izz8/qFBbPUnf9qG0QZituzLQlTTenw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-text@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-h3lJRUZaUBisqUSQDEO+NU4SgKW7rj/vvbsbML8klWdEhg8U9btdv4eZgoJxbsqOdpUc6Cy6dBhre4myWI8Y2w==}
/@tiptap/extension-text@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-1zjPuGyhLIODsYpCYeRSUgzfzdzk5uSo8PsV/WaF75ouilJYE3QvMQegivkuNmPBLz0nukPkOcXfQUI/D8wNOA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-typography@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-te9JQqqjZbaEBPeNJeEDiy9HU/lvlG0lCq9Zz8EnHIJG69A3rXHpwLAbGY/WiQNk/MCx6HjBeVyjRCeHvo56Cw==}
/@tiptap/extension-typography@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-V/ULb2aoyNo4k4a890N8+WiGDAAF8iJZ7XSGXzuXLUyabVGhdDO4xRymZpLROHjmreYRbfMzuTOTvOWi30DOvw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/extension-underline@2.2.0(@tiptap/core@2.2.0):
resolution: {integrity: sha512-y+D9gUWa/sVeCftZBMCEpcD1tD4OgNXfjsS7/qxv6ge9t0HCRhAJfHWm6rX8P7QybjacinZuun/T6CudRdGbMg==}
/@tiptap/extension-underline@2.2.1(@tiptap/core@2.2.1):
resolution: {integrity: sha512-lGPoFFzVhqApG2Q4dIsxzMVbdhJw6bLqFHN9g1Ei53NZ3uGMJbaHoB9bbRGWPkuG+K6Y5shf5fByXbmSjBvBuA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
dev: false
/@tiptap/pm@2.2.0:
resolution: {integrity: sha512-CL/ys9rvUgYcRHyeQFuIQdw09+0LUgKAfYWzCr6Pu4DDdbRooiex/a9M29imnRMEgS9SwuHN2v17fKHH0w65Hg==}
/@tiptap/pm@2.2.1:
resolution: {integrity: sha512-jfbrvUlDZ5t6zgk7pXT6GtHX7v48PL6K9TfDEzROywJS2iXSt/0iHUi2Ap8u8hvfv4rBDO7m7LVLS0+rRa5Cyg==}
dependencies:
prosemirror-changeset: 2.2.1
prosemirror-collab: 1.3.1
@ -4694,27 +4694,27 @@ packages:
prosemirror-view: 1.32.7
dev: false
/@tiptap/suggestion@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0):
resolution: {integrity: sha512-xcjGEVgRB0tx21LdNTr5F/HEKNlFuq9cnJlVGDLlNP43ixXM6aODAeY3VvEZ3XtEtLpHsiCVrinrjRNtpUf+eQ==}
/@tiptap/suggestion@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1):
resolution: {integrity: sha512-DIT4zR5CoP0Q5n9BJj68EqmbFGzdyDgDon8yfX1NkynW8PtDrcfGhe5/31tcH6YuM6ZijqNV3fdCt+LPrVr/Nw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
dev: false
/@tiptap/vue-3@2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)(vue@3.4.15):
resolution: {integrity: sha512-S61ENjHm8Y0agwGFw+BZBVuZpL7/rPtMQCOL0eaDrJbqLi6nwFhhWzZ71zis0EgU310NwPCQ+j3XHD5hj1R3gQ==}
/@tiptap/vue-3@2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)(vue@3.4.15):
resolution: {integrity: sha512-vRYTPnpKJBrpQEjj+7WDx7AKcjNskOlHMEfgCPlwFMG6o1dwbDDtXWj9U53SyiZfitRkudb7WAbX0RyleBjdIQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
vue: ^3.0.0
dependencies:
'@tiptap/core': 2.2.0(@tiptap/pm@2.2.0)
'@tiptap/extension-bubble-menu': 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
'@tiptap/extension-floating-menu': 2.2.0(@tiptap/core@2.2.0)(@tiptap/pm@2.2.0)
'@tiptap/pm': 2.2.0
'@tiptap/core': 2.2.1(@tiptap/pm@2.2.1)
'@tiptap/extension-bubble-menu': 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/extension-floating-menu': 2.2.1(@tiptap/core@2.2.1)(@tiptap/pm@2.2.1)
'@tiptap/pm': 2.2.1
vue: 3.4.15(typescript@5.3.3)
dev: false

View File

@ -30,7 +30,7 @@
</span>
<span
v-if="project.id > 0"
class="icon menu-item-icon handle lines-handle"
class="icon menu-item-icon handle"
:class="{'has-color-bubble': project.hexColor !== ''}"
>
<icon icon="grip-lines"/>

View File

@ -304,7 +304,6 @@ watch(
)
const editor = useEditor({
content: modelValue,
editable: isEditing.value,
extensions: [
// Starterkit:
@ -746,7 +745,7 @@ watch(
height: auto;
&.ProseMirror-selectednode {
outline: 3px solid #68cef8;
outline: 3px solid var(--primary);
}
}

View File

@ -156,6 +156,8 @@ async function markAllRead() {
const notificationService = new NotificationService()
await notificationService.markAllRead()
success({message: t('notification.markAllReadSuccess')})
notifications.value.forEach(n => n.readAt = new Date())
}
</script>

View File

@ -123,6 +123,23 @@ watch(
function transformTaskToGanttBar(t: ITask) {
const black = 'var(--grey-800)'
const taskColor = getHexColor(t.hexColor)
let textColor = black
let backgroundColor = 'var(--grey-100)'
if(t.startDate) {
backgroundColor = taskColor ?? ''
if(typeof taskColor === 'undefined') {
textColor = 'white'
backgroundColor = 'var(--primary)'
} else if(colorIsDark(taskColor)) {
textColor = black
} else {
textColor = 'white'
}
}
return [{
startDate: isoToKebabDate(t.startDate ? t.startDate.toISOString() : props.defaultTaskStartDate),
endDate: isoToKebabDate(t.endDate ? t.endDate.toISOString() : props.defaultTaskEndDate),
@ -131,8 +148,8 @@ function transformTaskToGanttBar(t: ITask) {
label: t.title,
hasHandles: true,
style: {
color: t.startDate ? (colorIsDark(getHexColor(t.hexColor)) ? black : 'white') : black,
backgroundColor: t.startDate ? getHexColor(t.hexColor) : 'var(--grey-100)',
color: textColor,
backgroundColor,
border: t.startDate ? '' : '2px dashed var(--grey-300)',
'text-decoration': t.done ? 'line-through' : null,
},

View File

@ -33,7 +33,7 @@ const hasDelete = computed(() => typeof remove !== 'undefined' && !disabled)
:avatar-size="avatarSize"
:show-username="false"
:user="user"
:class="{'m-2': hasDelete, 'mr-3': !hasDelete}"
:class="{'m-2': hasDelete}"
/>
<BaseButton
:key="'delete'+user.id"

View File

@ -1,5 +1,7 @@
<template>
<Multiselect
class="edit-assignees"
:class="{'has-assignees': assignees.length > 0}"
:loading="projectUserService.loading"
:placeholder="$t('task.assignee.placeholder')"
:multiple="true"
@ -115,3 +117,9 @@ async function findUser(query: string) {
})
}
</script>
<style lang="scss">
.edit-assignees.has-assignees.multiselect .input {
padding-left: 0;
}
</style>

View File

@ -4,10 +4,10 @@
:class="{
'is-loading': loadingInternal || loading,
'draggable': !(loadingInternal || loading),
'has-light-text': color !== TASK_DEFAULT_COLOR && !colorIsDark(color),
'has-custom-background-color': color !== TASK_DEFAULT_COLOR ? color : undefined,
'has-light-text': !colorIsDark(color),
'has-custom-background-color': color ?? undefined,
}"
:style="{'background-color': color !== TASK_DEFAULT_COLOR ? color : undefined}"
:style="{'background-color': color ?? undefined}"
@click.exact="openTaskDetail()"
@click.ctrl="() => toggleTaskDone(task)"
@click.meta="() => toggleTaskDone(task)"
@ -83,7 +83,7 @@ import Done from '@/components/misc/Done.vue'
import Labels from '@/components/tasks/partials/labels.vue'
import ChecklistSummary from './checklist-summary.vue'
import {TASK_DEFAULT_COLOR, getHexColor} from '@/models/task'
import {getHexColor} from '@/models/task'
import type {ITask} from '@/modelTypes/ITask'
import {SUPPORTED_IMAGE_SUFFIX} from '@/models/attachment'
import AttachmentService from '@/services/attachment'

View File

@ -25,5 +25,9 @@ defineProps({
<style lang="scss" scoped>
.label-wrapper {
display: inline;
:deep(.tag) {
margin-bottom: .25rem;
}
}
</style>

View File

@ -46,7 +46,7 @@
<DatepickerInline
v-if="activeForm === 'absolute'"
v-model="reminderDate"
@update:modelValue="setReminderDate(close)"
@update:modelValue="setReminderDateAndClose(close)"
/>
<x-button
@ -105,7 +105,7 @@ const presets = computed<TaskReminderModel[]>(() => [
{reminder: null, relativePeriod: -1 * SECONDS_A_DAY * 7, relativeTo: defaultRelativeTo},
{reminder: null, relativePeriod: -1 * SECONDS_A_DAY * 30, relativeTo: defaultRelativeTo},
])
const reminderDate = ref(null)
const reminderDate = ref<Date|null>(null)
type availableForms = null | 'relative' | 'absolute'
@ -135,7 +135,17 @@ const reminderText = computed(() => {
watch(
() => modelValue,
(newReminder) => {
reminder.value = newReminder || new TaskReminderModel()
if(newReminder) {
reminder.value = newReminder
if(newReminder.relativeTo === null) {
reminderDate.value = new Date(newReminder.reminder)
}
return
}
reminder.value = new TaskReminderModel()
},
{immediate: true},
)
@ -148,7 +158,7 @@ function updateData() {
}
}
function setReminderDate(close) {
function setReminderDateAndClose(close) {
reminder.value.reminder = reminderDate.value === null
? null
: new Date(reminderDate.value)

View File

@ -2,7 +2,7 @@
<div>
<div
:class="{'is-loading': taskService.loading}"
class="task loader-container"
class="task loader-container single-task"
@mouseup.stop.self="openTaskDetail"
@mousedown.stop.self="focusTaskLink"
ref="taskContainerRef"
@ -435,21 +435,12 @@ function focusTaskLink() {
}
}
.handle {
opacity: 1;
transition: opacity $transition;
margin-right: .25rem;
cursor: grab;
}
@media(hover: hover) and (pointer: fine) {
& .favorite,
& .handle {
& .favorite {
opacity: 0;
}
&:hover .favorite,
&:hover .handle {
&:hover .favorite {
opacity: 1;
}
}

View File

@ -21,6 +21,7 @@ export const SUPPORTED_LOCALES = {
'hu-HU': 'Magyar',
'ar-SA': 'اَلْعَرَبِيَّةُ',
'sl-SI': 'Slovenščina',
// IMPORTANT: Also add new languages to useDayjsLanguageSync
} as const
export type SupportedLocale = keyof typeof SUPPORTED_LOCALES

View File

@ -15,6 +15,13 @@ export const DAYJS_LOCALE_MAPPING = {
'nl-nl': 'nl',
'pt-pt': 'pt',
'zh-cn': 'zh-cn',
'no-NO': 'nn',
'es-ES': 'es',
'da-DK': 'da',
'ja-JP': 'ja',
'hu-HU': 'hu',
'ar-SA': 'ar-sa',
'sl-SI': 'sl',
} as Record<SupportedLocale, ISOLanguage>
export const DAYJS_LANGUAGE_IMPORTS = {
@ -29,6 +36,13 @@ export const DAYJS_LANGUAGE_IMPORTS = {
'nl-nl': () => import('dayjs/locale/nl'),
'pt-pt': () => import('dayjs/locale/pt'),
'zh-cn': () => import('dayjs/locale/zh-cn'),
'no-no': () => import('dayjs/locale/nn'),
'es-es': () => import('dayjs/locale/es'),
'da-dk': () => import('dayjs/locale/da'),
'ja-jp': () => import('dayjs/locale/ja'),
'hu-hu': () => import('dayjs/locale/hu'),
'ar-sa': () => import('dayjs/locale/ar-sa'),
'sl-si': () => import('dayjs/locale/sl'),
} as Record<SupportedLocale, () => Promise<ILocale>>
export function useDayjsLanguageSync(dayjsGlobal: typeof dayjs) {

View File

@ -23,11 +23,9 @@ import type {ITaskReminder} from '@/modelTypes/ITaskReminder'
import TaskReminderModel from '@/models/taskReminder'
import {secondsToPeriod} from '@/helpers/time/period'
export const TASK_DEFAULT_COLOR = '#1973ff'
export function getHexColor(hexColor: string): string {
export function getHexColor(hexColor: string): string | undefined {
if (hexColor === '' || hexColor === '#') {
return TASK_DEFAULT_COLOR
return undefined
}
return hexColor

View File

@ -333,4 +333,23 @@ function prepareFiltersAndLoadTasks() {
.control.has-icons-right .icon {
transition: all $transition;
}
:deep(.single-task) {
.handle {
opacity: 1;
transition: opacity $transition;
margin-right: .25rem;
cursor: grab;
}
@media(hover: hover) and (pointer: fine) {
& .handle {
opacity: 0;
}
&:hover .handle {
opacity: 1;
}
}
}
</style>

View File

@ -472,7 +472,7 @@ import {klona} from 'klona/lite'
import {eventToHotkeyString} from '@github/hotkey'
import TaskService from '@/services/task'
import TaskModel, {TASK_DEFAULT_COLOR} from '@/models/task'
import TaskModel from '@/models/task'
import type {ITask} from '@/modelTypes/ITask'
import type {IProject} from '@/modelTypes/IProject'
@ -582,9 +582,7 @@ const color = computed(() => {
? task.value.getHexColor()
: undefined
return color === TASK_DEFAULT_COLOR
? ''
: color
return color
})
const hasAttachments = computed(() => attachmentStore.attachments.length > 0)