JSFiddle - React, Tailwind, and code Playground

JavaScript

window.bxCLDRConfig =
	_.defaults(window.bxCLDRConfig || {}, {


		onlyBitrix: false,


		body: 'television',


		defaultEventTitle: 'Событие!',


		defaultEventClass: 'calendarEvent',


		popupId: 'eventsCalendarPopup',


		animationSpeed: 100,


		calendarId: 'eventsCalendar',


		wrapperId: 'calendarWrapper',


		calendarJSBaseUrl: window.calendarJSBaseURL,


		jqueryMinVer: '2.1.0',


		ajax: true,


		dataUrl: '/calendar/data',


		checkLibsAvailability: false,


		showOnHover: false,


		epointParserOff: true,


		showRange: true,


		markStyle: false,


		selectionType: 'SEL_SINGLE',


		animation: true,


		min: null,


		max: null,


		noScroll: false,


		showTime: false,


		weekNumbers: false,


		rangePrefix: 'e',


		markIntersect: true,


		cleanslateClass: 'cleanslate',


		messages: {
			'10001': "10001: Ошибка инициализации!",
			'10002': "10002: Ошибка загрузки данных с сервера!",
			'10003': "10003: Неправильная версия jQuery. Требуется - %s",
			'10004': "10004: Ошибка загрузки главной библиотеки 'Calendar'",
			'10005': "10005: Ошибка. Нет скрипта - %s",
			'10006': "10006: Ошибка. Не найден контейнер календаря - #%s"
		}
	});

try {

	(function ($) {
		$(function () {

			var config = window.bxCLDRConfig;

			var _cache = {};

			_cache.popup = null;
			_cache.$popup = null;
			_cache.$wrapper = $('[id=' + config.wrapperId + ']');
			_cache.$calendar = $('[id=' + config.calendarId + ']');
			_cache.$legend = $('div.calendar-info-footer', _cache.$wrapper);
			_cache.templates = {};
			_cache.templates.popup = null;
			_cache.templates.row = null;
			_cache.calendar = null;
			_cache.data = null;
			_cache.lang = {};

			var $body = $('[id=' + config.body + ']');
			var toggler = toggle({});
			loadJSON(function (data) {
				if (data) {
					_cache.data = data || [];
					initialize(function (err) {
						if (err) {
							throw new Error(err);
						}
					});
				}
			});


			function Templates() {

				var popupTemplate =...