Drag-and-drop-Plugin

Das Drag-and-drop-Plugin ermöglicht die interaktive Terminverwaltung: Termine lassen sich direkt im Kalenderraster verschieben, in der Größe ändern und anlegen.

Installation

Installieren Sie das Plugin mit Ihrem bevorzugten Paketmanager:

npm install @dayflow/plugin-drag
pnpm add @dayflow/plugin-drag
yarn add @dayflow/plugin-drag
bun add @dayflow/plugin-drag
import { createDragPlugin } from '@dayflow/plugin-drag';

Verwendung

import { useCalendarApp, DayFlowCalendar } from '@dayflow/react';
import { createDragPlugin } from '@dayflow/plugin-drag';

function MyCalendar() {
  const dragPlugin = createDragPlugin({
    enableDrag: true,
    enableResize: true,
    enableCreate: true,
    onEventDrop: (updated, original) => {
      console.log('Event moved:', updated);
    },
    onEventResize: (updated, original) => {
      console.log('Event resized:', updated);
    },
  });

  const calendar = useCalendarApp({
    views: [
      /* your views */
    ],
    plugins: [dragPlugin],
  });

  return <DayFlowCalendar calendar={calendar} />;
}
<template>
  <DayFlowCalendar :calendar="calendar" />
</template>

<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import { createDragPlugin } from '@dayflow/plugin-drag';

const dragPlugin = createDragPlugin({
  enableDrag: true,
  enableResize: true,
  enableCreate: true,
  onEventDrop: (updated, original) => {
    console.log('Event moved:', updated);
  },
  onEventResize: (updated, original) => {
    console.log('Event resized:', updated);
  },
});

const calendar = useCalendarApp({
  views: [
    /* your views */
  ],
  plugins: [dragPlugin],
});
</script>
import { Component } from '@angular/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
import { createDragPlugin } from '@dayflow/plugin-drag';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [DayFlowCalendarModule],
  template: `<dayflow-calendar [calendar]="calendar"></dayflow-calendar>`
})
export class AppComponent {
  dragPlugin = createDragPlugin({
    enableDrag: true,
    enableResize: true,
    enableCreate: true,
    onEventDrop: (updated, original) => {
      console.log('Event moved:', updated);
    },
    onEventResize: (updated, original) => {
      console.log('Event resized:', updated);
    },
  });

  calendar = {
    views: [
      /* your views */
    ],
    plugins: [this.dragPlugin]
  };
}
<script>
  import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
  import { createDragPlugin } from '@dayflow/plugin-drag';

  const dragPlugin = createDragPlugin({
    enableDrag: true,
    enableResize: true,
    enableCreate: true,
    onEventDrop: (updated, original) => {
      console.log('Event moved:', updated);
    },
    onEventResize: (updated, original) => {
      console.log('Event resized:', updated);
    },
  });

  const calendar = useCalendarApp({
    views: [
      /* your views */
    ],
    plugins: [dragPlugin],
  });
</script>

<DayFlowCalendar {calendar} />

Konfiguration

EigenschaftTypStandardBeschreibung
enableDragbooleantrueErlaubt das Verschieben von Terminen per Ziehen.
enableResizebooleantrueErlaubt das Ändern der Termindauer per Größenänderung.
enableCreatebooleantrueErlaubt das Anlegen von Terminen per Doppelklick im Raster.
enableAllDayCreatebooleantrueErlaubt das Anlegen ganztägiger Termine durch Ziehen in der Ganztagszeile.
supportedViewsViewType[][DAY, WEEK, MONTH, YEAR]Ansichten, in denen Drag-and-drop aktiv ist.
onEventDropFunctionCallback beim Verschieben eines Termins (Drag-and-drop).
onEventResizeFunctionCallback beim Ändern der Termingröße.

Plugin-API

Über den Drag-Dienst können Sie die Konfiguration zur Laufzeit ändern:

const dragService = calendar.app.getPlugin<DragService>('drag');

// Disable resizing dynamically
dragService.updateConfig({ enableResize: false });

Auf dieser Seite