diff --git a/frontend/components.d.ts b/frontend/components.d.ts
index 1c0424ef..afd1538b 100644
--- a/frontend/components.d.ts
+++ b/frontend/components.d.ts
@@ -196,10 +196,8 @@ declare module 'vue' {
LucideCalendar: typeof import('~icons/lucide/calendar')['default']
LucideChevronLeft: typeof import('~icons/lucide/chevron-left')['default']
LucideChevronRight: typeof import('~icons/lucide/chevron-right')['default']
- LucideEarth: typeof import('~icons/lucide/earth')['default']
- LucideLetterText: typeof import('~icons/lucide/letter-text')['default']
- LucidePlus: typeof import('~icons/lucide/plus')['default']
- LucideText: typeof import('~icons/lucide/text')['default']
+ LucideCopy: typeof import('~icons/lucide/copy')['default']
+ LucideTrash2: typeof import('~icons/lucide/trash2')['default']
LucideX: typeof import('~icons/lucide/x')['default']
MarkAsDoneIcon: typeof import('./src/components/Icons/MarkAsDoneIcon.vue')['default']
MaximizeIcon: typeof import('./src/components/Icons/MaximizeIcon.vue')['default']
diff --git a/frontend/src/components/Modals/EventModal.vue b/frontend/src/components/Modals/EventModal.vue
index d504263c..fa54524d 100644
--- a/frontend/src/components/Modals/EventModal.vue
+++ b/frontend/src/components/Modals/EventModal.vue
@@ -4,15 +4,30 @@
- {{ editMode ? __('Edit an event') : __('Create an event') }}
+ {{
+ mode === 'edit'
+ ? __('Edit an event')
+ : mode === 'duplicate'
+ ? __('Duplicate an event')
+ : __('Create an event')
+ }}
-
@@ -138,7 +161,7 @@ import {
} from 'frappe-ui'
import { globalStore } from '@/stores/global'
import { getFormat } from '@/utils'
-import { onMounted, ref } from 'vue'
+import { onMounted, ref, computed } from 'vue'
const props = defineProps({
event: {
@@ -162,7 +185,13 @@ const events = defineModel('events')
const title = ref(null)
const error = ref(null)
-const editMode = ref(false)
+const mode = computed(() => {
+ return _event.value.id == 'duplicate'
+ ? 'duplicate'
+ : _event.value.id
+ ? 'edit'
+ : 'create'
+})
const _event = ref({
title: '',
@@ -181,9 +210,7 @@ onMounted(() => {
let start = dayjs(props.event.starts_on)
let end = dayjs(props.event.ends_on)
- if (props.event.name) {
- editMode.value = true
- } else {
+ if (!props.event.name) {
start = dayjs()
end = dayjs().add(1, 'hour')
}
@@ -300,6 +327,14 @@ function updateEvent() {
)
}
+function duplicateEvent() {
+ if (!_event.value.id) return
+
+ _event.value.id = 'duplicate'
+ _event.value.title = _event.value.title + ' (Copy)'
+ setTimeout(() => title.value?.el?.focus(), 100)
+}
+
function deleteEvent() {
if (!_event.value.id) return