Compare commits

..

11 Commits

Author SHA1 Message Date
renovate 6fc64468e0 chore(deps): update dev-dependencies 2024-01-16 11:37:39 +00:00
renovate 01089f4f3d fix(deps): update tiptap to v2.1.16 (#3892)
continuous-integration/drone/push Build was killed Details
Reviewed-on: #3892
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2024-01-16 11:17:28 +00:00
kolaente a7461d1ddd
chore(deps): increase renovate timeout
continuous-integration/drone/push Build is passing Details
2024-01-16 12:15:04 +01:00
kolaente a451189bb6
fix(test): make date assertion not brittle
continuous-integration/drone/push Build is passing Details
2024-01-16 10:36:29 +01:00
kolaente bf9af27fc3
fix(task): update due date when marking a task done
continuous-integration/drone/push Build is failing Details
2024-01-15 23:33:02 +01:00
kolaente 5619fda0f2
fix(task): bubble date changes from the picker up
continuous-integration/drone/push Build is failing Details
Resolves https://github.com/go-vikunja/frontend/issues/142
2024-01-15 23:23:57 +01:00
kolaente 167953b26b
fix(editor): use higher-contrast colors for links and code
continuous-integration/drone/push Build is passing Details
2024-01-15 22:11:24 +01:00
kolaente 664bf0a5f4
fix(tasks): make sure tasks show up if their parent task is not available in the current view
continuous-integration/drone/push Build is passing Details
Related https://github.com/go-vikunja/frontend/issues/136
Related https://community.vikunja.io/t/subtasks-are-hidden-when-parent-tasks-are-moved/1911
2024-01-15 21:46:47 +01:00
kolaente 5e991f3024
fix: lint
continuous-integration/drone/push Build is passing Details
2024-01-15 16:21:00 +01:00
kolaente 28050d9cd5
fix(labels): make color reset work
continuous-integration/drone/push Build is failing Details
2024-01-15 14:00:08 +01:00
kolaente e94b71d577
fix(editor): list icons
continuous-integration/drone/push Build is passing Details
2024-01-15 13:39:17 +01:00
20 changed files with 409 additions and 302 deletions

View File

@ -541,6 +541,86 @@ describe('Task', () => {
.should('contain', 'Success')
})
it('Can set a due date to a specific date for a task', () => {
const tasks = TaskFactory.create(1, {
id: 1,
done: false,
})
cy.visit(`/tasks/${tasks[0].id}`)
cy.get('.task-view .action-buttons .button')
.contains('Set Due Date')
.click()
cy.get('.task-view .columns.details .column')
.contains('Due Date')
.get('.date-input .datepicker .show')
.click()
cy.get('.datepicker-popup .flatpickr-innerContainer .flatpickr-days .flatpickr-day.today')
.click()
cy.get('[data-cy="closeDatepicker"]')
.contains('Confirm')
.click()
const today = new Date()
const day = today.toLocaleString('default', {day: '2-digit'})
const month = today.toLocaleString('default', {month: 'short'})
const year = today.toLocaleString('default', {year: 'numeric'})
const date = `${day} ${month} ${year}, 12:00:00`
cy.get('.task-view .columns.details .column')
.contains('Due Date')
.get('.date-input .datepicker-popup')
.should('not.exist')
cy.get('.task-view .columns.details .column')
.contains('Due Date')
.get('.date-input')
.should('contain.text', date)
cy.get('.global-notification')
.should('contain', 'Success')
})
it('Can change a due date to a specific date for a task', () => {
const dueDate = new Date()
dueDate.setHours(12)
dueDate.setMinutes(0)
dueDate.setSeconds(0)
dueDate.setDate(1)
const tasks = TaskFactory.create(1, {
id: 1,
done: false,
due_date: dueDate.toISOString(),
})
cy.visit(`/tasks/${tasks[0].id}`)
cy.get('.task-view .action-buttons .button')
.contains('Set Due Date')
.click()
cy.get('.task-view .columns.details .column')
.contains('Due Date')
.get('.date-input .datepicker .show')
.click()
cy.get('.datepicker-popup .flatpickr-innerContainer .flatpickr-days .flatpickr-day.today')
.click()
cy.get('[data-cy="closeDatepicker"]')
.contains('Confirm')
.click()
const today = new Date()
const day = today.toLocaleString('default', {day: '2-digit'})
const month = today.toLocaleString('default', {month: 'short'})
const year = today.toLocaleString('default', {year: 'numeric'})
const date = `${day} ${month} ${year}, 12:00:00`
cy.get('.task-view .columns.details .column')
.contains('Due Date')
.get('.date-input .datepicker-popup')
.should('not.exist')
cy.get('.task-view .columns.details .column')
.contains('Due Date')
.get('.date-input')
.should('contain.text', date)
cy.get('.global-notification')
.should('contain', 'Success')
})
it('Can set a reminder', () => {
TaskReminderFactory.truncate()
const tasks = TaskFactory.create(1, {
@ -645,7 +725,7 @@ describe('Task', () => {
.click()
cy.get('.reminder-options-popup .card-content .reminder-period input')
.first()
.type('10')
.type('{selectall}10')
cy.get('.reminder-options-popup .card-content .reminder-period select')
.first()
.select('days')
@ -771,7 +851,7 @@ describe('Task', () => {
.should('exist')
})
it.only('Can check items off a checklist', () => {
it('Can check items off a checklist', () => {
const tasks = TaskFactory.create(1, {
id: 1,
description: `
@ -858,7 +938,7 @@ describe('Task', () => {
method: 'PUT',
url: `${Cypress.env('API_URL')}/tasks/${tasks[0].id}/attachments`,
headers: {
'Authorization': `Bearer ${window.localStorage.getItem('token')}`,
'Authorization': `Bearer ${window.localStorage.getItem('token')}`,
'Content-Type': 'multipart/form-data',
},
body: formData,

View File

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

View File

@ -41,104 +41,104 @@ dependencies:
specifier: 7.93.0
version: 7.93.0(vue@3.4.8)
'@tiptap/core':
specifier: 2.1.15
version: 2.1.15(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/extension-blockquote':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-bold':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-bullet-list':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-code':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-code-block-lowlight':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.1.16)
'@tiptap/extension-document':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-dropcursor':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-gapcursor':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-hard-break':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-heading':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-history':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-horizontal-rule':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-image':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-italic':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-link':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-list-item':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-ordered-list':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-paragraph':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-placeholder':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-strike':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-table':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-table-cell':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-table-header':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-table-row':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-task-item':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-task-list':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-text':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-typography':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/extension-underline':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)
'@tiptap/pm':
specifier: 2.1.15
version: 2.1.15
specifier: 2.1.16
version: 2.1.16
'@tiptap/suggestion':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/vue-3':
specifier: 2.1.15
version: 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)(vue@3.4.8)
specifier: 2.1.16
version: 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)(vue@3.4.8)
'@types/is-touch-device':
specifier: 1.0.2
version: 1.0.2
@ -295,8 +295,8 @@ devDependencies:
specifier: 5.2.0
version: 5.2.0(terser@5.24.0)(vite@5.0.11)
'@vitejs/plugin-vue':
specifier: 4.6.2
version: 4.6.2(vite@5.0.11)(vue@3.4.8)
specifier: 5.0.3
version: 5.0.3(vite@5.0.11)(vue@3.4.8)
'@vue/eslint-config-typescript':
specifier: 12.0.0
version: 12.0.0(eslint-plugin-vue@9.19.2)(eslint@8.56.0)(typescript@5.3.3)
@ -334,8 +334,8 @@ devDependencies:
specifier: 9.19.2
version: 9.19.2(eslint@8.56.0)
happy-dom:
specifier: 12.10.3
version: 12.10.3
specifier: 13.1.4
version: 13.1.4
histoire:
specifier: 0.17.6
version: 0.17.6(@types/node@20.10.8)(sass@1.69.7)(terser@5.24.0)(vite@5.0.11)
@ -386,7 +386,7 @@ devDependencies:
version: 5.1.0(vue@3.4.8)
vitest:
specifier: 1.1.3
version: 1.1.3(@types/node@20.10.8)(happy-dom@12.10.3)(sass@1.69.7)(terser@5.24.0)
version: 1.1.3(@types/node@20.10.8)(happy-dom@13.1.4)(sass@1.69.7)(terser@5.24.0)
vue-tsc:
specifier: 1.8.27
version: 1.8.27(typescript@5.3.3)
@ -4369,301 +4369,301 @@ packages:
defer-to-connect: 1.1.3
dev: true
/@tiptap/core@2.1.15(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-bsSUOQ9/OrQ3O4OFrMzjbCcShwHUS0w71DZoZTkOElnUFK2fu6IjDh8kbZyIxMW+sWuvLK/KePLdHOKOl1l/3Q==}
/@tiptap/core@2.1.16(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-nKnV603UyzbcrqhCXTWxDN22Ujb4VNfmKkACms1JOMGo7BVARmMCp2nBsLW8fmgCxmf8AS0LXY63tU7ILWYc5g==}
peerDependencies:
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/pm': 2.1.15
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-blockquote@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-H7zKKL85ZefhXS0ye3YYCUemStcs3PQLuSznR/T/KX3ds7AMhHbfRx3nRbMYYUT2dHd0DVVrhgdQPu4HhwbZVQ==}
/@tiptap/extension-blockquote@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-1OMk8cBrL0VnbnzD3XHx7U4oMDCiXRR7Spfl9JqwC9pS4RosOUBySNxpEBwhSegB0pK6sd7m44qLqj00If+cHA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-bold@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-bGaRXldgZaf7fGwuD0nFuwhxOPLhSa9cqkq4zOUHEQ0LAdXAqAtOe7ftF2Er7bHTd9kp6bvVvcNSWKi+PTTApw==}
/@tiptap/extension-bold@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-gz2VrBkRRsGBiOHx1qB++VUfpuRdhJp6jlgNqqHFbIkjKr2NB+u7oiH5SbjlL4eG0wlam1QA4jAkXhZgdvkA4g==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-bubble-menu@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-nHTeIYKruau6KL7fh1pvWBrzVXH1YE7S96RPPQ6dNwZjb9F3tXNVrIpPhR3Pafhy4LGHYvWYiZekc3Ir0dM4aQ==}
/@tiptap/extension-bubble-menu@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-MwKCmu2kU7+Xln/BvlrolU2hCXgoCoTr4NXJ+3v8A9w7tIq8leADoWacfEee2t3VNnGdXw/Xjza+DAr77JWjGg==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
tippy.js: 6.3.7
dev: false
/@tiptap/extension-bullet-list@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-xRJK7s2Nr47VgCfCzhQ5X5uYZPIARWS9HddFyDzlUK5fJbW9ISQ0HEl2y1eEAUqG+l0l/1o6HuBu4A4EkGMUQA==}
/@tiptap/extension-bullet-list@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-Cheaep5JShO9TtRslrOObSVKtRQFKozou2ZWDas5sIeef/A/GWPfVTzusfBGE/ItHwZNaDXwJOoVnSUPT8ulfw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-code-block-lowlight@2.1.15(@tiptap/core@2.1.15)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-/CvqgGrLz6gFacWfLbBrh6fBYCcr/nXXSWiAql68YofntjAzKjnrpVHmn9xriyrFnsRLRuhD+yNXaZAvt9U/VA==}
/@tiptap/extension-code-block-lowlight@2.1.16(@tiptap/core@2.1.16)(@tiptap/extension-code-block@2.1.12)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-tudlWkCcd+wrVot9yWQJLMd3Y6u5ma4tVDju3EEruzC/Tpf/Uoxj/HBoPIGT2L+l/O3Qq1OPeSkmeaW6qAdpPA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/extension-code-block': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/extension-code-block': 2.1.12(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/extension-code-block': 2.1.12(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-code-block@2.1.12(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
/@tiptap/extension-code-block@2.1.12(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-code@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-0IMHsTEuJ0AUXGLwJm60MdDSbflN2J8z/8ahFpw4qBGgJELXCSFCdGVW4QBd3A5QkAYsMZHfSOXhF1sTBIgM9Q==}
/@tiptap/extension-code@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-2+fVfh3qQORgMRSZ6hn+yW5/rLzlulCzMhdL07G0lWY8/eWEv3p9DCfgw9AOHrrHFim8/MVWyRkrkBM/yHX9FA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-document@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-rqlpCaVxjUmCqZhc8KYm3/21z8jhg3gphG0AO2MX78zyT0Wgw/EEDii1kFzFbTVj8VUV3JfaU1HWNVjK8hbDNQ==}
/@tiptap/extension-document@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-VSOrzGnpI9dJDffFn3ZjmPKYkH/YtYeDl6nqLu7TafRqyLMSEqxxxq/+Qs/7j8jbzq6osslY0sySckSulroIOg==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-dropcursor@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-VTod6dGC2M1hy0suReUJu7f1raSAyROSKE+Hp1zTaRaEjnE8mW+2PtPLQ5CRHmdLgAD2k1dGRNnxnsO6aqX2jg==}
/@tiptap/extension-dropcursor@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-voWEIAmxV3f9Q0gc3K89HRq8KFeOVtHJBRHYihZwxMnvq2aMIwdpCx0GbiCd4slQaBLd1ASJHz1uAigVhR2+uA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-floating-menu@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-2qrRE2HpF2vgYK72+CbT6xrhlShw4dS2xPV6kuXaYuBHR7tiyeGusCg7CXr7mZxIdTVj/+nNj3GCtST/+A7d5w==}
/@tiptap/extension-floating-menu@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-VBT4HBhkKr9S1VExyTb/qfQyZ5F0VJLasUoH8E4kdq3deCeifmTTIOukuXK5QbicFHVQmY2epeU6+w5c/bAcHQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
tippy.js: 6.3.7
dev: false
/@tiptap/extension-gapcursor@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-92Vdnr7UHAjCNJXa1J61PVu7K68OW44o7pRPVwBujlPWZK9MgEJAOC0DNW3u4u+dqJu8fdrfnUXSrzzB/DCoLg==}
/@tiptap/extension-gapcursor@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-Bgjo0da0W1QOhtnT3NR7GHPmVBZykNRekNGsTA3+nxCjkqh1G32Jt58TBKP3vdLBaww3lhrii0SYVErlFgIJnA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-hard-break@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-vQvP6Nzc6KE1mmKZdwNAlB12/1HeBmgUFSJPevnDLVvnaxla1tri/GtBIYONhZK3zPPY2PPj4Dt+4JWgK0rn1g==}
/@tiptap/extension-hard-break@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-H3Bk8Gu5pV7xH8TrzH0WAoXrJVEKsDA6Evyl7H7aCAMAvotQL0ehuuX88bjPMCSAvBXZE39wYnJCJshGbVx0BA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-heading@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-3ck2+Xkke8IvLXDzYP1fw/GlWr0SZ1AnaNQvywobG4+WKc2HjhgBnHG9mZiCNvL3dXrSqSs2spBraoKYrMYBfA==}
/@tiptap/extension-heading@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-vFQuAAnIxDwKjTV+ScSwIaeG4Uhm1cZddnbLTru1EJfIz9VvpHDZKEyL4ZJvWuKMAhCzlw54TQhBCVHqalXyaA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-history@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-KhCElkZJvNdOPxtCt+CzgxE2vIk+r4mnTay9+hC/6iVRcs24JTaDUihSwiC+lW0ot5zB1OxWUCLpgRnpJ9qdkA==}
/@tiptap/extension-history@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-9YHPf8Xqqp5CQy1hJonkBzROj0ZHR1ZaIk9IaLlAPTpdkrUDXV9SC7qp3lozQsMg4vmU3K6H5VQo4ADpnR00OQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-horizontal-rule@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-vywkBeGMOe6Duk3aInVPF6iHjoHWTNVYK5DCrUVyegb+XKqDIuiRN5UjOZ/3fqAZ6lvuuIMF58ZsW5c+skrXNg==}
/@tiptap/extension-horizontal-rule@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-Q+Zp0lJF7212YIuZnbMmn4KC1MZoZjQIuvSd+DOgCwKSeUcTXBbljDjOiN8yrY134r+A4fFM7KHTXWYqZGZQug==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-image@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-hAtCwSBP1F+I/kvDDV/fmLMlF7Xx1FmMZOekgQwMtbgMYGpgttpYUFqMxMFYN7ldsSOXzmxGEtlfc1Jq3f741w==}
/@tiptap/extension-image@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-idvmJzdG/u9YDt/GOCvgQMB1p/GZbBqb2Spk8BhXHoBGHR4zFo609ExccXYKR4UWs0iTACDq80VwJvfHa8XYKw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-italic@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-8bNDAv3kvIb+bIsGq5az/rd5oIN3E3NSIx2x/FZ1LqMTVhBJ/mWRVZf8etV4O2oCRXiVPlUDXCEMWqDRxCzYgg==}
/@tiptap/extension-italic@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-6mFGPBGxd2aICJ5Q3zYxuXO8slKoOP/PsSjEQn1bjs3h8Q3mPxHX290ePVp728o5F0myM9sxKSz2V6/VeuS/Yw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-link@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-mqjZws+8VyOl++pUeB2t4E/sCKhsxutLGVZY7yGRNdl30SfJirTf9hdcJRSpVkmI+9fiQ6Xnx081kCs7oaKZLw==}
/@tiptap/extension-link@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-QIXYwxHi2kKU2sqDXngTpggO4ZmLm4vMxDlbWT9so1iUPAqQJW2ZRbdygFYy1txirWcoaJKocPwSJemyAeUzmw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
linkifyjs: 4.1.1
dev: false
/@tiptap/extension-list-item@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-71/9rJ3gJPUt1lAf31FvpcYB8tvKyC93wKngl/GOfL5VSjOqrsNMne8hqsHzuEgu+uPElVHgSG3b5MLhxUU9TA==}
/@tiptap/extension-list-item@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-RLUodzFispIe1adarCEzf+OfaGZna/WR/k/HqPnbflSiJ6/I2P5MqI+ELjGGvc53eanf3+KpsHlB2Pganp8sMA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-ordered-list@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-AyhxEpc+7/TDeK4kK1kAVhmsNGEekmd3pa+Xfrajr+3w93QKJwwTdoXz9rFLj6rP8/2JWPMpxVF4DTO67olFWg==}
/@tiptap/extension-ordered-list@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-6QLUm90wz2lfzWGV4fX5NOOFA8zKlcDBNrTeOd0V7H4fcafLmANqU/5o4LLNJmK8y8f1YAvmHr9xgciqggGJJA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-paragraph@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-QPpv+PR3LfOcRpWTDXvQ904yJ4+3AGNOCXAoW/I0qzW/rb0h1vTSUrknGGR6gzxaDwPsUqewVmxL/ZejO/EKfQ==}
/@tiptap/extension-paragraph@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-JwCKSFjBLd9xAmxLe7hf1h4AucDvkGTfDb/wA1jId64g+uf0/tm6RDjnk/QD+D2YzoLGFLjQm0GAdPXTmyTPdA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-placeholder@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-a6jtylXlUUl/GmPfbBf2pVHcm60RnZWVO5V2H/WTLzzzl+jUuPKeXyS3ISyaueCOSq9zEsvOQz+DQjiFsUEhdw==}
/@tiptap/extension-placeholder@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-C6xgWKn6LT7yhvz0RCHjzFxpstFCHUw2eXisrHlOz36SP/1EmGIBiKqJUP7ySSSQMgl4hzHDhj6W1KyGdsyYaA==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-strike@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-rGt/A8H5H1fFaxKFI7J8vNJOzUpgThDMSewuaHngGZN0+8Dd5opmXWUjwEEVqWWVP43L3uO8i8+d8V1/WPMV+Q==}
/@tiptap/extension-strike@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-Z1hmBK1QWMMGDV2MJ3KBDiMuzcScjyx88cP5ln5G7626Zxeqywf84KF+2WyHBzJWfwMWpAouzwHKe9ld39Vu1w==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-table-cell@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-s2hO3ZW+iszjBgKJlGapNY5N4DIcVVUpHrZngNzGmv0EbbLYCyFoGQKAaJhq0z335rW5Hq+k19BE0HKI3jc1pQ==}
/@tiptap/extension-table-cell@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-qHKQAfPSLaTb4A9f/++YPX4uC+F8LFxuNfgOIMzEJbPxSJ00KJp56YM1w0ctAJIZoxHWN7USRW6RYm995aLblg==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-table-header@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-5MmoT6ZmRzYZorXdqkiWaph02ZQBecoHd/vTpYMD1CwD7sEP+2Oij11jJq6URbvVDLEZU8LqT0wlC+Fo4O7J8A==}
/@tiptap/extension-table-header@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-RIyHNPTUhLHSNMQnqGG1rd53qxIwVbnb3AIANDV/KWpaACDgAOLJvdH/+oRiVe5C9BlAw6l9kGDr8iBAhBdnWw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-table-row@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-fKqXouDfHVZrpcbCPEluHiJOqkSfNHyqS+IA1DQvM/3kWpqfh8GMs7ZQJI2RGXmgqUul0sbDpB7jT3OD3cPhmw==}
/@tiptap/extension-table-row@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-fVoNuef+YX7HyGpgljdphYdoxmbRjs/WJZDYsbXSmNaNc6I1jT9gpeBmRcVaB8oqrtIaE1GaR7u6Ricp4tpkVA==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-table@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-7mEytHrY7eLaJHyHNwC5l7IXHMTBF2HydCX/sF5Z3oNh63bCGWo/5NjvW6fjJd9B6KQ5yH5ec+gO7uPaf/555w==}
/@tiptap/extension-table@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-Xvi0GyHYKBL3KQ5CiayDxjMecEIdokZDTjczPzDB1VYiHwM1/PFFWqJlhmSSOzGgcyjwV8/Pn6eumqM3rCqKFw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-task-item@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-0jjVlhDhfkfXN78310BAk9w+9q7+Xkvi53LsCyQGxaGkypDOjTdPLY94vmaopmjwkKhBRJFGYmGzc9zENMAWhA==}
/@tiptap/extension-task-item@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-kqeoAPAh3TGhAiJMkFlVcRzI765MB4KzGL9fJEQY7oeZF8FG9mYcMlqD7SkpdmV5UOJ+uWByIca4yWwHoyBIUg==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/extension-task-list@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-E9YYoyRjJZRIZPDGaq7LIoz1loQ6Tz8Ri+EeObkf2GIKTohzLQz3GQk8mpuoLFWAr3P+VGEq2857aQFj2P9mNQ==}
/@tiptap/extension-task-list@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-NZzjK8SN3LZcjnwHLiCYPrNRs4nqax+b36GqB1o4GC1Vqmkt8ynW+MII09i08LhBYVJSX2yzRKPE2RDhCeAWig==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-text@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-TpYbSmJOItU0OkydnRgKFT0BpZpS4E1GC/rlpc7R3f+lL8VMuS7AnZKFQj8A7F8mEEWAWZtDIjLPvY3SztVtVg==}
/@tiptap/extension-text@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-XzSJmAj32uYpaL/9FX3tRSU52DwZ9w+3yEffIcSN9MSwioqLsSolXOz7TuJfW6lSTar1ml9UPlRqX4dpayUTDQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-typography@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-oZ3KLj6VDHlFGhDHMGbj2u6JL3Svk3E3xMQD/ON3/WyHm0gv8L0i373cn1DgBddnLJTcYvQIDl/q1i1y3lCSng==}
/@tiptap/extension-typography@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-1lQzgcnviYV/wm78YB4CIuVI4is0bLGxxEjrDjOexEYINbBJAEESYeUZjwVyU7VKJRWO/0rpwtFJ7D/BVibMkQ==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/extension-underline@2.1.15(@tiptap/core@2.1.15):
resolution: {integrity: sha512-GennZVVC0QI7An7CRsnHykYPZnHAQWG8o8l+4Stg3UcGym7xH9tUv3JNxiDbjijw/jHDQVf7FJtjTNH749+4NA==}
/@tiptap/extension-underline@2.1.16(@tiptap/core@2.1.16):
resolution: {integrity: sha512-OXGzIlKz5fA9BRdqC+HOkLFfJULfq2kOXc0ipKLoUq5sNoMGvmxnJbgv+mczKCDoJR/F3NsDCHQXLmaW7AYvcw==}
peerDependencies:
'@tiptap/core': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
dev: false
/@tiptap/pm@2.1.15:
resolution: {integrity: sha512-iQYr1XBWqrILzNYKWeCTmF83AhYKuONukIKf09QD2kLwlR2ZRca3NM4U3KFs3oHYt5xjdFrT95U8nmCIs10VEQ==}
/@tiptap/pm@2.1.16:
resolution: {integrity: sha512-yibLkjtgbBSnWCXbDyKM5kgIGLfMvfbRfFzb8T0uz4PI/L54o0a4fiWSW5Fg10B5+o+NAXW2wMxoId8/Tw91lQ==}
dependencies:
prosemirror-changeset: 2.2.1
prosemirror-collab: 1.3.1
@ -4685,27 +4685,27 @@ packages:
prosemirror-view: 1.32.1
dev: false
/@tiptap/suggestion@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15):
resolution: {integrity: sha512-m2Hv4nOBKd1LTDCZFxRz8v9KSW+WmA0Z1XZTRRu4M8YkDlgTuzLuOTHwITa+zpUAHzuESgEATK+Pl2NyOqUv6g==}
/@tiptap/suggestion@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16):
resolution: {integrity: sha512-3kYgpT1oTSgjLesAU3rV3lkcqVRV9K520/tA1IhXAC+UsofUEkflXftoMnaJjwgEfKM3n87uJlyPFEUBiC7xYg==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
dev: false
/@tiptap/vue-3@2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)(vue@3.4.8):
resolution: {integrity: sha512-EubApxGbpAVD7+fQ9h0xSd/hbyDI+fF91LGHeBHEZA2gLX8XX3cSXRlPWcEYvvB1VeTfUfxnY912uVAGRm9m9Q==}
/@tiptap/vue-3@2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)(vue@3.4.8):
resolution: {integrity: sha512-pvfIsBAyFeZVllnl38DFX8X11XMvFcT2/vViAtkDwJpX2W/m/nmxOSlEnqmOEzC+sbFqk7bhKpBVElaROV+U0w==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
vue: ^3.0.0
dependencies:
'@tiptap/core': 2.1.15(@tiptap/pm@2.1.15)
'@tiptap/extension-bubble-menu': 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
'@tiptap/extension-floating-menu': 2.1.15(@tiptap/core@2.1.15)(@tiptap/pm@2.1.15)
'@tiptap/pm': 2.1.15
'@tiptap/core': 2.1.16(@tiptap/pm@2.1.16)
'@tiptap/extension-bubble-menu': 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/extension-floating-menu': 2.1.16(@tiptap/core@2.1.16)(@tiptap/pm@2.1.16)
'@tiptap/pm': 2.1.16
vue: 3.4.8(typescript@5.3.3)
dev: false
@ -5087,11 +5087,11 @@ packages:
- supports-color
dev: true
/@vitejs/plugin-vue@4.6.2(vite@5.0.11)(vue@3.4.8):
resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==}
engines: {node: ^14.18.0 || >=16.0.0}
/@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.8):
resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^4.0.0 || ^5.0.0
vite: ^5.0.0
vue: ^3.2.25
dependencies:
vite: 5.0.11(@types/node@20.10.8)(sass@1.69.7)(terser@5.24.0)
@ -7536,8 +7536,8 @@ packages:
strip-bom-string: 1.0.0
dev: true
/happy-dom@12.10.3:
resolution: {integrity: sha512-JzUXOh0wdNGY54oKng5hliuBkq/+aT1V3YpTM+lrN/GoLQTANZsMaIvmHiHe612rauHvPJnDZkZ+5GZR++1Abg==}
/happy-dom@13.1.4:
resolution: {integrity: sha512-f8STa4iuJcpXn7YjgqBEemzinyPAdjlHMxlCNbIERdRIjJO9Z9Cj3XW5LuiEhsURFfl0AOWqj0hQitme4gq+Gg==}
dependencies:
css.escape: 1.5.1
entities: 4.5.0
@ -11134,7 +11134,7 @@ packages:
fsevents: 2.3.3
dev: true
/vitest@1.1.3(@types/node@20.10.8)(happy-dom@12.10.3)(sass@1.69.7)(terser@5.24.0):
/vitest@1.1.3(@types/node@20.10.8)(happy-dom@13.1.4)(sass@1.69.7)(terser@5.24.0):
resolution: {integrity: sha512-2l8om1NOkiA90/Y207PsEvJLYygddsOyr81wLQ20Ra8IlLKbyQncWsGZjnbkyG2KwwuTXLQjEPOJuxGMG8qJBQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@ -11170,7 +11170,7 @@ packages:
chai: 4.3.10
debug: 4.3.4(supports-color@8.1.1)
execa: 8.0.1
happy-dom: 12.10.3
happy-dom: 13.1.4
local-pkg: 0.5.0
magic-string: 0.30.5
pathe: 1.1.1

View File

@ -4,6 +4,11 @@
"extends": [
"config:js-app"
],
"hostRules": [
{
"timeout": 600000
}
],
"packageRules": [
{
"matchPackageNames": ["happy-dom"],

View File

@ -128,9 +128,11 @@ const flatPickrDate = computed({
return
}
const oldDate = formatDate(date.value, 'yyy-LL-dd H:mm')
if (oldDate !== newValue) {
return
if (date.value !== null) {
const oldDate = formatDate(date.value, 'yyy-LL-dd H:mm')
if (oldDate === newValue) {
return
}
}
date.value = createDateFromString(newValue)
updateData()

View File

@ -110,7 +110,7 @@
v-tooltip="$t('input.editor.bulletList')"
>
<span class="icon">
<icon :icon="['fa', 'fa-list-ol']"/>
<icon :icon="['fa', 'fa-list-ul']"/>
</span>
</BaseButton>
<BaseButton
@ -120,7 +120,7 @@
v-tooltip="$t('input.editor.orderedList')"
>
<span class="icon">
<icon :icon="['fa', 'fa-list-ul']"/>
<icon :icon="['fa', 'fa-list-ol']"/>
</span>
</BaseButton>
<BaseButton

View File

@ -671,36 +671,17 @@ watch(
line-height: 1.1;
}
a {
color: #68cef8;
}
code {
background-color: rgba(#616161, 0.1);
color: #616161;
background-color: var(--grey-200);
color: var(--grey-700);
}
pre {
background: #0d0d0d;
color: #fff;
background: var(--grey-200);
color: var(--grey-700);
font-family: 'JetBrainsMono', monospace;
padding: 0.75rem 1rem;
border-radius: 0.5rem;
code {
color: inherit;
padding: 0;
background: none;
font-size: 0.8rem;
}
}
pre {
background: #0d0d0d;
color: #fff;
font-family: 'JetBrainsMono', monospace;
padding: 0.75rem 1rem;
border-radius: 0.5rem;
border-radius: $radius;
code {
color: inherit;
@ -711,7 +692,7 @@ watch(
.hljs-comment,
.hljs-quote {
color: #616161;
color: var(--grey-500);
}
.hljs-variable,
@ -724,7 +705,7 @@ watch(
.hljs-name,
.hljs-selector-id,
.hljs-selector-class {
color: #f98181;
color: var(--code-variable);
}
.hljs-number,
@ -734,23 +715,23 @@ watch(
.hljs-literal,
.hljs-type,
.hljs-params {
color: #fbbc88;
color: var(--code-literal);
}
.hljs-string,
.hljs-symbol,
.hljs-bullet {
color: #b9f18d;
color: var(--code-symbol);
}
.hljs-title,
.hljs-section {
color: #faf594;
color: var(--code-section);
}
.hljs-keyword,
.hljs-selector-tag {
color: #70cff8;
color: var(--code-keyword);
}
.hljs-emphasis {

View File

@ -1,5 +1,5 @@
<template>
<slot name="trigger" :isOpen="open" :toggle="toggle"></slot>
<slot name="trigger" :isOpen="open" :toggle="toggle" :close="close"></slot>
<div
class="popup"
:class="{
@ -8,7 +8,7 @@
}"
ref="popup"
>
<slot name="content" :isOpen="open" :toggle="toggle"/>
<slot name="content" :isOpen="open" :toggle="toggle" :close="close"/>
</div>
</template>

View File

@ -51,6 +51,7 @@ import Multiselect from '@/components/input/multiselect.vue'
import type {ILabel} from '@/modelTypes/ILabel'
import {useLabelStore} from '@/stores/labels'
import {useTaskStore} from '@/stores/tasks'
import {getRandomColorHex} from '@/helpers/color/randomColor'
const props = defineProps({
modelValue: {
@ -132,7 +133,10 @@ async function createAndAddLabel(title: string) {
return
}
const newLabel = await labelStore.createLabel(new LabelModel({title}))
const newLabel = await labelStore.createLabel(new LabelModel({
title,
hexColor: getRandomColorHex(),
}))
addLabel(newLabel, false)
labels.value.push(newLabel)
success({message: t('task.label.addCreateSuccess')})

View File

@ -9,7 +9,7 @@
{{ reminderText }}
</SimpleButton>
</template>
<template #content="{isOpen, toggle}">
<template #content="{isOpen, close}">
<Card class="reminder-options-popup" :class="{'is-open': isOpen}" :padding="false">
<div class="options" v-if="activeForm === null">
<SimpleButton
@ -17,7 +17,7 @@
:key="k"
class="option-button"
:class="{'currently-active': p.relativePeriod === modelValue?.relativePeriod && modelValue?.relativeTo === p.relativeTo}"
@click="setReminderFromPreset(p, toggle)"
@click="setReminderFromPreset(p, close)"
>
{{ formatReminder(p) }}
</SimpleButton>
@ -40,20 +40,20 @@
<ReminderPeriod
v-if="activeForm === 'relative'"
v-model="reminder"
@update:modelValue="updateDataAndMaybeClose(toggle)"
@update:modelValue="updateDataAndMaybeClose(close)"
/>
<DatepickerInline
v-if="activeForm === 'absolute'"
v-model="reminderDate"
@update:modelValue="setReminderDate(toggle)"
@update:modelValue="setReminderDate(close)"
/>
<x-button
v-if="showFormSwitch !== null"
class="reminder__close-button"
:shadow="false"
@click="toggle"
@click="updateDataAndMaybeClose(close)"
>
{{ $t('misc.confirm') }}
</x-button>
@ -148,25 +148,26 @@ function updateData() {
}
}
function setReminderDate(toggle) {
function setReminderDate(close) {
reminder.value.reminder = reminderDate.value === null
? null
: new Date(reminderDate.value)
reminder.value.relativeTo = null
reminder.value.relativePeriod = 0
updateDataAndMaybeClose(toggle)
updateDataAndMaybeClose(close)
}
function setReminderFromPreset(preset, toggle) {
function setReminderFromPreset(preset, close) {
reminder.value = preset
updateData()
toggle()
close()
}
function updateDataAndMaybeClose(toggle) {
function updateDataAndMaybeClose(close) {
updateData()
if (clearAfterUpdate) {
toggle()
close()
}
}

View File

@ -55,6 +55,7 @@ import TaskReminderModel from '@/models/taskReminder'
import type {ITaskReminder} from '@/modelTypes/ITaskReminder'
import {REMINDER_PERIOD_RELATIVE_TO_TYPES, type IReminderPeriodRelativeTo} from '@/types/IReminderPeriodRelativeTo'
import {useDebounceFn} from '@vueuse/core'
const {
modelValue,
@ -105,7 +106,7 @@ function updateData() {
reminder.value.relativeTo = period.value.relativeTo
reminder.value.reminder = null
emit('update:modelValue', reminder.value)
useDebounceFn(() => emit('update:modelValue', reminder.value), 1000)
}
</script>

View File

@ -288,6 +288,7 @@ async function markAsDone(checked: boolean) {
title: t('task.undo'),
callback: () => undoDone(checked),
}])
updateDueDate()
}
if (checked) {

View File

@ -4,8 +4,8 @@
* @param color
* @returns {string}
*/
export function colorFromHex(color: string) {
if (color.substring(0, 1) === '#') {
export function colorFromHex(color: string): string {
if (color !== '' && color.substring(0, 1) === '#') {
color = color.substring(1, 7)
}

View File

@ -5,7 +5,6 @@ import type {ILabel} from '@/modelTypes/ILabel'
import type {IUser} from '@/modelTypes/IUser'
import {colorIsDark} from '@/helpers/color/colorIsDark'
import {getRandomColorHex} from '@/helpers/color/randomColor'
export default class LabelModel extends AbstractModel<ILabel> implements ILabel {
id = 0
@ -24,12 +23,8 @@ export default class LabelModel extends AbstractModel<ILabel> implements ILabel
constructor(data: Partial<ILabel> = {}) {
super()
this.assignData(data)
if (this.hexColor === '') {
this.hexColor = getRandomColorHex()
}
if (this.hexColor.substring(0, 1) !== '#') {
if (this.hexColor !== '' && this.hexColor.substring(0, 1) !== '#') {
this.hexColor = '#' + this.hexColor
}
this.textColor = colorIsDark(this.hexColor) ? '#4a4a4a' : '#fff'

View File

@ -67,7 +67,7 @@ export const useLabelStore = defineStore('label', () => {
}
function setLabel(label: ILabel) {
labels.value[label.id] = label
labels.value[label.id] = {...label}
update(label)
}

View File

@ -29,6 +29,7 @@ import {useBaseStore} from '@/stores/base'
import ProjectUserService from '@/services/projectUsers'
import {useAuthStore} from '@/stores/auth'
import TaskCollectionService from '@/services/taskCollection'
import {getRandomColorHex} from '@/helpers/color/randomColor'
interface MatchedAssignee extends IUser {
match: string,
@ -337,7 +338,10 @@ export const useTaskStore = defineStore('task', () => {
let label = validateLabel(Object.values(labelStore.labels), labelTitle)
if (typeof label === 'undefined') {
// label not found, create it
const labelModel = new LabelModel({title: labelTitle})
const labelModel = new LabelModel({
title: labelTitle,
hexColor: getRandomColorHex(),
})
label = await labelStore.createLabel(labelModel)
}
return label

View File

@ -256,6 +256,13 @@
--card-border-color: var(--grey-200);
--logo-text-color: hsl(180, 1%, 15%);
// Code colors
--code-variable: #da2222;
--code-literal: #fd8a09;
--code-symbol: #0ead69;
--code-section: #3a86ff;
--code-keyword: #8338ec;
&.dark {
@media screen {
// Light mode colours reversed for dark mode
@ -311,6 +318,13 @@
--scheme-invert: var(--grey-900);
--scheme-invert-bis: var(--grey-900);
--scheme-invert-ter: var(--grey-800);
// Code colors
--code-variable: #f98181;
--code-literal: #fbbc88;
--code-symbol: #b9f18d;
--code-section: #faf594;
--code-keyword: #70cff8;
}
}
}

View File

@ -150,8 +150,8 @@ function deleteLabel(label: ILabel) {
}
function editLabelSubmit() {
return labelStore.updateLabel(labelEditLabel.value)
}
return labelStore.updateLabel(labelEditLabel.value)
}
function editLabel(label: ILabel) {
if (label.createdBy.id !== userInfo.value.id) {

View File

@ -35,7 +35,7 @@
</template>
<script setup lang="ts">
import {computed, ref} from 'vue'
import {computed, onBeforeMount, ref} from 'vue'
import {useI18n} from 'vue-i18n'
import {useRouter} from 'vue-router'
@ -46,6 +46,7 @@ import LabelModel from '@/models/label'
import {useLabelStore} from '@/stores/labels'
import {useTitle} from '@/composables/useTitle'
import {success} from '@/message'
import {getRandomColorHex} from '@/helpers/color/randomColor'
const router = useRouter()
@ -55,6 +56,8 @@ useTitle(() => t('label.create.title'))
const labelStore = useLabelStore()
const label = ref(new LabelModel())
onBeforeMount(() => label.value.hexColor = getRandomColorHex())
const showError = ref(false)
const loading = computed(() => labelStore.isLoading)

View File

@ -179,7 +179,23 @@ watch(
if (projectId < 0) {
return
}
tasks.value = tasks.value.filter(t => typeof t.relatedTasks?.parenttask === 'undefined')
const tasksById = {}
tasks.value.forEach(t => tasksById[t.id] = true)
tasks.value = tasks.value.filter(t => {
if (typeof t.relatedTasks?.parenttask === 'undefined') {
return true
}
// If the task is a subtask, make sure the parent task is available in the current view as well
for (const pt of t.relatedTasks.parenttask) {
if(typeof tasksById[pt.id] === 'undefined') {
return true
}
}
return false
})
},
)