decidim-calendar 0.13.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-AGPLv3.txt +661 -0
  3. data/README.md +9 -0
  4. data/Rakefile +43 -0
  5. data/app/assets/config/decidim_calendar_manifest.css +2 -0
  6. data/app/assets/config/decidim_calendar_manifest.js +2 -0
  7. data/app/assets/images/decidim/calendar/icon.svg +51 -0
  8. data/app/assets/javascripts/decidim/calendar/calendar.js.es6 +6 -0
  9. data/app/assets/javascripts/decidim/calendar/gantt.js.es6 +1 -0
  10. data/app/assets/stylesheets/decidim/calendar/calendar.scss +102 -0
  11. data/app/assets/stylesheets/decidim/calendar/gantt.scss +1 -0
  12. data/app/commands/decidim/calendar/admin/create_external_event.rb +38 -0
  13. data/app/commands/decidim/calendar/admin/destroy_external_event.rb +27 -0
  14. data/app/commands/decidim/calendar/admin/update_external_event.rb +43 -0
  15. data/app/controllers/decidim/calendar/admin/application_controller.rb +23 -0
  16. data/app/controllers/decidim/calendar/admin/external_events_controller.rb +84 -0
  17. data/app/controllers/decidim/calendar/application_controller.rb +21 -0
  18. data/app/controllers/decidim/calendar/calendar_controller.rb +33 -0
  19. data/app/forms/decidim/calendar/admin/external_event_form.rb +21 -0
  20. data/app/helpers/decidim/calendar/calendar_helper.rb +57 -0
  21. data/app/models/decidim/calendar/application_record.rb +9 -0
  22. data/app/models/decidim/calendar/event.rb +25 -0
  23. data/app/models/decidim/calendar/external_event.rb +18 -0
  24. data/app/permissions/decidim/calendar/admin/permissions.rb +22 -0
  25. data/app/presenters/decidim/calendar/event_presenter.rb +104 -0
  26. data/app/queries/decidim/calendar/organization_calendar.rb +15 -0
  27. data/app/services/decidim/calendar/event_to_ical.rb +27 -0
  28. data/app/services/decidim/calendar/general_calendar.rb +13 -0
  29. data/app/services/decidim/calendar/meeting_to_event.rb +8 -0
  30. data/app/services/decidim/meetings/calendar/base_calendar.rb +61 -0
  31. data/app/views/decidim/calendar/admin/external_events/_form.html.erb +22 -0
  32. data/app/views/decidim/calendar/admin/external_events/edit.html.erb +6 -0
  33. data/app/views/decidim/calendar/admin/external_events/index.html.erb +66 -0
  34. data/app/views/decidim/calendar/admin/external_events/new.html.erb +6 -0
  35. data/app/views/decidim/calendar/calendar/gantt.html.erb +22 -0
  36. data/app/views/decidim/calendar/calendar/index.html.erb +63 -0
  37. data/app/views/decidim/shared/_extended_navigation_bar.html.erb +51 -0
  38. data/app/views/layouts/_calendar_navigation.html.erb +18 -0
  39. data/app/views/layouts/calendar.html.erb +4 -0
  40. data/config/locales/ca.yml +38 -0
  41. data/config/locales/de.yml +38 -0
  42. data/config/locales/en.yml +48 -0
  43. data/config/locales/es.yml +38 -0
  44. data/config/locales/fi.yml +38 -0
  45. data/config/locales/fr.yml +38 -0
  46. data/config/locales/it.yml +38 -0
  47. data/config/locales/pl.yml +38 -0
  48. data/config/locales/pt.yml +38 -0
  49. data/config/locales/ro.yml +38 -0
  50. data/config/locales/ru.yml +38 -0
  51. data/config/locales/sv.yml +38 -0
  52. data/config/locales/tr.yml +38 -0
  53. data/config/locales/uk.yml +38 -0
  54. data/db/migrate/20190312132654_create_decidim_calendar_external_events.rb +18 -0
  55. data/lib/decidim/calendar.rb +11 -0
  56. data/lib/decidim/calendar/admin.rb +9 -0
  57. data/lib/decidim/calendar/admin_engine.rb +30 -0
  58. data/lib/decidim/calendar/engine.rb +34 -0
  59. data/lib/decidim/calendar/participatory_space.rb +20 -0
  60. data/lib/decidim/calendar/test/factories.rb +12 -0
  61. data/lib/decidim/calendar/version.rb +10 -0
  62. data/vendor/assets/javascripts/frappe-gantt/frappe-gantt.css +119 -0
  63. data/vendor/assets/javascripts/frappe-gantt/frappe-gantt.js +1883 -0
  64. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.css +33 -0
  65. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.js +90 -0
  66. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.min.css +5 -0
  67. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.min.js +20 -0
  68. data/vendor/assets/javascripts/fullcalendar/core/locales-all.js +1353 -0
  69. data/vendor/assets/javascripts/fullcalendar/core/locales-all.min.js +6 -0
  70. data/vendor/assets/javascripts/fullcalendar/core/locales/af.js +30 -0
  71. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-dz.js +31 -0
  72. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-kw.js +31 -0
  73. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-ly.js +31 -0
  74. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-ma.js +31 -0
  75. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-sa.js +31 -0
  76. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-tn.js +31 -0
  77. data/vendor/assets/javascripts/fullcalendar/core/locales/ar.js +31 -0
  78. data/vendor/assets/javascripts/fullcalendar/core/locales/bg.js +31 -0
  79. data/vendor/assets/javascripts/fullcalendar/core/locales/bs.js +32 -0
  80. data/vendor/assets/javascripts/fullcalendar/core/locales/ca.js +30 -0
  81. data/vendor/assets/javascripts/fullcalendar/core/locales/cs.js +32 -0
  82. data/vendor/assets/javascripts/fullcalendar/core/locales/da.js +30 -0
  83. data/vendor/assets/javascripts/fullcalendar/core/locales/de.js +33 -0
  84. data/vendor/assets/javascripts/fullcalendar/core/locales/el.js +30 -0
  85. data/vendor/assets/javascripts/fullcalendar/core/locales/en-au.js +17 -0
  86. data/vendor/assets/javascripts/fullcalendar/core/locales/en-gb.js +17 -0
  87. data/vendor/assets/javascripts/fullcalendar/core/locales/en-nz.js +17 -0
  88. data/vendor/assets/javascripts/fullcalendar/core/locales/es-us.js +30 -0
  89. data/vendor/assets/javascripts/fullcalendar/core/locales/es.js +30 -0
  90. data/vendor/assets/javascripts/fullcalendar/core/locales/et.js +32 -0
  91. data/vendor/assets/javascripts/fullcalendar/core/locales/eu.js +30 -0
  92. data/vendor/assets/javascripts/fullcalendar/core/locales/fa.js +33 -0
  93. data/vendor/assets/javascripts/fullcalendar/core/locales/fi.js +30 -0
  94. data/vendor/assets/javascripts/fullcalendar/core/locales/fr-ca.js +27 -0
  95. data/vendor/assets/javascripts/fullcalendar/core/locales/fr-ch.js +31 -0
  96. data/vendor/assets/javascripts/fullcalendar/core/locales/fr.js +31 -0
  97. data/vendor/assets/javascripts/fullcalendar/core/locales/gl.js +30 -0
  98. data/vendor/assets/javascripts/fullcalendar/core/locales/he.js +27 -0
  99. data/vendor/assets/javascripts/fullcalendar/core/locales/hi.js +32 -0
  100. data/vendor/assets/javascripts/fullcalendar/core/locales/hr.js +32 -0
  101. data/vendor/assets/javascripts/fullcalendar/core/locales/hu.js +30 -0
  102. data/vendor/assets/javascripts/fullcalendar/core/locales/id.js +30 -0
  103. data/vendor/assets/javascripts/fullcalendar/core/locales/is.js +30 -0
  104. data/vendor/assets/javascripts/fullcalendar/core/locales/it.js +32 -0
  105. data/vendor/assets/javascripts/fullcalendar/core/locales/ja.js +28 -0
  106. data/vendor/assets/javascripts/fullcalendar/core/locales/ka.js +32 -0
  107. data/vendor/assets/javascripts/fullcalendar/core/locales/kk.js +32 -0
  108. data/vendor/assets/javascripts/fullcalendar/core/locales/ko.js +26 -0
  109. data/vendor/assets/javascripts/fullcalendar/core/locales/lb.js +30 -0
  110. data/vendor/assets/javascripts/fullcalendar/core/locales/lt.js +30 -0
  111. data/vendor/assets/javascripts/fullcalendar/core/locales/lv.js +32 -0
  112. data/vendor/assets/javascripts/fullcalendar/core/locales/mk.js +28 -0
  113. data/vendor/assets/javascripts/fullcalendar/core/locales/ms.js +32 -0
  114. data/vendor/assets/javascripts/fullcalendar/core/locales/nb.js +30 -0
  115. data/vendor/assets/javascripts/fullcalendar/core/locales/nl.js +30 -0
  116. data/vendor/assets/javascripts/fullcalendar/core/locales/nn.js +30 -0
  117. data/vendor/assets/javascripts/fullcalendar/core/locales/pl.js +30 -0
  118. data/vendor/assets/javascripts/fullcalendar/core/locales/pt-br.js +28 -0
  119. data/vendor/assets/javascripts/fullcalendar/core/locales/pt.js +30 -0
  120. data/vendor/assets/javascripts/fullcalendar/core/locales/ro.js +32 -0
  121. data/vendor/assets/javascripts/fullcalendar/core/locales/ru.js +32 -0
  122. data/vendor/assets/javascripts/fullcalendar/core/locales/sk.js +32 -0
  123. data/vendor/assets/javascripts/fullcalendar/core/locales/sl.js +30 -0
  124. data/vendor/assets/javascripts/fullcalendar/core/locales/sq.js +32 -0
  125. data/vendor/assets/javascripts/fullcalendar/core/locales/sr-cyrl.js +32 -0
  126. data/vendor/assets/javascripts/fullcalendar/core/locales/sr.js +32 -0
  127. data/vendor/assets/javascripts/fullcalendar/core/locales/sv.js +30 -0
  128. data/vendor/assets/javascripts/fullcalendar/core/locales/th.js +25 -0
  129. data/vendor/assets/javascripts/fullcalendar/core/locales/tr.js +30 -0
  130. data/vendor/assets/javascripts/fullcalendar/core/locales/uk.js +32 -0
  131. data/vendor/assets/javascripts/fullcalendar/core/locales/vi.js +32 -0
  132. data/vendor/assets/javascripts/fullcalendar/core/locales/zh-cn.js +33 -0
  133. data/vendor/assets/javascripts/fullcalendar/core/locales/zh-tw.js +26 -0
  134. data/vendor/assets/javascripts/fullcalendar/core/main.css +900 -0
  135. data/vendor/assets/javascripts/fullcalendar/core/main.js +8791 -0
  136. data/vendor/assets/javascripts/fullcalendar/core/main.min.css +5 -0
  137. data/vendor/assets/javascripts/fullcalendar/core/main.min.js +9 -0
  138. data/vendor/assets/javascripts/fullcalendar/daygrid/main.css +69 -0
  139. data/vendor/assets/javascripts/fullcalendar/daygrid/main.js +1630 -0
  140. data/vendor/assets/javascripts/fullcalendar/daygrid/main.min.css +5 -0
  141. data/vendor/assets/javascripts/fullcalendar/daygrid/main.min.js +20 -0
  142. data/vendor/assets/javascripts/fullcalendar/google-calendar/main.js +169 -0
  143. data/vendor/assets/javascripts/fullcalendar/google-calendar/main.min.js +20 -0
  144. data/vendor/assets/javascripts/fullcalendar/interaction/main.js +2155 -0
  145. data/vendor/assets/javascripts/fullcalendar/interaction/main.min.js +21 -0
  146. data/vendor/assets/javascripts/fullcalendar/list/main.css +101 -0
  147. data/vendor/assets/javascripts/fullcalendar/list/main.js +341 -0
  148. data/vendor/assets/javascripts/fullcalendar/list/main.min.css +5 -0
  149. data/vendor/assets/javascripts/fullcalendar/list/main.min.js +20 -0
  150. data/vendor/assets/javascripts/fullcalendar/luxon/main.js +162 -0
  151. data/vendor/assets/javascripts/fullcalendar/luxon/main.min.js +20 -0
  152. data/vendor/assets/javascripts/fullcalendar/moment-timezone/main.js +64 -0
  153. data/vendor/assets/javascripts/fullcalendar/moment-timezone/main.min.js +20 -0
  154. data/vendor/assets/javascripts/fullcalendar/moment/main.js +103 -0
  155. data/vendor/assets/javascripts/fullcalendar/moment/main.min.js +6 -0
  156. data/vendor/assets/javascripts/fullcalendar/rrule/main.js +127 -0
  157. data/vendor/assets/javascripts/fullcalendar/rrule/main.min.js +20 -0
  158. data/vendor/assets/javascripts/fullcalendar/timegrid/main.css +266 -0
  159. data/vendor/assets/javascripts/fullcalendar/timegrid/main.js +1339 -0
  160. data/vendor/assets/javascripts/fullcalendar/timegrid/main.min.css +5 -0
  161. data/vendor/assets/javascripts/fullcalendar/timegrid/main.min.js +20 -0
  162. metadata +247 -0
