External Draggable Events

My Event 1
My Event 2
My Event 3
My Event 4
My Event 5

Full Calendar full-sized, drag & drop event calendar in JavaScript

Show Code

            -- required js/ css
            <link href="asset/plugin/fullcalendar/lib/main.min.css"  rel="stylesheet" type="text/css" />
            <script src="asset/plugin/fullcalendar/lib/main.min.js"></script>

            -- html

            <div class="row">
            <div class="col-lg-3">
            	<!--begin::Card-->
            	<div class="card card-custom card-stretch">
            		<div class="card-body">
            			<h3 class="mb-4">External Draggable Events</h3>
            			<div id='external-events'>
            				<!-- -->
            				<div class='fc-event   p-2 mb-2'>
            					<div class='fc-event-main'>My Event 1</div>
            				</div>
            				<div class='fc-event   p-2 mb-2'>
            					<div class='fc-event-main'>My Event 2</div>
            				</div>
            				<div class='fc-event   p-2 mb-2'>
            					<div class='fc-event-main'>My Event 3</div>
            				</div>				
            				<p>
            					<input type='checkbox' id='drop-remove' />
            					<label for='drop-remove'>remove after drop</label>
            				</p>
            			</div>
            		</div> <!-- end card-body-->
            	</div> <!-- end card-->
            </div><!-- end class-->
            <div class="col-lg-9">
            	<div class="card card-custom card-stretch">
            		<div class="card-header">
            			<div class="card-title">
            				<h3 class="mb-4">Full Calendar <small> full-sized, drag & drop event calendar in JavaScript</small></h3>
            			</div>
            			<div class="card-toolbar">
            				<a href="#" class="btn btn-light-primary font-weight-bold">
            					<i data-feather="plus"></i>Add Event
            				</a>
            			</div>
            		</div>
            		<div class="card-body">
            			<div id='calendar-container'>
            				<div id='calendar'></div>
            			</div>
            		</div>  <!-- end card-->
            	</div>  <!--end::Card-->
            </div>
            </div>

            -- JS code
            <script type="text/javascript">

            	document.addEventListener('DOMContentLoaded', function () {
            		var Calendar = FullCalendar.Calendar;
            		var Draggable = FullCalendar.Draggable;

            		var containerEl = document.getElementById('external-events');
            		var calendarEl = document.getElementById('calendar');
            		var checkbox = document.getElementById('drop-remove');

            		// initialize the external events
            		// -----------------------------------------------------------------

            		new Draggable(containerEl, {
            			itemSelector: '.fc-event',
            			eventData: function (eventEl) {

            				return {
            					title: eventEl.innerText

            				};
            			}
            		});

            		// initialize the calendar
            		// -----------------------------------------------------------------

            		var calendar = new Calendar(calendarEl, {
            			headerToolbar: {
            				left: 'prev,next today',
            				center: 'title',
            				right: 'dayGridMonth,timeGridWeek,timeGridDay'
            			},
            			editable: true,
            			droppable: true, // this allows things to be dropped onto the calendar
            			drop: function (info) {
            				// is the "remove after drop" checkbox checked?
            				if (checkbox.checked) {
            					// if so, remove the element from the "Draggable Events" list
            					info.draggedEl.parentNode.removeChild(info.draggedEl);
            				}
            			}
            		});
            		calendar.render();
            	});

            </script>