Plugin de glisser-déposer

Le plugin glisser-déposer active la gestion interactive des événements : les utilisateurs peuvent déplacer, redimensionner et créer des événements directement sur la grille du calendrier.

Installation

Installez le plugin avec votre gestionnaire de paquets préféré :

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';

Utilisation

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} />

Configuration

PropriétéTypePar défautDescription
enableDragbooleantrueAutorise le déplacement des événements par glisser.
enableResizebooleantrueAutorise la modification de la durée d'un événement par redimensionnement.
enableCreatebooleantrueAutorise la création d'événements par double-clic sur la grille.
enableAllDayCreatebooleantrueAutorise la création d'événements sur la journée entière en glissant dans la ligne dédiée.
supportedViewsViewType[][DAY, WEEK, MONTH, YEAR]Vues dans lesquelles le glisser est activé.
onEventDropFunctionCallback déclenché lorsqu'un événement est déplacé (glisser-déposer).
onEventResizeFunctionCallback déclenché lorsqu'un événement est redimensionné.

API du plugin

Vous pouvez accéder au service de glisser pour modifier la configuration dynamiquement :

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

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

Dans cette page