@@ -0,0 +1,25 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.th = factory()));
5
+ }(this, function () { 'use strict';
6
+
7
+ var th = {
8
+ code: "th",
9
+ buttonText: {
10
+ prev: "ย้อน",
11
+ next: "ถัดไป",
12
+ today: "วันนี้",
13
+ month: "เดือน",
14
+ week: "สัปดาห์",
15
+ day: "วัน",
16
+ list: "แผนงาน"
17
+ },
18
+ allDayText: "ตลอดวัน",
19
+ eventLimitText: "เพิ่มเติม",
20
+ noEventsMessage: "ไม่มีกิจกรรมที่จะแสดง"
21
+ };
22
+
23
+ return th;
24
+
25
+ }));
@@ -0,0 +1,30 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.tr = factory()));
5
+ }(this, function () { 'use strict';
6
+
7
+ var tr = {
8
+ code: "tr",
9
+ week: {
10
+ dow: 1,
11
+ doy: 7 // The week that contains Jan 1st is the first week of the year.
12
+ },
13
+ buttonText: {
14
+ prev: "geri",
15
+ next: "ileri",
16
+ today: "bugün",
17
+ month: "Ay",
18
+ week: "Hafta",
19
+ day: "Gün",
20
+ list: "Ajanda"
21
+ },
22
+ weekLabel: "Hf",
23
+ allDayText: "Tüm gün",
24
+ eventLimitText: "daha fazla",
25
+ noEventsMessage: "Gösterilecek etkinlik yok"
26
+ };
27
+
28
+ return tr;
29
+
30
+ }));
@@ -0,0 +1,32 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.uk = factory()));
5
+ }(this, function () { 'use strict';
6
+
7
+ var uk = {
8
+ code: "uk",
9
+ week: {
10
+ dow: 1,
11
+ doy: 7 // The week that contains Jan 1st is the first week of the year.
12
+ },
13
+ buttonText: {
14
+ prev: "Попередній",
15
+ next: "далі",
16
+ today: "Сьогодні",
17
+ month: "Місяць",
18
+ week: "Тиждень",
19
+ day: "День",
20
+ list: "Порядок денний"
21
+ },
22
+ weekLabel: "Тиж",
23
+ allDayText: "Увесь день",
24
+ eventLimitText: function (n) {
25
+ return "+ще " + n + "...";
26
+ },
27
+ noEventsMessage: "Немає подій для відображення"
28
+ };
29
+
30
+ return uk;
31
+
32
+ }));
@@ -0,0 +1,32 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.vi = factory()));
5
+ }(this, function () { 'use strict';
6
+
7
+ var vi = {
8
+ code: "vi",
9
+ week: {
10
+ dow: 1,
11
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
12
+ },
13
+ buttonText: {
14
+ prev: "Trước",
15
+ next: "Tiếp",
16
+ today: "Hôm nay",
17
+ month: "Tháng",
18
+ week: "Tuần",
19
+ day: "Ngày",
20
+ list: "Lịch biểu"
21
+ },
22
+ weekLabel: "Tu",
23
+ allDayText: "Cả ngày",
24
+ eventLimitText: function (n) {
25
+ return "+ thêm " + n;
26
+ },
27
+ noEventsMessage: "Không có sự kiện để hiển thị"
28
+ };
29
+
30
+ return vi;
31
+
32
+ }));
@@ -0,0 +1,33 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['zh-cn'] = factory()));
5
+ }(this, function () { 'use strict';
6
+
7
+ var zhCn = {
8
+ code: "zh-cn",
9
+ week: {
10
+ // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
11
+ dow: 1,
12
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
13
+ },
14
+ buttonText: {
15
+ prev: "上月",
16
+ next: "下月",
17
+ today: "今天",
18
+ month: "月",
19
+ week: "周",
20
+ day: "日",
21
+ list: "日程"
22
+ },
23
+ weekLabel: "周",
24
+ allDayText: "全天",
25
+ eventLimitText: function (n) {
26
+ return "另外 " + n + " 个";
27
+ },
28
+ noEventsMessage: "没有事件显示"
29
+ };
30
+
31
+ return zhCn;
32
+
33
+ }));
@@ -0,0 +1,26 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['zh-tw'] = factory()));
5
+ }(this, function () { 'use strict';
6
+
7
+ var zhTw = {
8
+ code: "zh-tw",
9
+ buttonText: {
10
+ prev: "上月",
11
+ next: "下月",
12
+ today: "今天",
13
+ month: "月",
14
+ week: "週",
15
+ day: "天",
16
+ list: "活動列表"
17
+ },
18
+ weekLabel: "周",
19
+ allDayText: "整天",
20
+ eventLimitText: '顯示更多',
21
+ noEventsMessage: "没有任何活動"
22
+ };
23
+
24
+ return zhTw;
25
+
26
+ }));
@@ -0,0 +1,900 @@
1
+ /*!
2
+ FullCalendar Core Package v4.0.2
3
+ Docs & License: https://fullcalendar.io/
4
+ (c) 2019 Adam Shaw
5
+ */
6
+ .fc {
7
+ direction: ltr;
8
+ text-align: left; }
9
+
10
+ .fc-rtl {
11
+ text-align: right; }
12
+
13
+ body .fc {
14
+ /* extra precedence to overcome jqui */
15
+ font-size: 1em; }
16
+
17
+ /* Colors
18
+ --------------------------------------------------------------------------------------------------*/
19
+ .fc-highlight {
20
+ /* when user is selecting cells */
21
+ background: #bce8f1;
22
+ opacity: .3; }
23
+
24
+ .fc-bgevent {
25
+ /* default look for background events */
26
+ background: #8fdf82;
27
+ opacity: .3; }
28
+
29
+ .fc-nonbusiness {
30
+ /* default look for non-business-hours areas */
31
+ /* will inherit .fc-bgevent's styles */
32
+ background: #d7d7d7; }
33
+
34
+ /* Popover
35
+ --------------------------------------------------------------------------------------------------*/
36
+ .fc-popover {
37
+ position: absolute;
38
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); }
39
+
40
+ .fc-popover .fc-header {
41
+ /* TODO: be more consistent with fc-head/fc-body */
42
+ display: flex;
43
+ flex-direction: row;
44
+ justify-content: space-between;
45
+ align-items: center;
46
+ padding: 2px 4px; }
47
+
48
+ .fc-rtl .fc-popover .fc-header {
49
+ flex-direction: row-reverse; }
50
+
51
+ .fc-popover .fc-header .fc-title {
52
+ margin: 0 2px; }
53
+
54
+ .fc-popover .fc-header .fc-close {
55
+ cursor: pointer;
56
+ opacity: 0.65;
57
+ font-size: 1.1em; }
58
+
59
+ /* Misc Reusable Components
60
+ --------------------------------------------------------------------------------------------------*/
61
+ .fc-divider {
62
+ border-style: solid;
63
+ border-width: 1px; }
64
+
65
+ hr.fc-divider {
66
+ height: 0;
67
+ margin: 0;
68
+ padding: 0 0 2px;
69
+ /* height is unreliable across browsers, so use padding */
70
+ border-width: 1px 0; }
71
+
72
+ .fc-bg,
73
+ .fc-bgevent-skeleton,
74
+ .fc-highlight-skeleton,
75
+ .fc-mirror-skeleton {
76
+ /* these element should always cling to top-left/right corners */
77
+ position: absolute;
78
+ top: 0;
79
+ left: 0;
80
+ right: 0; }
81
+
82
+ .fc-bg {
83
+ bottom: 0;
84
+ /* strech bg to bottom edge */ }
85
+
86
+ .fc-bg table {
87
+ height: 100%;
88
+ /* strech bg to bottom edge */ }
89
+
90
+ /* Tables
91
+ --------------------------------------------------------------------------------------------------*/
92
+ .fc table {
93
+ width: 100%;
94
+ box-sizing: border-box;
95
+ /* fix scrollbar issue in firefox */
96
+ table-layout: fixed;
97
+ border-collapse: collapse;
98
+ border-spacing: 0;
99
+ font-size: 1em;
100
+ /* normalize cross-browser */ }
101
+
102
+ .fc th {
103
+ text-align: center; }
104
+
105
+ .fc th,
106
+ .fc td {
107
+ border-style: solid;
108
+ border-width: 1px;
109
+ padding: 0;
110
+ vertical-align: top; }
111
+
112
+ .fc td.fc-today {
113
+ border-style: double;
114
+ /* overcome neighboring borders */ }
115
+
116
+ /* Internal Nav Links
117
+ --------------------------------------------------------------------------------------------------*/
118
+ a[data-goto] {
119
+ cursor: pointer; }
120
+
121
+ a[data-goto]:hover {
122
+ text-decoration: underline; }
123
+
124
+ /* Fake Table Rows
125
+ --------------------------------------------------------------------------------------------------*/
126
+ .fc .fc-row {
127
+ /* extra precedence to overcome themes forcing a 1px border */
128
+ /* no visible border by default. but make available if need be (scrollbar width compensation) */
129
+ border-style: solid;
130
+ border-width: 0; }
131
+
132
+ .fc-row table {
133
+ /* don't put left/right border on anything within a fake row.
134
+ the outer tbody will worry about this */
135
+ border-left: 0 hidden transparent;
136
+ border-right: 0 hidden transparent;
137
+ /* no bottom borders on rows */
138
+ border-bottom: 0 hidden transparent; }
139
+
140
+ .fc-row:first-child table {
141
+ border-top: 0 hidden transparent;
142
+ /* no top border on first row */ }
143
+
144
+ /* Day Row (used within the header and the DayGrid)
145
+ --------------------------------------------------------------------------------------------------*/
146
+ .fc-row {
147
+ position: relative; }
148
+
149
+ .fc-row .fc-bg {
150
+ z-index: 1; }
151
+
152
+ /* highlighting cells & background event skeleton */
153
+ .fc-row .fc-bgevent-skeleton,
154
+ .fc-row .fc-highlight-skeleton {
155
+ bottom: 0;
156
+ /* stretch skeleton to bottom of row */ }
157
+
158
+ .fc-row .fc-bgevent-skeleton table,
159
+ .fc-row .fc-highlight-skeleton table {
160
+ height: 100%;
161
+ /* stretch skeleton to bottom of row */ }
162
+
163
+ .fc-row .fc-highlight-skeleton td,
164
+ .fc-row .fc-bgevent-skeleton td {
165
+ border-color: transparent; }
166
+
167
+ .fc-row .fc-bgevent-skeleton {
168
+ z-index: 2; }
169
+
170
+ .fc-row .fc-highlight-skeleton {
171
+ z-index: 3; }
172
+
173
+ /*
174
+ row content (which contains day/week numbers and events) as well as "mirror" (which contains
175
+ temporary rendered events).
176
+ */
177
+ .fc-row .fc-content-skeleton {
178
+ position: relative;
179
+ z-index: 4;
180
+ padding-bottom: 2px;
181
+ /* matches the space above the events */ }
182
+
183
+ .fc-row .fc-mirror-skeleton {
184
+ z-index: 5; }
185
+
186
+ .fc .fc-row .fc-content-skeleton table,
187
+ .fc .fc-row .fc-content-skeleton td,
188
+ .fc .fc-row .fc-mirror-skeleton td {
189
+ /* see-through to the background below */
190
+ /* extra precedence to prevent theme-provided backgrounds */
191
+ background: none;
192
+ /* in case <td>s are globally styled */
193
+ border-color: transparent; }
194
+
195
+ .fc-row .fc-content-skeleton td,
196
+ .fc-row .fc-mirror-skeleton td {
197
+ /* don't put a border between events and/or the day number */
198
+ border-bottom: 0; }
199
+
200
+ .fc-row .fc-content-skeleton tbody td,
201
+ .fc-row .fc-mirror-skeleton tbody td {
202
+ /* don't put a border between event cells */
203
+ border-top: 0; }
204
+
205
+ /* Scrolling Container
206
+ --------------------------------------------------------------------------------------------------*/
207
+ .fc-scroller {
208
+ -webkit-overflow-scrolling: touch; }
209
+
210
+ /* TODO: move to timegrid/daygrid */
211
+ .fc-scroller > .fc-day-grid,
212
+ .fc-scroller > .fc-time-grid {
213
+ position: relative;
214
+ /* re-scope all positions */
215
+ width: 100%;
216
+ /* hack to force re-sizing this inner element when scrollbars appear/disappear */ }
217
+
218
+ /* Global Event Styles
219
+ --------------------------------------------------------------------------------------------------*/
220
+ .fc-event {
221
+ position: relative;
222
+ /* for resize handle and other inner positioning */
223
+ display: block;
224
+ /* make the <a> tag block */
225
+ font-size: .85em;
226
+ line-height: 1.4;
227
+ border-radius: 3px;
228
+ border: 1px solid #3788d8; }
229
+
230
+ .fc-event,
231
+ .fc-event-dot {
232
+ background-color: #3788d8;
233
+ /* default BACKGROUND color */ }
234
+
235
+ .fc-event,
236
+ .fc-event:hover {
237
+ color: #fff;
238
+ /* default TEXT color */
239
+ text-decoration: none;
240
+ /* if <a> has an href */ }
241
+
242
+ .fc-event[href],
243
+ .fc-event.fc-draggable {
244
+ cursor: pointer;
245
+ /* give events with links and draggable events a hand mouse pointer */ }
246
+
247
+ .fc-not-allowed,
248
+ .fc-not-allowed .fc-event {
249
+ /* to override an event's custom cursor */
250
+ cursor: not-allowed; }
251
+
252
+ .fc-event .fc-content {
253
+ position: relative;
254
+ z-index: 2; }
255
+
256
+ /* resizer (cursor AND touch devices) */
257
+ .fc-event .fc-resizer {
258
+ position: absolute;
259
+ z-index: 4; }
260
+
261
+ /* resizer (touch devices) */
262
+ .fc-event .fc-resizer {
263
+ display: none; }
264
+
265
+ .fc-event.fc-allow-mouse-resize .fc-resizer,
266
+ .fc-event.fc-selected .fc-resizer {
267
+ /* only show when hovering or selected (with touch) */
268
+ display: block; }
269
+
270
+ /* hit area */
271
+ .fc-event.fc-selected .fc-resizer:before {
272
+ /* 40x40 touch area */
273
+ content: "";
274
+ position: absolute;
275
+ z-index: 9999;
276
+ /* user of this util can scope within a lower z-index */
277
+ top: 50%;
278
+ left: 50%;
279
+ width: 40px;
280
+ height: 40px;
281
+ margin-left: -20px;
282
+ margin-top: -20px; }
283
+
284
+ /* Event Selection (only for touch devices)
285
+ --------------------------------------------------------------------------------------------------*/
286
+ .fc-event.fc-selected {
287
+ z-index: 9999 !important;
288
+ /* overcomes inline z-index */
289
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); }
290
+
291
+ .fc-event.fc-selected:after {
292
+ content: "";
293
+ position: absolute;
294
+ z-index: 1;
295
+ /* same z-index as fc-bg, behind text */
296
+ /* overcome the borders */
297
+ top: -1px;
298
+ right: -1px;
299
+ bottom: -1px;
300
+ left: -1px;
301
+ /* darkening effect */
302
+ background: #000;
303
+ opacity: .25; }
304
+
305
+ /* Event Dragging
306
+ --------------------------------------------------------------------------------------------------*/
307
+ .fc-event.fc-dragging.fc-selected {
308
+ box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); }
309
+
310
+ .fc-event.fc-dragging:not(.fc-selected) {
311
+ opacity: .75; }
312
+
313
+ /* Horizontal Events
314
+ --------------------------------------------------------------------------------------------------*/
315
+ /* bigger touch area when selected */
316
+ .fc-h-event.fc-selected:before {
317
+ content: "";
318
+ position: absolute;
319
+ z-index: 3;
320
+ /* below resizers */
321
+ top: -10px;
322
+ bottom: -10px;
323
+ left: 0;
324
+ right: 0; }
325
+
326
+ /* events that are continuing to/from another week. kill rounded corners and butt up against edge */
327
+ .fc-ltr .fc-h-event.fc-not-start,
328
+ .fc-rtl .fc-h-event.fc-not-end {
329
+ margin-left: 0;
330
+ border-left-width: 0;
331
+ padding-left: 1px;
332
+ /* replace the border with padding */
333
+ border-top-left-radius: 0;
334
+ border-bottom-left-radius: 0; }
335
+
336
+ .fc-ltr .fc-h-event.fc-not-end,
337
+ .fc-rtl .fc-h-event.fc-not-start {
338
+ margin-right: 0;
339
+ border-right-width: 0;
340
+ padding-right: 1px;
341
+ /* replace the border with padding */
342
+ border-top-right-radius: 0;
343
+ border-bottom-right-radius: 0; }
344
+
345
+ /* resizer (cursor AND touch devices) */
346
+ /* left resizer */
347
+ .fc-ltr .fc-h-event .fc-start-resizer,
348
+ .fc-rtl .fc-h-event .fc-end-resizer {
349
+ cursor: w-resize;
350
+ left: -1px;
351
+ /* overcome border */ }
352
+
353
+ /* right resizer */
354
+ .fc-ltr .fc-h-event .fc-end-resizer,
355
+ .fc-rtl .fc-h-event .fc-start-resizer {
356
+ cursor: e-resize;
357
+ right: -1px;
358
+ /* overcome border */ }
359
+
360
+ /* resizer (mouse devices) */
361
+ .fc-h-event.fc-allow-mouse-resize .fc-resizer {
362
+ width: 7px;
363
+ top: -1px;
364
+ /* overcome top border */
365
+ bottom: -1px;
366
+ /* overcome bottom border */ }
367
+
368
+ /* resizer (touch devices) */
369
+ .fc-h-event.fc-selected .fc-resizer {
370
+ /* 8x8 little dot */
371
+ border-radius: 4px;
372
+ border-width: 1px;
373
+ width: 6px;
374
+ height: 6px;
375
+ border-style: solid;
376
+ border-color: inherit;
377
+ background: #fff;
378
+ /* vertically center */
379
+ top: 50%;
380
+ margin-top: -4px; }
381
+
382
+ /* left resizer */
383
+ .fc-ltr .fc-h-event.fc-selected .fc-start-resizer,
384
+ .fc-rtl .fc-h-event.fc-selected .fc-end-resizer {
385
+ margin-left: -4px;
386
+ /* centers the 8x8 dot on the left edge */ }
387
+
388
+ /* right resizer */
389
+ .fc-ltr .fc-h-event.fc-selected .fc-end-resizer,
390
+ .fc-rtl .fc-h-event.fc-selected .fc-start-resizer {
391
+ margin-right: -4px;
392
+ /* centers the 8x8 dot on the right edge */ }
393
+
394
+ /* DayGrid events
395
+ ----------------------------------------------------------------------------------------------------
396
+ We use the full "fc-day-grid-event" class instead of using descendants because the event won't
397
+ be a descendant of the grid when it is being dragged.
398
+ */
399
+ .fc-day-grid-event {
400
+ margin: 1px 2px 0;
401
+ /* spacing between events and edges */
402
+ padding: 0 1px; }
403
+
404
+ tr:first-child > td > .fc-day-grid-event {
405
+ margin-top: 2px;
406
+ /* a little bit more space before the first event */ }
407
+
408
+ .fc-mirror-skeleton tr:first-child > td > .fc-day-grid-event {
409
+ margin-top: 0;
410
+ /* except for mirror skeleton */ }
411
+
412
+ .fc-day-grid-event .fc-content {
413
+ /* force events to be one-line tall */
414
+ white-space: nowrap;
415
+ overflow: hidden; }
416
+
417
+ .fc-day-grid-event .fc-time {
418
+ font-weight: bold; }
419
+
420
+ /* resizer (cursor devices) */
421
+ /* left resizer */
422
+ .fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,
423
+ .fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer {
424
+ margin-left: -2px;
425
+ /* to the day cell's edge */ }
426
+
427
+ /* right resizer */
428
+ .fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,
429
+ .fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer {
430
+ margin-right: -2px;
431
+ /* to the day cell's edge */ }
432
+
433
+ /* Event Limiting
434
+ --------------------------------------------------------------------------------------------------*/
435
+ /* "more" link that represents hidden events */
436
+ a.fc-more {
437
+ margin: 1px 3px;
438
+ font-size: .85em;
439
+ cursor: pointer;
440
+ text-decoration: none; }
441
+
442
+ a.fc-more:hover {
443
+ text-decoration: underline; }
444
+
445
+ .fc-limited {
446
+ /* rows and cells that are hidden because of a "more" link */
447
+ display: none; }
448
+
449
+ /* popover that appears when "more" link is clicked */
450
+ .fc-day-grid .fc-row {
451
+ z-index: 1;
452
+ /* make the "more" popover one higher than this */ }
453
+
454
+ .fc-more-popover {
455
+ z-index: 2;
456
+ width: 220px; }
457
+
458
+ .fc-more-popover .fc-event-container {
459
+ padding: 10px; }
460
+
461
+ /* Now Indicator
462
+ --------------------------------------------------------------------------------------------------*/
463
+ .fc-now-indicator {
464
+ position: absolute;
465
+ border: 0 solid red; }
466
+
467
+ /* Utilities
468
+ --------------------------------------------------------------------------------------------------*/
469
+ .fc-unselectable {
470
+ -webkit-user-select: none;
471
+ -khtml-user-select: none;
472
+ -moz-user-select: none;
473
+ -ms-user-select: none;
474
+ user-select: none;
475
+ -webkit-touch-callout: none;
476
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
477
+
478
+ /*
479
+ TODO: more distinction between this file and common.css
480
+ */
481
+ /* Colors
482
+ --------------------------------------------------------------------------------------------------*/
483
+ .fc-unthemed th,
484
+ .fc-unthemed td,
485
+ .fc-unthemed thead,
486
+ .fc-unthemed tbody,
487
+ .fc-unthemed .fc-divider,
488
+ .fc-unthemed .fc-row,
489
+ .fc-unthemed .fc-content,
490
+ .fc-unthemed .fc-popover,
491
+ .fc-unthemed .fc-list-view,
492
+ .fc-unthemed .fc-list-heading td {
493
+ border-color: #ddd; }
494
+
495
+ .fc-unthemed .fc-popover {
496
+ background-color: #fff; }
497
+
498
+ .fc-unthemed .fc-divider,
499
+ .fc-unthemed .fc-popover .fc-header,
500
+ .fc-unthemed .fc-list-heading td {
501
+ background: #eee; }
502
+
503
+ .fc-unthemed td.fc-today {
504
+ background: #fcf8e3; }
505
+
506
+ .fc-unthemed .fc-disabled-day {
507
+ background: #d7d7d7;
508
+ opacity: .3; }
509
+
510
+ /* Icons
511
+ --------------------------------------------------------------------------------------------------
512
+ from https://feathericons.com/ and built with IcoMoon
513
+ */
514
+ @font-face {
515
+ font-family: 'fcicons';
516
+ src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format("truetype");
517
+ font-weight: normal;
518
+ font-style: normal; }
519
+ .fc-icon {
520
+ /* use !important to prevent issues with browser extensions that change fonts */
521
+ font-family: 'fcicons' !important;
522
+ speak: none;
523
+ font-style: normal;
524
+ font-weight: normal;
525
+ font-variant: normal;
526
+ text-transform: none;
527
+ line-height: 1;
528
+ /* Better Font Rendering =========== */
529
+ -webkit-font-smoothing: antialiased;
530
+ -moz-osx-font-smoothing: grayscale; }
531
+
532
+ .fc-icon-chevron-left:before {
533
+ content: "\e900"; }
534
+
535
+ .fc-icon-chevron-right:before {
536
+ content: "\e901"; }
537
+
538
+ .fc-icon-chevrons-left:before {
539
+ content: "\e902"; }
540
+
541
+ .fc-icon-chevrons-right:before {
542
+ content: "\e903"; }
543
+
544
+ .fc-icon-minus-square:before {
545
+ content: "\e904"; }
546
+
547
+ .fc-icon-plus-square:before {
548
+ content: "\e905"; }
549
+
550
+ .fc-icon-x:before {
551
+ content: "\e906"; }
552
+
553
+ .fc-icon {
554
+ display: inline-block;
555
+ width: 1em;
556
+ height: 1em;
557
+ text-align: center; }
558
+
559
+ /* Buttons
560
+ --------------------------------------------------------------------------------------------------
561
+ Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css
562
+ */
563
+ /* reset */
564
+ .fc-button {
565
+ border-radius: 0;
566
+ overflow: visible;
567
+ text-transform: none;
568
+ margin: 0;
569
+ font-family: inherit;
570
+ font-size: inherit;
571
+ line-height: inherit; }
572
+
573
+ .fc-button:focus {
574
+ outline: 1px dotted;
575
+ outline: 5px auto -webkit-focus-ring-color; }
576
+
577
+ .fc-button {
578
+ -webkit-appearance: button; }
579
+
580
+ .fc-button:not(:disabled) {
581
+ cursor: pointer; }
582
+
583
+ .fc-button::-moz-focus-inner {
584
+ padding: 0;
585
+ border-style: none; }
586
+
587
+ /* theme */
588
+ .fc-button {
589
+ display: inline-block;
590
+ font-weight: 400;
591
+ color: #212529;
592
+ text-align: center;
593
+ vertical-align: middle;
594
+ -webkit-user-select: none;
595
+ -moz-user-select: none;
596
+ -ms-user-select: none;
597
+ user-select: none;
598
+ background-color: transparent;
599
+ border: 1px solid transparent;
600
+ padding: 0.4em 0.65em;
601
+ font-size: 1em;
602
+ line-height: 1.5;
603
+ border-radius: 0.25em; }
604
+
605
+ .fc-button:hover {
606
+ color: #212529;
607
+ text-decoration: none; }
608
+
609
+ .fc-button:focus {
610
+ outline: 0;
611
+ -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);
612
+ box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25); }
613
+
614
+ .fc-button:disabled {
615
+ opacity: 0.65; }
616
+
617
+ /* "primary" coloring */
618
+ .fc-button-primary {
619
+ color: #fff;
620
+ background-color: #2C3E50;
621
+ border-color: #2C3E50; }
622
+
623
+ .fc-button-primary:hover {
624
+ color: #fff;
625
+ background-color: #1e2b37;
626
+ border-color: #1a252f; }
627
+
628
+ .fc-button-primary:focus {
629
+ -webkit-box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
630
+ box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); }
631
+
632
+ .fc-button-primary:disabled {
633
+ color: #fff;
634
+ background-color: #2C3E50;
635
+ border-color: #2C3E50; }
636
+
637
+ .fc-button-primary:not(:disabled):active,
638
+ .fc-button-primary:not(:disabled).fc-button-active {
639
+ color: #fff;
640
+ background-color: #1a252f;
641
+ border-color: #151e27; }
642
+
643
+ .fc-button-primary:not(:disabled):active:focus,
644
+ .fc-button-primary:not(:disabled).fc-button-active:focus {
645
+ -webkit-box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
646
+ box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); }
647
+
648
+ /* icons within buttons */
649
+ .fc-button .fc-icon {
650
+ vertical-align: middle;
651
+ font-size: 1.5em; }
652
+
653
+ /* Buttons Groups
654
+ --------------------------------------------------------------------------------------------------*/
655
+ .fc-button-group {
656
+ position: relative;
657
+ display: -webkit-inline-box;
658
+ display: -ms-inline-flexbox;
659
+ display: inline-flex;
660
+ vertical-align: middle; }
661
+
662
+ .fc-button-group > .fc-button {
663
+ position: relative;
664
+ -webkit-box-flex: 1;
665
+ -ms-flex: 1 1 auto;
666
+ flex: 1 1 auto; }
667
+
668
+ .fc-button-group > .fc-button:hover {
669
+ z-index: 1; }
670
+
671
+ .fc-button-group > .fc-button:focus,
672
+ .fc-button-group > .fc-button:active,
673
+ .fc-button-group > .fc-button.fc-button-active {
674
+ z-index: 1; }
675
+
676
+ .fc-button-group > .fc-button:not(:first-child) {
677
+ margin-left: -1px; }
678
+
679
+ .fc-button-group > .fc-button:not(:last-child) {
680
+ border-top-right-radius: 0;
681
+ border-bottom-right-radius: 0; }
682
+
683
+ .fc-button-group > .fc-button:not(:first-child) {
684
+ border-top-left-radius: 0;
685
+ border-bottom-left-radius: 0; }
686
+
687
+ /* Popover
688
+ --------------------------------------------------------------------------------------------------*/
689
+ .fc-unthemed .fc-popover {
690
+ border-width: 1px;
691
+ border-style: solid; }
692
+
693
+ /* List View
694
+ --------------------------------------------------------------------------------------------------*/
695
+ .fc-unthemed .fc-list-item:hover td {
696
+ background-color: #f5f5f5; }
697
+
698
+ /* Toolbar
699
+ --------------------------------------------------------------------------------------------------*/
700
+ .fc-toolbar {
701
+ display: flex;
702
+ justify-content: space-between;
703
+ align-items: center; }
704
+
705
+ .fc-toolbar.fc-header-toolbar {
706
+ margin-bottom: 1.5em; }
707
+
708
+ .fc-toolbar.fc-footer-toolbar {
709
+ margin-top: 1.5em; }
710
+
711
+ /* inner content */
712
+ .fc-toolbar > * > :not(:first-child) {
713
+ margin-left: .75em; }
714
+
715
+ .fc-toolbar h2 {
716
+ font-size: 1.75em;
717
+ margin: 0; }
718
+
719
+ /* View Structure
720
+ --------------------------------------------------------------------------------------------------*/
721
+ .fc-view-container {
722
+ position: relative; }
723
+
724
+ /* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */
725
+ /* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */
726
+ .fc-view-container *,
727
+ .fc-view-container *:before,
728
+ .fc-view-container *:after {
729
+ -webkit-box-sizing: content-box;
730
+ -moz-box-sizing: content-box;
731
+ box-sizing: content-box; }
732
+
733
+ .fc-view,
734
+ .fc-view > table {
735
+ /* so dragged elements can be above the view's main element */
736
+ position: relative;
737
+ z-index: 1; }
738
+
739
+ @media print {
740
+ .fc {
741
+ max-width: 100% !important; }
742
+
743
+ /* Global Event Restyling
744
+ --------------------------------------------------------------------------------------------------*/
745
+ .fc-event {
746
+ background: #fff !important;
747
+ color: #000 !important;
748
+ page-break-inside: avoid; }
749
+
750
+ .fc-event .fc-resizer {
751
+ display: none; }
752
+
753
+ /* Table & Day-Row Restyling
754
+ --------------------------------------------------------------------------------------------------*/
755
+ .fc th,
756
+ .fc td,
757
+ .fc hr,
758
+ .fc thead,
759
+ .fc tbody,
760
+ .fc-row {
761
+ border-color: #ccc !important;
762
+ background: #fff !important; }
763
+
764
+ /* kill the overlaid, absolutely-positioned components */
765
+ /* common... */
766
+ .fc-bg,
767
+ .fc-bgevent-skeleton,
768
+ .fc-highlight-skeleton,
769
+ .fc-mirror-skeleton,
770
+ .fc-bgevent-container,
771
+ .fc-business-container,
772
+ .fc-highlight-container,
773
+ .fc-mirror-container {
774
+ display: none; }
775
+
776
+ /* don't force a min-height on rows (for DayGrid) */
777
+ .fc tbody .fc-row {
778
+ height: auto !important;
779
+ /* undo height that JS set in distributeHeight */
780
+ min-height: 0 !important;
781
+ /* undo the min-height from each view's specific stylesheet */ }
782
+
783
+ .fc tbody .fc-row .fc-content-skeleton {
784
+ position: static;
785
+ /* undo .fc-rigid */
786
+ padding-bottom: 0 !important;
787
+ /* use a more border-friendly method for this... */ }
788
+
789
+ .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td {
790
+ /* only works in newer browsers */
791
+ padding-bottom: 1em;
792
+ /* ...gives space within the skeleton. also ensures min height in a way */ }
793
+
794
+ .fc tbody .fc-row .fc-content-skeleton table {
795
+ /* provides a min-height for the row, but only effective for IE, which exaggerates this value,
796
+ making it look more like 3em. for other browers, it will already be this tall */
797
+ height: 1em; }
798
+
799
+ /* Undo month-view event limiting. Display all events and hide the "more" links
800
+ --------------------------------------------------------------------------------------------------*/
801
+ .fc-more-cell,
802
+ .fc-more {
803
+ display: none !important; }
804
+
805
+ .fc tr.fc-limited {
806
+ display: table-row !important; }
807
+
808
+ .fc td.fc-limited {
809
+ display: table-cell !important; }
810
+
811
+ .fc-popover {
812
+ display: none;
813
+ /* never display the "more.." popover in print mode */ }
814
+
815
+ /* TimeGrid Restyling
816
+ --------------------------------------------------------------------------------------------------*/
817
+ /* undo the min-height 100% trick used to fill the container's height */
818
+ .fc-time-grid {
819
+ min-height: 0 !important; }
820
+
821
+ /* don't display the side axis at all ("all-day" and time cells) */
822
+ .fc-timeGrid-view .fc-axis {
823
+ display: none; }
824
+
825
+ /* don't display the horizontal lines */
826
+ .fc-slats,
827
+ .fc-time-grid hr {
828
+ /* this hr is used when height is underused and needs to be filled */
829
+ display: none !important;
830
+ /* important overrides inline declaration */ }
831
+
832
+ /* let the container that holds the events be naturally positioned and create real height */
833
+ .fc-time-grid .fc-content-skeleton {
834
+ position: static; }
835
+
836
+ /* in case there are no events, we still want some height */
837
+ .fc-time-grid .fc-content-skeleton table {
838
+ height: 4em; }
839
+
840
+ /* kill the horizontal spacing made by the event container. event margins will be done below */
841
+ .fc-time-grid .fc-event-container {
842
+ margin: 0 !important; }
843
+
844
+ /* TimeGrid *Event* Restyling
845
+ --------------------------------------------------------------------------------------------------*/
846
+ /* naturally position events, vertically stacking them */
847
+ .fc-time-grid .fc-event {
848
+ position: static !important;
849
+ margin: 3px 2px !important; }
850
+
851
+ /* for events that continue to a future day, give the bottom border back */
852
+ .fc-time-grid .fc-event.fc-not-end {
853
+ border-bottom-width: 1px !important; }
854
+
855
+ /* indicate the event continues via "..." text */
856
+ .fc-time-grid .fc-event.fc-not-end:after {
857
+ content: "..."; }
858
+
859
+ /* for events that are continuations from previous days, give the top border back */
860
+ .fc-time-grid .fc-event.fc-not-start {
861
+ border-top-width: 1px !important; }
862
+
863
+ /* indicate the event is a continuation via "..." text */
864
+ .fc-time-grid .fc-event.fc-not-start:before {
865
+ content: "..."; }
866
+
867
+ /* time */
868
+ /* undo a previous declaration and let the time text span to a second line */
869
+ .fc-time-grid .fc-event .fc-time {
870
+ white-space: normal !important; }
871
+
872
+ /* hide the the time that is normally displayed... */
873
+ .fc-time-grid .fc-event .fc-time span {
874
+ display: none; }
875
+
876
+ /* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */
877
+ .fc-time-grid .fc-event .fc-time:after {
878
+ content: attr(data-full); }
879
+
880
+ /* Vertical Scroller & Containers
881
+ --------------------------------------------------------------------------------------------------*/
882
+ /* kill the scrollbars and allow natural height */
883
+ .fc-scroller,
884
+ .fc-day-grid-container,
885
+ .fc-time-grid-container {
886
+ /* */
887
+ overflow: visible !important;
888
+ height: auto !important; }
889
+
890
+ /* kill the horizontal border/padding used to compensate for scrollbars */
891
+ .fc-row {
892
+ border: 0 !important;
893
+ margin: 0 !important; }
894
+
895
+ /* Button Controls
896
+ --------------------------------------------------------------------------------------------------*/
897
+ .fc-button-group,
898
+ .fc button {
899
+ display: none;
900
+ /* don't display any button-related controls */ } }