The Events Calendar - Version 4.9.13

Version Description

Download this release

Release Info

Developer bordoni
Plugin Icon The Events Calendar
Version 4.9.13
Comparing to
See all releases

Code changes from version 4.9.12 to 4.9.13

Files changed (292) hide show
  1. common/lang/tribe-common-cs_CZ.mo +0 -0
  2. common/lang/tribe-common-de_DE.mo +0 -0
  3. common/lang/tribe-common.pot +38 -3
  4. common/src/Tribe/Cache.php +80 -1
  5. common/src/Tribe/Context.php +46 -4
  6. common/src/Tribe/Date_Utils.php +134 -18
  7. common/src/Tribe/Debug_Bar/Panels/Context.php +2 -2
  8. common/src/Tribe/Dialog/View.php +17 -17
  9. common/src/Tribe/Feature_Detection.php +106 -0
  10. common/src/Tribe/Main.php +1 -1
  11. common/src/Tribe/Models/Post_Types/Base.php +17 -12
  12. common/src/Tribe/Repository/Core_Read_Interface.php +402 -0
  13. common/src/Tribe/Repository/Filter_Validation.php +61 -0
  14. common/src/Tribe/Repository/Interface.php +0 -7
  15. common/src/Tribe/Repository/Read_Interface.php +4 -378
  16. common/src/Tribe/Repository/Usage_Error.php +41 -0
  17. common/src/Tribe/Rewrite.php +1 -1
  18. common/src/Tribe/Service_Providers/Dialog.php +8 -8
  19. common/src/Tribe/Template.php +36 -0
  20. common/src/Tribe/Timezones.php +11 -2
  21. common/src/Tribe/Tooltip/View.php +1 -1
  22. common/src/Tribe/Utils/Collection_Trait.php +23 -0
  23. common/src/Tribe/Utils/Lazy_Events.php +5 -1
  24. common/src/functions/template-tags/html.php +3 -3
  25. common/src/functions/utils.php +8 -8
  26. common/src/resources/css/common-full.css +24 -15
  27. common/src/resources/css/common-full.min.css +1 -1
  28. common/src/resources/css/common-skeleton.css +62 -19
  29. common/src/resources/css/common-skeleton.min.css +1 -1
  30. common/src/resources/css/dialog.css +2 -1
  31. common/src/resources/css/dialog.min.css +1 -1
  32. common/src/resources/images/mascot.png +0 -0
  33. common/src/resources/postcss/base/full/typography/_anchors.pcss +1 -0
  34. common/src/resources/postcss/base/skeleton/grid/_rows.pcss +38 -0
  35. common/src/resources/postcss/dialog.pcss +2 -1
  36. common/src/resources/postcss/utilities/icons/arrow.svg +0 -1
  37. common/src/resources/postcss/utilities/icons/error.svg +0 -1
  38. common/src/resources/postcss/utilities/icons/link.svg +1 -0
  39. common/src/resources/postcss/utilities/icons/list.svg +1 -1
  40. common/src/resources/postcss/utilities/icons/mail.svg +1 -0
  41. common/src/resources/postcss/utilities/icons/map-pin.svg +1 -0
  42. common/src/resources/postcss/utilities/icons/map.svg +1 -1
  43. common/src/resources/postcss/utilities/icons/messages-not-found.svg +1 -0
  44. common/src/resources/postcss/utilities/icons/no-map.svg +1 -0
  45. common/src/resources/postcss/utilities/icons/phone.svg +1 -0
  46. common/src/resources/postcss/utilities/icons/photo.svg +1 -1
  47. common/src/resources/postcss/utilities/icons/remove.svg +0 -1
  48. common/src/resources/postcss/utilities/mixins/_buttons.pcss +0 -14
  49. common/src/resources/postcss/utilities/variables/_box-shadows.pcss +1 -1
  50. common/src/resources/postcss/utilities/variables/_colors.pcss +3 -2
  51. common/src/resources/postcss/utilities/variables/_svgs.pcss +60 -39
  52. common/src/resources/postcss/utilities/variables/_z-index.pcss +1 -0
  53. common/src/views/dialog/alert.php +2 -2
  54. common/src/views/dialog/button.php +2 -2
  55. common/src/views/dialog/confirm.php +2 -2
  56. common/src/views/dialog/dialog.php +2 -2
  57. common/src/views/dialog/modal.php +2 -2
  58. common/vendor/autoload.php +1 -1
  59. common/vendor/autoload_52.php +1 -1
  60. common/vendor/composer/autoload_classmap.php +2 -0
  61. common/vendor/composer/autoload_real.php +4 -4
  62. common/vendor/composer/autoload_real_52.php +3 -3
  63. common/vendor/composer/autoload_static.php +7 -5
  64. lang/the-events-calendar-bg_BG.mo +0 -0
  65. lang/the-events-calendar-bs_BA.mo +0 -0
  66. lang/the-events-calendar-ca.mo +0 -0
  67. lang/the-events-calendar-cs_CZ.mo +0 -0
  68. lang/the-events-calendar-cy.mo +0 -0
  69. lang/the-events-calendar-da_DK.mo +0 -0
  70. lang/the-events-calendar-de_DE.mo +0 -0
  71. lang/the-events-calendar-el.mo +0 -0
  72. lang/the-events-calendar-en_AU.mo +0 -0
  73. lang/the-events-calendar-en_CA.mo +0 -0
  74. lang/the-events-calendar-en_GB.mo +0 -0
  75. lang/the-events-calendar-en_NZ.mo +0 -0
  76. lang/the-events-calendar-es_ES.mo +0 -0
  77. lang/the-events-calendar-es_MX.mo +0 -0
  78. lang/the-events-calendar-es_VE.mo +0 -0
  79. lang/the-events-calendar-eu.mo +0 -0
  80. lang/the-events-calendar-fi.mo +0 -0
  81. lang/the-events-calendar-fr_CA.mo +0 -0
  82. lang/the-events-calendar-fr_FR.mo +0 -0
  83. lang/the-events-calendar-gl_ES.mo +0 -0
  84. lang/the-events-calendar-he_IL.mo +0 -0
  85. lang/the-events-calendar-hr.mo +0 -0
  86. lang/the-events-calendar-hu_HU.mo +0 -0
  87. lang/the-events-calendar-is_IS.mo +0 -0
  88. lang/the-events-calendar-it_IT.mo +0 -0
  89. lang/the-events-calendar-ja.mo +0 -0
  90. lang/the-events-calendar-lt_LT.mo +0 -0
  91. lang/the-events-calendar-nb_NO.mo +0 -0
  92. lang/the-events-calendar-nl_NL.mo +0 -0
  93. lang/the-events-calendar-nn_NO.mo +0 -0
  94. lang/the-events-calendar-pt_BR.mo +0 -0
  95. lang/the-events-calendar-pt_PT.mo +0 -0
  96. lang/the-events-calendar-ro_RO.mo +0 -0
  97. lang/the-events-calendar-ru_RU.mo +0 -0
  98. lang/the-events-calendar-sk_SK.mo +0 -0
  99. lang/the-events-calendar-sl_SI.mo +0 -0
  100. lang/the-events-calendar-sq.mo +0 -0
  101. lang/the-events-calendar-sr_RS.mo +0 -0
  102. lang/the-events-calendar-sv_SE.mo +0 -0
  103. lang/the-events-calendar-tr_TR.mo +0 -0
  104. lang/the-events-calendar-uk.mo +0 -0
  105. lang/the-events-calendar-zh_CN.mo +0 -0
  106. lang/the-events-calendar-zh_TW.mo +0 -0
  107. lang/the-events-calendar.pot +380 -230
  108. readme.txt +6 -1
  109. src/Tribe/Aggregator/Service.php +88 -30
  110. src/Tribe/Cost_Utils.php +1 -1
  111. src/Tribe/Editor/Assets.php +20 -1
  112. src/Tribe/Main.php +7 -2
  113. src/Tribe/Models/Post_Types/Event.php +7 -2
  114. src/Tribe/Repositories/Event.php +2 -2
  115. src/Tribe/Repositories/Organizer.php +0 -15
  116. src/Tribe/Rewrite.php +53 -0
  117. src/Tribe/Service_Providers/Context.php +6 -4
  118. src/Tribe/Views/V2/Assets.php +18 -2
  119. src/Tribe/Views/V2/Hooks.php +121 -0
  120. src/Tribe/Views/V2/Interfaces/View_Url_Provider_Interface.php +2 -1
  121. src/Tribe/Views/V2/Query/Event_Query_Controller.php +3 -3
  122. src/Tribe/Views/V2/Repository/Event_Period.php +1264 -0
  123. src/Tribe/Views/V2/Repository/Event_Result.php +182 -0
  124. src/Tribe/Views/V2/Repository/Events_Result_Set.php +169 -0
  125. src/Tribe/Views/V2/Service_Provider.php +2 -1
  126. src/Tribe/Views/V2/Template.php +20 -0
  127. src/Tribe/Views/V2/Template/Excerpt.php +0 -12
  128. src/Tribe/Views/V2/Template/Page.php +1 -1
  129. src/Tribe/Views/V2/Template/Settings/Advanced_Display.php +3 -1
  130. src/Tribe/Views/V2/Template/Title.php +0 -4
  131. src/Tribe/Views/V2/Template_Bootstrap.php +32 -3
  132. src/Tribe/Views/V2/Utils/Separators.php +52 -18
  133. src/Tribe/Views/V2/View.php +290 -51
  134. src/Tribe/Views/V2/View_Interface.php +32 -0
  135. src/Tribe/Views/V2/Views/By_Day_View.php +72 -34
  136. src/Tribe/Views/V2/Views/Day_View.php +4 -1
  137. src/Tribe/Views/V2/Views/List_View.php +8 -1
  138. src/Tribe/Views/V2/Views/Month_View.php +5 -6
  139. src/admin-views/aggregator/origins/refine.php +19 -9
  140. src/admin-views/tribe-options-general.php +74 -74
  141. src/functions/template-tags/event.php +32 -19
  142. src/functions/template-tags/orm.php +6 -1
  143. src/functions/template-tags/venue.php +32 -19
  144. src/functions/utils/install.php +19 -0
  145. src/functions/views/provider.php +79 -1
  146. src/resources/css/views-full.css +121 -152
  147. src/resources/css/views-full.min.css +1 -1
  148. src/resources/css/views-skeleton.css +146 -25
  149. src/resources/css/views-skeleton.min.css +1 -1
  150. src/resources/js/views/datepicker.js +167 -18
  151. src/resources/js/views/manager.js +0 -1
  152. src/resources/js/views/tooltip.js +1 -0
  153. src/resources/postcss/components/full/_all.pcss +3 -0
  154. src/resources/postcss/components/full/_datepicker.pcss +42 -139
  155. src/resources/postcss/components/full/_ical-link.pcss +5 -0
  156. src/resources/postcss/components/full/_navigation.pcss +0 -1
  157. src/resources/postcss/components/skeleton/_all.pcss +3 -0
  158. src/resources/postcss/components/skeleton/_datepicker.pcss +0 -17
  159. src/resources/postcss/components/skeleton/_ical-link.pcss +13 -0
  160. src/resources/postcss/components/skeleton/_tooltip.pcss +1 -0
  161. src/resources/postcss/components/skeleton/_top-bar.pcss +15 -4
  162. src/resources/postcss/utilities/icons/link.svg +1 -0
  163. src/resources/postcss/utilities/icons/list.svg +1 -1
  164. src/resources/postcss/utilities/icons/mail.svg +1 -0
  165. src/resources/postcss/utilities/icons/map-pin.svg +1 -0
  166. src/resources/postcss/utilities/icons/map.svg +1 -1
  167. src/resources/postcss/utilities/icons/phone.svg +1 -0
  168. src/resources/postcss/utilities/icons/photo.svg +1 -1
  169. src/resources/postcss/utilities/variables/_box-shadows.pcss +1 -1
  170. src/resources/postcss/utilities/variables/_colors.pcss +2 -0
  171. src/resources/postcss/utilities/variables/_svgs.pcss +44 -0
  172. src/resources/postcss/views/full/day/_event.pcss +0 -8
  173. src/resources/postcss/views/full/month/_calendar-event.pcss +17 -14
  174. src/resources/postcss/views/full/month/_day.pcss +1 -3
  175. src/resources/postcss/views/full/month/_multiday-event.pcss +12 -2
  176. src/resources/postcss/views/skeleton/day/_event.pcss +34 -3
  177. src/resources/postcss/views/skeleton/list/_event.pcss +2 -1
  178. src/resources/postcss/views/skeleton/month/_calendar-event.pcss +61 -2
  179. src/resources/postcss/views/skeleton/month/_multiday-event.pcss +5 -0
  180. src/views/v2/base.php +1 -1
  181. src/views/v2/components/after.php +1 -1
  182. src/views/v2/components/before.php +1 -1
  183. src/views/v2/components/breadcrumbs.php +1 -1
  184. src/views/v2/components/breadcrumbs/breadcrumb.php +1 -1
  185. src/views/v2/components/breadcrumbs/linked-breadcrumb.php +1 -1
  186. src/views/v2/components/data.php +1 -1
  187. src/views/v2/components/events-bar.php +1 -1
  188. src/views/v2/components/events-bar/filters.php +1 -1
  189. src/views/v2/components/events-bar/search-button.php +1 -1
  190. src/views/v2/components/events-bar/search-button/icon.php +1 -1
  191. src/views/v2/components/events-bar/search.php +1 -1
  192. src/views/v2/components/events-bar/search/keyword.php +1 -1
  193. src/views/v2/components/events-bar/search/submit.php +1 -1
  194. src/views/v2/components/events-bar/tabs.php +1 -1
  195. src/views/v2/components/events-bar/views.php +1 -1
  196. src/views/v2/components/events-bar/views/list.php +1 -1
  197. src/views/v2/components/events-bar/views/list/item.php +17 -4
  198. src/views/v2/components/filter-bar.php +1 -1
  199. src/views/v2/components/ical-link.php +29 -0
  200. src/views/v2/components/loader.php +1 -1
  201. src/views/v2/components/messages.php +1 -1
  202. src/views/v2/components/read-more.php +2 -4
  203. src/views/v2/components/top-bar/actions.php +1 -1
  204. src/views/v2/components/top-bar/actions/content.php +1 -1
  205. src/views/v2/components/top-bar/datepicker/submit.php +28 -0
  206. src/views/v2/components/top-bar/nav.php +5 -3
  207. src/views/v2/components/top-bar/nav/next-disabled.php +2 -4
  208. src/views/v2/components/top-bar/nav/next.php +3 -3
  209. src/views/v2/components/top-bar/nav/prev-disabled.php +2 -4
  210. src/views/v2/components/top-bar/nav/prev.php +1 -1
  211. src/views/v2/components/top-bar/today.php +3 -3
  212. src/views/v2/day.php +11 -6
  213. src/views/v2/day/event.php +1 -1
  214. src/views/v2/day/event/cost.php +1 -1
  215. src/views/v2/day/event/date.php +1 -1
  216. src/views/v2/day/event/date/meta.php +1 -1
  217. src/views/v2/day/event/description.php +3 -3
  218. src/views/v2/day/event/featured-image.php +1 -1
  219. src/views/v2/day/event/title.php +2 -2
  220. src/views/v2/day/event/venue.php +1 -1
  221. src/views/v2/day/nav.php +1 -1
  222. src/views/v2/day/nav/next-disabled.php +1 -1
  223. src/views/v2/day/nav/next.php +1 -1
  224. src/views/v2/day/nav/prev-disabled.php +1 -1
  225. src/views/v2/day/nav/prev.php +1 -1
  226. src/views/v2/day/time-separator.php +4 -4
  227. src/views/v2/day/top-bar.php +1 -1
  228. src/views/v2/day/top-bar/datepicker.php +49 -32
  229. src/views/v2/day/type-separator.php +1 -1
  230. src/views/v2/list.php +11 -7
  231. src/views/v2/list/event.php +2 -2
  232. src/views/v2/list/event/cost.php +1 -1
  233. src/views/v2/list/event/date-tag.php +17 -6
  234. src/views/v2/list/event/date.php +1 -1
  235. src/views/v2/list/event/date/meta.php +1 -1
  236. src/views/v2/list/event/description.php +3 -3
  237. src/views/v2/list/event/featured-image.php +1 -1
  238. src/views/v2/list/event/title.php +2 -2
  239. src/views/v2/list/event/venue.php +1 -1
  240. src/views/v2/list/month-separator.php +22 -6
  241. src/views/v2/list/nav.php +1 -1
  242. src/views/v2/list/nav/next-disabled.php +1 -1
  243. src/views/v2/list/nav/next.php +1 -1
  244. src/views/v2/list/nav/prev-disabled.php +1 -1
  245. src/views/v2/list/nav/prev.php +1 -1
  246. src/views/v2/list/nav/today.php +1 -1
  247. src/views/v2/list/top-bar.php +1 -1
  248. src/views/v2/list/top-bar/datepicker.php +71 -54
  249. src/views/v2/month.php +9 -6
  250. src/views/v2/month/calendar-body.php +1 -1
  251. src/views/v2/month/calendar-body/day.php +1 -1
  252. src/views/v2/month/calendar-body/day/calendar-events.php +2 -1
  253. src/views/v2/month/calendar-body/day/calendar-events/calendar-event.php +1 -1
  254. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php +14 -10
  255. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date/meta.php +1 -1
  256. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/featured-image.php +1 -1
  257. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/title.php +6 -8
  258. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip.php +4 -6
  259. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php +1 -1
  260. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date.php +35 -0
  261. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date/meta.php +17 -0
  262. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description.php +3 -3
  263. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image.php +1 -1
  264. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/title.php +29 -0
  265. src/views/v2/month/calendar-body/day/more-events.php +1 -1
  266. src/views/v2/month/calendar-body/day/multiday-events.php +3 -2
  267. src/views/v2/month/calendar-body/day/multiday-events/multiday-event-spacer.php +1 -1
  268. src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php +7 -13
  269. src/views/v2/month/calendar-header.php +1 -1
  270. src/views/v2/month/mobile-events.php +1 -1
  271. src/views/v2/month/mobile-events/mobile-day.php +2 -1
  272. src/views/v2/month/mobile-events/mobile-day/day-marker.php +1 -1
  273. src/views/v2/month/mobile-events/mobile-day/mobile-event.php +1 -1
  274. src/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php +1 -1
  275. src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php +1 -1
  276. src/views/v2/month/mobile-events/mobile-day/mobile-event/date/meta.php +1 -1
  277. src/views/v2/month/mobile-events/mobile-day/mobile-event/featured-image.php +1 -1
  278. src/views/v2/month/mobile-events/mobile-day/mobile-event/title.php +3 -3
  279. src/views/v2/month/mobile-events/mobile-day/more-events.php +1 -1
  280. src/views/v2/month/mobile-events/nav.php +1 -1
  281. src/views/v2/month/mobile-events/nav/next-disabled.php +1 -1
  282. src/views/v2/month/mobile-events/nav/next.php +1 -1
  283. src/views/v2/month/mobile-events/nav/prev-disabled.php +1 -1
  284. src/views/v2/month/mobile-events/nav/prev.php +1 -1
  285. src/views/v2/month/mobile-events/nav/today.php +1 -1
  286. src/views/v2/month/top-bar.php +1 -1
  287. src/views/v2/month/top-bar/datepicker.php +53 -36
  288. the-events-calendar.php +2 -1
  289. vendor/autoload.php +1 -1
  290. vendor/composer/autoload_classmap.php +9 -0
  291. vendor/composer/autoload_real.php +4 -4
  292. vendor/composer/autoload_static.php +13 -4
common/lang/tribe-common-cs_CZ.mo CHANGED
Binary file
common/lang/tribe-common-de_DE.mo CHANGED
Binary file
common/lang/tribe-common.pot CHANGED
@@ -2,13 +2,15 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Tribe Common 4.9.23\n"
 
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2019-11-20 05:11:30+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2019-11-20 05:11\n"
 
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -290,6 +292,34 @@ msgstr ""
290
  msgid "State"
291
  msgstr ""
292
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
294
  msgid "The cost currency symbol"
295
  msgstr ""
@@ -2600,6 +2630,11 @@ msgstr ""
2600
  msgid "Hide the following settings tabs on every site:"
2601
  msgstr ""
2602
 
 
 
 
 
 
2603
  #: src/views/promoter/auth.php:35
2604
  msgid "Promoter would like to sync with your site"
2605
  msgstr ""
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+
6
+ "Project-Id-Version: Tribe Common 4.10.2\n"
7
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
8
+ "POT-Creation-Date: 2019-12-10 00:34:42+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "PO-Revision-Date: 2019-12-10 00:34\n"
13
+
14
  "Last-Translator: \n"
15
  "Language-Team: \n"
16
 
292
  msgid "State"
293
  msgstr ""
294
 
295
+ #: src/Tribe/Dialog/View.php:153
296
+ msgid "Open the modal window"
297
+ msgstr ""
298
+
299
+ #: src/Tribe/Dialog/View.php:154
300
+ msgid "Close this modal window"
301
+ msgstr ""
302
+
303
+ #: src/Tribe/Dialog/View.php:222
304
+ msgid "Cancel"
305
+ msgstr ""
306
+
307
+ #: src/Tribe/Dialog/View.php:223
308
+ msgid "Confirm"
309
+ msgstr ""
310
+
311
+ #: src/Tribe/Dialog/View.php:288
312
+ msgid "OK"
313
+ msgstr ""
314
+
315
+ #: src/Tribe/Dialog/View.php:355
316
+ msgid "Open the dialog window"
317
+ msgstr ""
318
+
319
+ #: src/Tribe/Dialog/View.php:369
320
+ msgid "Close this dialog window"
321
+ msgstr ""
322
+
323
  #: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
324
  msgid "The cost currency symbol"
325
  msgstr ""
2630
  msgid "Hide the following settings tabs on every site:"
2631
  msgstr ""
2632
 
2633
+ #: src/functions/template-tags/html.php:70
2634
+ msgctxt "The associated field is required."
2635
+ msgid "(required)"
2636
+ msgstr ""
2637
+
2638
  #: src/views/promoter/auth.php:35
2639
  msgid "Promoter would like to sync with your site"
2640
  msgstr ""
common/src/Tribe/Cache.php CHANGED
@@ -272,5 +272,84 @@ class Tribe__Cache implements ArrayAccess {
272
  public function offsetUnset( $offset ) {
273
  $this->delete( $offset );
274
  }
275
- }
276
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  public function offsetUnset( $offset ) {
273
  $this->delete( $offset );
274
  }
 
275
 
276
+ /**
277
+ * Warms up the caches for a collection of posts.
278
+ *
279
+ * @since 4.10.2
280
+ *
281
+ * @param array|int $post_ids A post ID, or a collection of post IDs.
282
+ * @param bool $update_post_meta_cache Whether to warm-up the post meta cache for the posts or not.
283
+ */
284
+ public function warmup_post_caches( $post_ids, $update_post_meta_cache = false ) {
285
+ if ( empty( $post_ids ) ) {
286
+ return;
287
+ }
288
+
289
+ $post_ids = (array) $post_ids;
290
+
291
+ global $wpdb;
292
+
293
+ $already_cached_ids = [];
294
+ foreach ( $post_ids as $post_id ) {
295
+ if ( wp_cache_get( $post_id, 'posts' ) instanceof \WP_Post ) {
296
+ $already_cached_ids[] = $post_id;
297
+ }
298
+ }
299
+
300
+ $required = array_diff( $post_ids, $already_cached_ids );
301
+
302
+ if ( empty( $required ) ) {
303
+ return;
304
+ }
305
+
306
+ /** @var Tribe__Feature_Detection $feature_detection */
307
+ $feature_detection = tribe('feature-detection');
308
+ $limit = $feature_detection->mysql_limit_for_example( 'post_result' );
309
+
310
+ /**
311
+ * Filters the LIMIT that should be used to warm-up post caches and postmeta caches (if the
312
+ * `$update_post_meta_cache` parameter is `true`).
313
+ *
314
+ * Lower this value on less powerful hosts. Return `0` to disable the warm-up completely, and `-1` to remove the
315
+ * limit (not recommended).
316
+ *
317
+ * @since 4.10.2
318
+ *
319
+ * @param int $limit The number of posts whose caches will be warmed up, per query.
320
+ */
321
+ $limit = (int) apply_filters( 'tribe_cache_warmup_post_cache_limit', min( $limit, count( $post_ids ) ) );
322
+
323
+ if ( 0 === $limit ) {
324
+ // Warmup disabled.
325
+ return;
326
+ }
327
+
328
+ $buffer = $post_ids;
329
+ $page = 0;
330
+
331
+ do {
332
+ $limit_clause = $limit < 0 ? sprintf( 'LIMIT %d,%d', $limit * $page, $limit ) : '';
333
+ $page ++;
334
+ $these_ids = array_splice( $buffer, 0, $limit );
335
+ $interval = implode( ',', array_map( 'absint', $these_ids ) );
336
+ $posts_query = "SELECT * FROM {$wpdb->posts} WHERE ID IN ({$interval}) {$limit_clause}";
337
+ $post_objects = $wpdb->get_results( $posts_query );
338
+ if ( is_array( $post_objects ) && ! empty( $post_objects ) ) {
339
+ foreach ( $post_objects as $post_object ) {
340
+ $post = new \WP_Post( $post_object );
341
+ wp_cache_set( $post_object->ID, $post, 'posts' );
342
+ }
343
+
344
+ if ( $update_post_meta_cache ) {
345
+ update_meta_cache( 'post', $these_ids );
346
+ }
347
+ }
348
+ } while (
349
+ ! empty( $post_objects )
350
+ && is_array( $post_objects )
351
+ && count( $post_objects ) < count( $post_ids )
352
+ );
353
+
354
+ }
355
+ }
common/src/Tribe/Context.php CHANGED
@@ -401,6 +401,10 @@ class Tribe__Context {
401
  */
402
  $value = apply_filters( "tribe_context_{$key}", $value );
403
 
 
 
 
 
404
  return $value;
405
  }
406
 
@@ -454,9 +458,22 @@ class Tribe__Context {
454
  public function get_locations() {
455
  $this->populate_locations();
456
 
457
- return $this->use_default_locations
458
  ? array_merge( self::$locations, $this->override_locations )
459
  : $this->override_locations;
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  }
461
 
462
  /**
@@ -1563,12 +1580,37 @@ class Tribe__Context {
1563
  */
1564
  public function get_read_key_for( $location, $type = null ) {
1565
  $type = $type ?: static::REQUEST_VAR;
1566
- if ( isset( static::$locations[ $location ]['read'][ $type ] ) ) {
1567
- $keys = (array) static::$locations[ $location ]['read'][ $type ];
1568
-
1569
  return reset( $keys );
1570
  }
1571
 
1572
  return $location;
1573
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1574
  }
401
  */
402
  $value = apply_filters( "tribe_context_{$key}", $value );
403
 
404
+ if ( $value !== static::NOT_FOUND ) {
405
+ $this->request_cache[ $key ] = $value;
406
+ }
407
+
408
  return $value;
409
  }
410
 
458
  public function get_locations() {
459
  $this->populate_locations();
460
 
461
+ $locations = $this->use_default_locations
462
  ? array_merge( self::$locations, $this->override_locations )
463
  : $this->override_locations;
464
+
465
+ if ( $this->use_default_locations ) {
466
+ /**
467
+ * Filters the locations registered in the Context.
468
+ *
469
+ * @since 4.10.2
470
+ *
471
+ * @param array $locations An array of locations registered on the Context object.
472
+ */
473
+ $locations = apply_filters( 'tribe_context_locations', $locations, $this );
474
+ }
475
+
476
+ return $locations;
477
  }
478
 
479
  /**
1580
  */
1581
  public function get_read_key_for( $location, $type = null ) {
1582
  $type = $type ?: static::REQUEST_VAR;
1583
+ $locations = $this->get_locations();
1584
+ if ( isset( $locations[ $location ]['read'][ $type ] ) ) {
1585
+ $keys = (array) $locations[ $location ]['read'][ $type ];
1586
  return reset( $keys );
1587
  }
1588
 
1589
  return $location;
1590
  }
1591
+
1592
+ /**
1593
+ * Safely set the value of a group of locations.
1594
+ *
1595
+ * This method can only augment the context, without altering it; it can only add new values.
1596
+ *
1597
+ * @since 4.10.2
1598
+ *
1599
+ * @param array|string $values The values to set, if not already set or the key of the value to set, requires
1600
+ * the `$value` to be passed.
1601
+ * @param mixed|null $value The value to set for the key, this parameter will be ignored if the `$values_or_key`
1602
+ * parameter is not a string.
1603
+ */
1604
+ public function safe_set( $values_or_key, $value = null ) {
1605
+ $values = func_num_args() === 2
1606
+ ? [ $values_or_key => $value ]
1607
+ : $values_or_key;
1608
+
1609
+ foreach ( $values as $key => $val ) {
1610
+ if ( static::NOT_FOUND !== $this->get( $key, static::NOT_FOUND ) ) {
1611
+ continue;
1612
+ }
1613
+ $this->request_cache[ $key ] = $val;
1614
+ }
1615
+ }
1616
  }
common/src/Tribe/Date_Utils.php CHANGED
@@ -232,6 +232,22 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
232
  return date( $format, $date );
233
  }
234
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
235
  /**
236
  * Returns the time only.
237
  *
@@ -1209,17 +1225,20 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
1209
  }
1210
 
1211
  $timezone_object = null;
 
1212
 
1213
  try {
1214
  // PHP 5.2 will not throw an exception but will generate an error.
1215
  $utc = new DateTimeZone( 'UTC' );
 
1216
 
1217
  if ( self::is_timestamp( $datetime ) ) {
1218
  // Timestamps timezone is always UTC.
1219
- return new DateTime( '@' . $datetime, $utc );
1220
- }
1221
 
1222
- $timezone_object = Tribe__Timezones::build_timezone_object( $timezone );
 
 
1223
 
1224
  set_error_handler( 'tribe_catch_and_throw' );
1225
  $date = new DateTime( $datetime, $timezone_object );
@@ -1268,28 +1287,30 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
1268
  public static function get_week_start_end( $date, $start_of_week = null ) {
1269
  $week_start = static::build_date_object( $date );
1270
  $week_start->setTime( 0, 0, 0 );
 
 
 
 
1271
 
1272
- // `0` (for Sunday) through `6` (for Saturday); we correct Sunday to stick w/ ISO notation.
1273
- $week_start_day = null !== $start_of_week ? (int) $start_of_week : (int) get_option( 'start_of_week', 0 );
1274
- if ( 0 === $week_start_day ) {
1275
- $week_start_day = 7;
 
 
 
1276
  }
1277
- // `1` (for Monday) through `7` (for Sunday).
1278
- $date_day = (int) $week_start->format( 'N' );
 
 
 
 
1279
 
1280
  /*
1281
  * From the PHP docs, the `W` format stands for:
1282
  * - ISO-8601 week number of year, weeks starting on Monday
1283
- * We compensate for weeks starting on Sunday here.
1284
  */
1285
- $week_offset = array_sum(
1286
- [
1287
- // If the week starts on Sunday move to the next week.
1288
- 0 === $week_start_day ? 1 : 0,
1289
- // If the current date is before the start of the week, move back a week.
1290
- $date_day < $week_start_day ? - 1 : 0,
1291
- ]
1292
- );
1293
  $week_start->setISODate(
1294
  (int) $week_start->format( 'o' ),
1295
  (int) $week_start->format( 'W' ) + $week_offset,
@@ -1301,7 +1322,102 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
1301
  $week_end->add( new DateInterval( 'P6D' ) );
1302
  $week_end->setTime( 23, 59, 59 );
1303
 
 
 
 
 
 
1304
  return [ $week_start, $week_end ];
1305
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1306
  }
1307
  }
232
  return date( $format, $date );
233
  }
234
 
235
+ /**
236
+ * Returns as string the nearest half a hour for a given valid string datetime.
237
+ *
238
+ * @since 4.10.2
239
+ *
240
+ * @param string $date Valid DateTime string.
241
+ *
242
+ * @return string Rounded datetime string
243
+ */
244
+ public static function round_nearest_half_hour( $date ) {
245
+ $date_object = static::build_date_object( $date );
246
+ $rounded_minutes = floor( $date_object->format( 'i' ) / 30 ) * 30;
247
+
248
+ return $date_object->format( 'Y-m-d H:' ) . $rounded_minutes . ':00';
249
+ }
250
+
251
  /**
252
  * Returns the time only.
253
  *
1225
  }
1226
 
1227
  $timezone_object = null;
1228
+ $datetime = empty($datetime) ? 'now' : $datetime;
1229
 
1230
  try {
1231
  // PHP 5.2 will not throw an exception but will generate an error.
1232
  $utc = new DateTimeZone( 'UTC' );
1233
+ $timezone_object = Tribe__Timezones::build_timezone_object( $timezone );
1234
 
1235
  if ( self::is_timestamp( $datetime ) ) {
1236
  // Timestamps timezone is always UTC.
1237
+ $date = new DateTime( '@' . $datetime, $utc );
 
1238
 
1239
+ // If we have a timezone, then set it.
1240
+ return $timezone ? $date->setTimezone( $timezone_object ) : $date;
1241
+ }
1242
 
1243
  set_error_handler( 'tribe_catch_and_throw' );
1244
  $date = new DateTime( $datetime, $timezone_object );
1287
  public static function get_week_start_end( $date, $start_of_week = null ) {
1288
  $week_start = static::build_date_object( $date );
1289
  $week_start->setTime( 0, 0, 0 );
1290
+ // `0` (for Sunday) through `6` (for Saturday), the way WP handles the `start_of_week` option.
1291
+ $week_start_day = null !== $start_of_week
1292
+ ? (int) $start_of_week
1293
+ : (int) get_option( 'start_of_week', 0 );
1294
 
1295
+ $cache_key = md5(
1296
+ __METHOD__ . serialize( [ $week_start->format( static::DBDATEFORMAT ), $week_start_day ] )
1297
+ );
1298
+ $cache = tribe( 'cache' );
1299
+
1300
+ if ( false !== $cached = $cache[ $cache_key ] ) {
1301
+ return $cached;
1302
  }
1303
+
1304
+ // `0` (for Sunday) through `6` (for Saturday), the way WP handles the `start_of_week` option.
1305
+ $date_day = (int) $week_start->format( 'w' );
1306
+
1307
+ // If the current date is before the start of the week, move back a week.
1308
+ $week_offset = $date_day < $week_start_day ? - 1 : 0;
1309
 
1310
  /*
1311
  * From the PHP docs, the `W` format stands for:
1312
  * - ISO-8601 week number of year, weeks starting on Monday
 
1313
  */
 
 
 
 
 
 
 
 
1314
  $week_start->setISODate(
1315
  (int) $week_start->format( 'o' ),
1316
  (int) $week_start->format( 'W' ) + $week_offset,
1322
  $week_end->add( new DateInterval( 'P6D' ) );
1323
  $week_end->setTime( 23, 59, 59 );
1324
 
1325
+ $week_start = static::immutable( $week_start );
1326
+ $week_end = static::immutable( $week_end );
1327
+
1328
+ $cache[ $cache_key ] = [ $week_start, $week_end ];
1329
+
1330
  return [ $week_start, $week_end ];
1331
  }
1332
+
1333
+ /**
1334
+ * Builds and returns a `DateInterval` object from the interval specification.
1335
+ *
1336
+ * For performance purposes the use of `DateInterval` specifications is preferred, so `P1D` is better than
1337
+ * `1 day`.
1338
+ *
1339
+ * @since 4.10.2
1340
+ *
1341
+ * @return DateInterval The built date interval object.
1342
+ */
1343
+ public static function interval( $interval_spec ) {
1344
+ try {
1345
+ $interval = new \DateInterval( $interval_spec );
1346
+ } catch ( \Exception $e ) {
1347
+ $interval = DateInterval::createFromDateString( $interval_spec );
1348
+ }
1349
+
1350
+ return $interval;
1351
+ }
1352
+
1353
+ /**
1354
+ * Builds the immutable version of a date from a string, integer (timestamp) or \DateTime object.
1355
+ *
1356
+ * It's the immutable version of the `Tribe__Date_Utils::build_date_object` method.
1357
+ *
1358
+ * @since 4.10.2
1359
+ *
1360
+ * @param string|DateTime|int $datetime A `strtotime` parse-able string, a DateTime object or
1361
+ * a timestamp; defaults to `now`.
1362
+ * @param string|DateTimeZone|null $timezone A timezone string, UTC offset or DateTimeZone object;
1363
+ * defaults to the site timezone; this parameter is ignored
1364
+ * if the `$datetime` parameter is a DatTime object.
1365
+ * @param bool $with_fallback Whether to return a DateTime object even when the date data is
1366
+ * invalid or not; defaults to `true`.
1367
+ *
1368
+ * @return DateTimeImmutable|false A DateTime object built using the specified date, time and timezone; if
1369
+ * `$with_fallback` is set to `false` then `false` will be returned if a
1370
+ * DateTime object could not be built.
1371
+ */
1372
+ static function immutable( $datetime = 'now', $timezone = null, $with_fallback = true ) {
1373
+ if ( $datetime instanceof DateTimeImmutable ) {
1374
+ return $datetime;
1375
+ }
1376
+
1377
+ if ( $datetime instanceof DateTime ) {
1378
+ return DateTimeImmutable::createFromMutable( $datetime );
1379
+ }
1380
+
1381
+ $mutable = static::build_date_object( $datetime, $timezone, $with_fallback );
1382
+
1383
+ if ( false === $mutable ) {
1384
+ return false;
1385
+ }
1386
+
1387
+ $cache_key = md5( ( __METHOD__ . $mutable->getTimestamp() ) );
1388
+ $cache = tribe( 'cache' );
1389
+
1390
+ if ( false !== $cached = $cache[ $cache_key ] ) {
1391
+ return $cached;
1392
+ }
1393
+
1394
+ $immutable = DateTimeImmutable::createFromMutable( $mutable );
1395
+
1396
+ $cache[ $cache_key ] = $immutable;
1397
+
1398
+ return $immutable;
1399
+ }
1400
+
1401
+ /**
1402
+ * Builds a date object from a given datetime and timezone.
1403
+ *
1404
+ * An alias of the `Tribe__Date_Utils::build_date_object` function.
1405
+ *
1406
+ * @since 4.10.2
1407
+ *
1408
+ * @param string|DateTime|int $datetime A `strtotime` parse-able string, a DateTime object or
1409
+ * a timestamp; defaults to `now`.
1410
+ * @param string|DateTimeZone|null $timezone A timezone string, UTC offset or DateTimeZone object;
1411
+ * defaults to the site timezone; this parameter is ignored
1412
+ * if the `$datetime` parameter is a DatTime object.
1413
+ * @param bool $with_fallback Whether to return a DateTime object even when the date data is
1414
+ * invalid or not; defaults to `true`.
1415
+ *
1416
+ * @return DateTime|false A DateTime object built using the specified date, time and timezone; if `$with_fallback`
1417
+ * is set to `false` then `false` will be returned if a DateTime object could not be built.
1418
+ */
1419
+ public static function mutable( $datetime = 'now', $timezone = null, $with_fallback = true ) {
1420
+ return static::build_date_object( $datetime, $timezone, $with_fallback );
1421
+ }
1422
  }
1423
  }
common/src/Tribe/Debug_Bar/Panels/Context.php CHANGED
@@ -76,8 +76,8 @@ class Tribe__Debug_Bar__Panels__Context extends Debug_Bar_Panel {
76
 
77
  $html .= '<tr>';
78
  $html .= '<td><code>' . $key . '</code></td>';
79
- $html .= '<td><code>' . ( isset( $context[ $key ] ) ? $context[ $key ] : 'undefined' ) . '</code></td>';
80
- $html .= '<td>' . ( false !== $orm_arg_key ? '<code>' . $orm_arg_key . ' => ' . $orm_arg_value . '</code>' : '' ) . '</td>';
81
  $html .= '<td><code>' . ( isset( $locations[ $key ]['read'] ) ? 'yes' : 'no' ) . '</code></td>';
82
  $html .= '<td><code>' . ( isset( $locations[ $key ]['write'] ) ? 'yes' : 'no' ) . '</code></td>';
83
  $html .= '</tr>';
76
 
77
  $html .= '<tr>';
78
  $html .= '<td><code>' . $key . '</code></td>';
79
+ $html .= '<td><code>' . ( isset( $context[ $key ] ) ? print_r( $context[ $key ], true ) : 'undefined' ) . '</code></td>';
80
+ $html .= '<td>' . ( false !== $orm_arg_key ? '<code>' . print_r( $orm_arg_key, true ) . ' => ' . print_r( $orm_arg_value, true ) . '</code>' : '' ) . '</td>';
81
  $html .= '<td><code>' . ( isset( $locations[ $key ]['read'] ) ? 'yes' : 'no' ) . '</code></td>';
82
  $html .= '<td><code>' . ( isset( $locations[ $key ]['write'] ) ? 'yes' : 'no' ) . '</code></td>';
83
  $html .= '</tr>';
common/src/Tribe/Dialog/View.php CHANGED
@@ -5,13 +5,13 @@ namespace Tribe\Dialog;
5
  /**
6
  * Class View
7
  *
8
- * @since TBD
9
  */
10
  class View extends \Tribe__Template {
11
  /**
12
  * Where in the themes we will look for templates.
13
  *
14
- * @since TBD
15
  *
16
  * @var string
17
  */
@@ -20,7 +20,7 @@ class View extends \Tribe__Template {
20
  /**
21
  * View constructor
22
  *
23
- * @since TBD
24
  */
25
  public function __construct() {
26
  $this->set_template_origin( \Tribe__Main::instance() );
@@ -37,7 +37,7 @@ class View extends \Tribe__Template {
37
  * Public wrapper for build method.
38
  * Contains all the logic/validation checks.
39
  *
40
- * @since TBD
41
  *
42
  * @param string $content Content as an HTML string.
43
  * @param array $args {
@@ -105,7 +105,7 @@ class View extends \Tribe__Template {
105
  * Syntactic sugar for `render_dialog()` to make creating modals easier.
106
  * Adds sensible defaults for modals.
107
  *
108
- * @since TBD
109
  *
110
  * @param string $content Content as an HTML string.
111
  * @param array $args {
@@ -174,7 +174,7 @@ class View extends \Tribe__Template {
174
  * Syntactic sugar for `render_dialog()` to make creating custom confirmation dialogs easier.
175
  * Adds sensible defaults for confirmation dialogs.
176
  *
177
- * @since TBD
178
  *
179
  * @param string $content Content as an HTML string.
180
  * @param array $args {
@@ -241,7 +241,7 @@ class View extends \Tribe__Template {
241
  * Syntactic sugar for `render_dialog()` to make creating custom alerts easier.
242
  * Adds sensible defaults for alerts.
243
  *
244
- * @since TBD
245
  *
246
  * @param string $content Content as an HTML string.
247
  * @param array $args {
@@ -306,7 +306,7 @@ class View extends \Tribe__Template {
306
  /**
307
  * Factory method for dialog HTML
308
  *
309
- * @since TBD
310
  *
311
  * @param string $content HTML dialog content.
312
  * @param string $id The unique ID for this dialog (`uniqid()`) Gets prepended to the data attributes.
@@ -385,7 +385,7 @@ class View extends \Tribe__Template {
385
  /**
386
  * Allow us to filter the dialog arguments.
387
  *
388
- * @since TBD
389
  *
390
  * @param array $args The dialog arguments.
391
  * @param string $content HTML content string.
@@ -396,7 +396,7 @@ class View extends \Tribe__Template {
396
  /**
397
  * Allow us to filter the dialog template name.
398
  *
399
- * @since TBD
400
  *
401
  * @param string $template The dialog template name.
402
  * @param array $args The dialog arguments.
@@ -414,7 +414,7 @@ class View extends \Tribe__Template {
414
  /**
415
  * Allow us to filter the dialog output (HTML string).
416
  *
417
- * @since TBD
418
  *
419
  * @param string $html The dialog HTML string.
420
  * @param array $args The dialog arguments.
@@ -425,7 +425,7 @@ class View extends \Tribe__Template {
425
  /**
426
  * Get dialog <script> to be rendered.
427
  *
428
- * @since TBD
429
  *
430
  * @param array $args List of arguments for the dialog script. See \Tribe\Dialog\View->build_dialog().
431
  * @param boolean $echo Whether to echo the script or to return it (default: true).
@@ -455,7 +455,7 @@ class View extends \Tribe__Template {
455
  /**
456
  * Allows for modifying the arguments before they are passed to the dialog script.
457
  *
458
- * @since TBD
459
  *
460
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
461
  */
@@ -479,7 +479,7 @@ class View extends \Tribe__Template {
479
  /**
480
  * Allows for injecting additional scripts (button actions, etc).
481
  *
482
- * @since TBD
483
  *
484
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
485
  */
@@ -488,7 +488,7 @@ class View extends \Tribe__Template {
488
  /**
489
  * Allows for injecting additional scripts (button actions, etc) by template.
490
  *
491
- * @since TBD
492
  *
493
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
494
  */
@@ -497,7 +497,7 @@ class View extends \Tribe__Template {
497
  /**
498
  * Allows for injecting additional scripts (button actions, etc) by dialog ID.
499
  *
500
- * @since TBD
501
  *
502
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
503
  */
@@ -510,7 +510,7 @@ class View extends \Tribe__Template {
510
  /**
511
  * Allows for modifying the HTML before it is echoed or returned.
512
  *
513
- * @since TBD
514
  *
515
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
516
  */
5
  /**
6
  * Class View
7
  *
8
+ * @since 4.10.0
9
  */
10
  class View extends \Tribe__Template {
11
  /**
12
  * Where in the themes we will look for templates.
13
  *
14
+ * @since 4.10.0
15
  *
16
  * @var string
17
  */
20
  /**
21
  * View constructor
22
  *
23
+ * @since 4.10.0
24
  */
25
  public function __construct() {
26
  $this->set_template_origin( \Tribe__Main::instance() );
37
  * Public wrapper for build method.
38
  * Contains all the logic/validation checks.
39
  *
40
+ * @since 4.10.0
41
  *
42
  * @param string $content Content as an HTML string.
43
  * @param array $args {
105
  * Syntactic sugar for `render_dialog()` to make creating modals easier.
106
  * Adds sensible defaults for modals.
107
  *
108
+ * @since 4.10.0
109
  *
110
  * @param string $content Content as an HTML string.
111
  * @param array $args {
174
  * Syntactic sugar for `render_dialog()` to make creating custom confirmation dialogs easier.
175
  * Adds sensible defaults for confirmation dialogs.
176
  *
177
+ * @since 4.10.0
178
  *
179
  * @param string $content Content as an HTML string.
180
  * @param array $args {
241
  * Syntactic sugar for `render_dialog()` to make creating custom alerts easier.
242
  * Adds sensible defaults for alerts.
243
  *
244
+ * @since 4.10.0
245
  *
246
  * @param string $content Content as an HTML string.
247
  * @param array $args {
306
  /**
307
  * Factory method for dialog HTML
308
  *
309
+ * @since 4.10.0
310
  *
311
  * @param string $content HTML dialog content.
312
  * @param string $id The unique ID for this dialog (`uniqid()`) Gets prepended to the data attributes.
385
  /**
386
  * Allow us to filter the dialog arguments.
387
  *
388
+ * @since 4.10.0
389
  *
390
  * @param array $args The dialog arguments.
391
  * @param string $content HTML content string.
396
  /**
397
  * Allow us to filter the dialog template name.
398
  *
399
+ * @since 4.10.0
400
  *
401
  * @param string $template The dialog template name.
402
  * @param array $args The dialog arguments.
414
  /**
415
  * Allow us to filter the dialog output (HTML string).
416
  *
417
+ * @since 4.10.0
418
  *
419
  * @param string $html The dialog HTML string.
420
  * @param array $args The dialog arguments.
425
  /**
426
  * Get dialog <script> to be rendered.
427
  *
428
+ * @since 4.10.0
429
  *
430
  * @param array $args List of arguments for the dialog script. See \Tribe\Dialog\View->build_dialog().
431
  * @param boolean $echo Whether to echo the script or to return it (default: true).
455
  /**
456
  * Allows for modifying the arguments before they are passed to the dialog script.
457
  *
458
+ * @since 4.10.0
459
  *
460
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
461
  */
479
  /**
480
  * Allows for injecting additional scripts (button actions, etc).
481
  *
482
+ * @since 4.10.0
483
  *
484
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
485
  */
488
  /**
489
  * Allows for injecting additional scripts (button actions, etc) by template.
490
  *
491
+ * @since 4.10.0
492
  *
493
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
494
  */
497
  /**
498
  * Allows for injecting additional scripts (button actions, etc) by dialog ID.
499
  *
500
+ * @since 4.10.0
501
  *
502
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
503
  */
510
  /**
511
  * Allows for modifying the HTML before it is echoed or returned.
512
  *
513
+ * @since 4.10.0
514
  *
515
  * @param array $args List of arguments to override dialog script. See \Tribe\Dialog\View->build_dialog().
516
  */
common/src/Tribe/Feature_Detection.php CHANGED
@@ -6,6 +6,8 @@
6
  * @since 4.7.23
7
  */
8
 
 
 
9
  /**
10
  * Class Tribe__Feature_Detection
11
  *
@@ -20,6 +22,17 @@ class Tribe__Feature_Detection {
20
  */
21
  public static $transient = 'tribe_feature_detection';
22
 
 
 
 
 
 
 
 
 
 
 
 
23
  /**
24
  * The name of the option that will be used to indicate a feature detection is running.
25
  *
@@ -149,4 +162,97 @@ class Tribe__Feature_Detection {
149
 
150
  return ! empty( $lock_option );
151
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  }
6
  * @since 4.7.23
7
  */
8
 
9
+ use Tribe__Utils__Array as Arr;
10
+
11
  /**
12
  * Class Tribe__Feature_Detection
13
  *
22
  */
23
  public static $transient = 'tribe_feature_detection';
24
 
25
+ /**
26
+ * A set of example byte sizes of result sets.
27
+ *
28
+ * @since 4.10.2
29
+ *
30
+ * @var array
31
+ */
32
+ public static $example_size = [
33
+ 'post_result' => 6000,
34
+ ];
35
+
36
  /**
37
  * The name of the option that will be used to indicate a feature detection is running.
38
  *
162
 
163
  return ! empty( $lock_option );
164
  }
165
+
166
+ /**
167
+ * Returns the value of the `max_allowed_packet` MYSQL variable, if set, or a default value.
168
+ *
169
+ * @since 4.10.2
170
+ *
171
+ * @return int The byte size of the `max_allowed_packet` MYSQL variable.
172
+ */
173
+ public function get_mysql_max_packet_size() {
174
+ /**
175
+ * Filters the value of the `max_allowed_packet` variable before it's read from the database.
176
+ *
177
+ * If the value returned from this filter is not `null`, then it will be assumed to be the value.
178
+ *
179
+ * @since 4.10.2
180
+ *
181
+ * @param int $mysql_max_packet_size The value of the `max_allowed_packet` variable, initially `null`.
182
+ */
183
+ $mysql_max_packet_size = apply_filters( 'tribe_max_allowed_packet_size', null );
184
+
185
+ if ( null !== $mysql_max_packet_size ) {
186
+ return absint( $mysql_max_packet_size );
187
+ }
188
+
189
+ /** @var Tribe__Cache $cache */
190
+ $cache = tribe( 'cache' );
191
+
192
+ $cached = $cache->get( 'max_allowed_packet' );
193
+
194
+ if ( false !== $cached ) {
195
+ return $cached;
196
+ }
197
+
198
+ global $wpdb;
199
+ $mysql_max_packet_size = $wpdb->get_var( "SHOW VARIABLES LIKE 'max_allowed_packet'", 1 );
200
+ // At min set it to 2 MBs.
201
+ $mysql_max_packet_size = absint( max( absint( $mysql_max_packet_size ), 2097152 ) );
202
+
203
+ $cache->set( 'max_allowed_packet', $mysql_max_packet_size, WEEK_IN_SECONDS );
204
+
205
+ return $mysql_max_packet_size;
206
+ }
207
+
208
+ /**
209
+ * Returns the suggested SQL LIMIT value, based on the `max_allowed_packet` size and example string length.
210
+ *
211
+ * This is useful to size "reasonable" LIMITs when dealing with either very long queries or potentially long
212
+ * result sets.
213
+ *
214
+ * @since 4.10.2
215
+ *
216
+ * @param string $example_string The example string.
217
+ *
218
+ * @return int The suggested LIMIT value.
219
+ */
220
+ public function mysql_limit_for_string( $example_string ) {
221
+ $byte_size = function_exists( 'mb_strlen' )
222
+ ? mb_strlen( $example_string )
223
+ : strlen( $example_string );
224
+
225
+ return $this->mysql_limit_for_size( $byte_size );
226
+ }
227
+
228
+ /**
229
+ * Returns the SQL LIMIT for a byte size, in relation to the `max_allowed_packet` value.
230
+ *
231
+ * @since 4.10.2
232
+ *
233
+ * @param int $byte_size The byte size to check.
234
+ *
235
+ * @return int The SQL LIMIT value.
236
+ */
237
+ public function mysql_limit_for_size( $byte_size ) {
238
+ return absint( floor( $this->get_mysql_max_packet_size() / $byte_size ) * 0.8 );
239
+ }
240
+
241
+ /**
242
+ * Provides the SQL LIMIT value, in relation to the `max_allowed_packet` value, for a pre-existing example.
243
+ *
244
+ * Defaults to the complete post result example string if the example is not found.
245
+ *
246
+ * @since 4.10.2
247
+ *
248
+ * @param string $example The name of the example to return. See the `Tribe__Feature_Detection::$example_sizes`
249
+ * prop for the available examples. Defaults to the `post_result` one.
250
+ *
251
+ * @return int The SQL LIMIT value for the example.
252
+ */
253
+ public function mysql_limit_for_example( $example ) {
254
+ $example_size = Arr::get( static::$example_size, $example, static::$example_size['post_result'] );
255
+
256
+ return $this->mysql_limit_for_size( $example_size );
257
+ }
258
  }
common/src/Tribe/Main.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
- const VERSION = '4.10';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
+ const VERSION = '4.10.2';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
common/src/Tribe/Models/Post_Types/Base.php CHANGED
@@ -180,21 +180,26 @@ abstract class Base {
180
  return '__return_true';
181
  }
182
 
183
- // Cache by post ID and filter.
184
- $cache_key = $cache_slug . '_' . $this->post->ID . '_' . $filter;
185
- $cache = new Cache();
186
-
187
- // Define a function to cache this event when, and if, one of the lazy properties is loaded.
188
- $callback = function () use ( $cache, $cache_key, $filter )
189
- {
190
- $properties = $this->get_properties( $filter );
191
 
 
192
  /*
193
- * Cache without expiration, but only until a post of the types managed by The Events Calendar is
194
- * updated or created.
 
195
  */
196
- $cache->set( $cache_key, $properties, 0, Cache_Listener::TRIGGER_SAVE_POST );
197
- };
 
 
 
 
 
 
 
 
 
 
198
 
199
  return $callback;
200
  }
180
  return '__return_true';
181
  }
182
 
183
+ $callback = null;
 
 
 
 
 
 
 
184
 
185
+ if ( wp_using_ext_object_cache() ) {
186
  /*
187
+ * If any real caching is in place , then define a function to cache this event when, and if, one of the
188
+ * lazy properties is loaded.
189
+ * Cache by post ID and filter.
190
  */
191
+ $cache_key = $cache_slug . '_' . $this->post->ID . '_' . $filter;
192
+ $cache = new Cache();
193
+ $callback = function () use ( $cache, $cache_key, $filter ) {
194
+ $properties = $this->get_properties( $filter );
195
+
196
+ /*
197
+ * Cache without expiration, but only until a post of the types managed by The Events Calendar is
198
+ * updated or created.
199
+ */
200
+ $cache->set( $cache_key, $properties, 0, Cache_Listener::TRIGGER_SAVE_POST );
201
+ };
202
+ }
203
 
204
  return $callback;
205
  }
common/src/Tribe/Repository/Core_Read_Interface.php ADDED
@@ -0,0 +1,402 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The "core" read interface for repositories.
4
+ *
5
+ * This interface is the minimal one a repository should implement to be called such.
6
+ *
7
+ * @since 4.10.2
8
+ *
9
+ * @package Tribe\Repository
10
+ */
11
+
12
+ namespace Tribe\Repository;
13
+
14
+ use Tribe__Repository__Read_Interface;
15
+ use WP_Post;
16
+
17
+ /**
18
+ * Class Core_Read_Interface
19
+ *
20
+ * @since 4.10.2
21
+ *
22
+ * @package Tribe\Repository
23
+ */
24
+ interface Core_Read_Interface {
25
+ /**
26
+ * Batch filter application method.
27
+ *
28
+ * This is the same as calling `by` multiple times with different arguments.
29
+ *
30
+ * @since 4.7.19
31
+ *
32
+ * @param array $args An associative array of arguments to filter
33
+ * the posts by in the shape [ <key>, <value> ]. * * @return Tribe__Repository__Read_Interface
34
+ */
35
+ public function by_args( array $args );
36
+
37
+ /**
38
+ * Applies a filter to the query.
39
+ *
40
+ * While the signature only shows 2 arguments additional arguments will be passed
41
+ * to the schema filters.
42
+ *
43
+ * @since 4.7.19
44
+ *
45
+ * @param string $key
46
+ * @param mixed $value
47
+ * @param mixed ...$args Additional, optional, call arguments that will be passed to
48
+ * the schema.
49
+ *
50
+ * @return Tribe__Repository__Read_Interface
51
+ */
52
+ public function by( $key, $value = null );
53
+
54
+ /**
55
+ * Just an alias of the `by` method to allow for easier reading.
56
+ *
57
+ * @since 4.7.19
58
+ *
59
+ * @param string $key
60
+ * @param mixed $value
61
+ *
62
+ * @return Tribe__Repository__Read_Interface
63
+ */
64
+ public function where( $key, $value = null );
65
+
66
+ /**
67
+ * Sets the page of posts to fetch.
68
+ *
69
+ * Mind that this implementation does not support a `by( 'page', 2 )`
70
+ * filter to force more readable code.
71
+ *
72
+ * @since 4.7.19
73
+ *
74
+ * @param int $page
75
+ *
76
+ * @return Tribe__Repository__Read_Interface
77
+ */
78
+ public function page( $page );
79
+
80
+ /**
81
+ * Sets the number of posts to retrieve per page.
82
+ *
83
+ * Mind that this implementation does not support a `by( 'per_page', 5 )`
84
+ * filter to force more readable code; by default posts per page is set to
85
+ * the pagination defaults for the post type.
86
+ *
87
+ * @param int $per_page
88
+ *
89
+ * @return Tribe__Repository__Read_Interface
90
+ */
91
+ public function per_page( $per_page );
92
+
93
+ /**
94
+ * Returns the number of posts found matching the query.
95
+ *
96
+ * Mind that this value ignores the offset returning the
97
+ * number of results if limits where not applied.
98
+ *
99
+ * @since 4.7.19
100
+ *
101
+ * @return int
102
+ */
103
+ public function found();
104
+
105
+ /**
106
+ * Returns all posts matching the query.
107
+ *
108
+ * Mind that "all" means "all the posts matching all the filters" so pagination applies.
109
+ *
110
+ * @return array
111
+ */
112
+ public function all();
113
+
114
+ /**
115
+ * Sets the offset on the query.
116
+ *
117
+ * Mind that this implementation does not support a `by( 'offset', 2 )`
118
+ * filter to force more readable code.
119
+ *
120
+ * @since 4.7.19
121
+ *
122
+ * @param int $offset
123
+ * @param bool $increment Whether to increment the offset by the value
124
+ * or replace it.
125
+ *
126
+ * @return Tribe__Repository__Read_Interface
127
+ */
128
+ public function offset( $offset, $increment = false );
129
+
130
+ /**
131
+ * Sets the order on the query.
132
+ *
133
+ * Mind that this implementation does not support a `by( 'order', 2 )`
134
+ * filter to force more readable code.
135
+ *
136
+ * @since 4.7.19
137
+ *
138
+ * @param string $order
139
+ *
140
+ * @return Tribe__Repository__Read_Interface
141
+ */
142
+ public function order( $order = 'ASC' );
143
+
144
+ /**
145
+ * Sets the order criteria results should be fetched by.
146
+ *
147
+ * Mind that this implementation does not support a `by( 'order_by', 'title' )`
148
+ * filter to force more readable code.
149
+ *
150
+ * @since 4.7.19
151
+ *
152
+ * @param string $order_by The post field, custom field or alias key to order posts by.
153
+ * @param string $order The order direction; optional; shortcut for the `order` method; defaults
154
+ * to `DESC`.
155
+ *
156
+ * @return Tribe__Repository__Read_Interface
157
+ */
158
+ public function order_by( $order_by, $order = 'DESC' );
159
+
160
+ /**
161
+ * Sets the fields that should be returned by the query.
162
+ *
163
+ * Mind that this implementation does not support a `by( 'fields', 'ids' )`
164
+ * filter to force more readable code.
165
+ *
166
+ * @since 4.7.19
167
+ *
168
+ * @param string $fields
169
+ *
170
+ * @return Tribe__Repository__Read_Interface
171
+ */
172
+ public function fields( $fields );
173
+
174
+ /**
175
+ * Sugar method to set the `post__in` argument.
176
+ *
177
+ * Successive calls will stack, not replace each one.
178
+ *
179
+ * @since 4.7.19
180
+ *
181
+ * @param array|int $post_ids
182
+ *
183
+ * @return Tribe__Repository__Read_Interface
184
+ */
185
+ public function in( $post_ids );
186
+
187
+ /**
188
+ * Sugar method to set the `post__not_in` argument.
189
+ *
190
+ * Successive calls will stack, not replace each one.
191
+ *
192
+ * @since 4.7.19
193
+ *
194
+ * @param array|int $post_ids
195
+ *
196
+ * @return Tribe__Repository__Read_Interface
197
+ */
198
+ public function not_in( $post_ids );
199
+
200
+ /**
201
+ * Sugar method to set the `post_parent__in` argument.
202
+ *
203
+ * Successive calls will stack, not replace each one.
204
+ *
205
+ * @since 4.7.19
206
+ *
207
+ * @param array|int $post_id
208
+ *
209
+ * @return Tribe__Repository__Read_Interface
210
+ */
211
+ public function parent( $post_id );
212
+
213
+ /**
214
+ * Sugar method to set the `post_parent__in` argument.
215
+ *
216
+ * Successive calls will stack, not replace each one.
217
+ *
218
+ * @since 4.7.19
219
+ *
220
+ * @param array $post_ids
221
+ *
222
+ * @return Tribe__Repository__Read_Interface
223
+ */
224
+ public function parent_in( $post_ids );
225
+
226
+ /**
227
+ * Sugar method to set the `post_parent__not_in` argument.
228
+ *
229
+ * Successive calls will stack, not replace each one.
230
+ *
231
+ * @since 4.7.19
232
+ *
233
+ * @param array $post_ids
234
+ *
235
+ * @return Tribe__Repository__Read_Interface
236
+ */
237
+ public function parent_not_in( $post_ids );
238
+
239
+ /**
240
+ * Sugar method to set the `s` argument.
241
+ *
242
+ * Successive calls will replace the search string.
243
+ * This is the default WordPress searh, to search by title,
244
+ * content or excerpt only use the `title`, `content`, `excerpt` filters.
245
+ *
246
+ * @param $search
247
+ *
248
+ * @return Tribe__Repository__Read_Interface
249
+ */
250
+ public function search( $search );
251
+
252
+ /**
253
+ * Returns the number of posts found matching the query in the current page.
254
+ *
255
+ * While the `found` method will return the number of posts found
256
+ * across all pages this method will only return the number of
257
+ * posts found in the current page.
258
+ * Differently from the `found` method this method will apply the
259
+ * offset if set.
260
+ *
261
+ * @since 4.7.19
262
+ *
263
+ * @return int
264
+ */
265
+ public function count();
266
+
267
+ /**
268
+ * Returns the first post of the page matching the current query.
269
+ *
270
+ * If, by default or because set with the `per_page` method, all
271
+ * posts matching the query should be returned then this will be
272
+ * the first post of all those matching the query.
273
+ *
274
+ * @since 4.7.19
275
+ *
276
+ * @return WP_Post|mixed|null
277
+ *
278
+ * @see Tribe__Repository__Read_Interface::per_page()
279
+ */
280
+ public function first();
281
+
282
+ /**
283
+ * Returns the last post of the page matching the current query.
284
+ *
285
+ * If, by default or because set with the `per_page` method, all
286
+ * posts matching the query should be returned then this will be
287
+ * the last post of all those matching the query.
288
+ *
289
+ * @since 4.7.19
290
+ *
291
+ * @return WP_Post|mixed|null
292
+ *
293
+ * @see Tribe__Repository__Read_Interface::per_page()
294
+ */
295
+ public function last();
296
+
297
+ /**
298
+ * Returns the nth post (1-based) of the page matching the current query.
299
+ *
300
+ * Being 1-based the second post can be fetched using `nth( 2 )`.
301
+ * If, by default or because set with the `per_page` method, all
302
+ * posts matching the query should be returned then this will be
303
+ * the nth post of all those matching the query.
304
+ *
305
+ * @since 4.7.19
306
+ *
307
+ * @param int $n
308
+ *
309
+ * @return WP_Post|mixed|null
310
+ *
311
+ * @see Tribe__Repository__Read_Interface::per_page()
312
+ */
313
+ public function nth( $n );
314
+
315
+ /**
316
+ * Returns the first n posts of the page matching the current query.
317
+ *
318
+ * If, by default or because set with the `per_page` method, all
319
+ * posts matching the query should be returned then this method will
320
+ * return the first n posts of all those matching the query.
321
+ *
322
+ * @since 4.7.19
323
+ *
324
+ * @return array An array of posts matching the query.
325
+ *
326
+ * @see Tribe__Repository__Read_Interface::per_page()
327
+ */
328
+ public function take( $n );
329
+
330
+ /**
331
+ * Plucks a field from all results and returns it.
332
+ *
333
+ * This method will implicitly build and use a `WP_List_Util` instance on the return
334
+ * value of a call to the `all` method.
335
+ *
336
+ * @since 4.9.5
337
+ *
338
+ * @param string $field The field to pluck from each result.
339
+ *
340
+ * @return array An array of the plucked results.
341
+ *
342
+ * @see \wp_list_pluck()
343
+ */
344
+ public function pluck( $field );
345
+
346
+ /**
347
+ * Filters the results according to the specified criteria.
348
+ *
349
+ * This method will implicitly build and use a `WP_List_Util` instance on the return
350
+ * value of a call to the `all` method.
351
+ *
352
+ * @since 4.9.5
353
+ *
354
+ * @param array $args Optional. An array of key => value arguments to match
355
+ * against each object. Default empty array.
356
+ * @param string $operator Optional. The logical operation to perform. 'AND' means
357
+ * all elements from the array must match. 'OR' means only
358
+ * one element needs to match. 'NOT' means no elements may
359
+ * match. Default 'AND'.
360
+ *
361
+ * @return array An array of the filtered results.
362
+ *
363
+ * @see \wp_list_filter()
364
+ */
365
+ public function filter( $args = array(), $operator = 'AND' );
366
+
367
+ /**
368
+ * Sorts the results according to the specified criteria.
369
+ *
370
+ * This method will implicitly build and use a `WP_List_Util` instance on the return
371
+ * value of a call to the `all` method.
372
+ *
373
+ * @since 4.9.5
374
+ *
375
+ * @param string|array $orderby Optional. Either the field name to order by or an array
376
+ * of multiple orderby fields as $orderby => $order.
377
+ * @param string $order Optional. Either 'ASC' or 'DESC'. Only used if $orderby
378
+ * is a string.
379
+ * @param bool $preserve_keys Optional. Whether to preserve keys. Default false.
380
+ *
381
+ * @return array An array of the sorted results.
382
+ *
383
+ * @see \wp_list_sort()
384
+ */
385
+ public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false );
386
+
387
+ /**
388
+ * Builds a collection on the result of the `all()` method call.
389
+ *
390
+ * @since 4.9.5
391
+ *
392
+ * @return \Tribe__Utils__Post_Collection
393
+ */
394
+ public function collect();
395
+
396
+ /**
397
+ * Gets the ids of the posts matching the query.
398
+ *
399
+ * @return array An array containing the post IDs to update.
400
+ */
401
+ public function get_ids();
402
+ }
common/src/Tribe/Repository/Filter_Validation.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Provides methods to validate repository filters.
4
+ *
5
+ * @since 4.10.2
6
+ *
7
+ * @package Tribe\Repository
8
+ */
9
+
10
+ namespace Tribe\Repository;
11
+
12
+ use Tribe__Repository__Usage_Error as Usage_Error;
13
+ use Tribe__Utils__Array as Arr;
14
+
15
+ trait Filter_Validation {
16
+ /**
17
+ * Checks the passed arguments to make sure they are the correct number and nature.
18
+ *
19
+ * This method requires the class using it to define a `static::$filter_args_map` property in the shape:
20
+ * ```
21
+ * [
22
+ * <filter> => [ <arg_name> => <arg_validation_callback> ]
23
+ * ]
24
+ * ```
25
+ *
26
+ * @since 4.10.2
27
+ *
28
+ * @param string $filter The name of the filter currently validating.
29
+ * @param array $call_args The current filter call args, usually `func_get_args()`.
30
+ *
31
+ * @throws Usage_Error If there is a definition for the filter and the argument count or nature is not correct.
32
+ */
33
+ protected function ensure_args_for_filter( $filter, array $call_args ) {
34
+ $map = isset( static::$filter_args_map ) ? static::$filter_args_map : false;
35
+
36
+ if ( empty( $map ) ) {
37
+ return;
38
+ }
39
+
40
+ $required_args = Arr::get( $filter, $map, false );
41
+
42
+ if ( false === $required_args ) {
43
+ return;
44
+ }
45
+
46
+ if ( count( $required_args ) !== count( $call_args ) ) {
47
+ throw Usage_Error::because_filter_requires_args( $filter, array_keys( $required_args ) );
48
+ }
49
+
50
+ $iterator = new \MultipleIterator();
51
+ $iterator->attachIterator( new \ArrayIterator( array_keys( $required_args ) ) );
52
+ $iterator->attachIterator( new \ArrayIterator( array_values( $required_args ) ) );
53
+ $iterator->attachIterator( new \ArrayIterator( $call_args ) );
54
+
55
+ foreach ( $required_args as list( $arg_name, $validator, $input ) ) {
56
+ if ( empty( $validator( $input ) ) ) {
57
+ throw Usage_Error::because_filter_arg_is_not_valid( $filter, $arg_name );
58
+ }
59
+ }
60
+ }
61
+ }
common/src/Tribe/Repository/Interface.php CHANGED
@@ -186,13 +186,6 @@ interface Tribe__Repository__Interface
186
  */
187
  public function by_related_to_between( $by_meta_keys, $min, $max, $keys = null, $values = null );
188
 
189
- /**
190
- * Gets the ids of the posts matching the query.
191
- *
192
- * @return array An array containing the post IDs to update.
193
- */
194
- public function get_ids();
195
-
196
  /**
197
  * Adds an entry to the repository filter schema.
198
  *
186
  */
187
  public function by_related_to_between( $by_meta_keys, $min, $max, $keys = null, $values = null );
188
 
 
 
 
 
 
 
 
189
  /**
190
  * Adds an entry to the repository filter schema.
191
  *
common/src/Tribe/Repository/Read_Interface.php CHANGED
@@ -1,166 +1,14 @@
1
  <?php
2
 
 
 
3
  /**
4
  * Interface Tribe__Repository__Read_Interface
5
  *
 
6
  * @since 4.7.19
7
  */
8
- interface Tribe__Repository__Read_Interface extends Tribe__Repository__Setter_Interface {
9
- /**
10
- * Batch filter application method.
11
- *
12
- * This is the same as calling `by` multiple times with different arguments.
13
- *
14
- * @since 4.7.19
15
- *
16
- * @param array $args An associative array of arguments to filter
17
- * the posts by in the shape [ <key>, <value> ]. * * @return Tribe__Repository__Read_Interface */
18
- public function by_args( array $args );
19
-
20
- /**
21
- * Batch filter application method.
22
- *
23
- * This is the same as calling `where` multiple times with different arguments.
24
- *
25
- * T
26
-
27
- /**
28
- * Applies a filter to the query.
29
- *
30
- * While the signature only shows 2 arguments additional arguments will be passed
31
- * to the schema filters.
32
- *
33
- * @since 4.7.19
34
- *
35
- * @param string $key
36
- * @param mixed $value
37
- * @param mixed ...$args Additional, optional, call arguments that will be passed to
38
- * the schema.
39
- *
40
- * @return Tribe__Repository__Read_Interface
41
- */
42
- public function by( $key, $value = null );
43
-
44
- /**
45
- * Just an alias of the `by` method to allow for easier reading.
46
- *
47
- * @since 4.7.19
48
- *
49
- * @param string $key
50
- * @param mixed $value
51
- *
52
- * @return Tribe__Repository__Read_Interface
53
- */
54
- public function where( $key, $value = null );
55
-
56
- /**
57
- * Sets the page of posts to fetch.
58
- *
59
- * Mind that this implementation does not support a `by( 'page', 2 )`
60
- * filter to force more readable code.
61
- *
62
- * @since 4.7.19
63
- *
64
- * @param int $page
65
- *
66
- * @return Tribe__Repository__Read_Interface
67
- */
68
- public function page( $page );
69
-
70
- /**
71
- * Sets the number of posts to retrieve per page.
72
- *
73
- * Mind that this implementation does not support a `by( 'per_page', 5 )`
74
- * filter to force more readable code; by default posts per page is set to
75
- * the pagination defaults for the post type.
76
- *
77
- * @param int $per_page
78
- *
79
- * @return Tribe__Repository__Read_Interface
80
- */
81
- public function per_page( $per_page );
82
-
83
- /**
84
- * Returns the number of posts found matching the query.
85
- *
86
- * Mind that this value ignores the offset returning the
87
- * number of results if limits where not applied.
88
- *
89
- * @since 4.7.19
90
- *
91
- * @return int
92
- */
93
- public function found();
94
-
95
- /**
96
- * Returns all posts matching the query.
97
- *
98
- * Mind that "all" means "all the posts matching all the filters" so pagination applies.
99
- *
100
- * @return array
101
- */
102
- public function all();
103
-
104
- /**
105
- * Sets the offset on the query.
106
- *
107
- * Mind that this implementation does not support a `by( 'offset', 2 )`
108
- * filter to force more readable code.
109
- *
110
- * @since 4.7.19
111
- *
112
- * @param int $offset
113
- * @param bool $increment Whether to increment the offset by the value
114
- * or replace it.
115
- *
116
- * @return Tribe__Repository__Read_Interface
117
- */
118
- public function offset( $offset, $increment = false );
119
-
120
- /**
121
- * Sets the order on the query.
122
- *
123
- * Mind that this implementation does not support a `by( 'order', 2 )`
124
- * filter to force more readable code.
125
- *
126
- * @since 4.7.19
127
- *
128
- * @param string $order
129
- *
130
- * @return Tribe__Repository__Read_Interface
131
- */
132
- public function order( $order = 'ASC' );
133
-
134
- /**
135
- * Sets the order criteria results should be fetched by.
136
- *
137
- * Mind that this implementation does not support a `by( 'order_by', 'title' )`
138
- * filter to force more readable code.
139
- *
140
- * @since 4.7.19
141
- *
142
- * @param string $order_by The post field, custom field or alias key to order posts by.
143
- * @param string $order The order direction; optional; shortcut for the `order` method; defaults
144
- * to `DESC`.
145
- *
146
- * @return Tribe__Repository__Read_Interface
147
- */
148
- public function order_by( $order_by, $order = 'DESC' );
149
-
150
- /**
151
- * Sets the fields that should be returned by the query.
152
- *
153
- * Mind that this implementation does not support a `by( 'fields', 'ids' )`
154
- * filter to force more readable code.
155
- *
156
- * @since 4.7.19
157
- *
158
- * @param string $fields
159
- *
160
- * @return Tribe__Repository__Read_Interface
161
- */
162
- public function fields( $fields );
163
-
164
  /**
165
  * Sets the permission that should be used to get the posts.
166
  *
@@ -173,162 +21,6 @@ interface Tribe__Repository__Read_Interface extends Tribe__Repository__Setter_In
173
  */
174
  public function permission( $permission );
175
 
176
- /**
177
- * Sugar method to set the `post__in` argument.
178
- *
179
- * Successive calls will stack, not replace each one.
180
- *
181
- * @since 4.7.19
182
- *
183
- * @param array|int $post_ids
184
- *
185
- * @return Tribe__Repository__Read_Interface
186
- */
187
- public function in( $post_ids );
188
-
189
- /**
190
- * Sugar method to set the `post__not_in` argument.
191
- *
192
- * Successive calls will stack, not replace each one.
193
- *
194
- * @since 4.7.19
195
- *
196
- * @param array|int $post_ids
197
- *
198
- * @return Tribe__Repository__Read_Interface
199
- */
200
- public function not_in( $post_ids );
201
-
202
- /**
203
- * Sugar method to set the `post_parent__in` argument.
204
- *
205
- * Successive calls will stack, not replace each one.
206
- *
207
- * @since 4.7.19
208
- *
209
- * @param array|int $post_id
210
- *
211
- * @return Tribe__Repository__Read_Interface
212
- */
213
- public function parent( $post_id );
214
-
215
- /**
216
- * Sugar method to set the `post_parent__in` argument.
217
- *
218
- * Successive calls will stack, not replace each one.
219
- *
220
- * @since 4.7.19
221
- *
222
- * @param array $post_ids
223
- *
224
- * @return Tribe__Repository__Read_Interface
225
- */
226
- public function parent_in( $post_ids );
227
-
228
- /**
229
- * Sugar method to set the `post_parent__not_in` argument.
230
- *
231
- * Successive calls will stack, not replace each one.
232
- *
233
- * @since 4.7.19
234
- *
235
- * @param array $post_ids
236
- *
237
- * @return Tribe__Repository__Read_Interface
238
- */
239
- public function parent_not_in( $post_ids );
240
-
241
- /**
242
- * Sugar method to set the `s` argument.
243
- *
244
- * Successive calls will replace the search string.
245
- * This is the default WordPress searh, to search by title,
246
- * content or excerpt only use the `title`, `content`, `excerpt` filters.
247
- *
248
- * @param $search
249
- *
250
- * @return Tribe__Repository__Read_Interface
251
- */
252
- public function search( $search );
253
-
254
- /**
255
- * Returns the number of posts found matching the query in the current page.
256
- *
257
- * While the `found` method will return the number of posts found
258
- * across all pages this method will only return the number of
259
- * posts found in the current page.
260
- * Differently from the `found` method this method will apply the
261
- * offset if set.
262
- *
263
- * @since 4.7.19
264
- *
265
- * @return int
266
- */
267
- public function count();
268
-
269
- /**
270
- * Returns the first post of the page matching the current query.
271
- *
272
- * If, by default or because set with the `per_page` method, all
273
- * posts matching the query should be returned then this will be
274
- * the first post of all those matching the query.
275
- *
276
- * @since 4.7.19
277
- *
278
- * @return WP_Post|mixed|null
279
- *
280
- * @see Tribe__Repository__Read_Interface::per_page()
281
- */
282
- public function first();
283
-
284
- /**
285
- * Returns the last post of the page matching the current query.
286
- *
287
- * If, by default or because set with the `per_page` method, all
288
- * posts matching the query should be returned then this will be
289
- * the last post of all those matching the query.
290
- *
291
- * @since 4.7.19
292
- *
293
- * @return WP_Post|mixed|null
294
- *
295
- * @see Tribe__Repository__Read_Interface::per_page()
296
- */
297
- public function last();
298
-
299
- /**
300
- * Returns the nth post (1-based) of the page matching the current query.
301
- *
302
- * Being 1-based the second post can be fetched using `nth( 2 )`.
303
- * If, by default or because set with the `per_page` method, all
304
- * posts matching the query should be returned then this will be
305
- * the nth post of all those matching the query.
306
- *
307
- * @since 4.7.19
308
- *
309
- * @param int $n
310
- *
311
- * @return WP_Post|mixed|null
312
- *
313
- * @see Tribe__Repository__Read_Interface::per_page()
314
- */
315
- public function nth( $n );
316
-
317
- /**
318
- * Returns the first n posts of the page matching the current query.
319
- *
320
- * If, by default or because set with the `per_page` method, all
321
- * posts matching the query should be returned then this method will
322
- * return the first n posts of all those matching the query.
323
- *
324
- * @since 4.7.19
325
- *
326
- * @return array An array of posts matching the query.
327
- *
328
- * @see Tribe__Repository__Read_Interface::per_page()
329
- */
330
- public function take( $n );
331
-
332
  /**
333
  * Fetches a single instance of the post type handled by the repository by
334
  * the primary key.
@@ -478,70 +170,4 @@ interface Tribe__Repository__Read_Interface extends Tribe__Repository__Setter_In
478
  * @return WP_Query A query object ready to return, and operate, on the posts.
479
  */
480
  public function get_query_for_posts( array $posts );
481
-
482
- /**
483
- * Plucks a field from all results and returns it.
484
- *
485
- * This method will implicitly build and use a `WP_List_Util` instance on the return
486
- * value of a call to the `all` method.
487
- *
488
- * @since 4.9.5
489
- *
490
- * @param string $field The field to pluck from each result.
491
- *
492
- * @return array An array of the plucked results.
493
- *
494
- * @see \wp_list_pluck()
495
- */
496
- public function pluck( $field );
497
-
498
- /**
499
- * Filters the results according to the specified criteria.
500
- *
501
- * This method will implicitly build and use a `WP_List_Util` instance on the return
502
- * value of a call to the `all` method.
503
- *
504
- * @since 4.9.5
505
- *
506
- * @param array $args Optional. An array of key => value arguments to match
507
- * against each object. Default empty array.
508
- * @param string $operator Optional. The logical operation to perform. 'AND' means
509
- * all elements from the array must match. 'OR' means only
510
- * one element needs to match. 'NOT' means no elements may
511
- * match. Default 'AND'.
512
- *
513
- * @return array An array of the filtered results.
514
- *
515
- * @see \wp_list_filter()
516
- */
517
- public function filter( $args = array(), $operator = 'AND' );
518
-
519
- /**
520
- * Sorts the results according to the specified criteria.
521
- *
522
- * This method will implicitly build and use a `WP_List_Util` instance on the return
523
- * value of a call to the `all` method.
524
- *
525
- * @since 4.9.5
526
- *
527
- * @param string|array $orderby Optional. Either the field name to order by or an array
528
- * of multiple orderby fields as $orderby => $order.
529
- * @param string $order Optional. Either 'ASC' or 'DESC'. Only used if $orderby
530
- * is a string.
531
- * @param bool $preserve_keys Optional. Whether to preserve keys. Default false.
532
- *
533
- * @return array An array of the sorted results.
534
- *
535
- * @see \wp_list_sort()
536
- */
537
- public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false );
538
-
539
- /**
540
- * Builds a collection on the result of the `all()` method call.
541
- *
542
- * @since 4.9.5
543
- *
544
- * @return \Tribe__Utils__Post_Collection
545
- */
546
- public function collect();
547
  }
1
  <?php
2
 
3
+ use Tribe\Repository\Core_Read_Interface;
4
+
5
  /**
6
  * Interface Tribe__Repository__Read_Interface
7
  *
8
+ *
9
  * @since 4.7.19
10
  */
11
+ interface Tribe__Repository__Read_Interface extends Tribe__Repository__Setter_Interface, Core_Read_Interface {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  /**
13
  * Sets the permission that should be used to get the posts.
14
  *
21
  */
22
  public function permission( $permission );
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  /**
25
  * Fetches a single instance of the post type handled by the repository by
26
  * the primary key.
170
  * @return WP_Query A query object ready to return, and operate, on the posts.
171
  */
172
  public function get_query_for_posts( array $posts );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  }
common/src/Tribe/Repository/Usage_Error.php CHANGED
@@ -244,4 +244,45 @@ class Tribe__Repository__Usage_Error extends Exception {
244
  public static function because_query_cannot_be_set_after_it_ran() {
245
  return new self( "You are trying to set the repository query after it ran!" );
246
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  }
244
  public static function because_query_cannot_be_set_after_it_ran() {
245
  return new self( "You are trying to set the repository query after it ran!" );
246
  }
247
+
248
+ /**
249
+ * Indicates the client code is trying to call a filter without the correct number of req. parameters.
250
+ *
251
+ * @since 4.10.2
252
+ *
253
+ * @param string $filter The called filter.
254
+ * @param array $required_args The human-readable name of the required arguments.
255
+ *
256
+ * @return static A ready to throw instance of the class.
257
+ */
258
+ public static function because_filter_requires_args( $filter, array $required_args ) {
259
+ return new static(
260
+ sprintf(
261
+ 'The "%s" filter requires %d arguments: %s',
262
+ $filter,
263
+ count( $required_args ),
264
+ implode( ', ', $required_args )
265
+ )
266
+ );
267
+ }
268
+
269
+ /**
270
+ * Indicates the client code is trying to call a filter with an invalid parameter.
271
+ *
272
+ * @since 4.10.2
273
+ *
274
+ * @param string $filter The called filter.
275
+ * @param string $arg_name The human-readable name of the parameter.
276
+ *
277
+ * @return static A ready to throw instance of the class.
278
+ */
279
+ public static function because_filter_arg_is_not_valid( $filter, $arg_name ) {
280
+ return new static(
281
+ sprintf(
282
+ 'The "%s" filter "%s" argument is not valid.',
283
+ $filter,
284
+ $arg_name
285
+ )
286
+ );
287
+ }
288
  }
common/src/Tribe/Rewrite.php CHANGED
@@ -975,7 +975,7 @@ class Tribe__Rewrite {
975
  return home_url();
976
  }
977
 
978
- $clean = $this->get_canonical_url( add_query_arg( $parsed_vars, home_url() ) );
979
 
980
  $this->clean_url_cache[ $url ] = $clean;
981
 
975
  return home_url();
976
  }
977
 
978
+ $clean = $this->get_canonical_url( add_query_arg( $parsed_vars, home_url() ), $force );
979
 
980
  $this->clean_url_cache[ $url ] = $clean;
981
 
common/src/Tribe/Service_Providers/Dialog.php CHANGED
@@ -5,7 +5,7 @@ namespace Tribe\Service_Providers;
5
  /**
6
  * Class Dialog
7
  *
8
- * @since TBD
9
  *
10
  * Handles the registration and creation of our async process handlers.
11
  */
@@ -14,7 +14,7 @@ class Dialog extends \tad_DI52_ServiceProvider {
14
  /**
15
  * Binds and sets up implementations.
16
  *
17
- * @since TBD
18
  */
19
  public function register() {
20
  tribe_singleton( 'dialog.view', '\Tribe\Dialog\View' );
@@ -22,7 +22,7 @@ class Dialog extends \tad_DI52_ServiceProvider {
22
  /**
23
  * Allows plugins to hook into the register action to register views, etc
24
  *
25
- * @since TBD
26
  *
27
  * @param Tribe\Service_Providers\Dialog $dialog
28
  */
@@ -34,7 +34,7 @@ class Dialog extends \tad_DI52_ServiceProvider {
34
  /**
35
  * Set up hooks for classes.
36
  *
37
- * @since TBD
38
  */
39
  private function hooks() {
40
  add_action( 'tribe_common_loaded', [ $this, 'register_dialog_assets' ] );
@@ -43,7 +43,7 @@ class Dialog extends \tad_DI52_ServiceProvider {
43
  /**
44
  * Allows plugins to hook into the hooks action to register their own hooks
45
  *
46
- * @since TBD
47
  *
48
  * @param Tribe\Service_Providers\Dialog $dialog
49
  */
@@ -53,7 +53,7 @@ class Dialog extends \tad_DI52_ServiceProvider {
53
  /**
54
  * {@inheritdoc}
55
  *
56
- * @since TBD
57
  */
58
  public function template_public_namespace( $namespace, $obj ) {
59
  if ( ! empty( $obj->template_namespace ) && 'dialog' === $obj->template_namespace ) {
@@ -66,7 +66,7 @@ class Dialog extends \tad_DI52_ServiceProvider {
66
  /**
67
  * Register assets associated with dialog
68
  *
69
- * @since TBD
70
  */
71
  public function register_dialog_assets() {
72
  $main = \Tribe__Main::instance();
@@ -101,7 +101,7 @@ class Dialog extends \tad_DI52_ServiceProvider {
101
  /**
102
  * Allows plugins to hook into the assets action to register their own assets
103
  *
104
- * @since TBD
105
  *
106
  * @param Tribe\Service_Providers\Dialog $dialog
107
  */
5
  /**
6
  * Class Dialog
7
  *
8
+ * @since 4.10.0
9
  *
10
  * Handles the registration and creation of our async process handlers.
11
  */
14
  /**
15
  * Binds and sets up implementations.
16
  *
17
+ * @since 4.10.0
18
  */
19
  public function register() {
20
  tribe_singleton( 'dialog.view', '\Tribe\Dialog\View' );
22
  /**
23
  * Allows plugins to hook into the register action to register views, etc
24
  *
25
+ * @since 4.10.0
26
  *
27
  * @param Tribe\Service_Providers\Dialog $dialog
28
  */
34
  /**
35
  * Set up hooks for classes.
36
  *
37
+ * @since 4.10.0
38
  */
39
  private function hooks() {
40
  add_action( 'tribe_common_loaded', [ $this, 'register_dialog_assets' ] );
43
  /**
44
  * Allows plugins to hook into the hooks action to register their own hooks
45
  *
46
+ * @since 4.10.0
47
  *
48
  * @param Tribe\Service_Providers\Dialog $dialog
49
  */
53
  /**
54
  * {@inheritdoc}
55
  *
56
+ * @since 4.10.0
57
  */
58
  public function template_public_namespace( $namespace, $obj ) {
59
  if ( ! empty( $obj->template_namespace ) && 'dialog' === $obj->template_namespace ) {
66
  /**
67
  * Register assets associated with dialog
68
  *
69
+ * @since 4.10.0
70
  */
71
  public function register_dialog_assets() {
72
  $main = \Tribe__Main::instance();
101
  /**
102
  * Allows plugins to hook into the assets action to register their own assets
103
  *
104
+ * @since 4.10.0
105
  *
106
  * @param Tribe\Service_Providers\Dialog $dialog
107
  */
common/src/Tribe/Template.php CHANGED
@@ -37,6 +37,15 @@ class Tribe__Template {
37
  */
38
  protected $global = array();
39
 
 
 
 
 
 
 
 
 
 
40
  /**
41
  * Allow chaing if class will extract data from the local context
42
  *
@@ -331,6 +340,25 @@ class Tribe__Template {
331
  return apply_filters( 'tribe_template_public_namespace', $namespace, $this );
332
  }
333
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
334
  /**
335
  * Fetches the path for locating files given a base folder normally theme related
336
  *
@@ -341,9 +369,17 @@ class Tribe__Template {
341
  * @return string
342
  */
343
  protected function get_template_public_path( $base ) {
 
344
  // Craft the plugin Path
345
  $path = array_merge( (array) $base, (array) $this->get_template_public_namespace() );
346
 
 
 
 
 
 
 
 
347
  // Implode to avoid Window Problems
348
  $path = implode( DIRECTORY_SEPARATOR, $path );
349
 
37
  */
38
  protected $global = array();
39
 
40
+ /**
41
+ * Used for finding templates for public templates on themes inside of a folder.
42
+ *
43
+ * @since 4.10.2
44
+ *
45
+ * @var string[]
46
+ */
47
+ protected $template_origin_base_folder = [ 'src', 'views' ];
48
+
49
  /**
50
  * Allow chaing if class will extract data from the local context
51
  *
340
  return apply_filters( 'tribe_template_public_namespace', $namespace, $this );
341
  }
342
 
343
+ /**
344
+ * Fetches which base folder we look for templates in the origin plugin.
345
+ *
346
+ * @since 4.10.2
347
+ *
348
+ * @return array The base folders we look for templates in the origin plugin.
349
+ */
350
+ public function get_template_origin_base_folder() {
351
+ /**
352
+ * Allows filtering of the base path for templates.
353
+ *
354
+ * @since 4.10.2
355
+ *
356
+ * @param array $namespace Which is the base folder we will look for files in the plugin.
357
+ * @param self $template Current instance of the Tribe__Template.
358
+ */
359
+ return apply_filters( 'tribe_template_origin_base_folder', $this->template_origin_base_folder, $this );
360
+ }
361
+
362
  /**
363
  * Fetches the path for locating files given a base folder normally theme related
364
  *
369
  * @return string
370
  */
371
  protected function get_template_public_path( $base ) {
372
+
373
  // Craft the plugin Path
374
  $path = array_merge( (array) $base, (array) $this->get_template_public_namespace() );
375
 
376
+ // Pick up if the folder needs to be aded to the public template path.
377
+ $folder = array_diff( $this->folder, $this->get_template_origin_base_folder() );
378
+
379
+ if ( ! empty( $folder ) ) {
380
+ $path = array_merge( $path, $folder );
381
+ }
382
+
383
  // Implode to avoid Window Problems
384
  $path = implode( DIRECTORY_SEPARATOR, $path );
385
 
common/src/Tribe/Timezones.php CHANGED
@@ -10,7 +10,6 @@ class Tribe__Timezones {
10
  const SITE_TIMEZONE = 'site';
11
  const EVENT_TIMEZONE = 'event';
12
 
13
-
14
  /**
15
  * Container for reusable DateTimeZone objects.
16
  *
@@ -18,7 +17,6 @@ class Tribe__Timezones {
18
  */
19
  protected static $timezones = array();
20
 
21
-
22
  public static function init() {
23
  self::invalidate_caches();
24
  }
@@ -581,6 +579,13 @@ class Tribe__Timezones {
581
  return $timezone;
582
  }
583
 
 
 
 
 
 
 
 
584
  $timezone = null === $timezone ? self::wp_timezone_string() : $timezone;
585
 
586
  try {
@@ -589,6 +594,10 @@ class Tribe__Timezones {
589
  return new DateTimeZone( 'UTC' );
590
  }
591
 
 
 
 
 
592
  return $object;
593
  }
594
 
10
  const SITE_TIMEZONE = 'site';
11
  const EVENT_TIMEZONE = 'event';
12
 
 
13
  /**
14
  * Container for reusable DateTimeZone objects.
15
  *
17
  */
18
  protected static $timezones = array();
19
 
 
20
  public static function init() {
21
  self::invalidate_caches();
22
  }
579
  return $timezone;
580
  }
581
 
582
+ /** @var Tribe__Cache $cache */
583
+ $cache = tribe('cache');
584
+
585
+ if ( is_string( $timezone ) && $cached = $cache[ __METHOD__ . $timezone ] ) {
586
+ return clone $cached;
587
+ }
588
+
589
  $timezone = null === $timezone ? self::wp_timezone_string() : $timezone;
590
 
591
  try {
594
  return new DateTimeZone( 'UTC' );
595
  }
596
 
597
+ if ( is_string( $timezone ) ) {
598
+ $cache[ __METHOD__ . $timezone ] = $object;
599
+ }
600
+
601
  return $object;
602
  }
603
 
common/src/Tribe/Tooltip/View.php CHANGED
@@ -12,7 +12,7 @@ class View extends \Tribe__Template {
12
  /**
13
  * Where in the themes we will look for templates
14
  *
15
- * @since TBD
16
  *
17
  * @var string
18
  */
12
  /**
13
  * Where in the themes we will look for templates
14
  *
15
+ * @since 4.10.2
16
  *
17
  * @var string
18
  */
common/src/Tribe/Utils/Collection_Trait.php CHANGED
@@ -168,4 +168,27 @@ trait Collection_Trait {
168
  public function seek( $position ) {
169
  $this->items_index = $position;
170
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  }
168
  public function seek( $position ) {
169
  $this->items_index = $position;
170
  }
171
+
172
+ /**
173
+ * Applies a filter callback to each element of this collection changing the collection elements to only those
174
+ * passing the filter.
175
+ *
176
+ * @since 4.10.2
177
+ *
178
+ * @param callable $filter_callback The filter callback that will be applied to each element of the collection; the
179
+ * callback will receive the element as parameter.
180
+ *
181
+ * @return Collection_Trait A new collection instance, that contains only the elements that passed the filter.
182
+ */
183
+ public function filter( $filter_callback ) {
184
+ if ( $this->count() === 0 ) {
185
+ // If there is nothing to filter to begin with, just return this.
186
+ return $this;
187
+ }
188
+
189
+ $filtered = new static();
190
+ $filtered->items = array_filter( $this->all(), $filter_callback );
191
+
192
+ return $filtered;
193
+ }
194
  }
common/src/Tribe/Utils/Lazy_Events.php CHANGED
@@ -131,7 +131,11 @@ trait Lazy_Events {
131
  *
132
  * @see Lazy_Events::resolved()
133
  */
134
- public function on_resolve( callable $callback ) {
 
 
 
 
135
  $this->lazy_resolve_callback = $callback;
136
 
137
  return $this;
131
  *
132
  * @see Lazy_Events::resolved()
133
  */
134
+ public function on_resolve( callable $callback = null ) {
135
+ if ( null === $callback ) {
136
+ return $this;
137
+ }
138
+
139
  $this->lazy_resolve_callback = $callback;
140
 
141
  return $this;
common/src/functions/template-tags/html.php CHANGED
@@ -35,7 +35,7 @@ function tribe_classes() {
35
  /**
36
  * Get attributes for required fields.
37
  *
38
- * @since TBD
39
  *
40
  * @param boolean $required If the field is required.
41
  * @param boolean $echo Whether to echo the string or return it.
@@ -57,7 +57,7 @@ function tribe_required( $required, $echo = true ) {
57
  /**
58
  * Get string for required field labels.
59
  *
60
- * @since TBD
61
  *
62
  * @param boolean $required If the field is required.
63
  * @param boolean $echo Whether to echo the string or return it.
@@ -81,7 +81,7 @@ function tribe_required_label( $required, $echo = true ) {
81
  /**
82
  * Get attributes for disabled fields.
83
  *
84
- * @since TBD
85
  *
86
  * @param boolean $disabled If the field is disabled.
87
  * @param boolean $echo Whether to echo the string or return it.
35
  /**
36
  * Get attributes for required fields.
37
  *
38
+ * @since 4.10.0
39
  *
40
  * @param boolean $required If the field is required.
41
  * @param boolean $echo Whether to echo the string or return it.
57
  /**
58
  * Get string for required field labels.
59
  *
60
+ * @since 4.10.0
61
  *
62
  * @param boolean $required If the field is required.
63
  * @param boolean $echo Whether to echo the string or return it.
81
  /**
82
  * Get attributes for disabled fields.
83
  *
84
+ * @since 4.10.0
85
  *
86
  * @param boolean $disabled If the field is disabled.
87
  * @param boolean $echo Whether to echo the string or return it.
common/src/functions/utils.php CHANGED
@@ -653,7 +653,7 @@ if ( ! function_exists( 'tribe_get_class_instance' ) ) {
653
  /**
654
  * Gets the class instance / Tribe Container from the passed object or string.
655
  *
656
- * @since TBD
657
  *
658
  * @see \tad_DI52_Container::isBound()
659
  * @see \tribe()
@@ -700,7 +700,7 @@ if ( ! function_exists( 'tribe_get_least_version_ever_installed' ) ) {
700
  * If no version info found, it will return false.
701
  * Zero may have been logged as a past version but gets ignored.
702
  *
703
- * @since TBD
704
  *
705
  * @param string|object $class The plugin class' singleton name, class name, or instance.
706
  *
@@ -747,7 +747,7 @@ if ( ! function_exists( 'tribe_get_greatest_version_ever_installed' ) ) {
747
  * If no version info found, it will return false.
748
  * Zero may have been logged as a past version but gets ignored.
749
  *
750
- * @since TBD
751
  *
752
  * @see \tribe_get_currently_installed_version() To get the current version, even if it's not the greatest.
753
  *
@@ -796,7 +796,7 @@ if ( ! function_exists( 'tribe_get_first_ever_installed_version' ) ) {
796
  * If no version info found, it will return false.
797
  * Zero may have been logged as a past version but gets ignored.
798
  *
799
- * @since TBD
800
  *
801
  * @param string|object $class The plugin class' singleton name, class name, or instance.
802
  *
@@ -843,7 +843,7 @@ if ( ! function_exists( 'tribe_get_currently_installed_version' ) ) {
843
  * If user initially installed v2, downgraded to v1, then updated to v3, this will return v3.
844
  * Only looks at the class' current version, else false.
845
  *
846
- * @since TBD
847
  *
848
  * @see \tribe_get_greatest_version_ever_installed() To get the greatest ever installed, even if not the current.
849
  *
@@ -871,7 +871,7 @@ if ( ! function_exists( 'tribe_installed_before' ) ) {
871
  * Checks if a plugin's initially-installed version was prior to the passed version.
872
  * If no info found, it will assume the plugin is old and return true.
873
  *
874
- * @since TBD
875
  *
876
  * @param string|object $class The plugin class' singleton name, class name, or instance.
877
  * @param string $version The SemVer version string to compare.
@@ -895,7 +895,7 @@ if ( ! function_exists( 'tribe_installed_after' ) ) {
895
  * Checks if a plugin's initially-installed version was after the passed version.
896
  * If no info found, it will assume the plugin is old and return false.
897
  *
898
- * @since TBD
899
  *
900
  * @param string|object $class The plugin class' singleton name, class name, or instance.
901
  * @param string $version The SemVer version string to compare.
@@ -919,7 +919,7 @@ if ( ! function_exists( 'tribe_installed_on' ) ) {
919
  * Checks if a plugin was installed at/on the passed version.
920
  * If no info found, it will assume the plugin is old and return false.
921
  *
922
- * @since TBD
923
  *
924
  * @param string|object $class The plugin class' singleton name, class name, or instance.
925
  * @param string $version The SemVer version string to compare.
653
  /**
654
  * Gets the class instance / Tribe Container from the passed object or string.
655
  *
656
+ * @since 4.10.0
657
  *
658
  * @see \tad_DI52_Container::isBound()
659
  * @see \tribe()
700
  * If no version info found, it will return false.
701
  * Zero may have been logged as a past version but gets ignored.
702
  *
703
+ * @since 4.10.0
704
  *
705
  * @param string|object $class The plugin class' singleton name, class name, or instance.
706
  *
747
  * If no version info found, it will return false.
748
  * Zero may have been logged as a past version but gets ignored.
749
  *
750
+ * @since 4.10.0
751
  *
752
  * @see \tribe_get_currently_installed_version() To get the current version, even if it's not the greatest.
753
  *
796
  * If no version info found, it will return false.
797
  * Zero may have been logged as a past version but gets ignored.
798
  *
799
+ * @since 4.10.0
800
  *
801
  * @param string|object $class The plugin class' singleton name, class name, or instance.
802
  *
843
  * If user initially installed v2, downgraded to v1, then updated to v3, this will return v3.
844
  * Only looks at the class' current version, else false.
845
  *
846
+ * @since 4.10.0
847
  *
848
  * @see \tribe_get_greatest_version_ever_installed() To get the greatest ever installed, even if not the current.
849
  *
871
  * Checks if a plugin's initially-installed version was prior to the passed version.
872
  * If no info found, it will assume the plugin is old and return true.
873
  *
874
+ * @since 4.10.0
875
  *
876
  * @param string|object $class The plugin class' singleton name, class name, or instance.
877
  * @param string $version The SemVer version string to compare.
895
  * Checks if a plugin's initially-installed version was after the passed version.
896
  * If no info found, it will assume the plugin is old and return false.
897
  *
898
+ * @since 4.10.0
899
  *
900
  * @param string|object $class The plugin class' singleton name, class name, or instance.
901
  * @param string $version The SemVer version string to compare.
919
  * Checks if a plugin was installed at/on the passed version.
920
  * If no info found, it will assume the plugin is old and return false.
921
  *
922
+ * @since 4.10.0
923
  *
924
  * @param string|object $class The plugin class' singleton name, class name, or instance.
925
  * @param string $version The SemVer version string to compare.
common/src/resources/css/common-full.css CHANGED
@@ -339,10 +339,6 @@
339
  * SVG - Arrow Right
340
  * ----------------------------------------------------------------------------- */
341
 
342
- /* -----------------------------------------------------------------------------
343
- * SVG - Arrow (light, left)
344
- * ----------------------------------------------------------------------------- */
345
-
346
  /* -----------------------------------------------------------------------------
347
  * SVG - Caret Down
348
  * ----------------------------------------------------------------------------- */
@@ -376,15 +372,15 @@
376
  * ----------------------------------------------------------------------------- */
377
 
378
  /* -----------------------------------------------------------------------------
379
- * SVG - Error
380
  * ----------------------------------------------------------------------------- */
381
 
382
  /* -----------------------------------------------------------------------------
383
- * SVG - Featured
384
  * ----------------------------------------------------------------------------- */
385
 
386
  /* -----------------------------------------------------------------------------
387
- * SVG - Filters
388
  * ----------------------------------------------------------------------------- */
389
 
390
  /* -----------------------------------------------------------------------------
@@ -395,24 +391,40 @@
395
  * SVG - Location
396
  * ----------------------------------------------------------------------------- */
397
 
 
 
 
 
398
  /* -----------------------------------------------------------------------------
399
  * SVG - Map
400
  * ----------------------------------------------------------------------------- */
401
 
 
 
 
 
 
 
 
 
402
  /* -----------------------------------------------------------------------------
403
  * SVG - Month
404
  * ----------------------------------------------------------------------------- */
405
 
406
  /* -----------------------------------------------------------------------------
407
- * SVG - Photo
408
  * ----------------------------------------------------------------------------- */
409
 
410
  /* -----------------------------------------------------------------------------
411
- * SVG - Recurring
412
  * ----------------------------------------------------------------------------- */
413
 
414
  /* -----------------------------------------------------------------------------
415
- * SVG - Remove
 
 
 
 
416
  * ----------------------------------------------------------------------------- */
417
 
418
  /* -----------------------------------------------------------------------------
@@ -545,10 +557,6 @@
545
  * Button - Solid
546
  * ----------------------------------------------------------------------------- */
547
 
548
- /* -----------------------------------------------------------------------------
549
- * Button - Link
550
- * ----------------------------------------------------------------------------- */
551
-
552
  /* -----------------------------------------------------------------------------
553
  * Button - Border
554
  * ----------------------------------------------------------------------------- */
@@ -1241,7 +1249,8 @@
1241
  * Theme Overrides - Twenty Nineteen
1242
  * ------------------------------------------------------------------------- */
1243
 
1244
- .tribe-theme-twentynineteen .entry .tribe-common a {
 
1245
  text-decoration: none;
1246
  }
1247
 
339
  * SVG - Arrow Right
340
  * ----------------------------------------------------------------------------- */
341
 
 
 
 
 
342
  /* -----------------------------------------------------------------------------
343
  * SVG - Caret Down
344
  * ----------------------------------------------------------------------------- */
372
  * ----------------------------------------------------------------------------- */
373
 
374
  /* -----------------------------------------------------------------------------
375
+ * SVG - Featured
376
  * ----------------------------------------------------------------------------- */
377
 
378
  /* -----------------------------------------------------------------------------
379
+ * SVG - Filters
380
  * ----------------------------------------------------------------------------- */
381
 
382
  /* -----------------------------------------------------------------------------
383
+ * SVG - Link
384
  * ----------------------------------------------------------------------------- */
385
 
386
  /* -----------------------------------------------------------------------------
391
  * SVG - Location
392
  * ----------------------------------------------------------------------------- */
393
 
394
+ /* -----------------------------------------------------------------------------
395
+ * SVG - Mail
396
+ * ----------------------------------------------------------------------------- */
397
+
398
  /* -----------------------------------------------------------------------------
399
  * SVG - Map
400
  * ----------------------------------------------------------------------------- */
401
 
402
+ /* -----------------------------------------------------------------------------
403
+ * SVG - Map pin
404
+ * ----------------------------------------------------------------------------- */
405
+
406
+ /* -----------------------------------------------------------------------------
407
+ * SVG - Messages
408
+ * ----------------------------------------------------------------------------- */
409
+
410
  /* -----------------------------------------------------------------------------
411
  * SVG - Month
412
  * ----------------------------------------------------------------------------- */
413
 
414
  /* -----------------------------------------------------------------------------
415
+ * SVG - No Map
416
  * ----------------------------------------------------------------------------- */
417
 
418
  /* -----------------------------------------------------------------------------
419
+ * SVG - Phone
420
  * ----------------------------------------------------------------------------- */
421
 
422
  /* -----------------------------------------------------------------------------
423
+ * SVG - Photo
424
+ * ----------------------------------------------------------------------------- */
425
+
426
+ /* -----------------------------------------------------------------------------
427
+ * SVG - Recurring
428
  * ----------------------------------------------------------------------------- */
429
 
430
  /* -----------------------------------------------------------------------------
557
  * Button - Solid
558
  * ----------------------------------------------------------------------------- */
559
 
 
 
 
 
560
  /* -----------------------------------------------------------------------------
561
  * Button - Border
562
  * ----------------------------------------------------------------------------- */
1249
  * Theme Overrides - Twenty Nineteen
1250
  * ------------------------------------------------------------------------- */
1251
 
1252
+ .tribe-theme-twentynineteen .tribe-common a,
1253
+ .tribe-theme-twentynineteen .entry .tribe-common a {
1254
  text-decoration: none;
1255
  }
1256
 
common/src/resources/css/common-full.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-common figure{line-height:0}.tribe-common figcaption{line-height:normal}.tribe-common a{background-color:transparent;-webkit-text-decoration-skip:objects}.tribe-common abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.tribe-common code,.tribe-common kbd,.tribe-common pre,.tribe-common samp{font-family:monospace;font-size:1em}.tribe-common b,.tribe-common strong{font-weight:inherit;font-weight:bolder}.tribe-common dfn{font-style:italic}.tribe-common mark{background-color:#ff0;color:#000}.tribe-common small{font-size:80%}.tribe-common sub,.tribe-common sup{font-size:75%;line-height:0}.tribe-common hr{border:0;height:0}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=email],.tribe-common input[type=password],.tribe-common input[type=reset],.tribe-common input[type=search],.tribe-common input[type=submit],.tribe-common input[type=text],.tribe-common input[type=url],.tribe-common textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tribe-common button,.tribe-common input,.tribe-common optgroup,.tribe-common select,.tribe-common textarea{color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:antialiased}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{outline:0;border-radius:0}.tribe-common select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.tribe-common optgroup{font-weight:700}.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common p{font-weight:400;text-rendering:optimizeLegibility}.tribe-theme-twentynineteen .tribe-common h1:before,.tribe-theme-twentynineteen .tribe-common h2:before{content:none}.tribe-theme-twentynineteen .tribe-common button,.tribe-theme-twentynineteen .tribe-common input[type=button],.tribe-theme-twentynineteen .tribe-common input[type=reset],.tribe-theme-twentynineteen .tribe-common input[type=submit]{outline:none}.tribe-theme-twentynineteen .tribe-common td,.tribe-theme-twentynineteen .tribe-common th{word-break:normal}.tribe-theme-twentyseventeen .tribe-common h5{letter-spacing:normal;text-transform:none}.tribe-theme-twentyseventeen .tribe-common input[type=text]{border-radius:0}.tribe-theme-twentytwenty .tribe-common{background-color:#fff;letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common input,.tribe-theme-twentytwenty .tribe-common textarea{letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common *{word-break:normal}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{line-height:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;color:#727272}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;height:20px;position:relative;width:20px}.tribe-common .tribe-common-form-control-checkbox__input:active,.tribe-common .tribe-common-form-control-checkbox__input:focus,.tribe-common .tribe-common-form-control-checkbox__input:hover,.tribe-common .tribe-common-form-control-radio__input:active,.tribe-common .tribe-common-form-control-radio__input:focus,.tribe-common .tribe-common-form-control-radio__input:hover{border:1px solid #141827}.tribe-common .tribe-common-form-control-checkbox__input:checked,.tribe-common .tribe-common-form-control-radio__input:checked{background-color:#141827}.tribe-common .tribe-common-form-control-checkbox__input:checked:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='9' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6.1L3.9 6.8 1.4 4.3c-.1-.1-.3-.1-.4 0l-.8.8c-.1.1-.1.3 0 .4l3.4 3.4c.2.1.4.1.5 0l7.7-7.7c.1-.1.1-.3 0-.4L11 .1c-.1-.1-.3-.1-.4 0z' fill='%23FFF'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}.tribe-common .tribe-common-form-control-radio__input{border-radius:50%}.tribe-common .tribe-common-form-control-radio__input:checked:before{background-color:#fff;border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-radio__label{font-weight:400;font-size:14px}.tribe-common .tribe-common-form-control-slider{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-runnable-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-moz-range-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-ms-track{background-color:transparent;border-color:transparent;border-width:5px 0;color:transparent;height:10px}.tribe-common .tribe-common-form-control-slider__input::-ms-fill-lower,.tribe-common .tribe-common-form-control-slider__input::-ms-fill-upper{background-color:#334aff;border-radius:10px}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;-webkit-appearance:none;appearance:none}.tribe-common .tribe-common-form-control-slider__input::-moz-range-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px}.tribe-common .tribe-common-form-control-slider__input::-ms-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;box-shadow:none;margin-top:-1px}.tribe-common .tribe-common-form-control-slider__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-slider__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5}.tribe-common .tribe-common-form-control-text__input::-webkit-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input::-moz-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:-ms-input-placeholder,.tribe-common .tribe-common-form-control-text__input::-ms-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input::placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;outline:0}.tribe-theme-twentyseventeen .tribe-common .tribe-common-form-control-text__input{color:#141827}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-text__input{line-height:inherit}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;box-shadow:none}.tribe-common .tribe-common-form-control-toggle{line-height:0}.tribe-common .tribe-common-form-control-toggle__input{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#d5d5d5;width:40px}.tribe-common .tribe-common-form-control-toggle__input:after{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;content:"";left:0;position:absolute;top:-5px;transition:transform .2s ease}.tribe-common .tribe-common-form-control-toggle__input:checked{background-color:#334aff}.tribe-common .tribe-common-form-control-toggle__input:checked:after{transform:translateX(20px)}.tribe-common .tribe-common-form-control-toggle__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.tribe-common a,.tribe-common a:active,.tribe-common a:focus,.tribe-common a:hover,.tribe-common a:visited{color:#141827;outline:0;text-decoration:none}.tribe-theme-twentyseventeen .tribe-common a{box-shadow:none}.tribe-theme-twentyseventeen .tribe-common a:focus,.tribe-theme-twentyseventeen .tribe-common a:hover{box-shadow:none;color:#141827}.tribe-theme-twentynineteen .entry .tribe-common a{text-decoration:none}.tribe-common .tribe-common-anchor{border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor:active,.tribe-common .tribe-common-anchor:focus,.tribe-common .tribe-common-anchor:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-anchor-alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-alt:active,.tribe-common .tribe-common-anchor-alt:focus,.tribe-common .tribe-common-anchor-alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-anchor-thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor-thin:active,.tribe-common .tribe-common-anchor-thin:focus,.tribe-common .tribe-common-anchor-thin:hover{border-bottom:1px solid #141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:hover{color:#334aff}.tribe-common .tribe-common-b1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.62}.tribe-common .tribe-common-b1--bold{font-weight:700}.tribe-common .tribe-common-b2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.38}.tribe-common .tribe-common-b2--bold{font-weight:700}.tribe-common .tribe-common-b3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5}.tribe-common .tribe-common-b3--bold{font-weight:700}.tribe-common .tribe-common-cta{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;font-weight:700;border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta:active,.tribe-common .tribe-common-cta:focus,.tribe-common .tribe-common-cta:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-cta--alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--alt:active,.tribe-common .tribe-common-cta--alt:focus,.tribe-common .tribe-common-cta--alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-cta--thin-alt{border-bottom:1px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--thin-alt:active,.tribe-common .tribe-common-cta--thin-alt:focus,.tribe-common .tribe-common-cta--thin-alt:hover{border-bottom:1px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:hover{color:#334aff}.tribe-common .tribe-common-h1{font-size:28px}.tribe-common .tribe-common-h1,.tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-common .tribe-common-h2{font-size:24px}.tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-common .tribe-common-h3,.tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-common .tribe-common-h5{font-size:18px}.tribe-common .tribe-common-h5,.tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-common .tribe-common-h6{font-size:16px}.tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h7,.tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:28px}.tribe-theme-avada #main .tribe-common .tribe-common-h1,.tribe-theme-avada #main .tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:24px}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h3,.tribe-theme-avada #main .tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5{font-size:18px}.tribe-theme-avada #main .tribe-common .tribe-common-h5,.tribe-theme-avada #main .tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px}.tribe-theme-avada #main .tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7,.tribe-theme-avada #main .tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h--alt{font-weight:400}.tribe-common button{border:none}.tribe-common button,.tribe-common button:focus,.tribe-common button:hover,.tribe-theme-twentyseventeen .tribe-common button:focus,.tribe-theme-twentyseventeen .tribe-common button:hover{background-color:transparent}.tribe-theme-twentytwenty .tribe-common button{background-color:transparent;text-transform:inherit}.tribe-theme-twentytwenty .tribe-common button:focus,.tribe-theme-twentytwenty .tribe-common button:hover{text-decoration:none}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;text-align:center;transition:color .2s ease,border-color .2s ease;color:#727272;padding:14px 20px}.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:active{border-color:#141827}.tribe-common .tribe-common-c-btn-border:active,.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{color:#141827}.tribe-common .tribe-common-c-btn-border:disabled,.tribe-common a.tribe-common-c-btn-border:disabled{color:#d5d5d5}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon{border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto}.tribe-common .tribe-common-c-btn-icon--border{background-color:#fff;border:1px solid #d5d5d5;align-items:center;display:inline-flex;height:56px;justify-content:center;transition:none;width:56px}.tribe-common .tribe-common-c-btn-icon--border:focus,.tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon--border:active{border-color:#141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;border-radius:4px;color:#fff;text-align:center;transition:background-color .2s ease;padding:11px 20px;background-color:#334aff}.tribe-common .tribe-common-c-btn:focus,.tribe-common .tribe-common-c-btn:hover,.tribe-common a.tribe-common-c-btn:focus,.tribe-common a.tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8)}.tribe-common .tribe-common-c-btn:active,.tribe-common a.tribe-common-c-btn:active{background-color:rgba(51,74,255,.9)}.tribe-common .tribe-common-c-btn:disabled,.tribe-common a.tribe-common-c-btn:disabled{background-color:rgba(51,74,255,.07)}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn{background-color:#334aff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-common .tribe-common-c-loader__dot{animation-name:a;animation-duration:2.24s;animation-iteration-count:infinite;animation-direction:normal}.tribe-common .tribe-common-c-loader__dot--first{animation-delay:.45s}.tribe-common .tribe-common-c-loader__dot--second{animation-delay:1.05s}.tribe-common .tribe-common-c-loader__dot--third{animation-delay:1.35s}@keyframes a{50%{background-color:#334aff}}@media (min-width:768px){#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0}.tribe-common .tribe-common-b1{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b2{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b3{font-size:12px;line-height:1.38}.tribe-common .tribe-common-b1--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b2--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b3--min-medium{font-size:12px;line-height:1.38}.tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:6px 15px}}
1
+ .tribe-common figure{line-height:0}.tribe-common figcaption{line-height:normal}.tribe-common a{background-color:transparent;-webkit-text-decoration-skip:objects}.tribe-common abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.tribe-common code,.tribe-common kbd,.tribe-common pre,.tribe-common samp{font-family:monospace;font-size:1em}.tribe-common b,.tribe-common strong{font-weight:inherit;font-weight:bolder}.tribe-common dfn{font-style:italic}.tribe-common mark{background-color:#ff0;color:#000}.tribe-common small{font-size:80%}.tribe-common sub,.tribe-common sup{font-size:75%;line-height:0}.tribe-common hr{border:0;height:0}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=email],.tribe-common input[type=password],.tribe-common input[type=reset],.tribe-common input[type=search],.tribe-common input[type=submit],.tribe-common input[type=text],.tribe-common input[type=url],.tribe-common textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tribe-common button,.tribe-common input,.tribe-common optgroup,.tribe-common select,.tribe-common textarea{color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:antialiased}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{outline:0;border-radius:0}.tribe-common select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.tribe-common optgroup{font-weight:700}.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common p{font-weight:400;text-rendering:optimizeLegibility}.tribe-theme-twentynineteen .tribe-common h1:before,.tribe-theme-twentynineteen .tribe-common h2:before{content:none}.tribe-theme-twentynineteen .tribe-common button,.tribe-theme-twentynineteen .tribe-common input[type=button],.tribe-theme-twentynineteen .tribe-common input[type=reset],.tribe-theme-twentynineteen .tribe-common input[type=submit]{outline:none}.tribe-theme-twentynineteen .tribe-common td,.tribe-theme-twentynineteen .tribe-common th{word-break:normal}.tribe-theme-twentyseventeen .tribe-common h5{letter-spacing:normal;text-transform:none}.tribe-theme-twentyseventeen .tribe-common input[type=text]{border-radius:0}.tribe-theme-twentytwenty .tribe-common{background-color:#fff;letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common input,.tribe-theme-twentytwenty .tribe-common textarea{letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common *{word-break:normal}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{line-height:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;color:#727272}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;height:20px;position:relative;width:20px}.tribe-common .tribe-common-form-control-checkbox__input:active,.tribe-common .tribe-common-form-control-checkbox__input:focus,.tribe-common .tribe-common-form-control-checkbox__input:hover,.tribe-common .tribe-common-form-control-radio__input:active,.tribe-common .tribe-common-form-control-radio__input:focus,.tribe-common .tribe-common-form-control-radio__input:hover{border:1px solid #141827}.tribe-common .tribe-common-form-control-checkbox__input:checked,.tribe-common .tribe-common-form-control-radio__input:checked{background-color:#141827}.tribe-common .tribe-common-form-control-checkbox__input:checked:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='9' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6.1L3.9 6.8 1.4 4.3c-.1-.1-.3-.1-.4 0l-.8.8c-.1.1-.1.3 0 .4l3.4 3.4c.2.1.4.1.5 0l7.7-7.7c.1-.1.1-.3 0-.4L11 .1c-.1-.1-.3-.1-.4 0z' fill='%23FFF'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}.tribe-common .tribe-common-form-control-radio__input{border-radius:50%}.tribe-common .tribe-common-form-control-radio__input:checked:before{background-color:#fff;border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-radio__label{font-weight:400;font-size:14px}.tribe-common .tribe-common-form-control-slider{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-runnable-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-moz-range-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-ms-track{background-color:transparent;border-color:transparent;border-width:5px 0;color:transparent;height:10px}.tribe-common .tribe-common-form-control-slider__input::-ms-fill-lower,.tribe-common .tribe-common-form-control-slider__input::-ms-fill-upper{background-color:#334aff;border-radius:10px}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;-webkit-appearance:none;appearance:none}.tribe-common .tribe-common-form-control-slider__input::-moz-range-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px}.tribe-common .tribe-common-form-control-slider__input::-ms-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;box-shadow:none;margin-top:-1px}.tribe-common .tribe-common-form-control-slider__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-slider__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5}.tribe-common .tribe-common-form-control-text__input::-webkit-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input::-moz-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:-ms-input-placeholder,.tribe-common .tribe-common-form-control-text__input::-ms-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input::placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;outline:0}.tribe-theme-twentyseventeen .tribe-common .tribe-common-form-control-text__input{color:#141827}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-text__input{line-height:inherit}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;box-shadow:none}.tribe-common .tribe-common-form-control-toggle{line-height:0}.tribe-common .tribe-common-form-control-toggle__input{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#d5d5d5;width:40px}.tribe-common .tribe-common-form-control-toggle__input:after{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;content:"";left:0;position:absolute;top:-5px;transition:transform .2s ease}.tribe-common .tribe-common-form-control-toggle__input:checked{background-color:#334aff}.tribe-common .tribe-common-form-control-toggle__input:checked:after{transform:translateX(20px)}.tribe-common .tribe-common-form-control-toggle__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.tribe-common a,.tribe-common a:active,.tribe-common a:focus,.tribe-common a:hover,.tribe-common a:visited{color:#141827;outline:0;text-decoration:none}.tribe-theme-twentyseventeen .tribe-common a{box-shadow:none}.tribe-theme-twentyseventeen .tribe-common a:focus,.tribe-theme-twentyseventeen .tribe-common a:hover{box-shadow:none;color:#141827}.tribe-theme-twentynineteen .entry .tribe-common a,.tribe-theme-twentynineteen .tribe-common a{text-decoration:none}.tribe-common .tribe-common-anchor{border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor:active,.tribe-common .tribe-common-anchor:focus,.tribe-common .tribe-common-anchor:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-anchor-alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-alt:active,.tribe-common .tribe-common-anchor-alt:focus,.tribe-common .tribe-common-anchor-alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-anchor-thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor-thin:active,.tribe-common .tribe-common-anchor-thin:focus,.tribe-common .tribe-common-anchor-thin:hover{border-bottom:1px solid #141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:hover{color:#334aff}.tribe-common .tribe-common-b1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.62}.tribe-common .tribe-common-b1--bold{font-weight:700}.tribe-common .tribe-common-b2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.38}.tribe-common .tribe-common-b2--bold{font-weight:700}.tribe-common .tribe-common-b3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5}.tribe-common .tribe-common-b3--bold{font-weight:700}.tribe-common .tribe-common-cta{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;font-weight:700;border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta:active,.tribe-common .tribe-common-cta:focus,.tribe-common .tribe-common-cta:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-cta--alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--alt:active,.tribe-common .tribe-common-cta--alt:focus,.tribe-common .tribe-common-cta--alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-cta--thin-alt{border-bottom:1px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--thin-alt:active,.tribe-common .tribe-common-cta--thin-alt:focus,.tribe-common .tribe-common-cta--thin-alt:hover{border-bottom:1px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:hover{color:#334aff}.tribe-common .tribe-common-h1{font-size:28px}.tribe-common .tribe-common-h1,.tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-common .tribe-common-h2{font-size:24px}.tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-common .tribe-common-h3,.tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-common .tribe-common-h5{font-size:18px}.tribe-common .tribe-common-h5,.tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-common .tribe-common-h6{font-size:16px}.tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h7,.tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:28px}.tribe-theme-avada #main .tribe-common .tribe-common-h1,.tribe-theme-avada #main .tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:24px}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h3,.tribe-theme-avada #main .tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5{font-size:18px}.tribe-theme-avada #main .tribe-common .tribe-common-h5,.tribe-theme-avada #main .tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px}.tribe-theme-avada #main .tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7,.tribe-theme-avada #main .tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h--alt{font-weight:400}.tribe-common button{border:none}.tribe-common button,.tribe-common button:focus,.tribe-common button:hover,.tribe-theme-twentyseventeen .tribe-common button:focus,.tribe-theme-twentyseventeen .tribe-common button:hover{background-color:transparent}.tribe-theme-twentytwenty .tribe-common button{background-color:transparent;text-transform:inherit}.tribe-theme-twentytwenty .tribe-common button:focus,.tribe-theme-twentytwenty .tribe-common button:hover{text-decoration:none}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;text-align:center;transition:color .2s ease,border-color .2s ease;color:#727272;padding:14px 20px}.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:active{border-color:#141827}.tribe-common .tribe-common-c-btn-border:active,.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{color:#141827}.tribe-common .tribe-common-c-btn-border:disabled,.tribe-common a.tribe-common-c-btn-border:disabled{color:#d5d5d5}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon{border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto}.tribe-common .tribe-common-c-btn-icon--border{background-color:#fff;border:1px solid #d5d5d5;align-items:center;display:inline-flex;height:56px;justify-content:center;transition:none;width:56px}.tribe-common .tribe-common-c-btn-icon--border:focus,.tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon--border:active{border-color:#141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;border-radius:4px;color:#fff;text-align:center;transition:background-color .2s ease;padding:11px 20px;background-color:#334aff}.tribe-common .tribe-common-c-btn:focus,.tribe-common .tribe-common-c-btn:hover,.tribe-common a.tribe-common-c-btn:focus,.tribe-common a.tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8)}.tribe-common .tribe-common-c-btn:active,.tribe-common a.tribe-common-c-btn:active{background-color:rgba(51,74,255,.9)}.tribe-common .tribe-common-c-btn:disabled,.tribe-common a.tribe-common-c-btn:disabled{background-color:rgba(51,74,255,.07)}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn{background-color:#334aff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-common .tribe-common-c-loader__dot{animation-name:a;animation-duration:2.24s;animation-iteration-count:infinite;animation-direction:normal}.tribe-common .tribe-common-c-loader__dot--first{animation-delay:.45s}.tribe-common .tribe-common-c-loader__dot--second{animation-delay:1.05s}.tribe-common .tribe-common-c-loader__dot--third{animation-delay:1.35s}@keyframes a{50%{background-color:#334aff}}@media (min-width:768px){#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0}.tribe-common .tribe-common-b1{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b2{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b3{font-size:12px;line-height:1.38}.tribe-common .tribe-common-b1--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b2--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b3--min-medium{font-size:12px;line-height:1.38}.tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:6px 15px}}
common/src/resources/css/common-skeleton.css CHANGED
@@ -440,10 +440,6 @@
440
  * SVG - Arrow Right
441
  * ----------------------------------------------------------------------------- */
442
 
443
- /* -----------------------------------------------------------------------------
444
- * SVG - Arrow (light, left)
445
- * ----------------------------------------------------------------------------- */
446
-
447
  /* -----------------------------------------------------------------------------
448
  * SVG - Caret Down
449
  * ----------------------------------------------------------------------------- */
@@ -477,15 +473,15 @@
477
  * ----------------------------------------------------------------------------- */
478
 
479
  /* -----------------------------------------------------------------------------
480
- * SVG - Error
481
  * ----------------------------------------------------------------------------- */
482
 
483
  /* -----------------------------------------------------------------------------
484
- * SVG - Featured
485
  * ----------------------------------------------------------------------------- */
486
 
487
  /* -----------------------------------------------------------------------------
488
- * SVG - Filters
489
  * ----------------------------------------------------------------------------- */
490
 
491
  /* -----------------------------------------------------------------------------
@@ -496,24 +492,40 @@
496
  * SVG - Location
497
  * ----------------------------------------------------------------------------- */
498
 
 
 
 
 
499
  /* -----------------------------------------------------------------------------
500
  * SVG - Map
501
  * ----------------------------------------------------------------------------- */
502
 
 
 
 
 
 
 
 
 
503
  /* -----------------------------------------------------------------------------
504
  * SVG - Month
505
  * ----------------------------------------------------------------------------- */
506
 
507
  /* -----------------------------------------------------------------------------
508
- * SVG - Photo
509
  * ----------------------------------------------------------------------------- */
510
 
511
  /* -----------------------------------------------------------------------------
512
- * SVG - Recurring
513
  * ----------------------------------------------------------------------------- */
514
 
515
  /* -----------------------------------------------------------------------------
516
- * SVG - Remove
 
 
 
 
517
  * ----------------------------------------------------------------------------- */
518
 
519
  /* -----------------------------------------------------------------------------
@@ -646,10 +658,6 @@
646
  * Button - Solid
647
  * ----------------------------------------------------------------------------- */
648
 
649
- /* -----------------------------------------------------------------------------
650
- * Button - Link
651
- * ----------------------------------------------------------------------------- */
652
-
653
  /* -----------------------------------------------------------------------------
654
  * Button - Border
655
  * ----------------------------------------------------------------------------- */
@@ -1033,6 +1041,15 @@
1033
  width: 100%;
1034
  }
1035
 
 
 
 
 
 
 
 
 
 
1036
  /* -----------------------------------------------------------------------------
1037
  *
1038
  * Grid: Rows
@@ -1062,6 +1079,22 @@
1062
  padding-right: 21px;
1063
  }
1064
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1065
  /* Typography */
1066
 
1067
  .tribe-common {
@@ -1308,11 +1341,11 @@
1308
  }
1309
 
1310
  .tribe-common .tribe-common-svgicon--list {
1311
- background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827' fill-rule='nonzero'%3E%3Cpath d='M19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467h12.756zM1.838 4.207a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 9.98c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466h12.756zM1.838 10.916a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z' fill='%23141827'/%3E%3Cg%3E%3Cpath d='M19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466H7.127c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467h12.756zM1.838 17.624a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z' fill='%23141827'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
1312
  }
1313
 
1314
  .tribe-common .tribe-common-svgicon--map {
1315
- background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath stroke='%23141827' stroke-linejoin='round' d='M13.921 11.632H17.5l3.588 8.421H1l3.488-8.421h4.016'/%3E%3Cpath d='M11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468-2.833 0-5.138 2.453-5.138 5.467 0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z' stroke='%23141827' stroke-width='.4' fill='%23141827' fill-rule='nonzero'/%3E%3Cpath d='M12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826 0 1.007.78 1.826 1.74 1.826.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z' stroke='%23141827' stroke-width='.7' fill='%23000' fill-rule='nonzero'/%3E%3C/g%3E%3C/svg%3E");
1316
  }
1317
 
1318
  .tribe-common .tribe-common-svgicon--month {
@@ -1320,11 +1353,11 @@
1320
  }
1321
 
1322
  .tribe-common .tribe-common-svgicon--no-map {
1323
- background-image: svg-inline(no-map);
1324
  }
1325
 
1326
  .tribe-common .tribe-common-svgicon--photo {
1327
- background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='17' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827' fill-rule='nonzero'%3E%3Cpath d='M19.348.11H.634a.509.509 0 0 0-.52.508v15.017c0 .284.23.508.52.508h18.714c.29 0 .52-.224.52-.508V.618a.509.509 0 0 0-.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0-1.227-.528 1.6 1.6 0 0 0-1.206.548l-4.657 5.175V1.145h17.632zM1.174 15.108v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603H1.175v-.02z' fill='%23141827'/%3E%3Cpath d='M14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934 0 .507-.414.933-.906.933-.492 0-.906-.426-.906-.933 0-.507.414-.934.906-.934z' fill='%23141827'/%3E%3C/g%3E%3C/svg%3E");
1328
  }
1329
 
1330
  .tribe-common .tribe-common-svgicon--search {
@@ -1342,7 +1375,7 @@
1342
  }
1343
 
1344
  .tribe-common .tribe-common-svgicon--recurring {
1345
- background-image: svg-inline(recurring-active);
1346
  height: 10px;
1347
  width: 10px;
1348
  }
@@ -1683,6 +1716,16 @@
1683
  padding-right: 24px
1684
  }
1685
 
 
 
 
 
 
 
 
 
 
 
1686
  .tribe-common .tribe-common-l-container {
1687
  padding-left: 42px;
1688
  padding-right: 42px
440
  * SVG - Arrow Right
441
  * ----------------------------------------------------------------------------- */
442
 
 
 
 
 
443
  /* -----------------------------------------------------------------------------
444
  * SVG - Caret Down
445
  * ----------------------------------------------------------------------------- */
473
  * ----------------------------------------------------------------------------- */
474
 
475
  /* -----------------------------------------------------------------------------
476
+ * SVG - Featured
477
  * ----------------------------------------------------------------------------- */
478
 
479
  /* -----------------------------------------------------------------------------
480
+ * SVG - Filters
481
  * ----------------------------------------------------------------------------- */
482
 
483
  /* -----------------------------------------------------------------------------
484
+ * SVG - Link
485
  * ----------------------------------------------------------------------------- */
486
 
487
  /* -----------------------------------------------------------------------------
492
  * SVG - Location
493
  * ----------------------------------------------------------------------------- */
494
 
495
+ /* -----------------------------------------------------------------------------
496
+ * SVG - Mail
497
+ * ----------------------------------------------------------------------------- */
498
+
499
  /* -----------------------------------------------------------------------------
500
  * SVG - Map
501
  * ----------------------------------------------------------------------------- */
502
 
503
+ /* -----------------------------------------------------------------------------
504
+ * SVG - Map pin
505
+ * ----------------------------------------------------------------------------- */
506
+
507
+ /* -----------------------------------------------------------------------------
508
+ * SVG - Messages
509
+ * ----------------------------------------------------------------------------- */
510
+
511
  /* -----------------------------------------------------------------------------
512
  * SVG - Month
513
  * ----------------------------------------------------------------------------- */
514
 
515
  /* -----------------------------------------------------------------------------
516
+ * SVG - No Map
517
  * ----------------------------------------------------------------------------- */
518
 
519
  /* -----------------------------------------------------------------------------
520
+ * SVG - Phone
521
  * ----------------------------------------------------------------------------- */
522
 
523
  /* -----------------------------------------------------------------------------
524
+ * SVG - Photo
525
+ * ----------------------------------------------------------------------------- */
526
+
527
+ /* -----------------------------------------------------------------------------
528
+ * SVG - Recurring
529
  * ----------------------------------------------------------------------------- */
530
 
531
  /* -----------------------------------------------------------------------------
658
  * Button - Solid
659
  * ----------------------------------------------------------------------------- */
660
 
 
 
 
 
661
  /* -----------------------------------------------------------------------------
662
  * Button - Border
663
  * ----------------------------------------------------------------------------- */
1041
  width: 100%;
1042
  }
1043
 
1044
+ .tribe-common {
1045
+
1046
+ /* -------------------------------------------------------------------------
1047
+ *
1048
+ * Grid Rows: Theme Overrides
1049
+ *
1050
+ * ------------------------------------------------------------------------- */
1051
+ }
1052
+
1053
  /* -----------------------------------------------------------------------------
1054
  *
1055
  * Grid: Rows
1079
  padding-right: 21px;
1080
  }
1081
 
1082
+ /* -----------------------------------------------------------------------------
1083
+ * Theme Overrides - Twenty Nineteen
1084
+ * ----------------------------------------------------------------------------- */
1085
+
1086
+ .tribe-theme-twentynineteen .tribe-common .entry.tribe-common-g-row--gutters {
1087
+ margin-left: -21px;
1088
+ margin-right: -21px;
1089
+ padding: 0;
1090
+ }
1091
+
1092
+ .tribe-theme-twentynineteen .tribe-common .tribe-common-g-row--gutters > .entry.tribe-common-g-col {
1093
+ margin: 0;
1094
+ padding-left: 21px;
1095
+ padding-right: 21px;
1096
+ }
1097
+
1098
  /* Typography */
1099
 
1100
  .tribe-common {
1341
  }
1342
 
1343
  .tribe-common .tribe-common-svgicon--list {
1344
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs/%3E%3Cg fill='%23141827' fill-rule='evenodd'%3E%3Cpath fill-rule='nonzero' d='M0 .50378788V20.5332919c0 .278234.19022354.5037879.42487547.5037879H20.6133064c.2346519 0 .4248754-.2255539.4248754-.5037879V.50378788C21.0381818.22555389 20.8479583 0 20.6133064 0H.42487547C.19022355 0 0 .2255539 0 .50378788zm1.1580346.94435628h18.6945206v2.70490149H1.1580346V1.44814416zm0 2.70490796h18.6945206V19.5845078H1.1580346V4.15305212z' fill='%23141827'/%3E%3Cpath d='M13.38928235 5.73125033V7.860417c0 .58795234.48212125 1.06458333 1.07684605 1.06458333h2.1536922c.5947248 0 1.0768461-.47663099 1.0768461-1.06458333V5.73125033c0-.58795234-.4821213-1.06458333-1.0768461-1.06458333h-2.1536922c-.5947248 0-1.07684605.476631-1.07684605 1.06458333z' fill='%23141827'/%3E%3Cpath fill-rule='nonzero' d='M8.83943685 8.936667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092h-4.8185522C3.7343981 7.466667 3.5 7.70188614 3.5 7.9893762v.4245816c0 .28749006.2343981.5227092.52088465.5227092h4.8185522zM10.9041036 6.136667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092H4.02088465C3.7343981 4.666667 3.5 4.90188614 3.5 5.1893762v.4245816c0 .28749006.2343981.5227092.52088465.5227092h6.88321895z' fill='%23141827'/%3E%3Cg%3E%3Cpath d='M13.38928235 12.73125033V14.860417c0 .58795234.48212125 1.06458333 1.07684605 1.06458333h2.1536922c.5947248 0 1.0768461-.47663099 1.0768461-1.06458333v-2.12916667c0-.58795234-.4821213-1.06458333-1.0768461-1.06458333h-2.1536922c-.5947248 0-1.07684605.476631-1.07684605 1.06458333z' fill='%23141827'/%3E%3Cpath fill-rule='nonzero' d='M8.83943685 15.936667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092h-4.8185522c-.28648655 0-.52088465.23521914-.52088465.5227092v.4245816c0 .28749006.2343981.5227092.52088465.5227092h4.8185522zM10.9041036 13.136667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092H4.02088465c-.28648655 0-.52088465.23521914-.52088465.5227092v.4245816c0 .28749006.2343981.5227092.52088465.5227092h6.88321895z' fill='%23141827'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
1345
  }
1346
 
1347
  .tribe-common .tribe-common-svgicon--map {
1348
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs/%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill-rule='nonzero' stroke-width='.7'%3E%3Cpath fill='%23141827' stroke='%23141827' d='M10.66992557 17.2092094c.18208949-.2244634 4.46052505-5.52626362 4.46052505-8.17980983 0-2.72724863-2.08535521-4.94606657-4.64855882-4.94606657-2.56320359 0-4.6485588 2.21881794-4.6485588 4.94606657 0 2.65354618 4.27843556 7.95534643 4.46052504 8.17980983.04719041.0580842.11585307.0915149.18803376.0915149.0721807 0 .14084336-.0334307.18803377-.0915149zM6.33022741 9.02939957c0-2.43579482 1.86238353-4.41737092 4.15166439-4.41737092 2.28928088 0 4.15166441 1.9815761 4.15166441 4.41737092 0 2.15995923-3.31788627 6.53241163-4.15166441 7.59703123-.83377813-1.0644905-4.15166439-5.43616846-4.15166439-7.59703123z'/%3E%3Cpath fill='%23141827' stroke='%23000' d='M12.05539077 9.03985474c0-.91098834-.70589102-1.65217392-1.57349897-1.65217392-.86760794 0-1.57349896.74118558-1.57349896 1.65217392 0 .91098834.70589102 1.65217392 1.57349896 1.65217392.86760795 0 1.57349897-.74118558 1.57349897-1.65217392zm-2.85036002 0c0-.73928452.57278056-1.34070411 1.27686105-1.34070411.70408051 0 1.27686107.60141959 1.27686107 1.34070411 0 .73928452-.57278056 1.34070411-1.27686107 1.34070411-.70408049 0-1.27686105-.60141959-1.27686105-1.34070411z'/%3E%3C/g%3E%3Cpath fill='%23141827' fill-rule='nonzero' d='M0 .50378788V20.5332919c0 .278234.19022354.5037879.42487547.5037879H20.6133064c.2346519 0 .4248754-.2255539.4248754-.5037879V.50378788C21.0381818.22555389 20.8479583 0 20.6133064 0H.42487547C.19022355 0 0 .2255539 0 .50378788zm1.1580346.94435628h18.6945206v2.70490796H1.1580346V1.44814416zm0 2.70490796h18.6945206V19.5845078H1.1580346V4.15305212z'/%3E%3C/g%3E%3C/svg%3E");
1349
  }
1350
 
1351
  .tribe-common .tribe-common-svgicon--month {
1353
  }
1354
 
1355
  .tribe-common .tribe-common-svgicon--no-map {
1356
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='92' height='92' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill-rule='nonzero' fill='none'%3E%3Cg stroke='%23141827' stroke-width='2.5' transform='translate(2 2)'%3E%3Cpath d='M32.219 88S0 58.674 0 32.281C-.011 15.598 12.685 1.66 29.278.136c16.593-1.523 31.608 9.873 34.627 26.28M32.733 88s2.96-2.693 7.083-7.181' stroke-linecap='round'/%3E%3Ccircle cx='33' cy='33' r='8.905'/%3E%3Ccircle cx='65.127' cy='59.016' r='23.571'/%3E%3C/g%3E%3Cg transform='translate(64.857 47.048)'%3E%3Ccircle fill='%23111' cx='2.839' cy='26.495' r='2.839'/%3E%3Cpath d='M2.642 0v18.925' stroke='%23141827' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
1357
  }
1358
 
1359
  .tribe-common .tribe-common-svgicon--photo {
1360
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 21'%3E%3Cdefs/%3E%3Cg fill='%23141827' fill-rule='nonzero'%3E%3Cpath d='M20.4070967 0H.57757675C.25413377 0 0 .24803922 0 .5637255v19.872549C0 20.7519607.25413377 21 .57757676 21H20.4070967c.323443 0 .5775767-.2480393.5775767-.5637255V.5637255C20.9846734.24803921 20.7305397 0 20.4070967 0zm-.6006799 1.15v14.8679567l-2.2249804-3.4274509c-.6468859-.6764706-1.8482455-.6764706-2.4951316 0l-1.5479057 1.6460784-4.48199558-5.02843135c-.34654605-.38333333-.83171053-.58627451-1.36308114-.58627451-.50826755 0-1.01653509.22549021-1.33997808.60882354L1.17825658 14.9807019V1.15H19.8064168zM1.17825658 19.8499999v-3.1330235l6.0530044-6.76470589c.11551535-.13529412.27723684-.20294118.4620614-.20294118.16172149 0 .36964912.06764706.48516448.20294118l4.92095394 5.52450979c.1155153.1127452.2772369.2029412.4389583.2029412.1848246.022549.3234431-.067647.4389583-.1803922l1.9868641-2.1196078c.1848246-.2029412.5544737-.2029412.7624013 0l3.1028972 4.3519608v2.1408666H1.17825658v-.022549z' fill='%23141827'/%3E%3Cpath d='M14.9552083 9.04117648c1.159375 0 2.121875-.96960785 2.121875-2.18725491 0-1.21764705-.940625-2.1872549-2.121875-2.1872549-1.18125 0-2.121875.96960785-2.121875 2.1872549 0 1.21764706.9625 2.18725491 2.121875 2.18725491zm0-3.22450981c.546875 0 1.00625.47352941 1.00625 1.0372549 0 .5637255-.459375 1.03725491-1.00625 1.03725491-.546875 0-1.00625-.47352941-1.00625-1.03725491 0-.56372549.459375-1.0372549 1.00625-1.0372549z' fill='%23141827'/%3E%3C/g%3E%3C/svg%3E");
1361
  }
1362
 
1363
  .tribe-common .tribe-common-svgicon--search {
1375
  }
1376
 
1377
  .tribe-common .tribe-common-svgicon--recurring {
1378
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3C3.753 4.717 1.66 7 1.66 9.827c0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913c.099.109.158.239.198.37 0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23141827'/%3E%3C/svg%3E");
1379
  height: 10px;
1380
  width: 10px;
1381
  }
1716
  padding-right: 24px
1717
  }
1718
 
1719
+ .tribe-theme-twentynineteen .tribe-common .entry.tribe-common-g-row--gutters {
1720
+ margin-left: -24px;
1721
+ margin-right: -24px
1722
+ }
1723
+
1724
+ .tribe-theme-twentynineteen .tribe-common .tribe-common-g-row--gutters > .entry.tribe-common-g-col {
1725
+ padding-left: 24px;
1726
+ padding-right: 24px
1727
+ }
1728
+
1729
  .tribe-common .tribe-common-l-container {
1730
  padding-left: 42px;
1731
  padding-right: 42px
common/src/resources/css/common-skeleton.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-common{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased}.tribe-common *{box-sizing:border-box}.tribe-common article,.tribe-common aside,.tribe-common details,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common header,.tribe-common main,.tribe-common menu,.tribe-common nav,.tribe-common section,.tribe-common summary{display:block}.tribe-common svg:not(:root){overflow:hidden}.tribe-common audio,.tribe-common canvas,.tribe-common progress,.tribe-common video{display:inline-block}.tribe-common audio:not([controls]){display:none;height:0}.tribe-common progress{vertical-align:baseline}.tribe-common [hidden],.tribe-common template{display:none}.tribe-common pre{overflow:auto}.tribe-common sub,.tribe-common sup{position:relative;vertical-align:baseline}.tribe-common sup{top:-.5em}.tribe-common sub{bottom:-.25em}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{box-sizing:border-box;margin:0}.tribe-common input[type=number]::-webkit-inner-spin-button,.tribe-common input[type=number]::-webkit-outer-spin-button{height:auto}.tribe-common legend{color:inherit;display:table;max-width:100%;white-space:normal}.tribe-common textarea{resize:none;overflow:auto}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=reset],.tribe-common input[type=submit]{cursor:pointer;overflow:visible}.tribe-common button[disabled],.tribe-common input[disabled]{cursor:default}.tribe-common button::-moz-focus-inner,.tribe-common input::-moz-focus-inner{border:0;padding:0}.tribe-common a,.tribe-common abbr,.tribe-common acronym,.tribe-common address,.tribe-common applet,.tribe-common article,.tribe-common aside,.tribe-common audio,.tribe-common b,.tribe-common big,.tribe-common blockquote,.tribe-common canvas,.tribe-common caption,.tribe-common center,.tribe-common cite,.tribe-common code,.tribe-common dd,.tribe-common del,.tribe-common details,.tribe-common dfn,.tribe-common div,.tribe-common dl,.tribe-common dt,.tribe-common em,.tribe-common embed,.tribe-common fieldset,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common form,.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common header,.tribe-common i,.tribe-common iframe,.tribe-common img,.tribe-common ins,.tribe-common kbd,.tribe-common label,.tribe-common legend,.tribe-common li,.tribe-common main,.tribe-common mark,.tribe-common menu,.tribe-common nav,.tribe-common object,.tribe-common ol,.tribe-common output,.tribe-common p,.tribe-common pre,.tribe-common q,.tribe-common ruby,.tribe-common s,.tribe-common samp,.tribe-common section,.tribe-common small,.tribe-common span,.tribe-common strike,.tribe-common strong,.tribe-common sub,.tribe-common summary,.tribe-common sup,.tribe-common table,.tribe-common tbody,.tribe-common td,.tribe-common tfoot,.tribe-common th,.tribe-common thead,.tribe-common time,.tribe-common tr,.tribe-common tt,.tribe-common u,.tribe-common ul,.tribe-common var,.tribe-common video{margin:0;padding:0;border:0}.tribe-common ol,.tribe-common ul{list-style:none}.tribe-common img{-ms-interpolation-mode:bicubic;height:auto;max-width:100%;border-style:none}.tribe-common embed,.tribe-common iframe,.tribe-common video{max-width:100%;max-height:100%}.tribe-theme-avada input[type=text]{margin:0}.tribe-theme-divi .entry-content .tribe-common table,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common table{border:0;margin:0}.tribe-theme-divi .entry-content .tribe-common td,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common td{border:0}.tribe-theme-divi #content-area .tribe-common td,.tribe-theme-divi #content-area .tribe-common th,.tribe-theme-divi #content-area .tribe-common tr{padding:0}#top.tribe-theme-enfold .tribe-common form,#top.tribe-theme-enfold .tribe-common input{margin:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{cursor:pointer;display:inline-block;margin:0;vertical-align:middle}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__input{display:inline-block}.tribe-common .tribe-common-form-control-checkbox-radio-group>*{margin-bottom:15px}.tribe-common .tribe-common-form-control-checkbox-radio-group>:last-child{margin-bottom:0}.tribe-common .tribe-common-form-control-slider__input{cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider__label{cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider--vertical .tribe-common-form-control-slider__label{display:block;margin:0 0 6px}.tribe-common .tribe-common-form-control-text__label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-form-control-text__input{height:auto;padding:12px 28px 12px 0;width:100%}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{padding:12px 28px 12px 0;width:100%}.tribe-common .tribe-common-form-control-toggle__input,.tribe-common .tribe-common-form-control-toggle__label{cursor:pointer;display:inline-block;vertical-align:middle}.tribe-common .tribe-common-form-control-toggle__label{margin-left:11px}.tribe-common .tribe-common-form-control-toggle--vertical .tribe-common-form-control-toggle__label{display:block;margin:0 0 6px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__input{display:inline-block;margin:5px 0}.tribe-common .tribe-common-g-col{min-width:0;width:100%}.tribe-common .tribe-common-g-row{display:flex;flex-wrap:wrap}.tribe-common .tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:21px;padding-right:21px}.tribe-common a{cursor:pointer}.tribe-theme-divi #left-area .tribe-common ul,.tribe-theme-divi .entry-content .tribe-common ul,body.et-pb-preview.tribe-theme-divi #main-content .container .tribe-common ul{list-style-type:none;padding:0}.tribe-common button{padding:0}.tribe-common .tribe-common-l-container{max-width:1260px;margin-left:auto;margin-right:auto;padding-left:19.5px;padding-right:19.5px;width:100%}.tribe-common .tribe-common-svgicon{background-repeat:no-repeat;background-size:contain}.tribe-common .tribe-common-svgicon--close-secondary{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='%23BABABA' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--day{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zM14.18 14.53v1.747c0 .482.39.874.873.874H16.8a.873.873 0 0 0 .873-.874V14.53a.873.873 0 0 0-.873-.873h-1.747a.873.873 0 0 0-.873.873z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--list{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827'%3E%3Cpath d='M19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467h12.756zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 9.98c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466h12.756zm-18.045.936a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466H7.127c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467h12.756zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--map{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827'%3E%3Cpath stroke-linejoin='round' d='M13.921 11.632H17.5l3.588 8.421H1l3.488-8.421h4.016'/%3E%3Cpath d='M11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468-2.833 0-5.138 2.453-5.138 5.467 0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z' stroke-width='.4' fill='%23141827' fill-rule='nonzero'/%3E%3Cpath d='M12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826 0 1.007.78 1.826 1.74 1.826.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z' stroke-width='.7' fill='%23000' fill-rule='nonzero'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--month{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='22' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.637 1.063v19.879c0 .276.189.5.422.5h20.037c.232 0 .421-.224.421-.5V1.062c0-.275-.189-.5-.421-.5H1.059c-.233 0-.422.225-.422.5zM1.787 2H20.34v2.685H1.787V2zm0 4H20.34v14H1.787V6zM8 8.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-8 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-12 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--no-map{background-image:svg-inline(no-map)}.tribe-common .tribe-common-svgicon--photo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='17' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827'%3E%3Cpath d='M19.348.11H.634a.509.509 0 0 0-.52.508v15.017c0 .284.23.508.52.508h18.714a.51.51 0 0 0 .52-.508V.618a.509.509 0 0 0-.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0-1.227-.528 1.6 1.6 0 0 0-1.206.548l-4.657 5.175V1.145h17.632zM1.174 15.108v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603H1.175v-.02z'/%3E%3Cpath d='M14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934 0 .507-.414.933-.906.933-.492 0-.906-.426-.906-.933 0-.507.414-.934.906-.934z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--week{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zm6.25 6.537v1.006c0 .278.224.503.502.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H7.908a.503.503 0 0 0-.503.502zm4.022 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H11.93a.503.503 0 0 0-.503.502zm4.023 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502h-1.006a.503.503 0 0 0-.503.502zm-12.069 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H3.885a.503.503 0 0 0-.503.502z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23141827'/%3E%3C/svg%3E");height:10px;width:8px}.tribe-common .tribe-common-svgicon--recurring{background-image:svg-inline(recurring-active);height:10px;width:10px}.tribe-common .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--close{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='%23727272' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E")}.tribe-common .tribe-common-a11y-hidden{display:none!important;visibility:hidden}.tribe-common .tribe-common-a11y-visual-hide,.tribe-common .tribe-common-a11y-visual-show{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:14px 20px;width:100%}.tribe-common .tribe-common-c-btn-icon:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.tribe-common .tribe-common-c-btn-icon--caret-left:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-left:active:before,.tribe-common .tribe-common-c-btn-icon--caret-left:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-left:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-left:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-right:active:before,.tribe-common .tribe-common-c-btn-icon--caret-right:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-right:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E");height:20px;width:24px}.tribe-common .tribe-common-c-btn-icon--filters:active:before,.tribe-common .tribe-common-c-btn-icon--filters:focus:before,.tribe-common .tribe-common-c-btn-icon--filters:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23D5D5D5' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");height:20px;width:20px}.tribe-common .tribe-common-c-btn-icon--search:active:before,.tribe-common .tribe-common-c-btn-icon--search:focus:before,.tribe-common .tribe-common-c-btn-icon--search:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{padding:11px 20px;width:100%}.tribe-common .tribe-common-c-image{display:block;height:auto;margin-left:auto;margin-right:auto;width:100%}.tribe-common .tribe-common-c-image--bg{position:relative}.tribe-common .tribe-common-c-image__bg{background:50% no-repeat;background-size:cover;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.tribe-common .tribe-common-c-loader{display:flex;padding-top:192px}.tribe-common .tribe-common-c-loader__dot{background-color:rgba(51,74,255,.07);height:15px;width:15px;border-radius:50%}.tribe-common .tribe-common-c-loader__dot:not(:first-of-type){margin-left:8px}@media (min-width:768px){#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{padding:20px 20px 20px 40px}.tribe-common .tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-common .tribe-common-l-container{padding-left:42px;padding-right:42px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{width:auto}.tribe-common .tribe-common-c-loader{padding-top:288px}}
1
+ .tribe-common{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased}.tribe-common *{box-sizing:border-box}.tribe-common article,.tribe-common aside,.tribe-common details,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common header,.tribe-common main,.tribe-common menu,.tribe-common nav,.tribe-common section,.tribe-common summary{display:block}.tribe-common svg:not(:root){overflow:hidden}.tribe-common audio,.tribe-common canvas,.tribe-common progress,.tribe-common video{display:inline-block}.tribe-common audio:not([controls]){display:none;height:0}.tribe-common progress{vertical-align:baseline}.tribe-common [hidden],.tribe-common template{display:none}.tribe-common pre{overflow:auto}.tribe-common sub,.tribe-common sup{position:relative;vertical-align:baseline}.tribe-common sup{top:-.5em}.tribe-common sub{bottom:-.25em}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{box-sizing:border-box;margin:0}.tribe-common input[type=number]::-webkit-inner-spin-button,.tribe-common input[type=number]::-webkit-outer-spin-button{height:auto}.tribe-common legend{color:inherit;display:table;max-width:100%;white-space:normal}.tribe-common textarea{resize:none;overflow:auto}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=reset],.tribe-common input[type=submit]{cursor:pointer;overflow:visible}.tribe-common button[disabled],.tribe-common input[disabled]{cursor:default}.tribe-common button::-moz-focus-inner,.tribe-common input::-moz-focus-inner{border:0;padding:0}.tribe-common a,.tribe-common abbr,.tribe-common acronym,.tribe-common address,.tribe-common applet,.tribe-common article,.tribe-common aside,.tribe-common audio,.tribe-common b,.tribe-common big,.tribe-common blockquote,.tribe-common canvas,.tribe-common caption,.tribe-common center,.tribe-common cite,.tribe-common code,.tribe-common dd,.tribe-common del,.tribe-common details,.tribe-common dfn,.tribe-common div,.tribe-common dl,.tribe-common dt,.tribe-common em,.tribe-common embed,.tribe-common fieldset,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common form,.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common header,.tribe-common i,.tribe-common iframe,.tribe-common img,.tribe-common ins,.tribe-common kbd,.tribe-common label,.tribe-common legend,.tribe-common li,.tribe-common main,.tribe-common mark,.tribe-common menu,.tribe-common nav,.tribe-common object,.tribe-common ol,.tribe-common output,.tribe-common p,.tribe-common pre,.tribe-common q,.tribe-common ruby,.tribe-common s,.tribe-common samp,.tribe-common section,.tribe-common small,.tribe-common span,.tribe-common strike,.tribe-common strong,.tribe-common sub,.tribe-common summary,.tribe-common sup,.tribe-common table,.tribe-common tbody,.tribe-common td,.tribe-common tfoot,.tribe-common th,.tribe-common thead,.tribe-common time,.tribe-common tr,.tribe-common tt,.tribe-common u,.tribe-common ul,.tribe-common var,.tribe-common video{margin:0;padding:0;border:0}.tribe-common ol,.tribe-common ul{list-style:none}.tribe-common img{-ms-interpolation-mode:bicubic;height:auto;max-width:100%;border-style:none}.tribe-common embed,.tribe-common iframe,.tribe-common video{max-width:100%;max-height:100%}.tribe-theme-avada input[type=text]{margin:0}.tribe-theme-divi .entry-content .tribe-common table,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common table{border:0;margin:0}.tribe-theme-divi .entry-content .tribe-common td,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common td{border:0}.tribe-theme-divi #content-area .tribe-common td,.tribe-theme-divi #content-area .tribe-common th,.tribe-theme-divi #content-area .tribe-common tr{padding:0}#top.tribe-theme-enfold .tribe-common form,#top.tribe-theme-enfold .tribe-common input{margin:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{cursor:pointer;display:inline-block;margin:0;vertical-align:middle}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__input{display:inline-block}.tribe-common .tribe-common-form-control-checkbox-radio-group>*{margin-bottom:15px}.tribe-common .tribe-common-form-control-checkbox-radio-group>:last-child{margin-bottom:0}.tribe-common .tribe-common-form-control-slider__input{cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider__label{cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider--vertical .tribe-common-form-control-slider__label{display:block;margin:0 0 6px}.tribe-common .tribe-common-form-control-text__label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-form-control-text__input{height:auto;padding:12px 28px 12px 0;width:100%}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{padding:12px 28px 12px 0;width:100%}.tribe-common .tribe-common-form-control-toggle__input,.tribe-common .tribe-common-form-control-toggle__label{cursor:pointer;display:inline-block;vertical-align:middle}.tribe-common .tribe-common-form-control-toggle__label{margin-left:11px}.tribe-common .tribe-common-form-control-toggle--vertical .tribe-common-form-control-toggle__label{display:block;margin:0 0 6px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__input{display:inline-block;margin:5px 0}.tribe-common .tribe-common-g-col{min-width:0;width:100%}.tribe-common .tribe-common-g-row{display:flex;flex-wrap:wrap}.tribe-common .tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:21px;padding-right:21px}.tribe-theme-twentynineteen .tribe-common .entry.tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px;padding:0}.tribe-theme-twentynineteen .tribe-common .tribe-common-g-row--gutters>.entry.tribe-common-g-col{margin:0;padding-left:21px;padding-right:21px}.tribe-common a{cursor:pointer}.tribe-theme-divi #left-area .tribe-common ul,.tribe-theme-divi .entry-content .tribe-common ul,body.et-pb-preview.tribe-theme-divi #main-content .container .tribe-common ul{list-style-type:none;padding:0}.tribe-common button{padding:0}.tribe-common .tribe-common-l-container{max-width:1260px;margin-left:auto;margin-right:auto;padding-left:19.5px;padding-right:19.5px;width:100%}.tribe-common .tribe-common-svgicon{background-repeat:no-repeat;background-size:contain}.tribe-common .tribe-common-svgicon--close-secondary{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='%23BABABA' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--day{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zM14.18 14.53v1.747c0 .482.39.874.873.874H16.8a.873.873 0 0 0 .873-.874V14.53a.873.873 0 0 0-.873-.873h-1.747a.873.873 0 0 0-.873.873z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--list{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cg fill='%23141827' fill-rule='evenodd'%3E%3Cpath fill-rule='nonzero' d='M0 .504v20.03c0 .278.19.503.425.503h20.188c.235 0 .425-.225.425-.504V.503c0-.277-.19-.503-.425-.503H.425C.19 0 0 .226 0 .504zm1.158.944h18.695v2.705H1.158V1.448zm0 2.705h18.695v15.432H1.158V4.153z'/%3E%3Cpath d='M13.39 5.731v2.13a1.07 1.07 0 0 0 1.076 1.064h2.154a1.07 1.07 0 0 0 1.077-1.065V5.731a1.07 1.07 0 0 0-1.077-1.064h-2.154A1.07 1.07 0 0 0 13.39 5.73z'/%3E%3Cpath fill-rule='nonzero' d='M8.84 8.937c.286 0 .52-.236.52-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.52.522v.425c0 .287.234.523.52.523h4.82zm2.064-2.8c.287 0 .521-.236.521-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.521.522v.425c0 .287.234.523.52.523h6.884z'/%3E%3Cpath d='M13.39 12.731v2.13a1.07 1.07 0 0 0 1.076 1.064h2.154a1.07 1.07 0 0 0 1.077-1.065v-2.129a1.07 1.07 0 0 0-1.077-1.064h-2.154a1.07 1.07 0 0 0-1.077 1.064z'/%3E%3Cpath fill-rule='nonzero' d='M8.84 15.937c.286 0 .52-.236.52-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.52.522v.425c0 .287.234.523.52.523h4.82zm2.064-2.8c.287 0 .521-.236.521-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.521.522v.425c0 .287.234.523.52.523h6.884z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--map{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cg fill='%23141827' fill-rule='nonzero'%3E%3Cg stroke-width='.7'%3E%3Cpath stroke='%23141827' d='M10.67 17.21c.182-.225 4.46-5.527 4.46-8.18 0-2.728-2.085-4.947-4.648-4.947-2.563 0-4.649 2.22-4.649 4.946 0 2.654 4.279 7.956 4.46 8.18a.243.243 0 0 0 .189.092c.072 0 .14-.034.188-.092zM6.33 9.03c0-2.436 1.863-4.418 4.152-4.418 2.29 0 4.152 1.982 4.152 4.417 0 2.16-3.318 6.533-4.152 7.597C9.648 15.562 6.33 11.19 6.33 9.03z'/%3E%3Cpath stroke='%23000' d='M12.055 9.04c0-.911-.706-1.652-1.573-1.652-.868 0-1.574.74-1.574 1.652 0 .91.706 1.652 1.574 1.652.867 0 1.573-.741 1.573-1.652zm-2.85 0c0-.74.573-1.34 1.277-1.34s1.277.6 1.277 1.34c0 .74-.573 1.34-1.277 1.34s-1.277-.6-1.277-1.34z'/%3E%3C/g%3E%3Cpath d='M0 .504v20.03c0 .278.19.503.425.503h20.188c.235 0 .425-.225.425-.504V.503c0-.277-.19-.503-.425-.503H.425C.19 0 0 .226 0 .504zm1.158.944h18.695v2.705H1.158V1.448zm0 2.705h18.695v15.432H1.158V4.153z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--month{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='22' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.637 1.063v19.879c0 .276.189.5.422.5h20.037c.232 0 .421-.224.421-.5V1.062c0-.275-.189-.5-.421-.5H1.059c-.233 0-.422.225-.422.5zM1.787 2H20.34v2.685H1.787V2zm0 4H20.34v14H1.787V6zM8 8.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-8 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-12 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--no-map{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='92' height='92' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Cg stroke='%23141827' stroke-width='2.5' transform='translate(2 2)'%3E%3Cpath d='M32.219 88S0 58.674 0 32.281C-.011 15.598 12.685 1.66 29.278.136c16.593-1.523 31.608 9.873 34.627 26.28M32.733 88s2.96-2.693 7.083-7.181' stroke-linecap='round'/%3E%3Ccircle cx='33' cy='33' r='8.905'/%3E%3Ccircle cx='65.127' cy='59.016' r='23.571'/%3E%3C/g%3E%3Cg transform='translate(64.857 47.048)'%3E%3Ccircle fill='%23111' cx='2.839' cy='26.495' r='2.839'/%3E%3Cpath d='M2.642 0v18.925' stroke='%23141827' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--photo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 21'%3E%3Cg fill='%23141827'%3E%3Cpath d='M20.407 0H.577A.565.565 0 0 0 0 .564v19.872c0 .316.254.564.578.564h19.83a.565.565 0 0 0 .577-.564V.564A.565.565 0 0 0 20.407 0zm-.6 1.15v14.868l-2.226-3.427c-.646-.677-1.848-.677-2.495 0l-1.548 1.646-4.482-5.029a1.806 1.806 0 0 0-1.363-.586c-.508 0-1.016.225-1.34.609l-5.175 5.75V1.15h18.628zM1.177 19.85v-3.133l6.053-6.765a.588.588 0 0 1 .462-.203c.162 0 .37.068.485.203l4.921 5.525c.116.113.278.203.44.203.184.022.323-.068.438-.18l1.987-2.12c.185-.203.555-.203.763 0l3.103 4.352v2.14H1.178v-.022z'/%3E%3Cpath d='M14.955 9.041c1.16 0 2.122-.97 2.122-2.187 0-1.218-.94-2.187-2.122-2.187-1.181 0-2.122.97-2.122 2.187 0 1.218.963 2.187 2.122 2.187zm0-3.224c.547 0 1.006.473 1.006 1.037s-.459 1.037-1.006 1.037c-.547 0-1.006-.473-1.006-1.037s.46-1.037 1.006-1.037z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--week{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zm6.25 6.537v1.006c0 .278.224.503.502.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H7.908a.503.503 0 0 0-.503.502zm4.022 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H11.93a.503.503 0 0 0-.503.502zm4.023 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502h-1.006a.503.503 0 0 0-.503.502zm-12.069 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H3.885a.503.503 0 0 0-.503.502z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23141827'/%3E%3C/svg%3E");height:10px;width:8px}.tribe-common .tribe-common-svgicon--recurring{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23141827'/%3E%3C/svg%3E");height:10px;width:10px}.tribe-common .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--close{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='%23727272' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E")}.tribe-common .tribe-common-a11y-hidden{display:none!important;visibility:hidden}.tribe-common .tribe-common-a11y-visual-hide,.tribe-common .tribe-common-a11y-visual-show{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:14px 20px;width:100%}.tribe-common .tribe-common-c-btn-icon:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.tribe-common .tribe-common-c-btn-icon--caret-left:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-left:active:before,.tribe-common .tribe-common-c-btn-icon--caret-left:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-left:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-left:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-right:active:before,.tribe-common .tribe-common-c-btn-icon--caret-right:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-right:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E");height:20px;width:24px}.tribe-common .tribe-common-c-btn-icon--filters:active:before,.tribe-common .tribe-common-c-btn-icon--filters:focus:before,.tribe-common .tribe-common-c-btn-icon--filters:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23D5D5D5' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");height:20px;width:20px}.tribe-common .tribe-common-c-btn-icon--search:active:before,.tribe-common .tribe-common-c-btn-icon--search:focus:before,.tribe-common .tribe-common-c-btn-icon--search:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{padding:11px 20px;width:100%}.tribe-common .tribe-common-c-image{display:block;height:auto;margin-left:auto;margin-right:auto;width:100%}.tribe-common .tribe-common-c-image--bg{position:relative}.tribe-common .tribe-common-c-image__bg{background:50% no-repeat;background-size:cover;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.tribe-common .tribe-common-c-loader{display:flex;padding-top:192px}.tribe-common .tribe-common-c-loader__dot{background-color:rgba(51,74,255,.07);height:15px;width:15px;border-radius:50%}.tribe-common .tribe-common-c-loader__dot:not(:first-of-type){margin-left:8px}@media (min-width:768px){#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{padding:20px 20px 20px 40px}.tribe-common .tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-theme-twentynineteen .tribe-common .entry.tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-theme-twentynineteen .tribe-common .tribe-common-g-row--gutters>.entry.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-common .tribe-common-l-container{padding-left:42px;padding-right:42px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{width:auto}.tribe-common .tribe-common-c-loader{padding-top:288px}}
common/src/resources/css/dialog.css CHANGED
@@ -103,7 +103,7 @@ Adding these here for now until common-styles are live
103
  /* The "close" button */
104
 
105
  .tribe-common .tribe-dialog__close-button {
106
- background-color: var(--tribe-dialog-close-background);
107
  background-image: url( "data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'%3E%3Cpath d='M16 2L2 16M16 16L2 2' stroke='var(--color-icon-secondary)'/%3E%3C/g%3E%3C/svg%3E" );
108
  background-repeat: no-repeat;
109
  background-size: contain;
@@ -120,6 +120,7 @@ Adding these here for now until common-styles are live
120
 
121
  .tribe-common .tribe-dialog__close-button:focus,
122
  .tribe-common .tribe-dialog__close-button:hover {
 
123
  background-image: url( "data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'%3E%3Cpath d='M16 2L2 16M16 16L2 2' stroke='var(--color-icon-primary)'/%3E%3C/g%3E%3C/svg%3E" );
124
  background-size: contain;
125
  outline: none;
103
  /* The "close" button */
104
 
105
  .tribe-common .tribe-dialog__close-button {
106
+ background: var(--tribe-dialog-close-background);
107
  background-image: url( "data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'%3E%3Cpath d='M16 2L2 16M16 16L2 2' stroke='var(--color-icon-secondary)'/%3E%3C/g%3E%3C/svg%3E" );
108
  background-repeat: no-repeat;
109
  background-size: contain;
120
 
121
  .tribe-common .tribe-dialog__close-button:focus,
122
  .tribe-common .tribe-dialog__close-button:hover {
123
+ background: var(--tribe-dialog-close-background);
124
  background-image: url( "data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'%3E%3Cpath d='M16 2L2 16M16 16L2 2' stroke='var(--color-icon-primary)'/%3E%3C/g%3E%3C/svg%3E" );
125
  background-size: contain;
126
  outline: none;
common/src/resources/css/dialog.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-common .tribe-dialog{--tribe-dialog-background-color:#fff;--tribe-dialog-close-background:#fff;--tribe-dialog-close-border-color:#bababa;--tribe-dialog-close-border-width:1px;--tribe-dialog-close-color:#bababa;--tribe-dialog-close-height:12px;--tribe-dialog-close-height-desktop:16px;--tribe-dialog-overlay-color:transparent;--tribe-modal-overlay-color:rgba(20,24,39,.9);--tribe-dialog-border-radius:4px;--tribe-dialog-padding:16px;--tribe-dialog-padding-top:24px;--tribe-dialog-padding-side:28px}.tribe-common div.tribe-dialog{align-items:center;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:1}.tribe-common div.tribe-dialog[aria-hidden=true]{display:none}.tribe-common .tribe-dialog__overlay{background-color:var(--tribe-dialog-overlay-color);height:100vh;left:0;opacity:.9;position:fixed;top:0;width:100vw;z-index:1}.tribe-common .tribe-dialog__wrapper{background-color:var(--tribe-dialog-background-color);border-radius:var(--tribe-dialog-border-radius);box-shadow:0 2px 54px 0 var(--tribe-modal-overlay-color);width:800px;overflow-y:scroll;padding:var(--tribe-dialog-padding);max-height:100vh;max-width:100vw;z-index:2}.tribe-common .tribe-dialog__wrapper div[role=document]{align-items:flex-end;display:flex;flex-flow:column;justify-content:space-between;position:relative}.tribe-common .tribe-dialog__close-button{background-color:var(--tribe-dialog-close-background);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='var(--color-icon-secondary)' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;cursor:pointer;display:inline-block;font-size:14px;height:var(--tribe-dialog-close-height);line-height:var(--tribe-dialog-close-height);padding:0;position:absolute;width:var(--tribe-dialog-close-height);z-index:1}.tribe-common .tribe-dialog__close-button:focus,.tribe-common .tribe-dialog__close-button:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='var(--color-icon-primary)' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E");background-size:contain;outline:none}.tribe-common .tribe-dialog__close-button--hidden{display:none}.tribe-common .tribe-dialog__close-button--round{border-radius:50%}.tribe-common .tribe-dialog__close-button--border{border:var(--tribe-dialog-close-border-width) solid var(--tribe-dialog-close-border-color)}.tribe-common h2.tribe-dialog__title{align-self:flex-start;margin:0 0 22px;padding-right:calc(var(--tribe-dialog-close-height) + .5em);padding-top:0}.tribe-common .tribe-dialog__content{color:#141827;font-size:14px;line-height:1.64em;padding-right:calc(var(--tribe-dialog-close-height) + .5em);padding-top:calc(var(--tribe-dialog-close-height) + .5em);width:100%}.tribe-common .tribe-dialog__title+.tribe-dialog__content{padding:0}.tribe-common .tribe-modal__overlay{background-color:var(--tribe-modal-overlay-color)}.tribe-common .tribe-confirm__content{padding-right:0}.tribe-common .tribe-dialog__button_wrap{display:flex;flex-flow:row wrap;justify-content:flex-end}@media screen and (min-width:768px){.tribe-common .tribe-dialog__wrapper{max-height:calc(100vh - 160px);padding:var(--tribe-dialog-padding-top) var(--tribe-dialog-padding-side)}.tribe-common .tribe-dialog__close-button{height:var(--tribe-dialog-close-height-desktop);line-height:var(--tribe-dialog-close-height-desktop);width:var(--tribe-dialog-close-height-desktop)}}@media screen and (max-width:768px){.tribe-common .tribe-dialog__content:last-of-type{padding-bottom:36px}}
1
+ .tribe-common .tribe-dialog{--tribe-dialog-background-color:#fff;--tribe-dialog-close-background:#fff;--tribe-dialog-close-border-color:#bababa;--tribe-dialog-close-border-width:1px;--tribe-dialog-close-color:#bababa;--tribe-dialog-close-height:12px;--tribe-dialog-close-height-desktop:16px;--tribe-dialog-overlay-color:transparent;--tribe-modal-overlay-color:rgba(20,24,39,.9);--tribe-dialog-border-radius:4px;--tribe-dialog-padding:16px;--tribe-dialog-padding-top:24px;--tribe-dialog-padding-side:28px}.tribe-common div.tribe-dialog{align-items:center;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:1}.tribe-common div.tribe-dialog[aria-hidden=true]{display:none}.tribe-common .tribe-dialog__overlay{background-color:var(--tribe-dialog-overlay-color);height:100vh;left:0;opacity:.9;position:fixed;top:0;width:100vw;z-index:1}.tribe-common .tribe-dialog__wrapper{background-color:var(--tribe-dialog-background-color);border-radius:var(--tribe-dialog-border-radius);box-shadow:0 2px 54px 0 var(--tribe-modal-overlay-color);width:800px;overflow-y:scroll;padding:var(--tribe-dialog-padding);max-height:100vh;max-width:100vw;z-index:2}.tribe-common .tribe-dialog__wrapper div[role=document]{align-items:flex-end;display:flex;flex-flow:column;justify-content:space-between;position:relative}.tribe-common .tribe-dialog__close-button{background:var(--tribe-dialog-close-background);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='var(--color-icon-secondary)' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;cursor:pointer;display:inline-block;font-size:14px;height:var(--tribe-dialog-close-height);line-height:var(--tribe-dialog-close-height);padding:0;position:absolute;width:var(--tribe-dialog-close-height);z-index:1}.tribe-common .tribe-dialog__close-button:focus,.tribe-common .tribe-dialog__close-button:hover{background:var(--tribe-dialog-close-background);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='var(--color-icon-primary)' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E");background-size:contain;outline:none}.tribe-common .tribe-dialog__close-button--hidden{display:none}.tribe-common .tribe-dialog__close-button--round{border-radius:50%}.tribe-common .tribe-dialog__close-button--border{border:var(--tribe-dialog-close-border-width) solid var(--tribe-dialog-close-border-color)}.tribe-common h2.tribe-dialog__title{align-self:flex-start;margin:0 0 22px;padding-right:calc(var(--tribe-dialog-close-height) + .5em);padding-top:0}.tribe-common .tribe-dialog__content{color:#141827;font-size:14px;line-height:1.64em;padding-right:calc(var(--tribe-dialog-close-height) + .5em);padding-top:calc(var(--tribe-dialog-close-height) + .5em);width:100%}.tribe-common .tribe-dialog__title+.tribe-dialog__content{padding:0}.tribe-common .tribe-modal__overlay{background-color:var(--tribe-modal-overlay-color)}.tribe-common .tribe-confirm__content{padding-right:0}.tribe-common .tribe-dialog__button_wrap{display:flex;flex-flow:row wrap;justify-content:flex-end}@media screen and (min-width:768px){.tribe-common .tribe-dialog__wrapper{max-height:calc(100vh - 160px);padding:var(--tribe-dialog-padding-top) var(--tribe-dialog-padding-side)}.tribe-common .tribe-dialog__close-button{height:var(--tribe-dialog-close-height-desktop);line-height:var(--tribe-dialog-close-height-desktop);width:var(--tribe-dialog-close-height-desktop)}}@media screen and (max-width:768px){.tribe-common .tribe-dialog__content:last-of-type{padding-bottom:36px}}
common/src/resources/images/mascot.png CHANGED
Binary file
common/src/resources/postcss/base/full/typography/_anchors.pcss CHANGED
@@ -40,6 +40,7 @@
40
  * Theme Overrides - Twenty Nineteen
41
  * ------------------------------------------------------------------------- */
42
 
 
43
  .tribe-theme-twentynineteen .entry & {
44
  text-decoration: none;
45
  }
40
  * Theme Overrides - Twenty Nineteen
41
  * ------------------------------------------------------------------------- */
42
 
43
+ .tribe-theme-twentynineteen &,
44
  .tribe-theme-twentynineteen .entry & {
45
  text-decoration: none;
46
  }
common/src/resources/postcss/base/skeleton/grid/_rows.pcss CHANGED
@@ -36,4 +36,42 @@
36
  }
37
  }
38
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  }
36
  }
37
  }
38
  }
39
+
40
+ /* -------------------------------------------------------------------------
41
+ *
42
+ * Grid Rows: Theme Overrides
43
+ *
44
+ * ------------------------------------------------------------------------- */
45
+
46
+ /* -----------------------------------------------------------------------------
47
+ * Theme Overrides - Twenty Nineteen
48
+ * ----------------------------------------------------------------------------- */
49
+
50
+ .tribe-theme-twentynineteen & {
51
+
52
+ .entry.tribe-common-g-row--gutters {
53
+ margin-left: var(--grid-gutter-small-half-negative);
54
+ margin-right: var(--grid-gutter-small-half-negative);
55
+ padding: 0;
56
+
57
+ @media (--viewport-medium) {
58
+ margin-left: var(--grid-gutter-half-negative);
59
+ margin-right: var(--grid-gutter-half-negative);
60
+ }
61
+ }
62
+
63
+ .tribe-common-g-row--gutters {
64
+
65
+ & > .entry.tribe-common-g-col {
66
+ margin: 0;
67
+ padding-left: var(--grid-gutter-small-half);
68
+ padding-right: var(--grid-gutter-small-half);
69
+
70
+ @media (--viewport-medium) {
71
+ padding-left: var(--grid-gutter-half);
72
+ padding-right: var(--grid-gutter-half);
73
+ }
74
+ }
75
+ }
76
+ }
77
  }
common/src/resources/postcss/dialog.pcss CHANGED
@@ -97,7 +97,7 @@ Adding these here for now until common-styles are live
97
 
98
  /* The "close" button */
99
  .tribe-dialog__close-button {
100
- background-color: var(--tribe-dialog-close-background);
101
  background-image: svg-inline( 'close-secondary' );
102
  background-repeat: no-repeat;
103
  background-size: contain;
@@ -119,6 +119,7 @@ Adding these here for now until common-styles are live
119
 
120
  &:focus,
121
  &:hover {
 
122
  background-image: svg-inline( 'close' );
123
  background-size: contain;
124
  outline: none;
97
 
98
  /* The "close" button */
99
  .tribe-dialog__close-button {
100
+ background: var(--tribe-dialog-close-background);
101
  background-image: svg-inline( 'close-secondary' );
102
  background-repeat: no-repeat;
103
  background-size: contain;
119
 
120
  &:focus,
121
  &:hover {
122
+ background: var(--tribe-dialog-close-background);
123
  background-image: svg-inline( 'close' );
124
  background-size: contain;
125
  outline: none;
common/src/resources/postcss/utilities/icons/arrow.svg DELETED
@@ -1 +0,0 @@
1
- <svg width="12px" height="8px" viewBox="0 0 12 8" version="1.1" xmlns="http://www.w3.org/2000/svg"><g id="arrow" transform="translate(1.000000, 0.000000)" stroke="#141827" stroke-width="1" fill="none" fill-rule="evenodd"><line x1="10.7" y1="4" x2="0.1" y2="4" id="Path"></line><polyline id="Path" stroke-linecap="square" points="4.1 0 0.1 4 4.1 8"></polyline></g></svg>
 
common/src/resources/postcss/utilities/icons/error.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="8" cy="8" r="7.467" stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><circle cx="8" cy="11.733" r="1.067" fill="#141827" fill-rule="nonzero"/><path stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M8 3.733v4.8"/></g></svg>
 
common/src/resources/postcss/utilities/icons/link.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 18"><defs/><g fill="none" fill-rule="evenodd" stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="M15.53125 1.5l-7.5 8M8.96875 1.5h6.5625v7M5.21875 1.5h-2.8125c-.5175 0-.9375.448-.9375 1v13c0 .552.42 1 .9375 1h12.1875c.5175 0 .9375-.448.9375-1v-3"/></g></svg>
common/src/resources/postcss/utilities/icons/list.svg CHANGED
@@ -1 +1 @@
1
- <svg width="21" height="18" xmlns="http://www.w3.org/2000/svg"><g fill="#141827" fill-rule="nonzero"><path d="M19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467h12.756zM1.838 4.207a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 9.98c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466h12.756zM1.838 10.916a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/><g><path d="M19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466H7.127c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467h12.756zM1.838 17.624a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/></g></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><defs/><g fill="#141827" fill-rule="evenodd"><path fill-rule="nonzero" d="M0 .50378788V20.5332919c0 .278234.19022354.5037879.42487547.5037879H20.6133064c.2346519 0 .4248754-.2255539.4248754-.5037879V.50378788C21.0381818.22555389 20.8479583 0 20.6133064 0H.42487547C.19022355 0 0 .2255539 0 .50378788zm1.1580346.94435628h18.6945206v2.70490149H1.1580346V1.44814416zm0 2.70490796h18.6945206V19.5845078H1.1580346V4.15305212z"/><path d="M13.38928235 5.73125033V7.860417c0 .58795234.48212125 1.06458333 1.07684605 1.06458333h2.1536922c.5947248 0 1.0768461-.47663099 1.0768461-1.06458333V5.73125033c0-.58795234-.4821213-1.06458333-1.0768461-1.06458333h-2.1536922c-.5947248 0-1.07684605.476631-1.07684605 1.06458333z"/><path fill-rule="nonzero" d="M8.83943685 8.936667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092h-4.8185522C3.7343981 7.466667 3.5 7.70188614 3.5 7.9893762v.4245816c0 .28749006.2343981.5227092.52088465.5227092h4.8185522zM10.9041036 6.136667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092H4.02088465C3.7343981 4.666667 3.5 4.90188614 3.5 5.1893762v.4245816c0 .28749006.2343981.5227092.52088465.5227092h6.88321895z"/><g><path d="M13.38928235 12.73125033V14.860417c0 .58795234.48212125 1.06458333 1.07684605 1.06458333h2.1536922c.5947248 0 1.0768461-.47663099 1.0768461-1.06458333v-2.12916667c0-.58795234-.4821213-1.06458333-1.0768461-1.06458333h-2.1536922c-.5947248 0-1.07684605.476631-1.07684605 1.06458333z"/><path fill-rule="nonzero" d="M8.83943685 15.936667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092h-4.8185522c-.28648655 0-.52088465.23521914-.52088465.5227092v.4245816c0 .28749006.2343981.5227092.52088465.5227092h4.8185522zM10.9041036 13.136667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092H4.02088465c-.28648655 0-.52088465.23521914-.52088465.5227092v.4245816c0 .28749006.2343981.5227092.52088465.5227092h6.88321895z"/></g></g></svg>
common/src/resources/postcss/utilities/icons/mail.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 15"><defs/><g fill="none" fill-rule="evenodd" stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="M1.40468965 1.40468965l7.87117242 7.04358621 7.31255173-7.05131034"/><path d="M1 2.37931034V12.862069c0 .761772.61753828 1.3793103 1.37931034 1.3793103H15.6206897C16.3824617 14.2413793 17 13.623841 17 12.862069V2.37931034C17 1.61753828 16.3824617 1 15.6206897 1H2.37931034C1.61753828 1 1 1.61753828 1 2.37931034z"/></g></svg>
common/src/resources/postcss/utilities/icons/map-pin.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 18"><defs/><g fill="none" fill-rule="evenodd" stroke="#141828" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" transform="translate(1 1)"><path d="M11.9322034 5.99186441C11.9322034 10.0338983 5.96610169 16 5.96610169 16S0 10.0338983 0 5.99186441C0 2.20013559 3.08311864 0 5.96610169 0c2.88298306 0 5.96610171 2.20013559 5.96610171 5.99186441z"/><circle cx="5.96610169" cy="5.96610169" r="2.16949153"/></g></svg>
common/src/resources/postcss/utilities/icons/map.svg CHANGED
@@ -1 +1 @@
1
- <svg width="22" height="21" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path stroke="#141827" stroke-linejoin="round" d="M13.921 11.632H17.5l3.588 8.421H1l3.488-8.421h4.016"/><path d="M11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468-2.833 0-5.138 2.453-5.138 5.467 0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z" stroke="#141827" stroke-width=".4" fill="#141827" fill-rule="nonzero"/><path d="M12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826 0 1.007.78 1.826 1.74 1.826.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z" stroke="#000" stroke-width=".7" fill="#000" fill-rule="nonzero"/></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><defs/><g fill="none" fill-rule="evenodd"><g fill-rule="nonzero" stroke-width=".7"><path fill="#141827" stroke="#141827" d="M10.66992557 17.2092094c.18208949-.2244634 4.46052505-5.52626362 4.46052505-8.17980983 0-2.72724863-2.08535521-4.94606657-4.64855882-4.94606657-2.56320359 0-4.6485588 2.21881794-4.6485588 4.94606657 0 2.65354618 4.27843556 7.95534643 4.46052504 8.17980983.04719041.0580842.11585307.0915149.18803376.0915149.0721807 0 .14084336-.0334307.18803377-.0915149zM6.33022741 9.02939957c0-2.43579482 1.86238353-4.41737092 4.15166439-4.41737092 2.28928088 0 4.15166441 1.9815761 4.15166441 4.41737092 0 2.15995923-3.31788627 6.53241163-4.15166441 7.59703123-.83377813-1.0644905-4.15166439-5.43616846-4.15166439-7.59703123z"/><path fill="#000" stroke="#000" d="M12.05539077 9.03985474c0-.91098834-.70589102-1.65217392-1.57349897-1.65217392-.86760794 0-1.57349896.74118558-1.57349896 1.65217392 0 .91098834.70589102 1.65217392 1.57349896 1.65217392.86760795 0 1.57349897-.74118558 1.57349897-1.65217392zm-2.85036002 0c0-.73928452.57278056-1.34070411 1.27686105-1.34070411.70408051 0 1.27686107.60141959 1.27686107 1.34070411 0 .73928452-.57278056 1.34070411-1.27686107 1.34070411-.70408049 0-1.27686105-.60141959-1.27686105-1.34070411z"/></g><path fill="#000" fill-rule="nonzero" d="M0 .50378788V20.5332919c0 .278234.19022354.5037879.42487547.5037879H20.6133064c.2346519 0 .4248754-.2255539.4248754-.5037879V.50378788C21.0381818.22555389 20.8479583 0 20.6133064 0H.42487547C.19022355 0 0 .2255539 0 .50378788zm1.1580346.94435628h18.6945206v2.70490796H1.1580346V1.44814416zm0 2.70490796h18.6945206V19.5845078H1.1580346V4.15305212z"/></g></svg>
common/src/resources/postcss/utilities/icons/messages-not-found.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 23"><defs/><g fill="none" fill-rule="evenodd"><path stroke="#141827" d="M.5 2.5h20v20H.5z"/><path stroke="#334AFF" stroke-linecap="round" d="M7.58333333 11.58333333l5.83333334 5.83333334m0-5.83333334l-5.83333334 5.83333334"/><path stroke="#141827" stroke-linecap="round" d="M4.5.5v4m12-4v4"/><path stroke="#141827" stroke-linecap="square" d="M.5 7.5h20"/></g></svg>
common/src/resources/postcss/utilities/icons/no-map.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="92" height="92" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero" fill="none"><g stroke="#141827" stroke-width="2.5" transform="translate(2 2)"><path d="M32.219 88S0 58.674 0 32.281C-.011 15.598 12.685 1.66 29.278.136c16.593-1.523 31.608 9.873 34.627 26.28M32.733 88s2.96-2.693 7.083-7.181" stroke-linecap="round"/><circle cx="33" cy="33" r="8.905"/><circle cx="65.127" cy="59.016" r="23.571"/></g><g transform="translate(64.857 47.048)"><circle fill="#111" cx="2.839" cy="26.495" r="2.839"/><path d="M2.642 0v18.925" stroke="#141827" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>
common/src/resources/postcss/utilities/icons/phone.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"><defs/><path fill="none" fill-rule="evenodd" stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M11.6819994 10.88200048l-1.30400005 1.62857142c-2.01929741-1.1866922-3.70231405-2.86911883-4.88971428-4.888l1.63-1.304c.39282682-.31454501.52426073-.85436286.32-1.31428571L5.95257078 1.6585719c-.22002641-.49569916-.76652996-.75927831-1.29142857-.62285714l-2.82857143.73371429c-.54614963.14276045-.89926073.67138385-.822 1.23057143C2.03036105 10.26199785 7.73800197 15.9696388 14.99999 16.989429c.5591969.0772608 1.0878203-.2758503 1.2305808-.822l.7337143-2.8285714c.1360844-.5247877-.1272478-1.0710299-.6225715-1.2914286l-3.3454285-1.48571424c-.4599576-.20451327-.9999874-.07291035-1.3142857.32028572z"/></svg>
common/src/resources/postcss/utilities/icons/photo.svg CHANGED
@@ -1 +1 @@
1
- <svg width="20" height="17" xmlns="http://www.w3.org/2000/svg"><g fill="#141827" fill-rule="nonzero"><path d="M19.348.11H.634a.509.509 0 0 0-.52.508v15.017c0 .284.23.508.52.508h18.714c.29 0 .52-.224.52-.508V.618a.509.509 0 0 0-.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0-1.227-.528 1.6 1.6 0 0 0-1.206.548l-4.657 5.175V1.145h17.632zM1.174 15.108v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603H1.175v-.02z"/><path d="M14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934 0 .507-.414.933-.906.933-.492 0-.906-.426-.906-.933 0-.507.414-.934.906-.934z"/></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 21"><defs/><g fill="#141827" fill-rule="nonzero"><path d="M20.4070967 0H.57757675C.25413377 0 0 .24803922 0 .5637255v19.872549C0 20.7519607.25413377 21 .57757676 21H20.4070967c.323443 0 .5775767-.2480393.5775767-.5637255V.5637255C20.9846734.24803921 20.7305397 0 20.4070967 0zm-.6006799 1.15v14.8679567l-2.2249804-3.4274509c-.6468859-.6764706-1.8482455-.6764706-2.4951316 0l-1.5479057 1.6460784-4.48199558-5.02843135c-.34654605-.38333333-.83171053-.58627451-1.36308114-.58627451-.50826755 0-1.01653509.22549021-1.33997808.60882354L1.17825658 14.9807019V1.15H19.8064168zM1.17825658 19.8499999v-3.1330235l6.0530044-6.76470589c.11551535-.13529412.27723684-.20294118.4620614-.20294118.16172149 0 .36964912.06764706.48516448.20294118l4.92095394 5.52450979c.1155153.1127452.2772369.2029412.4389583.2029412.1848246.022549.3234431-.067647.4389583-.1803922l1.9868641-2.1196078c.1848246-.2029412.5544737-.2029412.7624013 0l3.1028972 4.3519608v2.1408666H1.17825658v-.022549z"/><path d="M14.9552083 9.04117648c1.159375 0 2.121875-.96960785 2.121875-2.18725491 0-1.21764705-.940625-2.1872549-2.121875-2.1872549-1.18125 0-2.121875.96960785-2.121875 2.1872549 0 1.21764706.9625 2.18725491 2.121875 2.18725491zm0-3.22450981c.546875 0 1.00625.47352941 1.00625 1.0372549 0 .5637255-.459375 1.03725491-1.00625 1.03725491-.546875 0-1.00625-.47352941-1.00625-1.03725491 0-.56372549.459375-1.0372549 1.00625-1.0372549z"/></g></svg>
common/src/resources/postcss/utilities/icons/remove.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"><g fill="none" fill-rule="evenodd" stroke-linecap="square" stroke-width="1.5" transform="translate(1 1)"><path stroke="#D5D5D5" d="M10.91 5.09l-5.82 5.82M10.91 10.91L5.09 5.09"/><circle cx="8" cy="8" r="8" stroke="#D5D5D5"/></g></svg>
 
common/src/resources/postcss/utilities/mixins/_buttons.pcss CHANGED
@@ -26,20 +26,6 @@
26
  transition: var(--transition-background-color);
27
  }
28
 
29
- /* -----------------------------------------------------------------------------
30
- * Button - Link
31
- * ----------------------------------------------------------------------------- */
32
-
33
- @define-mixin button-link {
34
- @mixin desktop-body-2;
35
- @mixin button-global;
36
-
37
- background-color: transparent;
38
- text-align: center;
39
- text-decoration: underline;
40
- transition: var(--transition-color);
41
- }
42
-
43
  /* -----------------------------------------------------------------------------
44
  * Button - Border
45
  * ----------------------------------------------------------------------------- */
26
  transition: var(--transition-background-color);
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /* -----------------------------------------------------------------------------
30
  * Button - Border
31
  * ----------------------------------------------------------------------------- */
common/src/resources/postcss/utilities/variables/_box-shadows.pcss CHANGED
@@ -6,6 +6,6 @@
6
  --box-shadow-default: 0 2px 5px 0 var(--color-box-shadow);
7
  --box-shadow-tooltip: 0 2px 12px 0 var(--color-box-shadow);
8
  --box-shadow-card: 0 1px 6px 2px var(--color-box-shadow);
9
- --box-shadow-multiday: 16px 6px 6px -2px var(--color-box-shadow);
10
  }
11
 
6
  --box-shadow-default: 0 2px 5px 0 var(--color-box-shadow);
7
  --box-shadow-tooltip: 0 2px 12px 0 var(--color-box-shadow);
8
  --box-shadow-card: 0 1px 6px 2px var(--color-box-shadow);
9
+ --box-shadow-multiday: 16px 6px 6px -2px var(--color-box-shadow-secondary);
10
  }
11
 
common/src/resources/postcss/utilities/variables/_colors.pcss CHANGED
@@ -4,6 +4,7 @@
4
  * ----------------------------------------------------------------------------- */
5
 
6
  --color-text-primary: #141827;
 
7
  --color-text-secondary: #727272;
8
  --color-text-disabled: #D5D5D5;
9
 
@@ -16,7 +17,6 @@
16
  --color-icon-active: #141827;
17
  --color-icon-disabled: #D5D5D5;
18
  --color-icon-focus: #334AFF;
19
- --color-icon-error: #DA394D;
20
 
21
  /* -----------------------------------------------------------------------------
22
  * Colors - UI
@@ -48,9 +48,10 @@
48
  --color-background: #FFFFFF;
49
  --color-background-transparent: rgba(var(--color-background), 0.6);
50
  --color-background-secondary: #F7F6F6;
 
51
  --color-background-secondary-hover: #F0EEEE;
52
- --color-background-error: rgba(var(--color-icon-error), 0.08);
53
  --color-box-shadow: rgba(#000000, 0.14);
 
54
  --color-scroll-track: rgba(#000000, 0.25);
55
  --color-scroll-bar: rgba(#000000, 0.5);
56
 
4
  * ----------------------------------------------------------------------------- */
5
 
6
  --color-text-primary: #141827;
7
+ --color-text-primary-light: rgba(var(--color-text-primary), 0.62);
8
  --color-text-secondary: #727272;
9
  --color-text-disabled: #D5D5D5;
10
 
17
  --color-icon-active: #141827;
18
  --color-icon-disabled: #D5D5D5;
19
  --color-icon-focus: #334AFF;
 
20
 
21
  /* -----------------------------------------------------------------------------
22
  * Colors - UI
48
  --color-background: #FFFFFF;
49
  --color-background-transparent: rgba(var(--color-background), 0.6);
50
  --color-background-secondary: #F7F6F6;
51
+ --color-background-messages: rgba(var(--color-text-primary), 0.07);
52
  --color-background-secondary-hover: #F0EEEE;
 
53
  --color-box-shadow: rgba(#000000, 0.14);
54
+ --color-box-shadow-secondary: rgba(#000000, 0.1);
55
  --color-scroll-track: rgba(#000000, 0.25);
56
  --color-scroll-bar: rgba(#000000, 0.5);
57
 
common/src/resources/postcss/utilities/variables/_svgs.pcss CHANGED
@@ -23,17 +23,6 @@
23
  }
24
  }
25
 
26
- /* -----------------------------------------------------------------------------
27
- * SVG - Arrow (light, left)
28
- * ----------------------------------------------------------------------------- */
29
-
30
- @svg-load arrow url('../icons/arrow.svg') {
31
-
32
- path {
33
- fill: var(--color-icon-primary);
34
- }
35
- }
36
-
37
  /* -----------------------------------------------------------------------------
38
  * SVG - Caret Down
39
  * ----------------------------------------------------------------------------- */
@@ -135,17 +124,17 @@
135
  * SVG - Close
136
  * ----------------------------------------------------------------------------- */
137
 
138
- @svg-load close-secondary url('../icons/close.svg') {
139
 
140
  path {
141
- stroke: var(--color-icon-secondary);
142
  }
143
  }
144
 
145
- @svg-load close url('../icons/close.svg') {
146
 
147
  path {
148
- stroke: var(--color-icon-primary);
149
  }
150
  }
151
 
@@ -171,17 +160,6 @@
171
  }
172
  }
173
 
174
- /* -----------------------------------------------------------------------------
175
- * SVG - Error
176
- * ----------------------------------------------------------------------------- */
177
-
178
- @svg-load error-active url('../icons/error.svg') {
179
-
180
- path {
181
- fill: var(--color-icon-active);
182
- }
183
- }
184
-
185
  /* -----------------------------------------------------------------------------
186
  * SVG - Featured
187
  * ----------------------------------------------------------------------------- */
@@ -244,6 +222,17 @@
244
  }
245
  }
246
 
 
 
 
 
 
 
 
 
 
 
 
247
  /* -----------------------------------------------------------------------------
248
  * SVG - List
249
  * ----------------------------------------------------------------------------- */
@@ -287,17 +276,45 @@
287
  }
288
  }
289
 
 
 
 
 
 
 
 
 
 
 
 
290
  /* -----------------------------------------------------------------------------
291
  * SVG - Map
292
  * ----------------------------------------------------------------------------- */
293
 
294
  @svg-load map url('../icons/map.svg') {
295
 
 
 
 
 
 
 
 
 
 
 
 
296
  path {
297
  stroke: var(--color-icon-active);
298
  }
299
  }
300
 
 
 
 
 
 
 
301
  /* -----------------------------------------------------------------------------
302
  * SVG - Month
303
  * ----------------------------------------------------------------------------- */
@@ -310,44 +327,48 @@
310
  }
311
 
312
  /* -----------------------------------------------------------------------------
313
- * SVG - Photo
314
  * ----------------------------------------------------------------------------- */
315
 
316
- @svg-load photo url('../icons/photo.svg') {
 
 
 
 
 
 
317
 
318
  path {
319
- fill: var(--color-icon-active);
320
  }
321
  }
322
 
323
  /* -----------------------------------------------------------------------------
324
- * SVG - Recurring
325
  * ----------------------------------------------------------------------------- */
326
 
327
- @svg-load recurring url('../icons/recurring-events.svg') {
328
 
329
  path {
330
- fill: var(--color-accent-primary);
331
  }
332
  }
333
 
334
  /* -----------------------------------------------------------------------------
335
- * SVG - Remove
336
  * ----------------------------------------------------------------------------- */
337
 
338
- @svg-load remove url('../icons/remove.svg') {
339
 
340
- circle,
341
  path {
342
- stroke: var(--color-icon-primary);
343
  }
344
  }
345
 
346
- @svg-load remove-secondary url('../icons/remove.svg') {
347
 
348
- circle,
349
  path {
350
- stroke: var(--color-icon-secondary);
351
  }
352
  }
353
 
23
  }
24
  }
25
 
 
 
 
 
 
 
 
 
 
 
 
26
  /* -----------------------------------------------------------------------------
27
  * SVG - Caret Down
28
  * ----------------------------------------------------------------------------- */
124
  * SVG - Close
125
  * ----------------------------------------------------------------------------- */
126
 
127
+ @svg-load close url('../icons/close.svg') {
128
 
129
  path {
130
+ stroke: var(--color-icon-primary);
131
  }
132
  }
133
 
134
+ @svg-load close-secondary url('../icons/close.svg') {
135
 
136
  path {
137
+ stroke: var(--color-icon-secondary);
138
  }
139
  }
140
 
160
  }
161
  }
162
 
 
 
 
 
 
 
 
 
 
 
 
163
  /* -----------------------------------------------------------------------------
164
  * SVG - Featured
165
  * ----------------------------------------------------------------------------- */
222
  }
223
  }
224
 
225
+ /* -----------------------------------------------------------------------------
226
+ * SVG - Link
227
+ * ----------------------------------------------------------------------------- */
228
+
229
+ @svg-load link-active url('../icons/link.svg') {
230
+
231
+ path {
232
+ stroke: var(--color-icon-active);
233
+ }
234
+ }
235
+
236
  /* -----------------------------------------------------------------------------
237
  * SVG - List
238
  * ----------------------------------------------------------------------------- */
276
  }
277
  }
278
 
279
+ /* -----------------------------------------------------------------------------
280
+ * SVG - Mail
281
+ * ----------------------------------------------------------------------------- */
282
+
283
+ @svg-load mail-active url('../icons/mail.svg') {
284
+
285
+ path {
286
+ stroke: var(--color-icon-active);
287
+ }
288
+ }
289
+
290
  /* -----------------------------------------------------------------------------
291
  * SVG - Map
292
  * ----------------------------------------------------------------------------- */
293
 
294
  @svg-load map url('../icons/map.svg') {
295
 
296
+ path {
297
+ fill: var(--color-icon-active);
298
+ }
299
+ }
300
+
301
+ /* -----------------------------------------------------------------------------
302
+ * SVG - Map pin
303
+ * ----------------------------------------------------------------------------- */
304
+
305
+ @svg-load map-pin-active url('../icons/map-pin.svg') {
306
+
307
  path {
308
  stroke: var(--color-icon-active);
309
  }
310
  }
311
 
312
+ /* -----------------------------------------------------------------------------
313
+ * SVG - Messages
314
+ * ----------------------------------------------------------------------------- */
315
+
316
+ @svg-load messages-not-found url('../icons/messages-not-found.svg') {}
317
+
318
  /* -----------------------------------------------------------------------------
319
  * SVG - Month
320
  * ----------------------------------------------------------------------------- */
327
  }
328
 
329
  /* -----------------------------------------------------------------------------
330
+ * SVG - No Map
331
  * ----------------------------------------------------------------------------- */
332
 
333
+ @svg-load no-map url('../icons/no-map.svg') {}
334
+
335
+ /* -----------------------------------------------------------------------------
336
+ * SVG - Phone
337
+ * ----------------------------------------------------------------------------- */
338
+
339
+ @svg-load phone-active url('../icons/phone.svg') {
340
 
341
  path {
342
+ stroke: var(--color-icon-active);
343
  }
344
  }
345
 
346
  /* -----------------------------------------------------------------------------
347
+ * SVG - Photo
348
  * ----------------------------------------------------------------------------- */
349
 
350
+ @svg-load photo url('../icons/photo.svg') {
351
 
352
  path {
353
+ fill: var(--color-icon-active);
354
  }
355
  }
356
 
357
  /* -----------------------------------------------------------------------------
358
+ * SVG - Recurring
359
  * ----------------------------------------------------------------------------- */
360
 
361
+ @svg-load recurring url('../icons/recurring-events.svg') {
362
 
 
363
  path {
364
+ fill: var(--color-accent-primary);
365
  }
366
  }
367
 
368
+ @svg-load recurring-active url('../icons/recurring-events.svg') {
369
 
 
370
  path {
371
+ fill: var(--color-icon-active);
372
  }
373
  }
374
 
common/src/resources/postcss/utilities/variables/_z-index.pcss CHANGED
@@ -13,4 +13,5 @@
13
  --z-index-map-event-hover: 5;
14
  --z-index-map-event-hover-actions: 6;
15
  --z-index-multiday-event: 5;
 
16
  }
13
  --z-index-map-event-hover: 5;
14
  --z-index-map-event-hover-actions: 6;
15
  --z-index-multiday-event: 5;
16
+ --z-index-multiday-event-bar: 2;
17
  }
common/src/views/dialog/alert.php CHANGED
@@ -5,10 +5,10 @@
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/alert.php
7
  *
8
- * @since TBD
9
  *
10
  * @package Tribe
11
- * @version TBD
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/alert.php
7
  *
8
+ * @since 4.10.0
9
  *
10
  * @package Tribe
11
+ * @version 4.10.0
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
common/src/views/dialog/button.php CHANGED
@@ -5,10 +5,10 @@
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/buton.php
7
  *
8
- * @since TBD
9
  *
10
  * @package Tribe
11
- * @version TBD
12
  */
13
  $classes = $button_classes ?: 'tribe-button';
14
  $classes = implode( ' ' , (array) $classes );
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/buton.php
7
  *
8
+ * @since 4.10.0
9
  *
10
  * @package Tribe
11
+ * @version 4.10.0
12
  */
13
  $classes = $button_classes ?: 'tribe-button';
14
  $classes = implode( ' ' , (array) $classes );
common/src/views/dialog/confirm.php CHANGED
@@ -5,10 +5,10 @@
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/confirm.php
7
  *
8
- * @since TBD
9
  *
10
  * @package Tribe
11
- * @version TBD
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/confirm.php
7
  *
8
+ * @since 4.10.0
9
  *
10
  * @package Tribe
11
+ * @version 4.10.0
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
common/src/views/dialog/dialog.php CHANGED
@@ -5,10 +5,10 @@
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/dialog.php
7
  *
8
- * @since TBD
9
  *
10
  * @package Tribe
11
- * @version TBD
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/dialog.php
7
  *
8
+ * @since 4.10.0
9
  *
10
  * @package Tribe
11
+ * @version 4.10.0
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
common/src/views/dialog/modal.php CHANGED
@@ -5,10 +5,10 @@
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/modal.php
7
  *
8
- * @since TBD
9
  *
10
  * @package Tribe
11
- * @version TBD
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
5
  *
6
  * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/modal.php
7
  *
8
+ * @since 4.10.0
9
  *
10
  * @package Tribe
11
+ * @version 4.10.0
12
  */
13
 
14
  /** @var \Tribe\Dialog\View $dialog_view */
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit7662ee13ae579487f6bb7c48a1b07268::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitd5904340b4eda874a15fc0f7423af60c::getLoader();
common/vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit1bdc5ac4f74395b6f532325c948c00f6::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit37bc0430de155429f9b16bdb308be64a::getLoader();
common/vendor/composer/autoload_classmap.php CHANGED
@@ -122,6 +122,8 @@ return array(
122
  'Tribe\\Models\\Post_Types\\Base' => $baseDir . '/src/Tribe/Models/Post_Types/Base.php',
123
  'Tribe\\Models\\Post_Types\\Nothing' => $baseDir . '/src/Tribe/Models/Post_Types/Nothing.php',
124
  'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
 
 
125
  'Tribe\\Service_Providers\\Dialog' => $baseDir . '/src/Tribe/Service_Providers/Dialog.php',
126
  'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
127
  'Tribe\\Service_Providers\\Tooltip' => $baseDir . '/src/Tribe/Service_Providers/Tooltip.php',
122
  'Tribe\\Models\\Post_Types\\Base' => $baseDir . '/src/Tribe/Models/Post_Types/Base.php',
123
  'Tribe\\Models\\Post_Types\\Nothing' => $baseDir . '/src/Tribe/Models/Post_Types/Nothing.php',
124
  'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
125
+ 'Tribe\\Repository\\Core_Read_Interface' => $baseDir . '/src/Tribe/Repository/Core_Read_Interface.php',
126
+ 'Tribe\\Repository\\Filter_Validation' => $baseDir . '/src/Tribe/Repository/Filter_Validation.php',
127
  'Tribe\\Service_Providers\\Dialog' => $baseDir . '/src/Tribe/Service_Providers/Dialog.php',
128
  'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
129
  'Tribe\\Service_Providers\\Tooltip' => $baseDir . '/src/Tribe/Service_Providers/Tooltip.php',
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit7662ee13ae579487f6bb7c48a1b07268
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit7662ee13ae579487f6bb7c48a1b07268
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit7662ee13ae579487f6bb7c48a1b07268', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit7662ee13ae579487f6bb7c48a1b07268', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitd5904340b4eda874a15fc0f7423af60c
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitd5904340b4eda874a15fc0f7423af60c', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitd5904340b4eda874a15fc0f7423af60c', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInitd5904340b4eda874a15fc0f7423af60c::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
common/vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit1bdc5ac4f74395b6f532325c948c00f6 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit1bdc5ac4f74395b6f532325c948c00f6 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit1bdc5ac4f74395b6f532325c948c00f6', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit1bdc5ac4f74395b6f532325c948c00f6', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit37bc0430de155429f9b16bdb308be64a {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit37bc0430de155429f9b16bdb308be64a', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit37bc0430de155429f9b16bdb308be64a', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
common/vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -178,6 +178,8 @@ class ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268
178
  'Tribe\\Models\\Post_Types\\Base' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Base.php',
179
  'Tribe\\Models\\Post_Types\\Nothing' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Nothing.php',
180
  'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
 
 
181
  'Tribe\\Service_Providers\\Dialog' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Dialog.php',
182
  'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
183
  'Tribe\\Service_Providers\\Tooltip' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Tooltip.php',
@@ -203,10 +205,10 @@ class ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268
203
  public static function getInitializer(ClassLoader $loader)
204
  {
205
  return \Closure::bind(function () use ($loader) {
206
- $loader->prefixLengthsPsr4 = ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268::$prefixLengthsPsr4;
207
- $loader->prefixDirsPsr4 = ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268::$prefixDirsPsr4;
208
- $loader->prefixesPsr0 = ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268::$prefixesPsr0;
209
- $loader->classMap = ComposerStaticInit7662ee13ae579487f6bb7c48a1b07268::$classMap;
210
 
211
  }, null, ClassLoader::class);
212
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitd5904340b4eda874a15fc0f7423af60c
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
178
  'Tribe\\Models\\Post_Types\\Base' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Base.php',
179
  'Tribe\\Models\\Post_Types\\Nothing' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Nothing.php',
180
  'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
181
+ 'Tribe\\Repository\\Core_Read_Interface' => __DIR__ . '/../..' . '/src/Tribe/Repository/Core_Read_Interface.php',
182
+ 'Tribe\\Repository\\Filter_Validation' => __DIR__ . '/../..' . '/src/Tribe/Repository/Filter_Validation.php',
183
  'Tribe\\Service_Providers\\Dialog' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Dialog.php',
184
  'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
185
  'Tribe\\Service_Providers\\Tooltip' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Tooltip.php',
205
  public static function getInitializer(ClassLoader $loader)
206
  {
207
  return \Closure::bind(function () use ($loader) {
208
+ $loader->prefixLengthsPsr4 = ComposerStaticInitd5904340b4eda874a15fc0f7423af60c::$prefixLengthsPsr4;
209
+ $loader->prefixDirsPsr4 = ComposerStaticInitd5904340b4eda874a15fc0f7423af60c::$prefixDirsPsr4;
210
+ $loader->prefixesPsr0 = ComposerStaticInitd5904340b4eda874a15fc0f7423af60c::$prefixesPsr0;
211
+ $loader->classMap = ComposerStaticInitd5904340b4eda874a15fc0f7423af60c::$classMap;
212
 
213
  }, null, ClassLoader::class);
214
  }
lang/the-events-calendar-bg_BG.mo CHANGED
Binary file
lang/the-events-calendar-bs_BA.mo DELETED
Binary file
lang/the-events-calendar-ca.mo CHANGED
Binary file
lang/the-events-calendar-cs_CZ.mo CHANGED
Binary file
lang/the-events-calendar-cy.mo CHANGED
Binary file
lang/the-events-calendar-da_DK.mo CHANGED
Binary file
lang/the-events-calendar-de_DE.mo CHANGED
Binary file
lang/the-events-calendar-el.mo CHANGED
Binary file
lang/the-events-calendar-en_AU.mo CHANGED
Binary file
lang/the-events-calendar-en_CA.mo CHANGED
Binary file
lang/the-events-calendar-en_GB.mo CHANGED
Binary file
lang/the-events-calendar-en_NZ.mo CHANGED
Binary file
lang/the-events-calendar-es_ES.mo CHANGED
Binary file
lang/the-events-calendar-es_MX.mo CHANGED
Binary file
lang/the-events-calendar-es_VE.mo CHANGED
Binary file
lang/the-events-calendar-eu.mo CHANGED
Binary file
lang/the-events-calendar-fi.mo CHANGED
Binary file
lang/the-events-calendar-fr_CA.mo CHANGED
Binary file
lang/the-events-calendar-fr_FR.mo CHANGED
Binary file
lang/the-events-calendar-gl_ES.mo CHANGED
Binary file
lang/the-events-calendar-he_IL.mo CHANGED
Binary file
lang/the-events-calendar-hr.mo CHANGED
Binary file
lang/the-events-calendar-hu_HU.mo CHANGED
Binary file
lang/the-events-calendar-is_IS.mo CHANGED
Binary file
lang/the-events-calendar-it_IT.mo CHANGED
Binary file
lang/the-events-calendar-ja.mo CHANGED
Binary file
lang/the-events-calendar-lt_LT.mo CHANGED
Binary file
lang/the-events-calendar-nb_NO.mo CHANGED
Binary file
lang/the-events-calendar-nl_NL.mo CHANGED
Binary file
lang/the-events-calendar-nn_NO.mo CHANGED
Binary file
lang/the-events-calendar-pt_BR.mo CHANGED
Binary file
lang/the-events-calendar-pt_PT.mo CHANGED
Binary file
lang/the-events-calendar-ro_RO.mo CHANGED
Binary file
lang/the-events-calendar-ru_RU.mo CHANGED
Binary file
lang/the-events-calendar-sk_SK.mo CHANGED
Binary file
lang/the-events-calendar-sl_SI.mo CHANGED
Binary file
lang/the-events-calendar-sq.mo CHANGED
Binary file
lang/the-events-calendar-sr_RS.mo CHANGED
Binary file
lang/the-events-calendar-sv_SE.mo CHANGED
Binary file
lang/the-events-calendar-tr_TR.mo CHANGED
Binary file
lang/the-events-calendar-uk.mo CHANGED
Binary file
lang/the-events-calendar-zh_CN.mo CHANGED
Binary file
lang/the-events-calendar-zh_TW.mo CHANGED
Binary file
lang/the-events-calendar.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the The Events Calendar package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: The Events Calendar 4.9.12\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
- "POT-Creation-Date: 2019-11-20 05:11:15+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "PO-Revision-Date: 2019-11-20 05:11\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
@@ -47,7 +47,7 @@ msgstr ""
47
  msgid "%s"
48
  msgstr ""
49
 
50
- #: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:4147
51
  #: src/admin-views/tribe-options-upgrade.php:20
52
  msgid "View Calendar"
53
  msgstr ""
@@ -57,8 +57,8 @@ msgid "Add %s"
57
  msgstr ""
58
 
59
  #: src/Tribe/Admin/Bar/Default_Configurator.php:62
60
- #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:2006
61
- #: src/Tribe/Main.php:5243 src/Tribe/Main.php:5290 src/Tribe/Organizer.php:93
62
  #: src/Tribe/Venue.php:112
63
  msgid "Edit %s"
64
  msgstr ""
@@ -69,7 +69,7 @@ msgstr ""
69
  msgid "Import"
70
  msgstr ""
71
 
72
- #: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4195
73
  msgid "Settings"
74
  msgstr ""
75
 
@@ -154,7 +154,7 @@ msgid ""
154
  "refresh and try again."
155
  msgstr ""
156
 
157
- #: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:2025
158
  msgid "%s Categories"
159
  msgstr ""
160
 
@@ -176,7 +176,7 @@ msgid "All %s"
176
  msgstr ""
177
 
178
  #: src/Tribe/Aggregator/API/Origins.php:36
179
- #: src/Tribe/Aggregator/Admin_Bar.php:97 src/Tribe/Aggregator/Service.php:796
180
  msgid "CSV File"
181
  msgstr ""
182
 
@@ -272,7 +272,7 @@ msgid ""
272
  "The image associated with your event could not be attached to the event."
273
  msgstr ""
274
 
275
- #: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:706
276
  msgid ""
277
  "The daily limit of %d import requests to the Event Aggregator service has "
278
  "been reached. Please try again later."
@@ -1037,14 +1037,22 @@ msgid "the UID part of the iCalendar Specification"
1037
  msgstr ""
1038
 
1039
  #: src/Tribe/Aggregator/Service.php:693
 
 
 
 
 
 
 
 
1040
  msgid "Sorry, but something went wrong. Please try again."
1041
  msgstr ""
1042
 
1043
- #: src/Tribe/Aggregator/Service.php:694
1044
  msgid "Events could not be imported. The import parameters were invalid."
1045
  msgstr ""
1046
 
1047
- #: src/Tribe/Aggregator/Service.php:695
1048
  msgid ""
1049
  "Events cannot be imported because Eventbrite has returned an error. This "
1050
  "could mean that the event ID does not exist, the event or source is marked "
@@ -1054,98 +1062,98 @@ msgid ""
1054
  "in our knowledgebase</a>."
1055
  msgstr ""
1056
 
1057
- #: src/Tribe/Aggregator/Service.php:696
1058
  msgid "No upcoming Eventbrite events found."
1059
  msgstr ""
1060
 
1061
- #: src/Tribe/Aggregator/Service.php:697
1062
  msgid "The URL provided could not be reached."
1063
  msgstr ""
1064
 
1065
- #: src/Tribe/Aggregator/Service.php:698
1066
  msgid "The URL provided failed to load."
1067
  msgstr ""
1068
 
1069
- #: src/Tribe/Aggregator/Service.php:699
1070
  msgid "The image associated with your event could not be imported."
1071
  msgstr ""
1072
 
1073
- #: src/Tribe/Aggregator/Service.php:700
1074
  msgid ""
1075
  "The image associated with your event is not accessible with your API key."
1076
  msgstr ""
1077
 
1078
- #: src/Tribe/Aggregator/Service.php:701
1079
  msgid ""
1080
  "The import failed for an unknown reason. Please try again. If the problem "
1081
  "persists, please contact support."
1082
  msgstr ""
1083
 
1084
- #: src/Tribe/Aggregator/Service.php:702
1085
  msgid ""
1086
  "Events could not be imported. The URL provided did not have events in the "
1087
  "proper format."
1088
  msgstr ""
1089
 
1090
- #: src/Tribe/Aggregator/Service.php:703
1091
  msgid ""
1092
  "The file provided could not be opened. Please confirm that it is a properly "
1093
  "formatted .ics file."
1094
  msgstr ""
1095
 
1096
- #: src/Tribe/Aggregator/Service.php:704
1097
  msgid "Your Meetup API key is invalid."
1098
  msgstr ""
1099
 
1100
- #: src/Tribe/Aggregator/Service.php:705
1101
  msgid ""
1102
  "Event Aggregator cannot reach Meetup.com because you exceeded the request "
1103
  "limit for your Meetup API key."
1104
  msgstr ""
1105
 
1106
- #: src/Tribe/Aggregator/Service.php:708
1107
  msgid "The import is in progress."
1108
  msgstr ""
1109
 
1110
- #: src/Tribe/Aggregator/Service.php:710
1111
  msgid "The import will be starting soon."
1112
  msgstr ""
1113
 
1114
- #: src/Tribe/Aggregator/Service.php:712
1115
  msgid "Success"
1116
  msgstr ""
1117
 
1118
- #: src/Tribe/Aggregator/Service.php:713
1119
  msgid "Import created"
1120
  msgstr ""
1121
 
1122
- #: src/Tribe/Aggregator/Service.php:714
1123
  msgid "Successfully fetched Eventbrite Token"
1124
  msgstr ""
1125
 
1126
- #: src/Tribe/Aggregator/Service.php:715
1127
  msgid "Successfully loaded import origins"
1128
  msgstr ""
1129
 
1130
- #: src/Tribe/Aggregator/Service.php:716
1131
  msgid "Import is complete"
1132
  msgstr ""
1133
 
1134
- #: src/Tribe/Aggregator/Service.php:717
1135
  msgid "Import queued"
1136
  msgstr ""
1137
 
1138
- #: src/Tribe/Aggregator/Service.php:718
1139
  msgid "Events could not be imported. The URL provided could not be reached."
1140
  msgstr ""
1141
 
1142
- #: src/Tribe/Aggregator/Service.php:719
1143
  msgid ""
1144
  "The requested source does not have any upcoming and published events "
1145
  "matching the search criteria."
1146
  msgstr ""
1147
 
1148
- #: src/Tribe/Aggregator/Service.php:721
1149
  msgctxt ""
1150
  "The placeholder is for the localized version of the iCal UID specification "
1151
  "link"
@@ -1157,7 +1165,7 @@ msgid ""
1157
  "help them more quickly resolve their feed's UID issue."
1158
  msgstr ""
1159
 
1160
- #: src/Tribe/Aggregator/Service.php:730
1161
  msgctxt ""
1162
  "The placeholder is for the localized version of the iCal UID specification "
1163
  "link"
@@ -1169,7 +1177,136 @@ msgid ""
1169
  "help them more quickly resolve their feed's UID issue."
1170
  msgstr ""
1171
 
1172
- #: src/Tribe/Aggregator/Service.php:752
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1173
  msgid "Unknown service message"
1174
  msgstr ""
1175
 
@@ -1898,7 +2035,8 @@ msgstr ""
1898
 
1899
  #: src/Tribe/Editor/Template.php:70 src/Tribe/Template/Embed.php:59
1900
  #: src/Tribe/Template/Single_Event.php:119
1901
- #: src/Tribe/Views/V2/Template_Bootstrap.php:124
 
1902
  msgid "This %s has passed."
1903
  msgstr ""
1904
 
@@ -2501,202 +2639,202 @@ msgstr ""
2501
  msgid "Upcoming Events"
2502
  msgstr ""
2503
 
2504
- #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 4.9.12) #-#-#-#-#
2505
  #. Plugin Name of the plugin/theme
2506
- #: src/Tribe/Main.php:906 src/Tribe/Main.php:1361 src/Tribe/Privacy.php:29
2507
  #: src/functions/template-tags/general.php:1358 the-events-calendar.php:56
2508
  msgid "The Events Calendar"
2509
  msgstr ""
2510
 
2511
- #: src/Tribe/Main.php:913
2512
  msgid "month"
2513
  msgstr ""
2514
 
2515
- #: src/Tribe/Main.php:914
2516
  msgid "list"
2517
  msgstr ""
2518
 
2519
- #: src/Tribe/Main.php:915
2520
  msgid "upcoming"
2521
  msgstr ""
2522
 
2523
- #: src/Tribe/Main.php:916
2524
  msgid "past"
2525
  msgstr ""
2526
 
2527
- #: src/Tribe/Main.php:917
2528
  msgid "day"
2529
  msgstr ""
2530
 
2531
- #: src/Tribe/Main.php:918
2532
  msgid "today"
2533
  msgstr ""
2534
 
2535
- #: src/Tribe/Main.php:919
2536
  msgctxt "featured events slug"
2537
  msgid "featured"
2538
  msgstr ""
2539
 
2540
- #: src/Tribe/Main.php:920
2541
  msgctxt "all events slug"
2542
  msgid "all"
2543
  msgstr ""
2544
 
2545
- #: src/Tribe/Main.php:944
2546
  msgid "Initializing Tribe Events on %s"
2547
  msgstr ""
2548
 
2549
- #: src/Tribe/Main.php:1002 src/Tribe/Main.php:1004
2550
  msgid "Welcome to The Events Calendar!"
2551
  msgstr ""
2552
 
2553
- #: src/Tribe/Main.php:1150
2554
  msgid ""
2555
  "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
2556
  "show its calendar in place of the page."
2557
  msgstr ""
2558
 
2559
- #: src/Tribe/Main.php:1153
2560
  msgid "Ask the site administrator to edit the %s slug"
2561
  msgstr ""
2562
 
2563
- #: src/Tribe/Main.php:1155
2564
  msgid "Edit the %s slug"
2565
  msgstr ""
2566
 
2567
- #: src/Tribe/Main.php:1159
2568
  msgid " ask the site administrator set a different Events URL slug."
2569
  msgstr ""
2570
 
2571
- #: src/Tribe/Main.php:1164
2572
  msgid "edit Events settings."
2573
  msgstr ""
2574
 
2575
- #: src/Tribe/Main.php:1167
2576
  msgid "%1$s or %2$s"
2577
  msgstr ""
2578
 
2579
- #: src/Tribe/Main.php:1236
2580
  msgid "Upgrade your calendar views"
2581
  msgstr ""
2582
 
2583
- #: src/Tribe/Main.php:1272
2584
  msgid "Upgrade"
2585
  msgstr ""
2586
 
2587
- #: src/Tribe/Main.php:1321 src/admin-views/admin-welcome-message.php:19
2588
  msgid "New User Primer"
2589
  msgstr ""
2590
 
2591
- #: src/Tribe/Main.php:1323
2592
  msgid ""
2593
  "We are committed to helping make your calendar spectacular and have a wealth "
2594
  "of resources available, including a handy %s to get your calendar up and "
2595
  "running."
2596
  msgstr ""
2597
 
2598
- #: src/Tribe/Main.php:1334
2599
  msgid "Support for The Events Calendar"
2600
  msgstr ""
2601
 
2602
- #: src/Tribe/Main.php:1337
2603
  msgid ""
2604
  "%s: A thorough walkthrough of The Events Calendar and the settings that are "
2605
  "available to you."
2606
  msgstr ""
2607
 
2608
- #: src/Tribe/Main.php:1337
2609
  msgid "Settings overview"
2610
  msgstr ""
2611
 
2612
- #: src/Tribe/Main.php:1339
2613
  msgid ""
2614
  "%s: A complete look at the features you can expect to see right out of the "
2615
  "box as well as how to use them."
2616
  msgstr ""
2617
 
2618
- #: src/Tribe/Main.php:1339
2619
  msgid "Features overview"
2620
  msgstr ""
2621
 
2622
- #: src/Tribe/Main.php:1341
2623
  msgid ""
2624
  "%s: Our most comprehensive outline for customizing the calendar to suit your "
2625
  "needs, including custom layouts and styles."
2626
  msgstr ""
2627
 
2628
- #: src/Tribe/Main.php:1341
2629
  msgid "Themer’s Guide"
2630
  msgstr ""
2631
 
2632
- #: src/Tribe/Main.php:1343
2633
  msgid ""
2634
  "%s: An overview of the default templates and styles that are included in the "
2635
  "plugin, as well as how to change them."
2636
  msgstr ""
2637
 
2638
- #: src/Tribe/Main.php:1343
2639
  msgid "Using stylesheets and page templates"
2640
  msgstr ""
2641
 
2642
- #: src/Tribe/Main.php:1345
2643
  msgid ""
2644
  "%s: Do you see an issue with your calendar? Go here first to find where it’s "
2645
  "coming from and how to fix it."
2646
  msgstr ""
2647
 
2648
- #: src/Tribe/Main.php:1345
2649
  msgid "Troubleshooting common problems"
2650
  msgstr ""
2651
 
2652
- #: src/Tribe/Main.php:1347
2653
  msgid ""
2654
  "%s: Code and guides for customizing your calendar in useful and interesting "
2655
  "ways."
2656
  msgstr ""
2657
 
2658
- #: src/Tribe/Main.php:1347
2659
  msgid "Customizing the Events plugins"
2660
  msgstr ""
2661
 
2662
- #: src/Tribe/Main.php:1362
2663
  msgid "Events Tickets"
2664
  msgstr ""
2665
 
2666
- #: src/Tribe/Main.php:1363
2667
  msgid ""
2668
  "If you have tried the above steps and are still having trouble, you can post "
2669
  "a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
2670
  "monitors these forums once a week and would be happy to assist you there. "
2671
  msgstr ""
2672
 
2673
- #: src/Tribe/Main.php:1365 src/Tribe/Main.php:1373
2674
  msgid "premium support on our website"
2675
  msgstr ""
2676
 
2677
- #: src/Tribe/Main.php:1366
2678
  msgid ""
2679
  "<strong>Looking for more immediate support?</strong> We offer %s with the "
2680
  "purchase of any of our premium plugins. Pick up a license and you can post "
2681
  "there directly and expect a response within 24-48 hours during weekdays"
2682
  msgstr ""
2683
 
2684
- #: src/Tribe/Main.php:1370
2685
  msgid "open-source forum on WordPress.org"
2686
  msgstr ""
2687
 
2688
- #: src/Tribe/Main.php:1371
2689
  msgid ""
2690
  "If you have tried the above steps and are still having trouble, you can post "
2691
  "a new thread to our %s. Our support staff monitors these forums once a week "
2692
  "and would be happy to assist you there."
2693
  msgstr ""
2694
 
2695
- #: src/Tribe/Main.php:1374
2696
  msgid "Events Calendar PRO"
2697
  msgstr ""
2698
 
2699
- #: src/Tribe/Main.php:1375
2700
  msgid ""
2701
  "<strong>Looking for more immediate support?</strong> We offer %1$s with the "
2702
  "purchase of any of our premium plugins (like %2$s). Pick up a license and "
@@ -2704,427 +2842,427 @@ msgid ""
2704
  "weekdays."
2705
  msgstr ""
2706
 
2707
- #: src/Tribe/Main.php:1379
2708
  msgid "post a thread"
2709
  msgstr ""
2710
 
2711
- #: src/Tribe/Main.php:1380
2712
  msgid ""
2713
  "If you have a valid license for one of our paid plugins, you can %s in our "
2714
  "premium support forums. Our support team monitors the forums and will "
2715
  "respond to your thread within 24-48 hours (during the week)."
2716
  msgstr ""
2717
 
2718
- #: src/Tribe/Main.php:1423
2719
  #: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
2720
  #: src/functions/template-tags/general.php:95
2721
  msgid "Events"
2722
  msgstr ""
2723
 
2724
- #: src/Tribe/Main.php:1431 src/admin-views/aggregator/tabs/import-form.php:208
2725
  #: src/admin-views/aggregator/tabs/import-form.php:220
2726
  #: src/functions/template-tags/general.php:63
2727
  msgid "Event"
2728
  msgstr ""
2729
 
2730
- #: src/Tribe/Main.php:1648
2731
  msgid ""
2732
  "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
2733
  "your WordPress install."
2734
  msgstr ""
2735
 
2736
- #: src/Tribe/Main.php:1651
2737
  msgid ""
2738
  "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
2739
  "about moving you to a newer version of PHP."
2740
  msgstr ""
2741
 
2742
- #: src/Tribe/Main.php:1683
2743
  msgid ""
2744
  "To continue using The Events Calendar, please install the latest version of"
2745
  msgstr ""
2746
 
2747
- #: src/Tribe/Main.php:1685 src/Tribe/Main.php:1686
2748
  msgid "Event Tickets"
2749
  msgstr ""
2750
 
2751
- #: src/Tribe/Main.php:1721
2752
  msgid ""
2753
  "It appears as if the tribe-common libraries cannot be found! The directory "
2754
  "should be in the \"common/\" directory in the events calendar plugin."
2755
  msgstr ""
2756
 
2757
- #: src/Tribe/Main.php:1957 src/Tribe/Main.php:2416
2758
  msgid "category"
2759
  msgstr ""
2760
 
2761
- #: src/Tribe/Main.php:1971 src/Tribe/Main.php:2415
2762
  msgid "tag"
2763
  msgstr ""
2764
 
2765
- #: src/Tribe/Main.php:2004 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:110
2766
  msgid "Add New"
2767
  msgstr ""
2768
 
2769
- #: src/Tribe/Main.php:2005 src/Tribe/Main.php:2142 src/Tribe/Main.php:2143
2770
  #: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
2771
  msgid "Add New %s"
2772
  msgstr ""
2773
 
2774
- #: src/Tribe/Main.php:2007 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:113
2775
  msgid "New %s"
2776
  msgstr ""
2777
 
2778
- #: src/Tribe/Main.php:2008 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:114
2779
  #: src/views/month/single-day.php:26
2780
  msgid "View %s"
2781
  msgstr ""
2782
 
2783
- #: src/Tribe/Main.php:2009 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:115
2784
  msgid "Search %s"
2785
  msgstr ""
2786
 
2787
- #: src/Tribe/Main.php:2010 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:116
2788
  msgid "No %s found"
2789
  msgstr ""
2790
 
2791
- #: src/Tribe/Main.php:2011 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:117
2792
  msgid "No %s found in Trash"
2793
  msgstr ""
2794
 
2795
- #: src/Tribe/Main.php:2012 src/Tribe/Main.php:2099 src/Tribe/Main.php:2119
2796
  #: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
2797
  msgid "%s published."
2798
  msgstr ""
2799
 
2800
- #: src/Tribe/Main.php:2013 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:119
2801
  msgid "%s published privately."
2802
  msgstr ""
2803
 
2804
- #: src/Tribe/Main.php:2014 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:120
2805
  msgid "%s reverted to draft."
2806
  msgstr ""
2807
 
2808
- #: src/Tribe/Main.php:2015 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:121
2809
  msgid "%s scheduled."
2810
  msgstr ""
2811
 
2812
- #: src/Tribe/Main.php:2016 src/Tribe/Main.php:2058 src/Tribe/Main.php:2093
2813
- #: src/Tribe/Main.php:2096 src/Tribe/Main.php:2113 src/Tribe/Main.php:2116
2814
  #: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
2815
  msgid "%s updated."
2816
  msgstr ""
2817
 
2818
- #: src/Tribe/Main.php:2026
2819
  msgid "%s Category"
2820
  msgstr ""
2821
 
2822
- #: src/Tribe/Main.php:2027
2823
  msgid "Search %s Categories"
2824
  msgstr ""
2825
 
2826
- #: src/Tribe/Main.php:2028
2827
  msgid "All %s Categories"
2828
  msgstr ""
2829
 
2830
- #: src/Tribe/Main.php:2029
2831
  msgid "Parent %s Category"
2832
  msgstr ""
2833
 
2834
- #: src/Tribe/Main.php:2030
2835
  msgid "Parent %s Category:"
2836
  msgstr ""
2837
 
2838
- #: src/Tribe/Main.php:2031
2839
  msgid "Edit %s Category"
2840
  msgstr ""
2841
 
2842
- #: src/Tribe/Main.php:2032
2843
  msgid "Update %s Category"
2844
  msgstr ""
2845
 
2846
- #: src/Tribe/Main.php:2033
2847
  msgid "Add New %s Category"
2848
  msgstr ""
2849
 
2850
- #: src/Tribe/Main.php:2034
2851
  msgid "New %s Category Name"
2852
  msgstr ""
2853
 
2854
- #: src/Tribe/Main.php:2051
2855
  msgid "%1$s updated. %2$sView %1$s%3$s"
2856
  msgstr ""
2857
 
2858
- #: src/Tribe/Main.php:2056 src/Tribe/Main.php:2094 src/Tribe/Main.php:2114
2859
  msgid "Custom field updated."
2860
  msgstr ""
2861
 
2862
- #: src/Tribe/Main.php:2057 src/Tribe/Main.php:2095 src/Tribe/Main.php:2115
2863
  msgid "Custom field deleted."
2864
  msgstr ""
2865
 
2866
  #. translators: %s: date and time of the revision
2867
- #: src/Tribe/Main.php:2060 src/Tribe/Main.php:2098
2868
  msgid "%1$s restored to revision from %2$s"
2869
  msgstr ""
2870
 
2871
- #: src/Tribe/Main.php:2062
2872
  msgid "%1$s published. %2$sView %3$s"
2873
  msgstr ""
2874
 
2875
- #: src/Tribe/Main.php:2067 src/Tribe/Main.php:2100 src/Tribe/Main.php:2120
2876
  msgid "%s saved."
2877
  msgstr ""
2878
 
2879
- #: src/Tribe/Main.php:2069
2880
  msgid "%1$s submitted. %2$sPreview %3$s"
2881
  msgstr ""
2882
 
2883
- #: src/Tribe/Main.php:2075
2884
  msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
2885
  msgstr ""
2886
 
2887
  #. translators: Publish box date format, see http://php.net/date
2888
- #: src/Tribe/Main.php:2078 src/Tribe/Main.php:2106 src/Tribe/Main.php:2126
2889
  msgid "M j, Y @ G:i"
2890
  msgstr ""
2891
 
2892
- #: src/Tribe/Main.php:2084
2893
  msgid "%1$s draft updated. %2$sPreview %3$s"
2894
  msgstr ""
2895
 
2896
- #: src/Tribe/Main.php:2101 src/Tribe/Main.php:2121
2897
  msgid "%s submitted."
2898
  msgstr ""
2899
 
2900
- #: src/Tribe/Main.php:2103 src/Tribe/Main.php:2123
2901
  msgid "%1$s scheduled for: %2$s."
2902
  msgstr ""
2903
 
2904
- #: src/Tribe/Main.php:2108 src/Tribe/Main.php:2128
2905
  msgid "%s draft updated."
2906
  msgstr ""
2907
 
2908
  #. translators: %s: date and time of the revision
2909
- #: src/Tribe/Main.php:2118
2910
  msgid "%s restored to revision from %s"
2911
  msgstr ""
2912
 
2913
- #: src/Tribe/Main.php:2172
2914
  msgid ""
2915
  "Without a defined location your event will not display a %sGoogle Rich "
2916
  "Snippet%s on the search results."
2917
  msgstr ""
2918
 
2919
- #: src/Tribe/Main.php:2417
2920
  msgid "page"
2921
  msgstr ""
2922
 
2923
- #: src/Tribe/Main.php:2418 src/functions/template-tags/general.php:79
2924
  msgid "event"
2925
  msgstr ""
2926
 
2927
- #: src/Tribe/Main.php:2419 src/functions/template-tags/general.php:111
2928
  msgid "events"
2929
  msgstr ""
2930
 
2931
- #: src/Tribe/Main.php:2420
2932
  msgid "all"
2933
  msgstr ""
2934
 
2935
- #: src/Tribe/Main.php:2811
2936
  msgid " (View Full %1$s Description Here: %2$s)"
2937
  msgstr ""
2938
 
2939
- #: src/Tribe/Main.php:3620 src/Tribe/Main.php:3655
2940
  #: src/functions/template-tags/day.php:157
2941
  #: src/functions/template-tags/day.php:178
2942
  msgid "Date out of range."
2943
  msgstr ""
2944
 
2945
- #: src/Tribe/Main.php:3697
2946
  msgid "%s Options"
2947
  msgstr ""
2948
 
2949
- #: src/Tribe/Main.php:3706 src/Tribe/Main.php:3719
2950
  msgid "%s Information"
2951
  msgstr ""
2952
 
2953
- #: src/Tribe/Main.php:4021
2954
  msgid "Support"
2955
  msgstr ""
2956
 
2957
- #: src/Tribe/Main.php:4024
2958
  msgid "View All Add-Ons"
2959
  msgstr ""
2960
 
2961
- #: src/Tribe/Main.php:4044
2962
  msgid "News from Modern Tribe"
2963
  msgstr ""
2964
 
2965
- #: src/Tribe/Main.php:4089
2966
  msgid "Additional Functionality"
2967
  msgstr ""
2968
 
2969
- #: src/Tribe/Main.php:4094
2970
  msgid ""
2971
  "Looking for additional functionality including recurring events, ticket "
2972
  "sales, publicly submitted events, new views and more?"
2973
  msgstr ""
2974
 
2975
- #: src/Tribe/Main.php:4095
2976
  msgid "Check out the %savailable add-ons%s."
2977
  msgstr ""
2978
 
2979
- #: src/Tribe/Main.php:4196
2980
  msgid "Calendar"
2981
  msgstr ""
2982
 
2983
- #: src/Tribe/Main.php:4212
2984
  msgid "List"
2985
  msgstr ""
2986
 
2987
- #: src/Tribe/Main.php:4230
2988
  msgid "Month"
2989
  msgstr ""
2990
 
2991
- #: src/Tribe/Main.php:4247 src/admin-views/aggregator/fields/schedule.php:44
2992
  #: src/admin-views/aggregator/fields/schedule.php:62
2993
  msgid "Day"
2994
  msgstr ""
2995
 
2996
- #: src/Tribe/Main.php:4270
2997
  msgid "Search for %s by Keyword."
2998
  msgstr ""
2999
 
3000
- #: src/Tribe/Main.php:4273
3001
  #: src/views/v2/components/events-bar/search-button.php:25
3002
  msgid "Search"
3003
  msgstr ""
3004
 
3005
- #: src/Tribe/Main.php:4274
3006
  msgid "Keyword"
3007
  msgstr ""
3008
 
3009
- #: src/Tribe/Main.php:4291
3010
  msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
3011
  msgstr ""
3012
 
3013
- #: src/Tribe/Main.php:4292
3014
  msgid "1 digit month slash 1 digit day slash 4 digit year"
3015
  msgstr ""
3016
 
3017
- #: src/Tribe/Main.php:4293
3018
  msgid "2 digit month slash 2 digit day slash 4 digit year"
3019
  msgstr ""
3020
 
3021
- #: src/Tribe/Main.php:4294
3022
  msgid "1 digit day slash 1 digit month slash 4 digit year"
3023
  msgstr ""
3024
 
3025
- #: src/Tribe/Main.php:4295
3026
  msgid "2 digit day slash 2 digit month slash 4 digit year"
3027
  msgstr ""
3028
 
3029
- #: src/Tribe/Main.php:4296
3030
  msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
3031
  msgstr ""
3032
 
3033
- #: src/Tribe/Main.php:4297
3034
  msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
3035
  msgstr ""
3036
 
3037
- #: src/Tribe/Main.php:4298
3038
  msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
3039
  msgstr ""
3040
 
3041
- #: src/Tribe/Main.php:4299
3042
  msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
3043
  msgstr ""
3044
 
3045
- #: src/Tribe/Main.php:4300
3046
  msgid "4 digit year dot 2 digit month dot 2 digit day"
3047
  msgstr ""
3048
 
3049
- #: src/Tribe/Main.php:4301
3050
  msgid "2 digit month dot 2 digit day dot 4 digit year"
3051
  msgstr ""
3052
 
3053
- #: src/Tribe/Main.php:4302
3054
  msgid "2 digit day dot 2 digit month dot 4 digit year"
3055
  msgstr ""
3056
 
3057
- #: src/Tribe/Main.php:4306
3058
  msgid "4 digit year hyphen 2 digit month"
3059
  msgstr ""
3060
 
3061
- #: src/Tribe/Main.php:4307 src/Tribe/Main.php:4309
3062
  msgid "1 digit month slash 4 digit year"
3063
  msgstr ""
3064
 
3065
- #: src/Tribe/Main.php:4308 src/Tribe/Main.php:4310
3066
  msgid "2 digit month slash 4 digit year"
3067
  msgstr ""
3068
 
3069
- #: src/Tribe/Main.php:4311 src/Tribe/Main.php:4312 src/Tribe/Main.php:4313
3070
  msgid "1 digit month hyphen 4 digit year"
3071
  msgstr ""
3072
 
3073
- #: src/Tribe/Main.php:4314
3074
  msgid "2 digit month hyphen 4 digit year"
3075
  msgstr ""
3076
 
3077
- #: src/Tribe/Main.php:4315
3078
  msgid "4 digit year dot 2 digit month"
3079
  msgstr ""
3080
 
3081
- #: src/Tribe/Main.php:4316 src/Tribe/Main.php:4317
3082
  msgid "2 digit month dot 4 digit year"
3083
  msgstr ""
3084
 
3085
- #: src/Tribe/Main.php:4346 src/Tribe/Main.php:4383
3086
  #: src/admin-views/aggregator/origins/refine.php:7
3087
  msgid "Date"
3088
  msgstr ""
3089
 
3090
- #: src/Tribe/Main.php:4348
3091
  msgid "Search for %s by Date. Please use the format %s."
3092
  msgstr ""
3093
 
3094
- #: src/Tribe/Main.php:4361
3095
  msgid "%s In"
3096
  msgstr ""
3097
 
3098
- #: src/Tribe/Main.php:4363
3099
  msgid "Search for %s by month. Please use the format %s."
3100
  msgstr ""
3101
 
3102
- #: src/Tribe/Main.php:4366
3103
  msgid "%s From"
3104
  msgstr ""
3105
 
3106
- #: src/Tribe/Main.php:4369
3107
  msgid "Day Of"
3108
  msgstr ""
3109
 
3110
- #: src/Tribe/Main.php:4449
3111
  msgid "Once Every 30 Mins"
3112
  msgstr ""
3113
 
3114
- #: src/Tribe/Main.php:5176
3115
  msgid ""
3116
  "Your version of The Events Calendar is not up-to-date with one of your The "
3117
  "Events Calendar add-ons. Please %supdate now.%s"
3118
  msgstr ""
3119
 
3120
- #: src/Tribe/Main.php:5188
3121
  msgid ""
3122
  "The following plugins are out of date: %1$s. All add-ons contain "
3123
  "dependencies on The Events Calendar and will not function properly unless "
3124
  "paired with the right version. %2$sLearn More%3$s."
3125
  msgstr ""
3126
 
3127
- #: src/Tribe/Main.php:5227 src/Tribe/Main.php:5284
3128
  msgid "Use Saved %s:"
3129
  msgstr ""
3130
 
@@ -4503,13 +4641,13 @@ msgctxt "Abbreviation for the kilometers unit of measure"
4503
  msgid "km"
4504
  msgstr ""
4505
 
4506
- #: src/Tribe/Venue.php:173 src/functions/template-tags/venue.php:130
4507
  msgid "Venue"
4508
  msgstr ""
4509
 
4510
  #: src/Tribe/Venue.php:182
4511
  #: src/deprecated/Tribe__Events__Importer__Admin_Page.php:205
4512
- #: src/functions/template-tags/venue.php:149
4513
  msgid "Venues"
4514
  msgstr ""
4515
 
@@ -4526,7 +4664,7 @@ msgctxt "Metabox title"
4526
  msgid "Location"
4527
  msgstr ""
4528
 
4529
- #: src/Tribe/Venue.php:325 src/functions/template-tags/venue.php:452
4530
  msgid "United States"
4531
  msgstr ""
4532
 
@@ -4534,10 +4672,18 @@ msgstr ""
4534
  msgid "Unnamed Venue"
4535
  msgstr ""
4536
 
4537
- #: src/Tribe/Views/V2/Hooks.php:349
4538
  msgid "We recommend a 16:9 aspect ratio for featured images."
4539
  msgstr ""
4540
 
 
 
 
 
 
 
 
 
4541
  #. translators: the placeholder is the keyword(s), as the user entered it in
4542
  #. the bar.
4543
  #: src/Tribe/Views/V2/Messages.php:95
@@ -4558,39 +4704,67 @@ msgstr ""
4558
  msgid "No events scheduled for %s. Please try another day."
4559
  msgstr ""
4560
 
4561
- #: src/Tribe/Views/V2/Template/Title.php:110
4562
  #: src/functions/template-tags/loop.php:177
4563
  msgctxt "featured events title"
4564
  msgid "Featured %s"
4565
  msgstr ""
4566
 
4567
- #: src/Tribe/Views/V2/Template/Title.php:120
4568
  #: src/functions/template-tags/loop.php:187
4569
  msgid "Upcoming %s"
4570
  msgstr ""
4571
 
4572
- #: src/Tribe/Views/V2/Template/Title.php:130
4573
  #: src/functions/template-tags/loop.php:204
4574
  msgid "Past %s"
4575
  msgstr ""
4576
 
4577
- #: src/Tribe/Views/V2/Template/Title.php:213
4578
  #: src/functions/template-tags/loop.php:202
4579
  msgid "%1$s for %2$s - %3$s"
4580
  msgstr ""
4581
 
4582
- #: src/Tribe/Views/V2/Template/Title.php:314
4583
  #: src/functions/template-tags/loop.php:209
4584
  msgctxt "month view"
4585
  msgid "%1$s for %2$s"
4586
  msgstr ""
4587
 
4588
- #: src/Tribe/Views/V2/Template/Title.php:341
4589
  #: src/functions/template-tags/loop.php:218
4590
  msgctxt "day_view"
4591
  msgid "%1$s for %2$s"
4592
  msgstr ""
4593
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4594
  #: src/Tribe/Views/V2/Views/List_Behavior.php:49
4595
  msgctxt "The datepicker label when the range start is now."
4596
  msgid "Now"
@@ -4620,16 +4794,6 @@ msgstr ""
4620
  msgid "Download .ics file"
4621
  msgstr ""
4622
 
4623
- #: src/Tribe/iCal.php:162
4624
- msgid "Export Events"
4625
- msgstr ""
4626
-
4627
- #: src/Tribe/iCal.php:163
4628
- msgid ""
4629
- "Use this to share calendar data with Google Calendar, Apple iCal and other "
4630
- "compatible apps"
4631
- msgstr ""
4632
-
4633
  #: src/Tribe/iCal.php:410
4634
  msgctxt "iCal feed description"
4635
  msgid "Events for %s"
@@ -5182,41 +5346,41 @@ msgctxt "Radius with abbreviation"
5182
  msgid "Radius (%s)"
5183
  msgstr ""
5184
 
5185
- #: src/admin-views/aggregator/origins/refine.php:15
5186
  msgid ""
5187
  "Use the filters to narrow down which events are fetched from your ICS file."
5188
  msgstr ""
5189
 
5190
- #: src/admin-views/aggregator/origins/refine.php:19
5191
  msgid ""
5192
  "Use the filters to narrow down which events are fetched from this Google "
5193
  "Calendar."
5194
  msgstr ""
5195
 
5196
- #: src/admin-views/aggregator/origins/refine.php:23
5197
  msgid "Use the filters to narrow down which events are fetched from this site."
5198
  msgstr ""
5199
 
5200
- #: src/admin-views/aggregator/origins/refine.php:28
5201
  msgid ""
5202
  "Use the filters to narrow down which events are fetched from Eventbrite."
5203
  msgstr ""
5204
 
5205
- #: src/admin-views/aggregator/origins/refine.php:38
5206
  msgid ""
5207
  "Use the filters to narrow down which events are fetched from this iCalendar "
5208
  "feed."
5209
  msgstr ""
5210
 
5211
- #: src/admin-views/aggregator/origins/refine.php:64
5212
  msgid "Refine:"
5213
  msgstr ""
5214
 
5215
- #: src/admin-views/aggregator/origins/refine.php:94
5216
  msgid "Start date for Eventbrite Tickets is Required"
5217
  msgstr ""
5218
 
5219
- #: src/admin-views/aggregator/origins/refine.php:102
5220
  msgid "Events on or after"
5221
  msgstr ""
5222
 
@@ -7084,7 +7248,7 @@ msgid ""
7084
  "plural, and this singular.%3$sYour single Event URL is like: %4$s"
7085
  msgstr ""
7086
 
7087
- #: src/functions/template-tags/venue.php:852
7088
  #: src/views/v2/day/event/venue.php:23 src/views/v2/list/event/venue.php:23
7089
  msgctxt "Address separator"
7090
  msgid ", "
@@ -7160,6 +7324,7 @@ msgstr ""
7160
 
7161
  #: src/views/modules/bar.php:74
7162
  #: src/views/v2/components/events-bar/search/submit.php:21
 
7163
  msgid "Find %s"
7164
  msgstr ""
7165
 
@@ -7220,19 +7385,19 @@ msgstr ""
7220
  msgid "Views Navigation"
7221
  msgstr ""
7222
 
7223
- #: src/views/v2/components/read-more.php:24
7224
  msgid "Continue Reading"
7225
  msgstr ""
7226
 
7227
- #: src/views/v2/components/top-bar/nav/next-disabled.php:21
7228
- #: src/views/v2/components/top-bar/nav/next-disabled.php:22
7229
  #: src/views/v2/components/top-bar/nav/next.php:22
7230
  #: src/views/v2/components/top-bar/nav/next.php:23
7231
  msgid "Next"
7232
  msgstr ""
7233
 
7234
- #: src/views/v2/components/top-bar/nav/prev-disabled.php:21
7235
- #: src/views/v2/components/top-bar/nav/prev-disabled.php:22
7236
  msgid "Prev"
7237
  msgstr ""
7238
 
@@ -7241,28 +7406,13 @@ msgstr ""
7241
  msgid "Previous"
7242
  msgstr ""
7243
 
7244
- #: src/views/v2/day/event/date.php:27 src/views/v2/day/event/date.php:28
7245
- #: src/views/v2/day/event/date.php:32 src/views/v2/list/event/date.php:27
7246
- #: src/views/v2/list/event/date.php:28 src/views/v2/list/event/date.php:32
7247
- #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:25
7248
- #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:26
7249
- #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:99
7250
- #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:100
7251
- #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:114
7252
- #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:115
7253
- #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:27
7254
- #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:28
7255
- #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:32
7256
- msgid "Featured"
7257
- msgstr ""
7258
-
7259
- #: src/views/v2/day/top-bar/datepicker.php:46
7260
- #: src/views/v2/list/top-bar/datepicker.php:67
7261
- #: src/views/v2/month/top-bar/datepicker.php:43
7262
  msgid "Select date."
7263
  msgstr ""
7264
 
7265
- #: src/views/v2/day.php:33 src/views/v2/list.php:34 src/views/v2/month.php:33
7266
  msgid "Loading..."
7267
  msgstr ""
7268
 
2
  # This file is distributed under the same license as the The Events Calendar package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: The Events Calendar 4.9.13\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
+ "POT-Creation-Date: 2019-12-10 00:35:20+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "PO-Revision-Date: 2019-12-10 00:35\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
47
  msgid "%s"
48
  msgstr ""
49
 
50
+ #: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:4152
51
  #: src/admin-views/tribe-options-upgrade.php:20
52
  msgid "View Calendar"
53
  msgstr ""
57
  msgstr ""
58
 
59
  #: src/Tribe/Admin/Bar/Default_Configurator.php:62
60
+ #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:2010
61
+ #: src/Tribe/Main.php:5248 src/Tribe/Main.php:5295 src/Tribe/Organizer.php:93
62
  #: src/Tribe/Venue.php:112
63
  msgid "Edit %s"
64
  msgstr ""
69
  msgid "Import"
70
  msgstr ""
71
 
72
+ #: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4200
73
  msgid "Settings"
74
  msgstr ""
75
 
154
  "refresh and try again."
155
  msgstr ""
156
 
157
+ #: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:2029
158
  msgid "%s Categories"
159
  msgstr ""
160
 
176
  msgstr ""
177
 
178
  #: src/Tribe/Aggregator/API/Origins.php:36
179
+ #: src/Tribe/Aggregator/Admin_Bar.php:97 src/Tribe/Aggregator/Service.php:854
180
  msgid "CSV File"
181
  msgstr ""
182
 
272
  "The image associated with your event could not be attached to the event."
273
  msgstr ""
274
 
275
+ #: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:716
276
  msgid ""
277
  "The daily limit of %d import requests to the Event Aggregator service has "
278
  "been reached. Please try again later."
1037
  msgstr ""
1038
 
1039
  #: src/Tribe/Aggregator/Service.php:693
1040
+ msgid "read more about Facebook restrictions in our knowledgebase"
1041
+ msgstr ""
1042
+
1043
+ #: src/Tribe/Aggregator/Service.php:698
1044
+ msgid "https://m.tri.be/1afb"
1045
+ msgstr ""
1046
+
1047
+ #: src/Tribe/Aggregator/Service.php:703
1048
  msgid "Sorry, but something went wrong. Please try again."
1049
  msgstr ""
1050
 
1051
+ #: src/Tribe/Aggregator/Service.php:704
1052
  msgid "Events could not be imported. The import parameters were invalid."
1053
  msgstr ""
1054
 
1055
+ #: src/Tribe/Aggregator/Service.php:705
1056
  msgid ""
1057
  "Events cannot be imported because Eventbrite has returned an error. This "
1058
  "could mean that the event ID does not exist, the event or source is marked "
1062
  "in our knowledgebase</a>."
1063
  msgstr ""
1064
 
1065
+ #: src/Tribe/Aggregator/Service.php:706
1066
  msgid "No upcoming Eventbrite events found."
1067
  msgstr ""
1068
 
1069
+ #: src/Tribe/Aggregator/Service.php:707
1070
  msgid "The URL provided could not be reached."
1071
  msgstr ""
1072
 
1073
+ #: src/Tribe/Aggregator/Service.php:708
1074
  msgid "The URL provided failed to load."
1075
  msgstr ""
1076
 
1077
+ #: src/Tribe/Aggregator/Service.php:709
1078
  msgid "The image associated with your event could not be imported."
1079
  msgstr ""
1080
 
1081
+ #: src/Tribe/Aggregator/Service.php:710
1082
  msgid ""
1083
  "The image associated with your event is not accessible with your API key."
1084
  msgstr ""
1085
 
1086
+ #: src/Tribe/Aggregator/Service.php:711
1087
  msgid ""
1088
  "The import failed for an unknown reason. Please try again. If the problem "
1089
  "persists, please contact support."
1090
  msgstr ""
1091
 
1092
+ #: src/Tribe/Aggregator/Service.php:712
1093
  msgid ""
1094
  "Events could not be imported. The URL provided did not have events in the "
1095
  "proper format."
1096
  msgstr ""
1097
 
1098
+ #: src/Tribe/Aggregator/Service.php:713
1099
  msgid ""
1100
  "The file provided could not be opened. Please confirm that it is a properly "
1101
  "formatted .ics file."
1102
  msgstr ""
1103
 
1104
+ #: src/Tribe/Aggregator/Service.php:714
1105
  msgid "Your Meetup API key is invalid."
1106
  msgstr ""
1107
 
1108
+ #: src/Tribe/Aggregator/Service.php:715
1109
  msgid ""
1110
  "Event Aggregator cannot reach Meetup.com because you exceeded the request "
1111
  "limit for your Meetup API key."
1112
  msgstr ""
1113
 
1114
+ #: src/Tribe/Aggregator/Service.php:718
1115
  msgid "The import is in progress."
1116
  msgstr ""
1117
 
1118
+ #: src/Tribe/Aggregator/Service.php:720
1119
  msgid "The import will be starting soon."
1120
  msgstr ""
1121
 
1122
+ #: src/Tribe/Aggregator/Service.php:722
1123
  msgid "Success"
1124
  msgstr ""
1125
 
1126
+ #: src/Tribe/Aggregator/Service.php:723
1127
  msgid "Import created"
1128
  msgstr ""
1129
 
1130
+ #: src/Tribe/Aggregator/Service.php:724
1131
  msgid "Successfully fetched Eventbrite Token"
1132
  msgstr ""
1133
 
1134
+ #: src/Tribe/Aggregator/Service.php:725
1135
  msgid "Successfully loaded import origins"
1136
  msgstr ""
1137
 
1138
+ #: src/Tribe/Aggregator/Service.php:726
1139
  msgid "Import is complete"
1140
  msgstr ""
1141
 
1142
+ #: src/Tribe/Aggregator/Service.php:727
1143
  msgid "Import queued"
1144
  msgstr ""
1145
 
1146
+ #: src/Tribe/Aggregator/Service.php:728
1147
  msgid "Events could not be imported. The URL provided could not be reached."
1148
  msgstr ""
1149
 
1150
+ #: src/Tribe/Aggregator/Service.php:729
1151
  msgid ""
1152
  "The requested source does not have any upcoming and published events "
1153
  "matching the search criteria."
1154
  msgstr ""
1155
 
1156
+ #: src/Tribe/Aggregator/Service.php:731
1157
  msgctxt ""
1158
  "The placeholder is for the localized version of the iCal UID specification "
1159
  "link"
1165
  "help them more quickly resolve their feed's UID issue."
1166
  msgstr ""
1167
 
1168
+ #: src/Tribe/Aggregator/Service.php:740
1169
  msgctxt ""
1170
  "The placeholder is for the localized version of the iCal UID specification "
1171
  "link"
1177
  "help them more quickly resolve their feed's UID issue."
1178
  msgstr ""
1179
 
1180
+ #: src/Tribe/Aggregator/Service.php:746
1181
+ msgid "Successfully fetched Facebook Token"
1182
+ msgstr ""
1183
+
1184
+ #: src/Tribe/Aggregator/Service.php:747
1185
+ msgid "Successfully connected to Eventbrite"
1186
+ msgstr ""
1187
+
1188
+ #: src/Tribe/Aggregator/Service.php:748
1189
+ msgid "Successfully disconnected Eventbrite"
1190
+ msgstr ""
1191
+
1192
+ #: src/Tribe/Aggregator/Service.php:749
1193
+ msgid "Successfully marked event for import from Eventbrite"
1194
+ msgstr ""
1195
+
1196
+ #: src/Tribe/Aggregator/Service.php:750
1197
+ msgid "Successfully synced event to Eventbrite"
1198
+ msgstr ""
1199
+
1200
+ #: src/Tribe/Aggregator/Service.php:751
1201
+ msgid ""
1202
+ "The import being fetched is not queued up for importing. Please try the "
1203
+ "import again."
1204
+ msgstr ""
1205
+
1206
+ #: src/Tribe/Aggregator/Service.php:753
1207
+ msgctxt "Placeholder used for the facebook restriction link"
1208
+ msgid ""
1209
+ "Events cannot be imported because Facebook has returned an error. This could "
1210
+ "mean that the event ID does not exist, the event or source is marked as "
1211
+ "Private, or the event or source has been otherwise restricted by Facebook. "
1212
+ "You can %1$s."
1213
+ msgstr ""
1214
+
1215
+ #: src/Tribe/Aggregator/Service.php:760
1216
+ msgid "Events cannot be imported because we received an error from Facebook: "
1217
+ msgstr ""
1218
+
1219
+ #: src/Tribe/Aggregator/Service.php:761
1220
+ msgid ""
1221
+ "Events cannot be imported because we received an error from Eventbrite: "
1222
+ msgstr ""
1223
+
1224
+ #: src/Tribe/Aggregator/Service.php:762
1225
+ msgid ""
1226
+ "Event cannot be synced to Eventbrite because we received an error from "
1227
+ "Eventbrite."
1228
+ msgstr ""
1229
+
1230
+ #: src/Tribe/Aggregator/Service.php:763
1231
+ msgid "Eventbrite token is not valid."
1232
+ msgstr ""
1233
+
1234
+ #: src/Tribe/Aggregator/Service.php:764 src/Tribe/Aggregator/Service.php:767
1235
+ msgid "Eventbrite parsed object is empty."
1236
+ msgstr ""
1237
+
1238
+ #: src/Tribe/Aggregator/Service.php:765
1239
+ msgid "Eventbrite parsed object type is empty."
1240
+ msgstr ""
1241
+
1242
+ #: src/Tribe/Aggregator/Service.php:766
1243
+ msgid "Eventbrite parsed object ID is empty."
1244
+ msgstr ""
1245
+
1246
+ #: src/Tribe/Aggregator/Service.php:768
1247
+ msgid "Eventbrite event not found."
1248
+ msgstr ""
1249
+
1250
+ #: src/Tribe/Aggregator/Service.php:769
1251
+ msgid "Eventbrite organizer not found."
1252
+ msgstr ""
1253
+
1254
+ #: src/Tribe/Aggregator/Service.php:770
1255
+ msgid "Eventbrite venue not found."
1256
+ msgstr ""
1257
+
1258
+ #: src/Tribe/Aggregator/Service.php:771
1259
+ msgid "Eventbrite user not found."
1260
+ msgstr ""
1261
+
1262
+ #: src/Tribe/Aggregator/Service.php:772
1263
+ msgid "Eventbrite sync data invalid."
1264
+ msgstr ""
1265
+
1266
+ #: src/Tribe/Aggregator/Service.php:773
1267
+ msgid ""
1268
+ "You do not have an active connection to Eventbrite through your account and "
1269
+ "Event Aggregator."
1270
+ msgstr ""
1271
+
1272
+ #: src/Tribe/Aggregator/Service.php:774
1273
+ msgid "Webhook not registered properly."
1274
+ msgstr ""
1275
+
1276
+ #: src/Tribe/Aggregator/Service.php:775
1277
+ msgid "This webhook action is not currently supported."
1278
+ msgstr ""
1279
+
1280
+ #: src/Tribe/Aggregator/Service.php:776
1281
+ msgid "Event not owned, you cannot edit it."
1282
+ msgstr ""
1283
+
1284
+ #: src/Tribe/Aggregator/Service.php:778
1285
+ msgctxt "Placeholder used for the meetup API changes"
1286
+ msgid ""
1287
+ "Meetup is no longer supporting API keys, and will restrict access using your "
1288
+ "existing key starting from August 2019. As an alternative, you should use "
1289
+ "OAuth2 and update The Events Calendar to the latest version. Learn more at "
1290
+ "%1$s"
1291
+ msgstr ""
1292
+
1293
+ #: src/Tribe/Aggregator/Service.php:786
1294
+ msgctxt ""
1295
+ "Placeholder used for the meetup API changes link when the KEY is plain"
1296
+ msgid ""
1297
+ "Meetup is no longer supporting API keys, and has restricted access using "
1298
+ "your existing key starting from August 2019. As an alternative, you must use "
1299
+ "OAuth2 and update The Events Calendar to the latest version. Learn more at "
1300
+ "%1$s."
1301
+ msgstr ""
1302
+
1303
+ #: src/Tribe/Aggregator/Service.php:793
1304
+ msgid ""
1305
+ "You do not have an active connection to Meetup through your account and "
1306
+ "Event Aggregator."
1307
+ msgstr ""
1308
+
1309
+ #: src/Tribe/Aggregator/Service.php:810
1310
  msgid "Unknown service message"
1311
  msgstr ""
1312
 
2035
 
2036
  #: src/Tribe/Editor/Template.php:70 src/Tribe/Template/Embed.php:59
2037
  #: src/Tribe/Template/Single_Event.php:119
2038
+ #: src/Tribe/Views/V2/Template_Bootstrap.php:128
2039
+ #: src/Tribe/Views/V2/Template_Bootstrap.php:160
2040
  msgid "This %s has passed."
2041
  msgstr ""
2042
 
2639
  msgid "Upcoming Events"
2640
  msgstr ""
2641
 
2642
+ #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 4.9.13) #-#-#-#-#
2643
  #. Plugin Name of the plugin/theme
2644
+ #: src/Tribe/Main.php:910 src/Tribe/Main.php:1365 src/Tribe/Privacy.php:29
2645
  #: src/functions/template-tags/general.php:1358 the-events-calendar.php:56
2646
  msgid "The Events Calendar"
2647
  msgstr ""
2648
 
2649
+ #: src/Tribe/Main.php:917
2650
  msgid "month"
2651
  msgstr ""
2652
 
2653
+ #: src/Tribe/Main.php:918
2654
  msgid "list"
2655
  msgstr ""
2656
 
2657
+ #: src/Tribe/Main.php:919
2658
  msgid "upcoming"
2659
  msgstr ""
2660
 
2661
+ #: src/Tribe/Main.php:920
2662
  msgid "past"
2663
  msgstr ""
2664
 
2665
+ #: src/Tribe/Main.php:921
2666
  msgid "day"
2667
  msgstr ""
2668
 
2669
+ #: src/Tribe/Main.php:922
2670
  msgid "today"
2671
  msgstr ""
2672
 
2673
+ #: src/Tribe/Main.php:923
2674
  msgctxt "featured events slug"
2675
  msgid "featured"
2676
  msgstr ""
2677
 
2678
+ #: src/Tribe/Main.php:924
2679
  msgctxt "all events slug"
2680
  msgid "all"
2681
  msgstr ""
2682
 
2683
+ #: src/Tribe/Main.php:948
2684
  msgid "Initializing Tribe Events on %s"
2685
  msgstr ""
2686
 
2687
+ #: src/Tribe/Main.php:1006 src/Tribe/Main.php:1008
2688
  msgid "Welcome to The Events Calendar!"
2689
  msgstr ""
2690
 
2691
+ #: src/Tribe/Main.php:1154
2692
  msgid ""
2693
  "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
2694
  "show its calendar in place of the page."
2695
  msgstr ""
2696
 
2697
+ #: src/Tribe/Main.php:1157
2698
  msgid "Ask the site administrator to edit the %s slug"
2699
  msgstr ""
2700
 
2701
+ #: src/Tribe/Main.php:1159
2702
  msgid "Edit the %s slug"
2703
  msgstr ""
2704
 
2705
+ #: src/Tribe/Main.php:1163
2706
  msgid " ask the site administrator set a different Events URL slug."
2707
  msgstr ""
2708
 
2709
+ #: src/Tribe/Main.php:1168
2710
  msgid "edit Events settings."
2711
  msgstr ""
2712
 
2713
+ #: src/Tribe/Main.php:1171
2714
  msgid "%1$s or %2$s"
2715
  msgstr ""
2716
 
2717
+ #: src/Tribe/Main.php:1240
2718
  msgid "Upgrade your calendar views"
2719
  msgstr ""
2720
 
2721
+ #: src/Tribe/Main.php:1276
2722
  msgid "Upgrade"
2723
  msgstr ""
2724
 
2725
+ #: src/Tribe/Main.php:1325 src/admin-views/admin-welcome-message.php:19
2726
  msgid "New User Primer"
2727
  msgstr ""
2728
 
2729
+ #: src/Tribe/Main.php:1327
2730
  msgid ""
2731
  "We are committed to helping make your calendar spectacular and have a wealth "
2732
  "of resources available, including a handy %s to get your calendar up and "
2733
  "running."
2734
  msgstr ""
2735
 
2736
+ #: src/Tribe/Main.php:1338
2737
  msgid "Support for The Events Calendar"
2738
  msgstr ""
2739
 
2740
+ #: src/Tribe/Main.php:1341
2741
  msgid ""
2742
  "%s: A thorough walkthrough of The Events Calendar and the settings that are "
2743
  "available to you."
2744
  msgstr ""
2745
 
2746
+ #: src/Tribe/Main.php:1341
2747
  msgid "Settings overview"
2748
  msgstr ""
2749
 
2750
+ #: src/Tribe/Main.php:1343
2751
  msgid ""
2752
  "%s: A complete look at the features you can expect to see right out of the "
2753
  "box as well as how to use them."
2754
  msgstr ""
2755
 
2756
+ #: src/Tribe/Main.php:1343
2757
  msgid "Features overview"
2758
  msgstr ""
2759
 
2760
+ #: src/Tribe/Main.php:1345
2761
  msgid ""
2762
  "%s: Our most comprehensive outline for customizing the calendar to suit your "
2763
  "needs, including custom layouts and styles."
2764
  msgstr ""
2765
 
2766
+ #: src/Tribe/Main.php:1345
2767
  msgid "Themer’s Guide"
2768
  msgstr ""
2769
 
2770
+ #: src/Tribe/Main.php:1347
2771
  msgid ""
2772
  "%s: An overview of the default templates and styles that are included in the "
2773
  "plugin, as well as how to change them."
2774
  msgstr ""
2775
 
2776
+ #: src/Tribe/Main.php:1347
2777
  msgid "Using stylesheets and page templates"
2778
  msgstr ""
2779
 
2780
+ #: src/Tribe/Main.php:1349
2781
  msgid ""
2782
  "%s: Do you see an issue with your calendar? Go here first to find where it’s "
2783
  "coming from and how to fix it."
2784
  msgstr ""
2785
 
2786
+ #: src/Tribe/Main.php:1349
2787
  msgid "Troubleshooting common problems"
2788
  msgstr ""
2789
 
2790
+ #: src/Tribe/Main.php:1351
2791
  msgid ""
2792
  "%s: Code and guides for customizing your calendar in useful and interesting "
2793
  "ways."
2794
  msgstr ""
2795
 
2796
+ #: src/Tribe/Main.php:1351
2797
  msgid "Customizing the Events plugins"
2798
  msgstr ""
2799
 
2800
+ #: src/Tribe/Main.php:1366
2801
  msgid "Events Tickets"
2802
  msgstr ""
2803
 
2804
+ #: src/Tribe/Main.php:1367
2805
  msgid ""
2806
  "If you have tried the above steps and are still having trouble, you can post "
2807
  "a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
2808
  "monitors these forums once a week and would be happy to assist you there. "
2809
  msgstr ""
2810
 
2811
+ #: src/Tribe/Main.php:1369 src/Tribe/Main.php:1377
2812
  msgid "premium support on our website"
2813
  msgstr ""
2814
 
2815
+ #: src/Tribe/Main.php:1370
2816
  msgid ""
2817
  "<strong>Looking for more immediate support?</strong> We offer %s with the "
2818
  "purchase of any of our premium plugins. Pick up a license and you can post "
2819
  "there directly and expect a response within 24-48 hours during weekdays"
2820
  msgstr ""
2821
 
2822
+ #: src/Tribe/Main.php:1374
2823
  msgid "open-source forum on WordPress.org"
2824
  msgstr ""
2825
 
2826
+ #: src/Tribe/Main.php:1375
2827
  msgid ""
2828
  "If you have tried the above steps and are still having trouble, you can post "
2829
  "a new thread to our %s. Our support staff monitors these forums once a week "
2830
  "and would be happy to assist you there."
2831
  msgstr ""
2832
 
2833
+ #: src/Tribe/Main.php:1378
2834
  msgid "Events Calendar PRO"
2835
  msgstr ""
2836
 
2837
+ #: src/Tribe/Main.php:1379
2838
  msgid ""
2839
  "<strong>Looking for more immediate support?</strong> We offer %1$s with the "
2840
  "purchase of any of our premium plugins (like %2$s). Pick up a license and "
2842
  "weekdays."
2843
  msgstr ""
2844
 
2845
+ #: src/Tribe/Main.php:1383
2846
  msgid "post a thread"
2847
  msgstr ""
2848
 
2849
+ #: src/Tribe/Main.php:1384
2850
  msgid ""
2851
  "If you have a valid license for one of our paid plugins, you can %s in our "
2852
  "premium support forums. Our support team monitors the forums and will "
2853
  "respond to your thread within 24-48 hours (during the week)."
2854
  msgstr ""
2855
 
2856
+ #: src/Tribe/Main.php:1427
2857
  #: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
2858
  #: src/functions/template-tags/general.php:95
2859
  msgid "Events"
2860
  msgstr ""
2861
 
2862
+ #: src/Tribe/Main.php:1435 src/admin-views/aggregator/tabs/import-form.php:208
2863
  #: src/admin-views/aggregator/tabs/import-form.php:220
2864
  #: src/functions/template-tags/general.php:63
2865
  msgid "Event"
2866
  msgstr ""
2867
 
2868
+ #: src/Tribe/Main.php:1652
2869
  msgid ""
2870
  "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
2871
  "your WordPress install."
2872
  msgstr ""
2873
 
2874
+ #: src/Tribe/Main.php:1655
2875
  msgid ""
2876
  "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
2877
  "about moving you to a newer version of PHP."
2878
  msgstr ""
2879
 
2880
+ #: src/Tribe/Main.php:1687
2881
  msgid ""
2882
  "To continue using The Events Calendar, please install the latest version of"
2883
  msgstr ""
2884
 
2885
+ #: src/Tribe/Main.php:1689 src/Tribe/Main.php:1690
2886
  msgid "Event Tickets"
2887
  msgstr ""
2888
 
2889
+ #: src/Tribe/Main.php:1725
2890
  msgid ""
2891
  "It appears as if the tribe-common libraries cannot be found! The directory "
2892
  "should be in the \"common/\" directory in the events calendar plugin."
2893
  msgstr ""
2894
 
2895
+ #: src/Tribe/Main.php:1961 src/Tribe/Main.php:2420
2896
  msgid "category"
2897
  msgstr ""
2898
 
2899
+ #: src/Tribe/Main.php:1975 src/Tribe/Main.php:2419
2900
  msgid "tag"
2901
  msgstr ""
2902
 
2903
+ #: src/Tribe/Main.php:2008 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:110
2904
  msgid "Add New"
2905
  msgstr ""
2906
 
2907
+ #: src/Tribe/Main.php:2009 src/Tribe/Main.php:2146 src/Tribe/Main.php:2147
2908
  #: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
2909
  msgid "Add New %s"
2910
  msgstr ""
2911
 
2912
+ #: src/Tribe/Main.php:2011 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:113
2913
  msgid "New %s"
2914
  msgstr ""
2915
 
2916
+ #: src/Tribe/Main.php:2012 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:114
2917
  #: src/views/month/single-day.php:26
2918
  msgid "View %s"
2919
  msgstr ""
2920
 
2921
+ #: src/Tribe/Main.php:2013 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:115
2922
  msgid "Search %s"
2923
  msgstr ""
2924
 
2925
+ #: src/Tribe/Main.php:2014 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:116
2926
  msgid "No %s found"
2927
  msgstr ""
2928
 
2929
+ #: src/Tribe/Main.php:2015 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:117
2930
  msgid "No %s found in Trash"
2931
  msgstr ""
2932
 
2933
+ #: src/Tribe/Main.php:2016 src/Tribe/Main.php:2103 src/Tribe/Main.php:2123
2934
  #: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
2935
  msgid "%s published."
2936
  msgstr ""
2937
 
2938
+ #: src/Tribe/Main.php:2017 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:119
2939
  msgid "%s published privately."
2940
  msgstr ""
2941
 
2942
+ #: src/Tribe/Main.php:2018 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:120
2943
  msgid "%s reverted to draft."
2944
  msgstr ""
2945
 
2946
+ #: src/Tribe/Main.php:2019 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:121
2947
  msgid "%s scheduled."
2948
  msgstr ""
2949
 
2950
+ #: src/Tribe/Main.php:2020 src/Tribe/Main.php:2062 src/Tribe/Main.php:2097
2951
+ #: src/Tribe/Main.php:2100 src/Tribe/Main.php:2117 src/Tribe/Main.php:2120
2952
  #: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
2953
  msgid "%s updated."
2954
  msgstr ""
2955
 
2956
+ #: src/Tribe/Main.php:2030
2957
  msgid "%s Category"
2958
  msgstr ""
2959
 
2960
+ #: src/Tribe/Main.php:2031
2961
  msgid "Search %s Categories"
2962
  msgstr ""
2963
 
2964
+ #: src/Tribe/Main.php:2032
2965
  msgid "All %s Categories"
2966
  msgstr ""
2967
 
2968
+ #: src/Tribe/Main.php:2033
2969
  msgid "Parent %s Category"
2970
  msgstr ""
2971
 
2972
+ #: src/Tribe/Main.php:2034
2973
  msgid "Parent %s Category:"
2974
  msgstr ""
2975
 
2976
+ #: src/Tribe/Main.php:2035
2977
  msgid "Edit %s Category"
2978
  msgstr ""
2979
 
2980
+ #: src/Tribe/Main.php:2036
2981
  msgid "Update %s Category"
2982
  msgstr ""
2983
 
2984
+ #: src/Tribe/Main.php:2037
2985
  msgid "Add New %s Category"
2986
  msgstr ""
2987
 
2988
+ #: src/Tribe/Main.php:2038
2989
  msgid "New %s Category Name"
2990
  msgstr ""
2991
 
2992
+ #: src/Tribe/Main.php:2055
2993
  msgid "%1$s updated. %2$sView %1$s%3$s"
2994
  msgstr ""
2995
 
2996
+ #: src/Tribe/Main.php:2060 src/Tribe/Main.php:2098 src/Tribe/Main.php:2118
2997
  msgid "Custom field updated."
2998
  msgstr ""
2999
 
3000
+ #: src/Tribe/Main.php:2061 src/Tribe/Main.php:2099 src/Tribe/Main.php:2119
3001
  msgid "Custom field deleted."
3002
  msgstr ""
3003
 
3004
  #. translators: %s: date and time of the revision
3005
+ #: src/Tribe/Main.php:2064 src/Tribe/Main.php:2102
3006
  msgid "%1$s restored to revision from %2$s"
3007
  msgstr ""
3008
 
3009
+ #: src/Tribe/Main.php:2066
3010
  msgid "%1$s published. %2$sView %3$s"
3011
  msgstr ""
3012
 
3013
+ #: src/Tribe/Main.php:2071 src/Tribe/Main.php:2104 src/Tribe/Main.php:2124
3014
  msgid "%s saved."
3015
  msgstr ""
3016
 
3017
+ #: src/Tribe/Main.php:2073
3018
  msgid "%1$s submitted. %2$sPreview %3$s"
3019
  msgstr ""
3020
 
3021
+ #: src/Tribe/Main.php:2079
3022
  msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
3023
  msgstr ""
3024
 
3025
  #. translators: Publish box date format, see http://php.net/date
3026
+ #: src/Tribe/Main.php:2082 src/Tribe/Main.php:2110 src/Tribe/Main.php:2130
3027
  msgid "M j, Y @ G:i"
3028
  msgstr ""
3029
 
3030
+ #: src/Tribe/Main.php:2088
3031
  msgid "%1$s draft updated. %2$sPreview %3$s"
3032
  msgstr ""
3033
 
3034
+ #: src/Tribe/Main.php:2105 src/Tribe/Main.php:2125
3035
  msgid "%s submitted."
3036
  msgstr ""
3037
 
3038
+ #: src/Tribe/Main.php:2107 src/Tribe/Main.php:2127
3039
  msgid "%1$s scheduled for: %2$s."
3040
  msgstr ""
3041
 
3042
+ #: src/Tribe/Main.php:2112 src/Tribe/Main.php:2132
3043
  msgid "%s draft updated."
3044
  msgstr ""
3045
 
3046
  #. translators: %s: date and time of the revision
3047
+ #: src/Tribe/Main.php:2122
3048
  msgid "%s restored to revision from %s"
3049
  msgstr ""
3050
 
3051
+ #: src/Tribe/Main.php:2176
3052
  msgid ""
3053
  "Without a defined location your event will not display a %sGoogle Rich "
3054
  "Snippet%s on the search results."
3055
  msgstr ""
3056
 
3057
+ #: src/Tribe/Main.php:2421
3058
  msgid "page"
3059
  msgstr ""
3060
 
3061
+ #: src/Tribe/Main.php:2422 src/functions/template-tags/general.php:79
3062
  msgid "event"
3063
  msgstr ""
3064
 
3065
+ #: src/Tribe/Main.php:2423 src/functions/template-tags/general.php:111
3066
  msgid "events"
3067
  msgstr ""
3068
 
3069
+ #: src/Tribe/Main.php:2424
3070
  msgid "all"
3071
  msgstr ""
3072
 
3073
+ #: src/Tribe/Main.php:2815
3074
  msgid " (View Full %1$s Description Here: %2$s)"
3075
  msgstr ""
3076
 
3077
+ #: src/Tribe/Main.php:3625 src/Tribe/Main.php:3660
3078
  #: src/functions/template-tags/day.php:157
3079
  #: src/functions/template-tags/day.php:178
3080
  msgid "Date out of range."
3081
  msgstr ""
3082
 
3083
+ #: src/Tribe/Main.php:3702
3084
  msgid "%s Options"
3085
  msgstr ""
3086
 
3087
+ #: src/Tribe/Main.php:3711 src/Tribe/Main.php:3724
3088
  msgid "%s Information"
3089
  msgstr ""
3090
 
3091
+ #: src/Tribe/Main.php:4026
3092
  msgid "Support"
3093
  msgstr ""
3094
 
3095
+ #: src/Tribe/Main.php:4029
3096
  msgid "View All Add-Ons"
3097
  msgstr ""
3098
 
3099
+ #: src/Tribe/Main.php:4049
3100
  msgid "News from Modern Tribe"
3101
  msgstr ""
3102
 
3103
+ #: src/Tribe/Main.php:4094
3104
  msgid "Additional Functionality"
3105
  msgstr ""
3106
 
3107
+ #: src/Tribe/Main.php:4099
3108
  msgid ""
3109
  "Looking for additional functionality including recurring events, ticket "
3110
  "sales, publicly submitted events, new views and more?"
3111
  msgstr ""
3112
 
3113
+ #: src/Tribe/Main.php:4100
3114
  msgid "Check out the %savailable add-ons%s."
3115
  msgstr ""
3116
 
3117
+ #: src/Tribe/Main.php:4201
3118
  msgid "Calendar"
3119
  msgstr ""
3120
 
3121
+ #: src/Tribe/Main.php:4217
3122
  msgid "List"
3123
  msgstr ""
3124
 
3125
+ #: src/Tribe/Main.php:4235
3126
  msgid "Month"
3127
  msgstr ""
3128
 
3129
+ #: src/Tribe/Main.php:4252 src/admin-views/aggregator/fields/schedule.php:44
3130
  #: src/admin-views/aggregator/fields/schedule.php:62
3131
  msgid "Day"
3132
  msgstr ""
3133
 
3134
+ #: src/Tribe/Main.php:4275
3135
  msgid "Search for %s by Keyword."
3136
  msgstr ""
3137
 
3138
+ #: src/Tribe/Main.php:4278
3139
  #: src/views/v2/components/events-bar/search-button.php:25
3140
  msgid "Search"
3141
  msgstr ""
3142
 
3143
+ #: src/Tribe/Main.php:4279
3144
  msgid "Keyword"
3145
  msgstr ""
3146
 
3147
+ #: src/Tribe/Main.php:4296
3148
  msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
3149
  msgstr ""
3150
 
3151
+ #: src/Tribe/Main.php:4297
3152
  msgid "1 digit month slash 1 digit day slash 4 digit year"
3153
  msgstr ""
3154
 
3155
+ #: src/Tribe/Main.php:4298
3156
  msgid "2 digit month slash 2 digit day slash 4 digit year"
3157
  msgstr ""
3158
 
3159
+ #: src/Tribe/Main.php:4299
3160
  msgid "1 digit day slash 1 digit month slash 4 digit year"
3161
  msgstr ""
3162
 
3163
+ #: src/Tribe/Main.php:4300
3164
  msgid "2 digit day slash 2 digit month slash 4 digit year"
3165
  msgstr ""
3166
 
3167
+ #: src/Tribe/Main.php:4301
3168
  msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
3169
  msgstr ""
3170
 
3171
+ #: src/Tribe/Main.php:4302
3172
  msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
3173
  msgstr ""
3174
 
3175
+ #: src/Tribe/Main.php:4303
3176
  msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
3177
  msgstr ""
3178
 
3179
+ #: src/Tribe/Main.php:4304
3180
  msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
3181
  msgstr ""
3182
 
3183
+ #: src/Tribe/Main.php:4305
3184
  msgid "4 digit year dot 2 digit month dot 2 digit day"
3185
  msgstr ""
3186
 
3187
+ #: src/Tribe/Main.php:4306
3188
  msgid "2 digit month dot 2 digit day dot 4 digit year"
3189
  msgstr ""
3190
 
3191
+ #: src/Tribe/Main.php:4307
3192
  msgid "2 digit day dot 2 digit month dot 4 digit year"
3193
  msgstr ""
3194
 
3195
+ #: src/Tribe/Main.php:4311
3196
  msgid "4 digit year hyphen 2 digit month"
3197
  msgstr ""
3198
 
3199
+ #: src/Tribe/Main.php:4312 src/Tribe/Main.php:4314
3200
  msgid "1 digit month slash 4 digit year"
3201
  msgstr ""
3202
 
3203
+ #: src/Tribe/Main.php:4313 src/Tribe/Main.php:4315
3204
  msgid "2 digit month slash 4 digit year"
3205
  msgstr ""
3206
 
3207
+ #: src/Tribe/Main.php:4316 src/Tribe/Main.php:4317 src/Tribe/Main.php:4318
3208
  msgid "1 digit month hyphen 4 digit year"
3209
  msgstr ""
3210
 
3211
+ #: src/Tribe/Main.php:4319
3212
  msgid "2 digit month hyphen 4 digit year"
3213
  msgstr ""
3214
 
3215
+ #: src/Tribe/Main.php:4320
3216
  msgid "4 digit year dot 2 digit month"
3217
  msgstr ""
3218
 
3219
+ #: src/Tribe/Main.php:4321 src/Tribe/Main.php:4322
3220
  msgid "2 digit month dot 4 digit year"
3221
  msgstr ""
3222
 
3223
+ #: src/Tribe/Main.php:4351 src/Tribe/Main.php:4388
3224
  #: src/admin-views/aggregator/origins/refine.php:7
3225
  msgid "Date"
3226
  msgstr ""
3227
 
3228
+ #: src/Tribe/Main.php:4353
3229
  msgid "Search for %s by Date. Please use the format %s."
3230
  msgstr ""
3231
 
3232
+ #: src/Tribe/Main.php:4366
3233
  msgid "%s In"
3234
  msgstr ""
3235
 
3236
+ #: src/Tribe/Main.php:4368
3237
  msgid "Search for %s by month. Please use the format %s."
3238
  msgstr ""
3239
 
3240
+ #: src/Tribe/Main.php:4371
3241
  msgid "%s From"
3242
  msgstr ""
3243
 
3244
+ #: src/Tribe/Main.php:4374
3245
  msgid "Day Of"
3246
  msgstr ""
3247
 
3248
+ #: src/Tribe/Main.php:4454
3249
  msgid "Once Every 30 Mins"
3250
  msgstr ""
3251
 
3252
+ #: src/Tribe/Main.php:5181
3253
  msgid ""
3254
  "Your version of The Events Calendar is not up-to-date with one of your The "
3255
  "Events Calendar add-ons. Please %supdate now.%s"
3256
  msgstr ""
3257
 
3258
+ #: src/Tribe/Main.php:5193
3259
  msgid ""
3260
  "The following plugins are out of date: %1$s. All add-ons contain "
3261
  "dependencies on The Events Calendar and will not function properly unless "
3262
  "paired with the right version. %2$sLearn More%3$s."
3263
  msgstr ""
3264
 
3265
+ #: src/Tribe/Main.php:5232 src/Tribe/Main.php:5289
3266
  msgid "Use Saved %s:"
3267
  msgstr ""
3268
 
4641
  msgid "km"
4642
  msgstr ""
4643
 
4644
+ #: src/Tribe/Venue.php:173 src/functions/template-tags/venue.php:143
4645
  msgid "Venue"
4646
  msgstr ""
4647
 
4648
  #: src/Tribe/Venue.php:182
4649
  #: src/deprecated/Tribe__Events__Importer__Admin_Page.php:205
4650
+ #: src/functions/template-tags/venue.php:162
4651
  msgid "Venues"
4652
  msgstr ""
4653
 
4664
  msgid "Location"
4665
  msgstr ""
4666
 
4667
+ #: src/Tribe/Venue.php:325 src/functions/template-tags/venue.php:465
4668
  msgid "United States"
4669
  msgstr ""
4670
 
4672
  msgid "Unnamed Venue"
4673
  msgstr ""
4674
 
4675
+ #: src/Tribe/Views/V2/Hooks.php:367
4676
  msgid "We recommend a 16:9 aspect ratio for featured images."
4677
  msgstr ""
4678
 
4679
+ #: src/Tribe/Views/V2/Hooks.php:409
4680
+ msgid "Recommended for all sites using the updated calendar views."
4681
+ msgstr ""
4682
+
4683
+ #: src/Tribe/Views/V2/Hooks.php:424
4684
+ msgid "The Events Calendar - View V2"
4685
+ msgstr ""
4686
+
4687
  #. translators: the placeholder is the keyword(s), as the user entered it in
4688
  #. the bar.
4689
  #: src/Tribe/Views/V2/Messages.php:95
4704
  msgid "No events scheduled for %s. Please try another day."
4705
  msgstr ""
4706
 
4707
+ #: src/Tribe/Views/V2/Template/Title.php:106
4708
  #: src/functions/template-tags/loop.php:177
4709
  msgctxt "featured events title"
4710
  msgid "Featured %s"
4711
  msgstr ""
4712
 
4713
+ #: src/Tribe/Views/V2/Template/Title.php:116
4714
  #: src/functions/template-tags/loop.php:187
4715
  msgid "Upcoming %s"
4716
  msgstr ""
4717
 
4718
+ #: src/Tribe/Views/V2/Template/Title.php:126
4719
  #: src/functions/template-tags/loop.php:204
4720
  msgid "Past %s"
4721
  msgstr ""
4722
 
4723
+ #: src/Tribe/Views/V2/Template/Title.php:209
4724
  #: src/functions/template-tags/loop.php:202
4725
  msgid "%1$s for %2$s - %3$s"
4726
  msgstr ""
4727
 
4728
+ #: src/Tribe/Views/V2/Template/Title.php:310
4729
  #: src/functions/template-tags/loop.php:209
4730
  msgctxt "month view"
4731
  msgid "%1$s for %2$s"
4732
  msgstr ""
4733
 
4734
+ #: src/Tribe/Views/V2/Template/Title.php:337
4735
  #: src/functions/template-tags/loop.php:218
4736
  msgctxt "day_view"
4737
  msgid "%1$s for %2$s"
4738
  msgstr ""
4739
 
4740
+ #: src/Tribe/Views/V2/View.php:1626 src/views/v2/day/event/date.php:27
4741
+ #: src/views/v2/day/event/date.php:28 src/views/v2/day/event/date.php:32
4742
+ #: src/views/v2/list/event/date.php:27 src/views/v2/list/event/date.php:28
4743
+ #: src/views/v2/list/event/date.php:32
4744
+ #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:27
4745
+ #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:28
4746
+ #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date.php:26
4747
+ #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date.php:27
4748
+ #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:93
4749
+ #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:94
4750
+ #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:108
4751
+ #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:109
4752
+ #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:27
4753
+ #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:28
4754
+ #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:32
4755
+ msgid "Featured"
4756
+ msgstr ""
4757
+
4758
+ #: src/Tribe/Views/V2/View.php:1711 src/Tribe/iCal.php:162
4759
+ msgid "Export Events"
4760
+ msgstr ""
4761
+
4762
+ #: src/Tribe/Views/V2/View.php:1713 src/Tribe/iCal.php:163
4763
+ msgid ""
4764
+ "Use this to share calendar data with Google Calendar, Apple iCal and other "
4765
+ "compatible apps"
4766
+ msgstr ""
4767
+
4768
  #: src/Tribe/Views/V2/Views/List_Behavior.php:49
4769
  msgctxt "The datepicker label when the range start is now."
4770
  msgid "Now"
4794
  msgid "Download .ics file"
4795
  msgstr ""
4796
 
 
 
 
 
 
 
 
 
 
 
4797
  #: src/Tribe/iCal.php:410
4798
  msgctxt "iCal feed description"
4799
  msgid "Events for %s"
5346
  msgid "Radius (%s)"
5347
  msgstr ""
5348
 
5349
+ #: src/admin-views/aggregator/origins/refine.php:21
5350
  msgid ""
5351
  "Use the filters to narrow down which events are fetched from your ICS file."
5352
  msgstr ""
5353
 
5354
+ #: src/admin-views/aggregator/origins/refine.php:25
5355
  msgid ""
5356
  "Use the filters to narrow down which events are fetched from this Google "
5357
  "Calendar."
5358
  msgstr ""
5359
 
5360
+ #: src/admin-views/aggregator/origins/refine.php:29
5361
  msgid "Use the filters to narrow down which events are fetched from this site."
5362
  msgstr ""
5363
 
5364
+ #: src/admin-views/aggregator/origins/refine.php:33
5365
  msgid ""
5366
  "Use the filters to narrow down which events are fetched from Eventbrite."
5367
  msgstr ""
5368
 
5369
+ #: src/admin-views/aggregator/origins/refine.php:49
5370
  msgid ""
5371
  "Use the filters to narrow down which events are fetched from this iCalendar "
5372
  "feed."
5373
  msgstr ""
5374
 
5375
+ #: src/admin-views/aggregator/origins/refine.php:74
5376
  msgid "Refine:"
5377
  msgstr ""
5378
 
5379
+ #: src/admin-views/aggregator/origins/refine.php:104
5380
  msgid "Start date for Eventbrite Tickets is Required"
5381
  msgstr ""
5382
 
5383
+ #: src/admin-views/aggregator/origins/refine.php:112
5384
  msgid "Events on or after"
5385
  msgstr ""
5386
 
7248
  "plural, and this singular.%3$sYour single Event URL is like: %4$s"
7249
  msgstr ""
7250
 
7251
+ #: src/functions/template-tags/venue.php:865
7252
  #: src/views/v2/day/event/venue.php:23 src/views/v2/list/event/venue.php:23
7253
  msgctxt "Address separator"
7254
  msgid ", "
7324
 
7325
  #: src/views/modules/bar.php:74
7326
  #: src/views/v2/components/events-bar/search/submit.php:21
7327
+ #: src/views/v2/components/top-bar/datepicker/submit.php:27
7328
  msgid "Find %s"
7329
  msgstr ""
7330
 
7385
  msgid "Views Navigation"
7386
  msgstr ""
7387
 
7388
+ #: src/views/v2/components/read-more.php:22
7389
  msgid "Continue Reading"
7390
  msgstr ""
7391
 
7392
+ #: src/views/v2/components/top-bar/nav/next-disabled.php:19
7393
+ #: src/views/v2/components/top-bar/nav/next-disabled.php:20
7394
  #: src/views/v2/components/top-bar/nav/next.php:22
7395
  #: src/views/v2/components/top-bar/nav/next.php:23
7396
  msgid "Next"
7397
  msgstr ""
7398
 
7399
+ #: src/views/v2/components/top-bar/nav/prev-disabled.php:19
7400
+ #: src/views/v2/components/top-bar/nav/prev-disabled.php:20
7401
  msgid "Prev"
7402
  msgstr ""
7403
 
7406
  msgid "Previous"
7407
  msgstr ""
7408
 
7409
+ #: src/views/v2/day/top-bar/datepicker.php:58
7410
+ #: src/views/v2/list/top-bar/datepicker.php:79
7411
+ #: src/views/v2/month/top-bar/datepicker.php:55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7412
  msgid "Select date."
7413
  msgstr ""
7414
 
7415
+ #: src/views/v2/day.php:35 src/views/v2/list.php:35 src/views/v2/month.php:34
7416
  msgid "Loading..."
7417
  msgstr ""
7418
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Contributors: ModernTribe, borkweb, barry.hughes, bordoni, brianjessee, aguseo,
4
  Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
5
  Donate link: http://m.tri.be/29
6
  Requires at least: 4.7
7
- Stable tag: 4.9.12
8
  Tested up to: 5.3
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
@@ -215,6 +215,11 @@ Still not happy? Shoot us an email to support@theeventscalendar.com or tweet to
215
 
216
  == Changelog ==
217
 
 
 
 
 
 
218
  = [4.9.12] 2019-11-20 =
219
 
220
  * Fix - Blocks Editor date time saving correctly for WordPress 5.3 compatibility. [137421]
4
  Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
5
  Donate link: http://m.tri.be/29
6
  Requires at least: 4.7
7
+ Stable tag: 4.9.13
8
  Tested up to: 5.3
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
215
 
216
  == Changelog ==
217
 
218
+ = [4.9.13] 2019-12-10 =
219
+
220
+ * Tweak - Allow Event Aggregator date refinements for Eventbrite source.
221
+ * Language - 29 new strings added, 201 updated, 0 fuzzied, and 0 obsoleted
222
+
223
  = [4.9.12] 2019-11-20 =
224
 
225
  * Fix - Blocks Editor date time saving correctly for WordPress 5.3 compatibility. [137421]
src/Tribe/Aggregator/Service.php CHANGED
@@ -688,36 +688,46 @@ class Tribe__Events__Aggregator__Service {
688
  esc_html__( 'the UID part of the iCalendar Specification', 'the-events-calendar' )
689
  );
690
 
 
 
 
 
 
 
 
 
 
 
691
  $this->service_messages = [
692
  /* Error */
693
- 'error:create-import-failed' => __( 'Sorry, but something went wrong. Please try again.', 'the-events-calendar' ),
694
- 'error:create-import-invalid-params' => __( 'Events could not be imported. The import parameters were invalid.', 'the-events-calendar' ),
695
- 'error:eb-permissions' => __( 'Events cannot be imported because Eventbrite has returned an error. This could mean that the event ID does not exist, the event or source is marked as Private, or the event or source has been otherwise restricted by Eventbrite. You can <a href="https://theeventscalendar.com/knowledgebase/import-errors/" target="_blank">read more about Eventbrite restrictions in our knowledgebase</a>.', 'the-events-calendar' ),
696
- 'error:eb-no-results' => __( 'No upcoming Eventbrite events found.', 'the-events-calendar' ),
697
- 'error:fetch-404' => __( 'The URL provided could not be reached.', 'the-events-calendar' ),
698
- 'error:fetch-failed' => __( 'The URL provided failed to load.', 'the-events-calendar' ),
699
- 'error:get-image' => __( 'The image associated with your event could not be imported.', 'the-events-calendar' ),
700
- 'error:get-image-bad-association' => __( 'The image associated with your event is not accessible with your API key.', 'the-events-calendar' ),
701
- 'error:import-failed' => __( 'The import failed for an unknown reason. Please try again. If the problem persists, please contact support.', 'the-events-calendar' ),
702
- 'error:invalid-ical-url' => __( 'Events could not be imported. The URL provided did not have events in the proper format.', 'the-events-calendar' ),
703
- 'error:invalid-ics-file' => __( 'The file provided could not be opened. Please confirm that it is a properly formatted .ics file.', 'the-events-calendar' ),
704
- 'error:meetup-api-key' => __( 'Your Meetup API key is invalid.', 'the-events-calendar' ),
705
- 'error:meetup-api-quota' => __( 'Event Aggregator cannot reach Meetup.com because you exceeded the request limit for your Meetup API key.', 'the-events-calendar' ),
706
- 'error:usage-limit-exceeded' => __( 'The daily limit of %d import requests to the Event Aggregator service has been reached. Please try again later.', 'the-events-calendar' ),
707
  /* Fetching */
708
- 'fetching' => __( 'The import is in progress.', 'the-events-calendar' ),
709
  /* Queued */
710
- 'queued' => __( 'The import will be starting soon.', 'the-events-calendar' ),
711
  /* Success */
712
- 'success' => __( 'Success', 'the-events-calendar' ),
713
- 'success:create-import' => __( 'Import created', 'the-events-calendar' ),
714
- 'success:eventbrite-get-token' => __( 'Successfully fetched Eventbrite Token', 'the-events-calendar' ),
715
- 'success:get-origin' => __( 'Successfully loaded import origins', 'the-events-calendar' ),
716
- 'success:import-complete' => __( 'Import is complete', 'the-events-calendar' ),
717
- 'success:queued' => __( 'Import queued', 'the-events-calendar' ),
718
- 'error:invalid-other-url' => __( 'Events could not be imported. The URL provided could not be reached.', 'the-events-calendar' ),
719
- 'error:no-results' => __( 'The requested source does not have any upcoming and published events matching the search criteria.', 'the-events-calendar' ),
720
- 'error:ical-missing-uids-schedule' => sprintf(
721
  _x(
722
  'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. Creating a scheduled import would generate duplicate events on each import. Instead, please use a One-Time import or contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
723
  'The placeholder is for the localized version of the iCal UID specification link',
@@ -726,13 +736,61 @@ class Tribe__Events__Aggregator__Service {
726
  $ical_uid_specification_link
727
  ),
728
  /* Warning */
729
- 'warning:ical-missing-uids-manual' => sprintf(
730
  _x(
731
  'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. One-Time and ICS File imports are allowed but successive imports will create duplicated events on your site. Please contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
732
  'The placeholder is for the localized version of the iCal UID specification link',
733
- 'the-events-calendar' ),
734
  $ical_uid_specification_link
735
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
736
  ];
737
 
738
  /**
@@ -764,9 +822,9 @@ class Tribe__Events__Aggregator__Service {
764
  $keys = array_combine( $keys, $keys );
765
  $confirmation_args = array_intersect_key( $args, $keys );
766
  $confirmation_args = array_merge( $confirmation_args, [
767
- 'eventbrite_token' => '1',
768
- 'meetup_api_key' => '1',
769
- ]
770
  );
771
 
772
  // Set site for origin(s) that need it for new token handling.
688
  esc_html__( 'the UID part of the iCalendar Specification', 'the-events-calendar' )
689
  );
690
 
691
+ $facebook_restriction_link = sprintf(
692
+ '<a href="https://theeventscalendar.com/knowledgebase/import-errors/" target="_blank">%s</a>',
693
+ esc_html__( 'read more about Facebook restrictions in our knowledgebase', 'the-events-calendar')
694
+ );
695
+
696
+ $meetup_api_changes_link = sprintf(
697
+ '<a href="https://m.tri.be/1afb">%s</a>',
698
+ esc_html__( 'https://m.tri.be/1afb', 'the-events-calendar' )
699
+ );
700
+
701
  $this->service_messages = [
702
  /* Error */
703
+ 'error:create-import-failed' => __('Sorry, but something went wrong. Please try again.', 'the-events-calendar'),
704
+ 'error:create-import-invalid-params' => __('Events could not be imported. The import parameters were invalid.', 'the-events-calendar'),
705
+ 'error:eb-permissions' => __('Events cannot be imported because Eventbrite has returned an error. This could mean that the event ID does not exist, the event or source is marked as Private, or the event or source has been otherwise restricted by Eventbrite. You can <a href="https://theeventscalendar.com/knowledgebase/import-errors/" target="_blank">read more about Eventbrite restrictions in our knowledgebase</a>.', 'the-events-calendar'),
706
+ 'error:eb-no-results' => __('No upcoming Eventbrite events found.', 'the-events-calendar'),
707
+ 'error:fetch-404' => __('The URL provided could not be reached.', 'the-events-calendar'),
708
+ 'error:fetch-failed' => __('The URL provided failed to load.', 'the-events-calendar'),
709
+ 'error:get-image' => __('The image associated with your event could not be imported.', 'the-events-calendar'),
710
+ 'error:get-image-bad-association' => __('The image associated with your event is not accessible with your API key.', 'the-events-calendar'),
711
+ 'error:import-failed' => __('The import failed for an unknown reason. Please try again. If the problem persists, please contact support.', 'the-events-calendar'),
712
+ 'error:invalid-ical-url' => __('Events could not be imported. The URL provided did not have events in the proper format.', 'the-events-calendar'),
713
+ 'error:invalid-ics-file' => __('The file provided could not be opened. Please confirm that it is a properly formatted .ics file.', 'the-events-calendar'),
714
+ 'error:meetup-api-key' => __('Your Meetup API key is invalid.', 'the-events-calendar'),
715
+ 'error:meetup-api-quota' => __('Event Aggregator cannot reach Meetup.com because you exceeded the request limit for your Meetup API key.', 'the-events-calendar'),
716
+ 'error:usage-limit-exceeded' => __('The daily limit of %d import requests to the Event Aggregator service has been reached. Please try again later.', 'the-events-calendar'),
717
  /* Fetching */
718
+ 'fetching' => __('The import is in progress.', 'the-events-calendar'),
719
  /* Queued */
720
+ 'queued' => __('The import will be starting soon.', 'the-events-calendar'),
721
  /* Success */
722
+ 'success' => __('Success', 'the-events-calendar'),
723
+ 'success:create-import' => __('Import created', 'the-events-calendar'),
724
+ 'success:eventbrite-get-token' => __('Successfully fetched Eventbrite Token', 'the-events-calendar'),
725
+ 'success:get-origin' => __('Successfully loaded import origins', 'the-events-calendar'),
726
+ 'success:import-complete' => __('Import is complete', 'the-events-calendar'),
727
+ 'success:queued' => __('Import queued', 'the-events-calendar'),
728
+ 'error:invalid-other-url' => __('Events could not be imported. The URL provided could not be reached.', 'the-events-calendar'),
729
+ 'error:no-results' => __('The requested source does not have any upcoming and published events matching the search criteria.', 'the-events-calendar'),
730
+ 'error:ical-missing-uids-schedule' => sprintf(
731
  _x(
732
  'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. Creating a scheduled import would generate duplicate events on each import. Instead, please use a One-Time import or contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
733
  'The placeholder is for the localized version of the iCal UID specification link',
736
  $ical_uid_specification_link
737
  ),
738
  /* Warning */
739
+ 'warning:ical-missing-uids-manual' => sprintf(
740
  _x(
741
  'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. One-Time and ICS File imports are allowed but successive imports will create duplicated events on your site. Please contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
742
  'The placeholder is for the localized version of the iCal UID specification link',
743
+ 'the-events-calendar'),
744
  $ical_uid_specification_link
745
  ),
746
+ 'success:facebook-get-token' => __('Successfully fetched Facebook Token', 'the-events-calendar'),
747
+ 'success:eb-token-valid' => __('Successfully connected to Eventbrite', 'the-events-calendar'),
748
+ 'success:eb-token-disconnected' => __('Successfully disconnected Eventbrite', 'the-events-calendar'),
749
+ 'success:eb-webhook-success' => __('Successfully marked event for import from Eventbrite', 'the-events-calendar'),
750
+ 'success:eb-event-synced' => __('Successfully synced event to Eventbrite', 'the-events-calendar'),
751
+ 'error:import-id-not-queued' => __('The import being fetched is not queued up for importing. Please try the import again.', 'the-events-calendar'),
752
+ 'error:fb-permissions' => sprintf(
753
+ _x(
754
+ 'Events cannot be imported because Facebook has returned an error. This could mean that the event ID does not exist, the event or source is marked as Private, or the event or source has been otherwise restricted by Facebook. You can %1$s.',
755
+ 'Placeholder used for the facebook restriction link',
756
+ 'the-events-calendar'
757
+ ),
758
+ $facebook_restriction_link
759
+ ),
760
+ 'error:fb-error' => __('Events cannot be imported because we received an error from Facebook: ', 'the-events-calendar'),
761
+ 'error:eb-error' => __('Events cannot be imported because we received an error from Eventbrite: ', 'the-events-calendar'),
762
+ 'error:eb-sync-error' => __('Event cannot be synced to Eventbrite because we received an error from Eventbrite.', 'the-events-calendar'),
763
+ 'error:eb-token-not-valid' => __('Eventbrite token is not valid.', 'the-events-calendar'),
764
+ 'error:eb-parsed-object-empty' => __('Eventbrite parsed object is empty.', 'the-events-calendar'),
765
+ 'error:eb-parsed-object-type-empty' => __('Eventbrite parsed object type is empty.', 'the-events-calendar'),
766
+ 'error:eb-parsed-object-id-empty' => __('Eventbrite parsed object ID is empty.', 'the-events-calendar'),
767
+ 'error:eb-object-empty' => __('Eventbrite parsed object is empty.', 'the-events-calendar'),
768
+ 'error:eb-event-not-found' => __('Eventbrite event not found.', 'the-events-calendar'),
769
+ 'error:eb-organizer-not-found' => __('Eventbrite organizer not found.', 'the-events-calendar'),
770
+ 'error:eb-venue-not-found' => __('Eventbrite venue not found.', 'the-events-calendar'),
771
+ 'error:eb-user-not-found' => __('Eventbrite user not found.', 'the-events-calendar'),
772
+ 'error:eb-sync-data-invalid' => __('Eventbrite sync data invalid.', 'the-events-calendar'),
773
+ 'error:eb-token-not-found' => __('You do not have an active connection to Eventbrite through your account and Event Aggregator.', 'the-events-calendar'),
774
+ 'error:eb-webhook-not-registered' => __('Webhook not registered properly.', 'the-events-calendar'),
775
+ 'error:eb-action-not-supported' => __('This webhook action is not currently supported.', 'the-events-calendar'),
776
+ 'error:eb-event-not-owned' => __('Event not owned, you cannot edit it.', 'the-events-calendar'),
777
+ 'warning:meetup-api-key-deprecated-plain' => sprintf(
778
+ _x(
779
+ 'Meetup is no longer supporting API keys, and will restrict access using your existing key starting from August 2019. As an alternative, you should use OAuth2 and update The Events Calendar to the latest version. Learn more at %1$s',
780
+ 'Placeholder used for the meetup API changes',
781
+ 'the-events-calendar'
782
+ ),
783
+ $meetup_api_changes_link
784
+ ),
785
+ 'error:meetup-api-key-deprecated-plain' => sprintf(
786
+ _x(
787
+ 'Meetup is no longer supporting API keys, and has restricted access using your existing key starting from August 2019. As an alternative, you must use OAuth2 and update The Events Calendar to the latest version. Learn more at %1$s.',
788
+ 'Placeholder used for the meetup API changes link when the KEY is plain',
789
+ 'the-events-calendar'
790
+ ),
791
+ $meetup_api_changes_link
792
+ ),
793
+ 'error:meetup-token-not-found' => __('You do not have an active connection to Meetup through your account and Event Aggregator.', 'the-events-calendar'),
794
  ];
795
 
796
  /**
822
  $keys = array_combine( $keys, $keys );
823
  $confirmation_args = array_intersect_key( $args, $keys );
824
  $confirmation_args = array_merge( $confirmation_args, [
825
+ 'eventbrite_token' => '1',
826
+ 'meetup_api_key' => '1',
827
+ ]
828
  );
829
 
830
  // Set site for origin(s) that need it for new token handling.
src/Tribe/Cost_Utils.php CHANGED
@@ -115,7 +115,7 @@ class Tribe__Events__Cost_Utils extends Tribe__Cost_Utils {
115
  $currency_position = get_post_meta( $event_id, '_EventCurrencyPosition', true );
116
 
117
  if ( empty( $currency_position ) ) {
118
- $currency_position = tribe_get_option( 'reverseCurrencyPosition', false );
119
  }
120
 
121
  $cost = $this->maybe_format_with_currency( $cost, $event, $currency_symbol, $currency_position );
115
  $currency_position = get_post_meta( $event_id, '_EventCurrencyPosition', true );
116
 
117
  if ( empty( $currency_position ) ) {
118
+ $currency_position = tribe_is_truthy( tribe_get_option( 'reverseCurrencyPosition', false ) ) ? 'suffix' : 'prefix';
119
  }
120
 
121
  $cost = $this->maybe_format_with_currency( $cost, $event, $currency_symbol, $currency_position );
src/Tribe/Editor/Assets.php CHANGED
@@ -5,6 +5,16 @@
5
  * @since 4.7
6
  */
7
  class Tribe__Events__Editor__Assets {
 
 
 
 
 
 
 
 
 
 
8
  /**
9
  *
10
  * @since 4.7
@@ -45,10 +55,15 @@ class Tribe__Events__Editor__Assets {
45
  * Checks if we should enqueue frontend assets
46
  *
47
  * @since 4.7
 
48
  *
49
  * @return bool
50
  */
51
  public function should_enqueue_frontend() {
 
 
 
 
52
  $should_enqueue = (
53
  tribe_is_event_query()
54
  || tribe_is_event_organizer()
@@ -63,6 +78,10 @@ class Tribe__Events__Editor__Assets {
63
  *
64
  * @param bool $should_enqueue
65
  */
66
- return apply_filters( 'tribe_events_editor_assets_should_enqueue_frontend', $should_enqueue );
 
 
 
 
67
  }
68
  }
5
  * @since 4.7
6
  */
7
  class Tribe__Events__Editor__Assets {
8
+
9
+ /**
10
+ * Caches the result of the `should_enqueue_frontend` check.
11
+ *
12
+ * @since 4.9.13
13
+ *
14
+ * @var bool
15
+ */
16
+ protected $should_enqueue_frontend;
17
+
18
  /**
19
  *
20
  * @since 4.7
55
  * Checks if we should enqueue frontend assets
56
  *
57
  * @since 4.7
58
+ * @since 4.9.13 Cache the check value.
59
  *
60
  * @return bool
61
  */
62
  public function should_enqueue_frontend() {
63
+ if ( null !== $this->should_enqueue_frontend ) {
64
+ return $this->should_enqueue_frontend;
65
+ }
66
+
67
  $should_enqueue = (
68
  tribe_is_event_query()
69
  || tribe_is_event_organizer()
78
  *
79
  * @param bool $should_enqueue
80
  */
81
+ $should_enqueue = apply_filters( 'tribe_events_editor_assets_should_enqueue_frontend', $should_enqueue );
82
+
83
+ $this->should_enqueue_frontend = $should_enqueue;
84
+
85
+ return $should_enqueue;
86
  }
87
  }
src/Tribe/Main.php CHANGED
@@ -32,7 +32,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
32
  const VENUE_POST_TYPE = 'tribe_venue';
33
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
34
 
35
- const VERSION = '4.9.12';
36
 
37
  /**
38
  * Min Pro Addon
@@ -652,6 +652,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
652
  require_once $this->plugin_path . 'src/functions/advanced-functions/linked-posts.php';
653
  require_once $this->plugin_path . 'src/functions/utils/array.php';
654
  require_once $this->plugin_path . 'src/functions/utils/labels.php';
 
655
 
656
  // Load Deprecated Template Tags
657
  if ( ! defined( 'TRIBE_DISABLE_DEPRECATED_TAGS' ) ) {
@@ -701,6 +702,9 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
701
  // Load Rewrite
702
  add_action( 'plugins_loaded', array( Tribe__Events__Rewrite::instance(), 'hooks' ) );
703
 
 
 
 
704
  add_action( 'init', array( $this, 'init' ), 10 );
705
  add_action( 'admin_init', array( $this, 'admin_init' ) );
706
 
@@ -2966,6 +2970,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
2966
  * @param bool $network_deactivating
2967
  */
2968
  public static function activate() {
 
2969
 
2970
  self::instance()->plugins_loaded();
2971
 
@@ -2977,7 +2982,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
2977
  self::flushRewriteRules();
2978
 
2979
  if ( ! class_exists( 'Tribe__Events__Editor__Compatibility' ) ) {
2980
- require_once dirname( __FILE__ ) . '/Editor/Compatibility.php';
2981
  }
2982
 
2983
  $editor_compatibility = new Tribe__Events__Editor__Compatibility();
32
  const VENUE_POST_TYPE = 'tribe_venue';
33
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
34
 
35
+ const VERSION = '4.9.13';
36
 
37
  /**
38
  * Min Pro Addon
652
  require_once $this->plugin_path . 'src/functions/advanced-functions/linked-posts.php';
653
  require_once $this->plugin_path . 'src/functions/utils/array.php';
654
  require_once $this->plugin_path . 'src/functions/utils/labels.php';
655
+ require_once $this->plugin_path . 'src/functions/utils/install.php';
656
 
657
  // Load Deprecated Template Tags
658
  if ( ! defined( 'TRIBE_DISABLE_DEPRECATED_TAGS' ) ) {
702
  // Load Rewrite
703
  add_action( 'plugins_loaded', array( Tribe__Events__Rewrite::instance(), 'hooks' ) );
704
 
705
+ // Trigger smart activation of V2 after we triggered the Update version on Init@P10.
706
+ add_action( 'init', 'tribe_events_views_v2_smart_activation', 25 );
707
+
708
  add_action( 'init', array( $this, 'init' ), 10 );
709
  add_action( 'admin_init', array( $this, 'admin_init' ) );
710
 
2970
  * @param bool $network_deactivating
2971
  */
2972
  public static function activate() {
2973
+ $plugin_path = dirname( TRIBE_EVENTS_FILE );
2974
 
2975
  self::instance()->plugins_loaded();
2976
 
2982
  self::flushRewriteRules();
2983
 
2984
  if ( ! class_exists( 'Tribe__Events__Editor__Compatibility' ) ) {
2985
+ require_once $plugin_path . '/src/Tribe/Editor/Compatibility.php';
2986
  }
2987
 
2988
  $editor_compatibility = new Tribe__Events__Editor__Compatibility();
src/Tribe/Models/Post_Types/Event.php CHANGED
@@ -176,8 +176,13 @@ class Event extends Base {
176
  'happens_this_week' => $happens_this_week,
177
  'featured' => $featured,
178
  'sticky' => $sticky,
179
- 'cost' => tribe_get_cost( $post_id, true ),
180
- 'excerpt' => tribe_events_get_the_excerpt( $post_id, wp_kses_allowed_html( 'post' ) ),
 
 
 
 
 
181
  'organizers' => ( new Lazy_Collection( $organizer_fetch ) )->on_resolve( $cache_this ),
182
  'venues' => ( new Lazy_Collection( $venue_fetch ) )->on_resolve( $cache_this ),
183
  'thumbnail' => ( new Post_Thumbnail( $post_id ) )->on_resolve( $cache_this ),
176
  'happens_this_week' => $happens_this_week,
177
  'featured' => $featured,
178
  'sticky' => $sticky,
179
+ 'cost' => tribe_get_cost( $post_id, true ),
180
+ 'excerpt' => ( new Lazy_String(
181
+ static function () use ( $post_id ) {
182
+ return tribe_events_get_the_excerpt( $post_id, wp_kses_allowed_html( 'post' ) );
183
+ },
184
+ false
185
+ ) )->on_resolve( $cache_this ),
186
  'organizers' => ( new Lazy_Collection( $organizer_fetch ) )->on_resolve( $cache_this ),
187
  'venues' => ( new Lazy_Collection( $venue_fetch ) )->on_resolve( $cache_this ),
188
  'thumbnail' => ( new Post_Thumbnail( $post_id ) )->on_resolve( $cache_this ),
src/Tribe/Repositories/Event.php CHANGED
@@ -40,7 +40,7 @@ class Tribe__Events__Repositories__Event extends Tribe__Repository {
40
  *
41
  * @var string
42
  */
43
- protected $start_meta_key = '_EventStarDateUTC';
44
 
45
  /**
46
  * The meta key that should be used for the end date.
@@ -51,7 +51,7 @@ class Tribe__Events__Repositories__Event extends Tribe__Repository {
51
  *
52
  * @var string
53
  */
54
- protected $end_meta_key = '_EvenEndDateUTC';
55
 
56
  /**
57
  * The timezone object that should be used to normalize dates.
40
  *
41
  * @var string
42
  */
43
+ protected $start_meta_key = '_EventStartDateUTC';
44
 
45
  /**
46
  * The meta key that should be used for the end date.
51
  *
52
  * @var string
53
  */
54
+ protected $end_meta_key = '_EventEndDateUTC';
55
 
56
  /**
57
  * The timezone object that should be used to normalize dates.
src/Tribe/Repositories/Organizer.php CHANGED
@@ -48,26 +48,11 @@ class Tribe__Events__Repositories__Organizer extends Tribe__Events__Repositories
48
 
49
  $this->linked_id_meta_key = '_EventOrganizerID';
50
 
51
- $this->schema = array_merge( $this->schema, array(
52
- 'name' => array( $this, 'filter_by_name' ),
53
- ) );
54
-
55
  $this->add_simple_meta_schema_entry( 'email', '_OrganizerEmail' );
56
  $this->add_simple_meta_schema_entry( 'phone', '_OrganizerPhone' );
57
  $this->add_simple_meta_schema_entry( 'website', '_OrganizerWebsite' );
58
  }
59
 
60
- /**
61
- * Filters organizers by a specific name. This is an alias of ->search()
62
- *
63
- * @since 4.9
64
- *
65
- * @param string $value String to search with.
66
- */
67
- public function filter_by_name( $value ) {
68
- $this->search( $value );
69
- }
70
-
71
  /**
72
  * {@inheritdoc}
73
  */
48
 
49
  $this->linked_id_meta_key = '_EventOrganizerID';
50
 
 
 
 
 
51
  $this->add_simple_meta_schema_entry( 'email', '_OrganizerEmail' );
52
  $this->add_simple_meta_schema_entry( 'phone', '_OrganizerPhone' );
53
  $this->add_simple_meta_schema_entry( 'website', '_OrganizerWebsite' );
54
  }
55
 
 
 
 
 
 
 
 
 
 
 
 
56
  /**
57
  * {@inheritdoc}
58
  */
src/Tribe/Rewrite.php CHANGED
@@ -471,6 +471,12 @@ class Tribe__Events__Rewrite extends Tribe__Rewrite {
471
  $localized_matchers['(\d{4}-\d{2})'] = 'eventDate';
472
  $localized_matchers['(\d{4}-\d{2}-\d{2})'] = 'eventDate';
473
 
 
 
 
 
 
 
474
  return $localized_matchers;
475
  }
476
 
@@ -569,4 +575,51 @@ class Tribe__Events__Rewrite extends Tribe__Rewrite {
569
 
570
  return $query_vars;
571
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
572
  }
471
  $localized_matchers['(\d{4}-\d{2})'] = 'eventDate';
472
  $localized_matchers['(\d{4}-\d{2}-\d{2})'] = 'eventDate';
473
 
474
+ // Handle the event archive possible variations.
475
+ $localized_matchers = array_merge(
476
+ $localized_matchers,
477
+ $this->get_option_controlled_slug_entry( $localized_matchers, 'events', 'eventsSlug' )
478
+ );
479
+
480
  return $localized_matchers;
481
  }
482
 
575
 
576
  return $query_vars;
577
  }
578
+
579
+ /**
580
+ * Adds an entry for an option controlled slug.
581
+ *
582
+ * E.g. the events archive can be changed from `/events` to somethings like `/trainings`.
583
+ *
584
+ * @since 4.9.13
585
+ *
586
+ * @param array $localized_matchers An array of the current localized matchers.
587
+ * @param string $default_slug The default slug for the option controlled slug; e.g. `events` for the events
588
+ * archive.
589
+ * @param string $option_name The name of the Tribe option that stores the modified slug, if any.
590
+ *
591
+ * @return array An entry to add to the localized matchers; this will be an empty array if there's no need to add
592
+ * an entry..
593
+ */
594
+ protected function get_option_controlled_slug_entry( array $localized_matchers, $default_slug, $option_name ) {
595
+ $using_default_archive_slug = $default_slug === tribe_get_option( $option_name, $default_slug );
596
+
597
+ $filter = static function ( $matcher ) use ( $default_slug )
598
+ {
599
+ return isset( $matcher['query_var'] )
600
+ && 'post_type' === $matcher['query_var']
601
+ && isset( $matcher['localized_slugs'] )
602
+ && is_array( $matcher['localized_slugs'] )
603
+ && in_array( $default_slug, $matcher['localized_slugs'], true );
604
+ };
605
+
606
+ $archive_localized_matcher = array_filter( $localized_matchers, $filter );
607
+ $archive_localized_matcher = reset( $archive_localized_matcher );
608
+
609
+ if ( $using_default_archive_slug || false === $archive_localized_matcher ) {
610
+ return [];
611
+ }
612
+
613
+ $archive_localized_matcher['localized_slugs'][] = $archive_localized_matcher['en_slug'];
614
+ // Create an entry for each localized slug to replace (?:events).
615
+ $entry = [
616
+ '(?:' . $default_slug . ')' => [
617
+ 'query_var' => 'post_type',
618
+ 'en_slug' => $archive_localized_matcher['en_slug'],
619
+ 'localized_slugs' => $archive_localized_matcher['localized_slugs']
620
+ ]
621
+ ];
622
+
623
+ return $entry;
624
+ }
625
  }
src/Tribe/Service_Providers/Context.php CHANGED
@@ -93,6 +93,7 @@ class Context extends \tad_DI52_ServiceProvider {
93
  ],
94
  Tribe__Context::REQUEST_VAR => [ 'eventDate', 'tribe-bar-date' ],
95
  Tribe__Context::QUERY_VAR => 'eventDate',
 
96
  ],
97
  'write' => [
98
  Tribe__Context::REQUEST_VAR => [ 'eventDate', 'tribe-bar-date' ],
@@ -141,12 +142,13 @@ class Context extends \tad_DI52_ServiceProvider {
141
  ],
142
  'featured' => [
143
  'read' => [
144
- Tribe__Context::REQUEST_VAR => 'featured',
145
- Tribe__Context::QUERY_VAR => 'featured',
 
146
  ],
147
  'write' => [
148
- Tribe__Context::REQUEST_VAR => 'featured',
149
- Tribe__Context::QUERY_VAR => 'featured',
150
  ],
151
  ],
152
  TEC::TAXONOMY => [
93
  ],
94
  Tribe__Context::REQUEST_VAR => [ 'eventDate', 'tribe-bar-date' ],
95
  Tribe__Context::QUERY_VAR => 'eventDate',
96
+ Tribe__Context::WP_PARSED => 'eventDate',
97
  ],
98
  'write' => [
99
  Tribe__Context::REQUEST_VAR => [ 'eventDate', 'tribe-bar-date' ],
142
  ],
143
  'featured' => [
144
  'read' => [
145
+ Tribe__Context::REQUEST_VAR => 'featured',
146
+ Tribe__Context::QUERY_VAR => 'featured',
147
+ Tribe__Context::WP_MATCHED_QUERY => 'featured',
148
  ],
149
  'write' => [
150
+ Tribe__Context::REQUEST_VAR => 'featured',
151
+ Tribe__Context::QUERY_VAR => 'featured',
152
  ],
153
  ],
154
  TEC::TAXONOMY => [
src/Tribe/Views/V2/Assets.php CHANGED
@@ -12,7 +12,6 @@
12
  namespace Tribe\Events\Views\V2;
13
 
14
  use Tribe__Events__Main as Plugin;
15
- use Tribe\Events\Views\V2\Template_Bootstrap;
16
 
17
  /**
18
  * Register
@@ -32,6 +31,15 @@ class Assets extends \tad_DI52_ServiceProvider {
32
  */
33
  public static $group_key = 'events-views-v2';
34
 
 
 
 
 
 
 
 
 
 
35
  /**
36
  * Binds and sets up implementations.
37
  *
@@ -323,10 +331,14 @@ class Assets extends \tad_DI52_ServiceProvider {
323
  * Checks if we should enqueue frontend assets for the V2 views.
324
  *
325
  * @since 4.9.4
 
326
  *
327
  * @return bool
328
  */
329
  public function should_enqueue_frontend() {
 
 
 
330
 
331
  $should_enqueue = tribe( Template_Bootstrap::class )->should_load();
332
 
@@ -337,7 +349,11 @@ class Assets extends \tad_DI52_ServiceProvider {
337
  *
338
  * @param bool $should_enqueue
339
  */
340
- return apply_filters( 'tribe_events_views_v2_assets_should_enqueue_frontend', $should_enqueue );
 
 
 
 
341
  }
342
 
343
 
12
  namespace Tribe\Events\Views\V2;
13
 
14
  use Tribe__Events__Main as Plugin;
 
15
 
16
  /**
17
  * Register
31
  */
32
  public static $group_key = 'events-views-v2';
33
 
34
+ /**
35
+ * Caches the result of the `should_enqueue_frontend` check.
36
+ *
37
+ * @since 4.9.13
38
+ *
39
+ * @var bool
40
+ */
41
+ protected $should_enqueue_frontend;
42
+
43
  /**
44
  * Binds and sets up implementations.
45
  *
331
  * Checks if we should enqueue frontend assets for the V2 views.
332
  *
333
  * @since 4.9.4
334
+ * @since 4.9.13 Cache the check value.
335
  *
336
  * @return bool
337
  */
338
  public function should_enqueue_frontend() {
339
+ if ( null !== $this->should_enqueue_frontend ) {
340
+ return $this->should_enqueue_frontend;
341
+ }
342
 
343
  $should_enqueue = tribe( Template_Bootstrap::class )->should_load();
344
 
349
  *
350
  * @param bool $should_enqueue
351
  */
352
+ $should_enqueue = apply_filters( 'tribe_events_views_v2_assets_should_enqueue_frontend', $should_enqueue );
353
+
354
+ $this->should_enqueue_frontend = $should_enqueue;
355
+
356
+ return $should_enqueue;
357
  }
358
 
359
 
src/Tribe/Views/V2/Hooks.php CHANGED
@@ -19,6 +19,8 @@ namespace Tribe\Events\Views\V2;
19
 
20
  use Tribe\Events\Views\V2\Query\Abstract_Query_Controller;
21
  use Tribe\Events\Views\V2\Query\Event_Query_Controller;
 
 
22
  use Tribe\Events\Views\V2\Template\Title;
23
  use Tribe__Events__Main as TEC;
24
  use Tribe__Rewrite as Rewrite;
@@ -55,6 +57,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
55
  add_action( 'tribe_events_pre_rewrite', [ $this, 'on_tribe_events_pre_rewrite' ] );
56
  add_action( 'wp_enqueue_scripts', [ $this, 'action_disable_assets_v1' ], 0 );
57
  add_action( 'tribe_events_pro_shortcode_tribe_events_after_assets', [ $this, 'action_disable_shortcode_assets_v1' ] );
 
58
  }
59
 
60
  /**
@@ -63,8 +66,11 @@ class Hooks extends \tad_DI52_ServiceProvider {
63
  * @since 4.9.2
64
  */
65
  protected function add_filters() {
 
 
66
  add_action( 'tribe_events_parse_query', [ $this, 'parse_query' ] );
67
  add_filter( 'template_include', [ $this, 'filter_template_include' ], 50 );
 
68
  add_filter( 'posts_pre_query', [ $this, 'filter_posts_pre_query' ], 20, 2 );
69
  add_filter( 'body_class', [ $this, 'filter_body_class' ] );
70
  add_filter( 'query_vars', [ $this, 'filter_query_vars' ], 15 );
@@ -74,6 +80,10 @@ class Hooks extends \tad_DI52_ServiceProvider {
74
  add_filter( 'tribe_events_views_v2_after_make_view', [ $this, 'action_include_filters_excerpt' ] );
75
  // 100 is the WordPress cookie-based auth check.
76
  add_filter( 'rest_authentication_errors', [ Rest_Endpoint::class, 'did_rest_authentication_errors' ], 150 );
 
 
 
 
77
 
78
  if ( tribe_context()->doing_php_initial_state() ) {
79
  add_filter( 'wp_title', [ $this, 'filter_wp_title' ], 10, 2 );
@@ -287,6 +297,10 @@ class Hooks extends \tad_DI52_ServiceProvider {
287
  * @return string The modified page title, if required.
288
  */
289
  public function filter_wp_title( $title, $sep = null ) {
 
 
 
 
290
  return $this->container->make( Title::class )->filter_wp_title( $title, $sep );
291
  }
292
 
@@ -302,6 +316,10 @@ class Hooks extends \tad_DI52_ServiceProvider {
302
  * @return string The modified page title, if required.
303
  */
304
  public function filter_document_title_parts( $title ) {
 
 
 
 
305
  return $this->container->make( Title::class )->filter_document_title_parts( $title );
306
  }
307
 
@@ -349,6 +367,69 @@ class Hooks extends \tad_DI52_ServiceProvider {
349
  return $html . '<p class="hide-if-no-js howto">' . __( 'We recommend a 16:9 aspect ratio for featured images.', 'the-events-calendar' ) . '</p>';
350
  }
351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
352
  /**
353
  * Suppress v1 query filters on a per-query basis, if required.
354
  *
@@ -364,4 +445,44 @@ class Hooks extends \tad_DI52_ServiceProvider {
364
  $event_query = $this->container->make( Event_Query_Controller::class );
365
  $event_query->parse_query( $query );
366
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
367
  }
19
 
20
  use Tribe\Events\Views\V2\Query\Abstract_Query_Controller;
21
  use Tribe\Events\Views\V2\Query\Event_Query_Controller;
22
+ use Tribe\Events\Views\V2\Repository\Caching_Set_Decorator;
23
+ use Tribe\Events\Views\V2\Repository\Event_Period;
24
  use Tribe\Events\Views\V2\Template\Title;
25
  use Tribe__Events__Main as TEC;
26
  use Tribe__Rewrite as Rewrite;
57
  add_action( 'tribe_events_pre_rewrite', [ $this, 'on_tribe_events_pre_rewrite' ] );
58
  add_action( 'wp_enqueue_scripts', [ $this, 'action_disable_assets_v1' ], 0 );
59
  add_action( 'tribe_events_pro_shortcode_tribe_events_after_assets', [ $this, 'action_disable_shortcode_assets_v1' ] );
60
+ add_action( 'updated_option', [ $this, 'action_save_wplang' ], 10, 3 );
61
  }
62
 
63
  /**
66
  * @since 4.9.2
67
  */
68
  protected function add_filters() {
69
+ add_filter( 'wp_redirect', [ $this, 'filter_prevent_canonical_embed_redirect' ] );
70
+ add_filter( 'redirect_canonical', [ $this, 'filter_prevent_canonical_embed_redirect' ] );
71
  add_action( 'tribe_events_parse_query', [ $this, 'parse_query' ] );
72
  add_filter( 'template_include', [ $this, 'filter_template_include' ], 50 );
73
+ add_filter( 'embed_template', [ $this, 'filter_template_include' ], 50 );
74
  add_filter( 'posts_pre_query', [ $this, 'filter_posts_pre_query' ], 20, 2 );
75
  add_filter( 'body_class', [ $this, 'filter_body_class' ] );
76
  add_filter( 'query_vars', [ $this, 'filter_query_vars' ], 15 );
80
  add_filter( 'tribe_events_views_v2_after_make_view', [ $this, 'action_include_filters_excerpt' ] );
81
  // 100 is the WordPress cookie-based auth check.
82
  add_filter( 'rest_authentication_errors', [ Rest_Endpoint::class, 'did_rest_authentication_errors' ], 150 );
83
+ add_filter( 'tribe_support_registered_template_systems', [ $this, 'filter_register_template_updates' ] );
84
+ add_filter( 'tribe_events_event_repository_map', [ $this, 'add_period_repository' ], 10, 3 );
85
+
86
+ add_filter( 'tribe_general_settings_tab_fields', [ $this, 'filter_general_settings_tab_live_update' ], 20 );
87
 
88
  if ( tribe_context()->doing_php_initial_state() ) {
89
  add_filter( 'wp_title', [ $this, 'filter_wp_title' ], 10, 2 );
297
  * @return string The modified page title, if required.
298
  */
299
  public function filter_wp_title( $title, $sep = null ) {
300
+ if ( ! $this->container->make( Template_Bootstrap::class )->should_load() ) {
301
+ return $title;
302
+ }
303
+
304
  return $this->container->make( Title::class )->filter_wp_title( $title, $sep );
305
  }
306
 
316
  * @return string The modified page title, if required.
317
  */
318
  public function filter_document_title_parts( $title ) {
319
+ if ( ! $this->container->make( Template_Bootstrap::class )->should_load() ) {
320
+ return $title;
321
+ }
322
+
323
  return $this->container->make( Title::class )->filter_document_title_parts( $title );
324
  }
325
 
367
  return $html . '<p class="hide-if-no-js howto">' . __( 'We recommend a 16:9 aspect ratio for featured images.', 'the-events-calendar' ) . '</p>';
368
  }
369
 
370
+ /**
371
+ * Filters the `redirect_canonical` to prevent any redirects on embed URLs.
372
+ *
373
+ * @since 4.9.13
374
+ *
375
+ * @param mixed $redirect_url URL which we will redirect to.
376
+ *
377
+ * @return string A redirection URL, or `false` to prevent redirection.
378
+ */
379
+ public function filter_prevent_canonical_embed_redirect( $redirect_url = null ) {
380
+ $context = tribe_context();
381
+
382
+ // Any other URL we bail with the URL return.
383
+ if ( 'embed' !== $context->get( 'view' ) ) {
384
+ return $redirect_url;
385
+ }
386
+
387
+ return false;
388
+ }
389
+
390
+ /**
391
+ * Modifies the Live update tooltip properly.
392
+ *
393
+ * @since 4.9.13
394
+ *
395
+ * @param array $fields Fields that were passed for the Settigns tab.
396
+ *
397
+ * @return array Fields after changing the tooltip.
398
+ */
399
+ public function filter_general_settings_tab_live_update( $fields ) {
400
+ if ( empty( $fields['liveFiltersUpdate'] ) ) {
401
+ return $fields;
402
+ }
403
+
404
+ $disable_bar = tribe_is_truthy( tribe_get_option( 'tribeDisableTribeBar', false ) );
405
+ if ( $disable_bar ) {
406
+ return $fields;
407
+ }
408
+
409
+ $fields['liveFiltersUpdate']['tooltip'] .= '<br/>' . esc_html__( 'Recommended for all sites using the updated calendar views.', 'the-events-calendar' );
410
+
411
+ return $fields;
412
+ }
413
+
414
+ /**
415
+ * Registers The Events Calendar with the views/overrides update checker.
416
+ *
417
+ * @since 4.9.13
418
+ *
419
+ * @param array $plugins List of plugisn to be checked.
420
+ *
421
+ * @return array
422
+ */
423
+ public function filter_register_template_updates( array $plugins = [] ) {
424
+ $plugins[ __( 'The Events Calendar - View V2', 'the-events-calendar' ) ] = [
425
+ TEC::VERSION,
426
+ TEC::instance()->pluginPath . 'src/views/v2',
427
+ trailingslashit( get_stylesheet_directory() ) . 'tribe/events',
428
+ ];
429
+
430
+ return $plugins;
431
+ }
432
+
433
  /**
434
  * Suppress v1 query filters on a per-query basis, if required.
435
  *
445
  $event_query = $this->container->make( Event_Query_Controller::class );
446
  $event_query->parse_query( $query );
447
  }
448
+
449
+ /**
450
+ * Adds the period repository to the map of available repositories.
451
+ *
452
+ * @since 4.9.13
453
+ *
454
+ * @param array $repository_map The current repository map.
455
+ *
456
+ * @return array The filtered repository map.
457
+ */
458
+ public function add_period_repository( array $repository_map, $repository, array $args = [] ) {
459
+ if ( 'period' === $repository ) {
460
+ // This is a new instance on each run, by design. Making this a singleton would create dangerous dependencies.
461
+ $event_period_repository = $this->container->make( Event_Period::class );
462
+ $event_period_repository->cache_results = in_array( 'caching', $args, true );
463
+ $repository_map['period'] = $event_period_repository;
464
+ }
465
+
466
+ return $repository_map;
467
+ }
468
+
469
+ /**
470
+ * Flush rewrite rules after the site language setting changes.
471
+ *
472
+ * @since 4.9.13
473
+ *
474
+ * @param string $option The option name that was updated.
475
+ * @param string $old The option old value.
476
+ * @param string $new The option updated value.
477
+ */
478
+ public function action_save_wplang( $option, $old, $new ) {
479
+
480
+ if ( 'WPLANG' !== $option ) {
481
+ return;
482
+ }
483
+
484
+ // Deleting `rewrite_rules` given that this is being executed after `init`
485
+ // And `flush_rewrite_rules()` doesn't take effect.
486
+ delete_option( 'rewrite_rules' );
487
+ }
488
  }
src/Tribe/Views/V2/Interfaces/View_Url_Provider_Interface.php CHANGED
@@ -23,11 +23,12 @@ interface View_Url_Provider_Interface {
23
  * @since 4.9.3
24
  *
25
  * @param bool $canonical Whether to return the canonical version of the URL or the normal one.
 
26
  *
27
  * @return string The current URL associated to the view or an empty string if this View does not correspond to a
28
  * URL.
29
  */
30
- public function get_url( $canonical = false );
31
 
32
  /**
33
  * Returns the URL associated to this View logical, next view.
23
  * @since 4.9.3
24
  *
25
  * @param bool $canonical Whether to return the canonical version of the URL or the normal one.
26
+ * @param bool $force Whether to force the re-fetch and ignore cached values or not.
27
  *
28
  * @return string The current URL associated to the view or an empty string if this View does not correspond to a
29
  * URL.
30
  */
31
+ public function get_url( $canonical = false, $force = false );
32
 
33
  /**
34
  * Returns the URL associated to this View logical, next view.
src/Tribe/Views/V2/Query/Event_Query_Controller.php CHANGED
@@ -39,7 +39,7 @@ class Event_Query_Controller extends Abstract_Query_Controller {
39
  */
40
  protected function repository() {
41
  // @todo refine this to handle order depending on the View.
42
- return tribe_events()->order_by('event_date', 'ASC');
43
  }
44
 
45
  /**
@@ -67,8 +67,8 @@ class Event_Query_Controller extends Abstract_Query_Controller {
67
  ]
68
  );
69
 
70
- if ( 3 === $suppress_filters ) {
71
- $query->tribe_suppress_query_filters = true;
72
  }
73
  }
74
  }
39
  */
40
  protected function repository() {
41
  // @todo refine this to handle order depending on the View.
42
+ return tribe_events()->order_by( 'event_date', 'ASC' );
43
  }
44
 
45
  /**
67
  ]
68
  );
69
 
70
+ if ( 3 === $suppress_filters || $query->is_embed ) {
71
+ $query->set( 'tribe_suppress_query_filters', true );
72
  }
73
  }
74
  }
src/Tribe/Views/V2/Repository/Event_Period.php ADDED
@@ -0,0 +1,1264 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * A period-based repository to fetch events.
4
+ *
5
+ * @since 4.9.13
6
+ *
7
+ * @package Tribe\Events\Views\V2\Repository
8
+ */
9
+
10
+ namespace Tribe\Events\Views\V2\Repository;
11
+
12
+ use Tribe\Repository\Core_Read_Interface;
13
+ use Tribe\Repository\Filter_Validation;
14
+ use Tribe__Cache_Listener as Cache_Listener;
15
+ use Tribe__Date_Utils as Dates;
16
+ use Tribe__Events__Main as TEC;
17
+ use Tribe__Repository__Read_Interface;
18
+ use Tribe__Timezones as Timezones;
19
+ use Tribe__Utils__Array as Arr;
20
+ use WP_Post;
21
+
22
+ /**
23
+ * Class Event_Period
24
+ *
25
+ * @since 4.9.13
26
+ *
27
+ * @package Tribe\Events\Views\V2\Repository
28
+ */
29
+ class Event_Period implements Core_Read_Interface {
30
+ use Filter_Validation;
31
+
32
+ /**
33
+ * A definition of each filter required argument count and nature.
34
+ *
35
+ * @since 4.9.13
36
+ *
37
+ * @var array
38
+ */
39
+ protected static $filter_args_map = [
40
+ 'period' => [
41
+ 'start date' => [ Dates::class, 'is_valid_date' ],
42
+ 'end date' => [ Dates::class, 'is_valid_date' ]
43
+ ],
44
+ ];
45
+ /**
46
+ * Whether the repository should cache sets and results in WP cache or not.
47
+ *
48
+ * @since 4.9.13
49
+ *
50
+ * @var bool
51
+ */
52
+ public $cache_results = false;
53
+ /**
54
+ * The period start date.
55
+ *
56
+ * @since 4.9.13
57
+ *
58
+ * @var \DateTime
59
+ */
60
+ protected $period_start;
61
+
62
+ /**
63
+ * The period end date.
64
+ *
65
+ * @since 4.9.13
66
+ *
67
+ * @var \DateTime
68
+ */
69
+ protected $period_end;
70
+
71
+ /**
72
+ * A flag property to indicate whether the sets should be fetched and built using the site timezone or not.
73
+ *
74
+ * @since 4.9.13
75
+ *
76
+ * @var bool
77
+ */
78
+ protected $use_site_timezone;
79
+
80
+ /**
81
+ * The last fetched sets.
82
+ *
83
+ * @since 4.9.13
84
+ *
85
+ * @var Events_Result_Set[]
86
+ */
87
+ protected $sets;
88
+
89
+ /**
90
+ * The "base" repository used by this repository.
91
+ * This repository will handle any non-period related filter.
92
+ *
93
+ * @since 4.9.13
94
+ *
95
+ * @var \Tribe__Repository__Interface
96
+ */
97
+ protected $base_repository;
98
+
99
+ /**
100
+ * A flag property to indicate whether there are filters for the base repository or not.
101
+ *
102
+ * @since 4.9.13
103
+ *
104
+ * @var bool
105
+ */
106
+ protected $has_base_filters = false;
107
+
108
+ /**
109
+ * Batch filter application method.
110
+ *
111
+ * This is the same as calling `by` multiple times with different arguments.
112
+ *
113
+ * @since 4.7.19
114
+ *
115
+ * @param array $args An associative array of arguments to filter
116
+ * the posts by in the shape [ <key>, <value> ]. * * @return Tribe__Repository__Read_Interface
117
+ */
118
+ public function by_args( array $args ) {
119
+ // TODO: Implement by_args() method.
120
+ }
121
+
122
+ /**
123
+ * Just an alias of the `by` method to allow for easier reading.
124
+ *
125
+ * @since 4.7.19
126
+ *
127
+ * @param string $key
128
+ * @param mixed $value
129
+ *
130
+ * @return Tribe__Repository__Read_Interface
131
+ */
132
+ public function where( $key, $value = null ) {
133
+ return $this->by( ...func_get_args() );
134
+ }
135
+
136
+ /**
137
+ * {@inheritDoc}
138
+ *
139
+ * @since 4.9.13
140
+ */
141
+ public function by( $key, $value = null ) {
142
+ $original_by_key = $key;
143
+ $key = preg_replace( '/^(on|in)_/', '', $key );
144
+
145
+ $call_args = func_get_args();
146
+
147
+ $method = 'by_' . $key;
148
+
149
+ if ( ! method_exists( $this, $method ) ) {
150
+ // Redirect the call to the base repository.
151
+ $this->has_base_filters = true;
152
+ $this->base_repository()->by( $original_by_key, ...array_slice( $call_args, 1 ) );
153
+
154
+ return $this;
155
+ }
156
+
157
+ $this->ensure_args_for_filter( $key, $call_args );
158
+
159
+ array_shift( $call_args );
160
+
161
+ return $this->{$method}( ...$call_args );
162
+ }
163
+
164
+ /**
165
+ * Returns the base event repository used by this repository.
166
+ *
167
+ * @since 4.9.13
168
+ *
169
+ * @return \Tribe__Repository__Interface The base repository instance used by this repository.
170
+ */
171
+ public function base_repository() {
172
+ if ( null !== $this->base_repository ) {
173
+ return $this->base_repository;
174
+ }
175
+
176
+ $this->base_repository = tribe_events();
177
+
178
+ return $this->base_repository;
179
+ }
180
+
181
+ /**
182
+ * Sets the page of posts to fetch.
183
+ *
184
+ * Mind that this implementation does not support a `by( 'page', 2 )`
185
+ * filter to force more readable code.
186
+ *
187
+ * @since 4.7.19
188
+ *
189
+ * @param int $page
190
+ *
191
+ * @return Tribe__Repository__Read_Interface
192
+ */
193
+ public function page( $page ) {
194
+ // TODO: Implement page() method.
195
+ }
196
+
197
+ /**
198
+ * Sets the number of posts to retrieve per page.
199
+ *
200
+ * Mind that this implementation does not support a `by( 'per_page', 5 )`
201
+ * filter to force more readable code; by default posts per page is set to
202
+ * the pagination defaults for the post type.
203
+ *
204
+ * @param int $per_page
205
+ *
206
+ * @return Tribe__Repository__Read_Interface
207
+ */
208
+ public function per_page( $per_page ) {
209
+ // TODO: Implement per_page() method.
210
+ }
211
+
212
+ /**
213
+ * Returns the number of posts found matching the query.
214
+ *
215
+ * Mind that this value ignores the offset returning the
216
+ * number of results if limits where not applied.
217
+ *
218
+ * @since 4.7.19
219
+ *
220
+ * @return int
221
+ */
222
+ public function found() {
223
+ // TODO: Implement found() method.
224
+ }
225
+
226
+ /**
227
+ * Returns all posts matching the query.
228
+ *
229
+ * Mind that "all" means "all the posts matching all the filters" so pagination applies.
230
+ *
231
+ * @return array
232
+ */
233
+ public function all() {
234
+ // TODO: Implement all() method.
235
+ }
236
+
237
+ /**
238
+ * Sets the offset on the query.
239
+ *
240
+ * Mind that this implementation does not support a `by( 'offset', 2 )`
241
+ * filter to force more readable code.
242
+ *
243
+ * @since 4.7.19
244
+ *
245
+ * @param int $offset
246
+ * @param bool $increment Whether to increment the offset by the value
247
+ * or replace it.
248
+ *
249
+ * @return Tribe__Repository__Read_Interface
250
+ */
251
+ public function offset( $offset, $increment = false ) {
252
+ // TODO: Implement offset() method.
253
+ }
254
+
255
+ /**
256
+ * Sets the order on the query.
257
+ *
258
+ * Mind that this implementation does not support a `by( 'order', 2 )`
259
+ * filter to force more readable code.
260
+ *
261
+ * @since 4.7.19
262
+ *
263
+ * @param string $order
264
+ *
265
+ * @return Tribe__Repository__Read_Interface
266
+ */
267
+ public function order( $order = 'ASC' ) {
268
+ // TODO: Implement order() method.
269
+ }
270
+
271
+ /**
272
+ * Sets the order criteria results should be fetched by.
273
+ *
274
+ * Mind that this implementation does not support a `by( 'order_by', 'title' )`
275
+ * filter to force more readable code.
276
+ *
277
+ * @since 4.7.19
278
+ *
279
+ * @param string $order_by The post field, custom field or alias key to order posts by.
280
+ * @param string $order The order direction; optional; shortcut for the `order` method; defaults
281
+ * to `DESC`.
282
+ *
283
+ * @return Tribe__Repository__Read_Interface
284
+ */
285
+ public function order_by( $order_by, $order = 'DESC' ) {
286
+ // TODO: Implement order_by() method.
287
+ }
288
+
289
+ /**
290
+ * Sets the fields that should be returned by the query.
291
+ *
292
+ * Mind that this implementation does not support a `by( 'fields', 'ids' )`
293
+ * filter to force more readable code.
294
+ *
295
+ * @since 4.7.19
296
+ *
297
+ * @param string $fields
298
+ *
299
+ * @return Tribe__Repository__Read_Interface
300
+ */
301
+ public function fields( $fields ) {
302
+ // TODO: Implement fields() method.
303
+ }
304
+
305
+ /**
306
+ * Sugar method to set the `post__in` argument.
307
+ *
308
+ * Successive calls will stack, not replace each one.
309
+ *
310
+ * @since 4.7.19
311
+ *
312
+ * @param array|int $post_ids
313
+ *
314
+ * @return Tribe__Repository__Read_Interface
315
+ */
316
+ public function in( $post_ids ) {
317
+ // TODO: Implement in() method.
318
+ }
319
+
320
+ /**
321
+ * Sugar method to set the `post__not_in` argument.
322
+ *
323
+ * Successive calls will stack, not replace each one.
324
+ *
325
+ * @since 4.7.19
326
+ *
327
+ * @param array|int $post_ids
328
+ *
329
+ * @return Tribe__Repository__Read_Interface
330
+ */
331
+ public function not_in( $post_ids ) {
332
+ // TODO: Implement not_in() method.
333
+ }
334
+
335
+ /**
336
+ * Sugar method to set the `post_parent__in` argument.
337
+ *
338
+ * Successive calls will stack, not replace each one.
339
+ *
340
+ * @since 4.7.19
341
+ *
342
+ * @param array|int $post_id
343
+ *
344
+ * @return Tribe__Repository__Read_Interface
345
+ */
346
+ public function parent( $post_id ) {
347
+ // TODO: Implement parent() method.
348
+ }
349
+
350
+ /**
351
+ * Sugar method to set the `post_parent__in` argument.
352
+ *
353
+ * Successive calls will stack, not replace each one.
354
+ *
355
+ * @since 4.7.19
356
+ *
357
+ * @param array $post_ids
358
+ *
359
+ * @return Tribe__Repository__Read_Interface
360
+ */
361
+ public function parent_in( $post_ids ) {
362
+ // TODO: Implement parent_in() method.
363
+ }
364
+
365
+ /**
366
+ * Sugar method to set the `post_parent__not_in` argument.
367
+ *
368
+ * Successive calls will stack, not replace each one.
369
+ *
370
+ * @since 4.7.19
371
+ *
372
+ * @param array $post_ids
373
+ *
374
+ * @return Tribe__Repository__Read_Interface
375
+ */
376
+ public function parent_not_in( $post_ids ) {
377
+ // TODO: Implement parent_not_in() method.
378
+ }
379
+
380
+ /**
381
+ * Sugar method to set the `s` argument.
382
+ *
383
+ * Successive calls will replace the search string.
384
+ * This is the default WordPress searh, to search by title,
385
+ * content or excerpt only use the `title`, `content`, `excerpt` filters.
386
+ *
387
+ * @param $search
388
+ *
389
+ * @return Tribe__Repository__Read_Interface
390
+ */
391
+ public function search( $search ) {
392
+ // TODO: Implement search() method.
393
+ }
394
+
395
+ /**
396
+ * Returns the number of posts found matching the query in the current page.
397
+ *
398
+ * While the `found` method will return the number of posts found
399
+ * across all pages this method will only return the number of
400
+ * posts found in the current page.
401
+ * Differently from the `found` method this method will apply the
402
+ * offset if set.
403
+ *
404
+ * @since 4.7.19
405
+ *
406
+ * @return int
407
+ */
408
+ public function count() {
409
+ // TODO: Implement count() method.
410
+ }
411
+
412
+ /**
413
+ * Returns the first post of the page matching the current query.
414
+ *
415
+ * If, by default or because set with the `per_page` method, all
416
+ * posts matching the query should be returned then this will be
417
+ * the first post of all those matching the query.
418
+ *
419
+ * @since 4.7.19
420
+ *
421
+ * @return WP_Post|mixed|null
422
+ *
423
+ * @see Tribe__Repository__Read_Interface::per_page()
424
+ */
425
+ public function first() {
426
+ // TODO: Implement first() method.
427
+ }
428
+
429
+ /**
430
+ * Returns the last post of the page matching the current query.
431
+ *
432
+ * If, by default or because set with the `per_page` method, all
433
+ * posts matching the query should be returned then this will be
434
+ * the last post of all those matching the query.
435
+ *
436
+ * @since 4.7.19
437
+ *
438
+ * @return WP_Post|mixed|null
439
+ *
440
+ * @see Tribe__Repository__Read_Interface::per_page()
441
+ */
442
+ public function last() {
443
+ // TODO: Implement last() method.
444
+ }
445
+
446
+ /**
447
+ * Returns the nth post (1-based) of the page matching the current query.
448
+ *
449
+ * Being 1-based the second post can be fetched using `nth( 2 )`.
450
+ * If, by default or because set with the `per_page` method, all
451
+ * posts matching the query should be returned then this will be
452
+ * the nth post of all those matching the query.
453
+ *
454
+ * @since 4.7.19
455
+ *
456
+ * @param int $n
457
+ *
458
+ * @return WP_Post|mixed|null
459
+ *
460
+ * @see Tribe__Repository__Read_Interface::per_page()
461
+ */
462
+ public function nth( $n ) {
463
+ // TODO: Implement nth() method.
464
+ }
465
+
466
+ /**
467
+ * Returns the first n posts of the page matching the current query.
468
+ *
469
+ * If, by default or because set with the `per_page` method, all
470
+ * posts matching the query should be returned then this method will
471
+ * return the first n posts of all those matching the query.
472
+ *
473
+ * @since 4.7.19
474
+ *
475
+ * @return array An array of posts matching the query.
476
+ *
477
+ * @see Tribe__Repository__Read_Interface::per_page()
478
+ */
479
+ public function take( $n ) {
480
+ // TODO: Implement take() method.
481
+ }
482
+
483
+ /**
484
+ * Plucks a field from all results and returns it.
485
+ *
486
+ * This method will implicitly build and use a `WP_List_Util` instance on the return
487
+ * value of a call to the `all` method.
488
+ *
489
+ * @since 4.9.5
490
+ *
491
+ * @param string $field The field to pluck from each result.
492
+ *
493
+ * @return array An array of the plucked results.
494
+ *
495
+ * @see \wp_list_pluck()
496
+ */
497
+ public function pluck( $field ) {
498
+ // TODO: Implement pluck() method.
499
+ }
500
+
501
+ /**
502
+ * Filters the results according to the specified criteria.
503
+ *
504
+ * This method will implicitly build and use a `WP_List_Util` instance on the return
505
+ * value of a call to the `all` method.
506
+ *
507
+ * @since 4.9.5
508
+ *
509
+ * @param array $args Optional. An array of key => value arguments to match
510
+ * against each object. Default empty array.
511
+ * @param string $operator Optional. The logical operation to perform. 'AND' means
512
+ * all elements from the array must match. 'OR' means only
513
+ * one element needs to match. 'NOT' means no elements may
514
+ * match. Default 'AND'.
515
+ *
516
+ * @return array An array of the filtered results.
517
+ *
518
+ * @see \wp_list_filter()
519
+ */
520
+ public function filter( $args = array(), $operator = 'AND' ) {
521
+ // TODO: Implement filter() method.
522
+ }
523
+
524
+ /**
525
+ * Sorts the results according to the specified criteria.
526
+ *
527
+ * This method will implicitly build and use a `WP_List_Util` instance on the return
528
+ * value of a call to the `all` method.
529
+ *
530
+ * @since 4.9.5
531
+ *
532
+ * @param string|array $orderby Optional. Either the field name to order by or an array
533
+ * of multiple orderby fields as $orderby => $order.
534
+ * @param string $order Optional. Either 'ASC' or 'DESC'. Only used if $orderby
535
+ * is a string.
536
+ * @param bool $preserve_keys Optional. Whether to preserve keys. Default false.
537
+ *
538
+ * @return array An array of the sorted results.
539
+ *
540
+ * @see \wp_list_sort()
541
+ */
542
+ public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false ) {
543
+ // TODO: Implement sort() method.
544
+ }
545
+
546
+ /**
547
+ * Builds a collection on the result of the `all()` method call.
548
+ *
549
+ * @since 4.9.5
550
+ *
551
+ * @return \Tribe__Utils__Post_Collection
552
+ */
553
+ public function collect() {
554
+ // TODO: Implement collect() method.
555
+ }
556
+
557
+ /**
558
+ * Gets the ids of the posts matching the query.
559
+ *
560
+ * @since 4.9.13
561
+ *
562
+ * @return array An array containing the post IDs to update.
563
+ */
564
+ public function get_ids() {
565
+ return $this->get_sets_ids( $this->get_sets() );
566
+ }
567
+
568
+ /**
569
+ * Flattens and returns the post IDs of all events in the a sets collection.
570
+ *
571
+ * @since 4.9.13
572
+ *
573
+ * @param array $sets The sets to parse.
574
+ *
575
+ * @return int[] An array of the sets post IDs.
576
+ */
577
+ protected function get_sets_ids( array $sets ) {
578
+ $ids = array_filter( array_map(
579
+ static function ( Events_Result_Set $set ) {
580
+ return $set->pluck( 'ID' );
581
+ },
582
+ $sets
583
+ ) );
584
+
585
+ if ( ! count( $ids ) ) {
586
+ return [];
587
+ }
588
+
589
+ $ids = array_values( array_map( 'absint', array_unique( array_merge( ...array_values( $ids ) ) ) ) );
590
+
591
+ return $ids;
592
+ }
593
+
594
+ /**
595
+ * Returns an array of result sets, one for each period day.
596
+ *
597
+ * @since 4.9.13
598
+ *
599
+ * @return Events_Result_Set[] An array of result sets, in the shape `[ <Y-m-d> => <Event_Result_Set> ]`.
600
+ */
601
+ public function get_sets() {
602
+ if ( null !== $this->sets ) {
603
+ // Do we have them here?
604
+ return $this->get_sub_set( $this->sets, $this->period_start, $this->period_end );
605
+ }
606
+
607
+ $results = $this->query_for_sets( $this->period_start, $this->period_end );
608
+
609
+ if ( empty( $results ) ) {
610
+ // Store the value, do not run again.
611
+ $this->sets = [];
612
+
613
+ return [];
614
+ }
615
+
616
+ $raw_sets = $this->group_sets_by_start_date( $results );
617
+
618
+ $sets = $this->cast_sets( $raw_sets );
619
+ $sets = $this->add_missing_sets( $sets );
620
+
621
+ if ( $this->cache_results ) {
622
+ $this->set_results_cache( $sets );
623
+ }
624
+
625
+ $this->sets = $sets;
626
+
627
+ if ( $this->has_base_filters ) {
628
+ $this->sets = $this->filter_sets_w_base_repository( $sets );
629
+ }
630
+
631
+ return $this->sets;
632
+ }
633
+
634
+ /**
635
+ * Returns the already fetched set, or a sub-set of it.
636
+ *
637
+ * @since 4.9.13
638
+ *
639
+ * @param array $sets The sets, by day, to get the subset from.
640
+ * @param \DateTimeInterface $start The sub-set start.
641
+ * @param \DateTimeInterface $end The sub-set end.
642
+ *
643
+ * @return Events_Result_Set[] The result sub-set, or the whole set if the dates are the same.
644
+ */
645
+ protected function get_sub_set( array $sets, \DateTimeInterface $start, \DateTimeInterface $end ) {
646
+ // The sets might have been previously fetched and be cached.
647
+ $days = array_keys( $this->sets );
648
+ $request_start_ymd = $start->format( Dates::DBDATEFORMAT );
649
+ $request_end_ymd = $end->format( Dates::DBDATEFORMAT );
650
+ $same_start = $request_start_ymd === reset( $days );
651
+ $same_end = $request_end_ymd === end( $days );
652
+
653
+ if ( $same_start && $same_end ) {
654
+ return $this->sets;
655
+ }
656
+
657
+ if ( $request_start_ymd === $request_end_ymd ) {
658
+ // It's a single day query, just return it.
659
+ return isset( $this->sets[ $request_start_ymd ] ) ? [ $this->sets[ $request_start_ymd ] ] : [];
660
+ }
661
+
662
+ // Let's restrict results to the current request period.
663
+ $offset = array_search( $request_start_ymd, $days, true );
664
+ $length = array_search( $request_end_ymd, $days, true ) - $offset;
665
+
666
+ return array_slice( $sets, $offset, $length, true );
667
+ }
668
+
669
+ /**
670
+ * Queries the database to fetch the sets.
671
+ *
672
+ * @since 4.9.13
673
+ *
674
+ * @return array|false Either the results of the query, or `false` on error.
675
+ */
676
+ protected function query_for_sets( \DateTimeInterface $start, \DateTimeInterface $end ) {
677
+ // Let's try and set the LIMIT as high as we can.
678
+ /** @var \Tribe__Feature_Detection $feature_detection */
679
+ $feature_detection = tribe( 'feature-detection' );
680
+ // Results will not be JSON, but this is a good approximation.
681
+ $example = '{"ID":"23098402348023849","start_date":"2019-11-18 08:00:00",' .
682
+ '"end_date":"2019-11-18 17:00:00","timezone":"America\/New_York","all_day":null,' .
683
+ '"post_status":"publish"}';
684
+ $limit = $feature_detection->mysql_limit_for_string( $example );
685
+
686
+ /**
687
+ * Filters the LIMIT that should be used to fetch event results set from the database.
688
+ *
689
+ * Lower this value on less powerful hosts.
690
+ *
691
+ * @since 4.9.13
692
+ *
693
+ * @param int $limit The SQL LIMIT to use for result set fetching.
694
+ * @param static $this The current repository instance.
695
+ * @param \DateTimeInterface $start The period start date.
696
+ * @param \DateTimeInterface $end The period end date.
697
+ */
698
+ $limit = apply_filters( 'tribe_events_event_period_repository_set_limit', $limit, $this, $start, $end );
699
+ $limit = absint( $limit );
700
+
701
+ $starting_before_period_end = $this->query_for_sets_starting_before_period_end( $limit, $end );
702
+
703
+ if ( empty( $starting_before_period_end ) ) {
704
+ return [];
705
+ }
706
+
707
+ $results = $this->query_for_sets_ending_after_period_start(
708
+ $limit,
709
+ $start,
710
+ array_column( $starting_before_period_end, 'ID' )
711
+ );
712
+
713
+ if ( empty( $results ) ) {
714
+ return [];
715
+ }
716
+
717
+ $starting_before_period_end = array_combine(
718
+ array_column( $starting_before_period_end, 'ID' ),
719
+ $starting_before_period_end
720
+ );
721
+
722
+ foreach ( $results as &$result ) {
723
+ $result['start_date'] = $starting_before_period_end[ $result['ID'] ]['start_date'];
724
+ $result['post_status'] = $starting_before_period_end[ $result['ID'] ]['post_status'];
725
+ }
726
+ unset( $result );
727
+
728
+ $post_ids = array_column( $results, 'ID' );
729
+ $timezone_details = $this->query_for_meta( $limit, '_EventTimezone', $post_ids );
730
+ $all_day_details = $this->query_for_meta( $limit, '_EventAllDay', $post_ids, 'LEFT' );
731
+
732
+ foreach ( $results as &$result ) {
733
+ $result ['timezone'] = $timezone_details[ $result['ID'] ]['_EventTimezone'];
734
+ $result ['all_day'] = (bool) $all_day_details[ $result['ID'] ]['_EventAllDay'];
735
+ }
736
+ unset( $result );
737
+
738
+ return $results;
739
+ }
740
+
741
+ /**
742
+ * Queries for all the events that start before the period ends.
743
+ *
744
+ * @since 4.9.13
745
+ *
746
+ * @param int $limit The value of the LIMIT that should be respected to send queries (in respect
747
+ * to the
748
+ * `$post_in` parameter) or fetch results (the SQL LIMIT clause). This limit
749
+ * should be defined using the
750
+ * `Tribe__Feature_Detection::mysql_limit_for_example` method.
751
+ * @param \DateTimeInterface $end The period end date.
752
+ * @param array $post_in An array of post IDs to limit the search to.
753
+ *
754
+ * @return array A result set, an array of arrays in the shape `[ <ID> => [ 'ID' => <ID>, 'start_date' =>
755
+ * <start_date> ] ]`;
756
+ */
757
+ protected function query_for_sets_starting_before_period_end(
758
+ $limit,
759
+ \DateTimeInterface $end,
760
+ array $post_in = []
761
+ ) {
762
+ global $wpdb;
763
+ $post_type = TEC::POSTTYPE;
764
+
765
+ $query = "
766
+ SELECT p.ID,
767
+ p.post_status,
768
+ start_date.meta_value AS 'start_date'
769
+
770
+ FROM {$wpdb->posts} p
771
+ INNER JOIN {$wpdb->postmeta} start_date
772
+ ON (p.ID = start_date.post_id AND start_date.meta_key = %s)
773
+
774
+ WHERE p.post_type = '{$post_type}'
775
+ -- Starts before the period ends.
776
+ AND start_date.meta_value <= %s";
777
+
778
+ $prepare_args = [
779
+ $this->use_site_timezone ? '_EventStartDateUTC' : '_EventStartDate',
780
+ $end->format( Dates::DBDATETIMEFORMAT ),
781
+ ];
782
+
783
+ return $this->query_w_limit( $limit, $query, $prepare_args, $post_in );
784
+ }
785
+
786
+ /**
787
+ * Runs a query within a SQL LIMIT.
788
+ *
789
+ * The method will run multiple queries if the limit is lower than the number of results or the number of post IDs
790
+ * in the `$post_in` parameter.
791
+ *
792
+ * @since 4.9.13
793
+ *
794
+ * @param int $limit The value of the LIMIT that should be respected to send queries (in respect to
795
+ * the `$post_in` parameter) or fetch results (the SQL LIMIT clause). This limit
796
+ * should be defined using the `Tribe__Feature_Detection::mysql_limit_for_example`
797
+ * method.
798
+ * @param string $query The un-prepared SQL query to run, if should contains placeholders in the format
799
+ * used by the `wpdb::prepare` method.
800
+ * @param array|null $prepare_args An array of arguments that will be used, in order, to prepare the query using
801
+ * the
802
+ * `wpdb::prepare` method.
803
+ * @param array|null $post_in An array of post IDs that will be used to pivot the query. The `$limit`
804
+ * parameter will apply to these values too chunking them if they are too many to
805
+ * avoid hitting MySQL packet size. When applied to post IDs the limit is overly
806
+ * conservative.
807
+ *
808
+ * @return array An array of results. Whether one or more queries ran, the return value will always have the format
809
+ * a single query run would have.
810
+ *
811
+ * @see Tribe__Feature_Detection::mysql_limit_for_example for the method that should be used to set the limit.
812
+ * @see wpdb::prepare() for the format of the placeholders to use to prepare the query.
813
+ */
814
+ protected function query_w_limit( $limit, $query, array $prepare_args = [], array $post_in = [] ) {
815
+ global $wpdb;
816
+
817
+ $post_in = array_filter( array_unique( array_map( 'absint', $post_in ) ) );
818
+
819
+ $prepared = $wpdb->prepare( $query, ...$prepare_args );
820
+
821
+ $page = 0;
822
+ $results = [];
823
+ $chunk = array_splice( $post_in, 0, $limit );
824
+
825
+ do {
826
+ do {
827
+ $interval_where_clause = count( $chunk )
828
+ ? 'AND p.ID IN (' . implode( ',', array_map( 'absint', $chunk ) ) . ')'
829
+ : '';
830
+
831
+ $limit_clause = sprintf( 'LIMIT %d,%d', $page * $limit, $limit );
832
+
833
+ $page ++;
834
+
835
+ $this_query = $prepared . ' ' . $interval_where_clause . ' ' . $limit_clause;
836
+ $these_results = (array) $wpdb->get_results( $this_query, ARRAY_A );
837
+ $results[] = $these_results;
838
+ } while ( $chunk = array_splice( $post_in, 0, $limit ) );
839
+ } while ( ! empty( $these_results ) && is_array( $these_results ) && count( $these_results ) === $limit );
840
+
841
+ return array_merge( ...$results );
842
+ }
843
+
844
+ /**
845
+ * Queries for all the events that end after the period starts.
846
+ *
847
+ * @since 4.9.13
848
+ *
849
+ * @param int $limit The value of the LIMIT that should be respected to send queries (in respect
850
+ * to the
851
+ * `$post_in` parameter) or fetch results (the SQL LIMIT clause). This limit
852
+ * should be defined using the
853
+ * `Tribe__Feature_Detection::mysql_limit_for_example` method.
854
+ * @param \DateTimeInterface $start The period start date.
855
+ * @param array $post_in An array of post IDs to limit the search to.
856
+ *
857
+ * @return array A result set, an array of arrays in the shape `[ <ID> => [ 'ID' => <ID>, 'end_date' => <end_date>
858
+ * ] ]`;
859
+ */
860
+ protected function query_for_sets_ending_after_period_start(
861
+ $limit,
862
+ \DateTimeInterface $start,
863
+ array $post_in = []
864
+ ) {
865
+ global $wpdb;
866
+ $post_type = TEC::POSTTYPE;
867
+
868
+ $query = "
869
+ SELECT p.ID,
870
+ end_date.meta_value AS 'end_date'
871
+
872
+ FROM {$wpdb->posts} p
873
+ INNER JOIN {$wpdb->postmeta} end_date
874
+ ON (p.ID = end_date.post_id AND end_date.meta_key = %s)
875
+
876
+ WHERE p.post_type = '{$post_type}'
877
+ -- Ends after the period starts.
878
+ AND end_date.meta_value >= %s";
879
+
880
+
881
+ $prepare_args = [
882
+ $this->use_site_timezone ? '_EventEndDateUTC' : '_EventEndDate',
883
+ $start->format( Dates::DBDATETIMEFORMAT )
884
+ ];
885
+
886
+ return $this->query_w_limit( $limit, $query, $prepare_args, $post_in );
887
+ }
888
+
889
+ /**
890
+ * Queries the database to fetch all the values of a single meta entry for all the post IDs in the datatbase or in
891
+ * a defined interval.
892
+ *
893
+ * @since 4.9.13
894
+ *
895
+ * @param int $limit The value of the LIMIT that should be respected to send queries (in respect
896
+ * to the
897
+ * `$post_in` parameter) or fetch results (the SQL LIMIT clause). This limit
898
+ * should be defined using the
899
+ * `Tribe__Feature_Detection::mysql_limit_for_example` method.
900
+ * @param string $meta_key The meta key to fetch from the database, this is the value of the `meta_key`
901
+ * column, e.g. `_EventTimezone`.
902
+ * @param array|null $post_ids An array of post IDs to limit the query.
903
+ * @param string $join The type of JOIN to use; defaults to `INNER`, but `LEFT` should be used when
904
+ * fetching meta that might be not set for all posts.
905
+ *
906
+ * @return array An array of meta results, the post IDs as keys.
907
+ *
908
+ * @see Tribe__Feature_Detection::mysql_limit_for_example for the method that should be used to set the limit.
909
+ * @see wpdb::prepare() for the format of the placeholders to use to prepare the query.
910
+ */
911
+ protected function query_for_meta( $limit, $meta_key, array $post_ids = null, $join = 'INNER' ) {
912
+ global $wpdb;
913
+ $post_type = TEC::POSTTYPE;
914
+
915
+ $query = "
916
+ SELECT p.ID, m.meta_value AS %s
917
+
918
+ FROM {$wpdb->posts} p
919
+ {$join} JOIN {$wpdb->postmeta} m
920
+ ON (p.ID = m.post_id AND m.meta_key = %s)
921
+
922
+ WHERE p.post_type = '{$post_type}'";
923
+
924
+ $prepare_args = [ $meta_key, $meta_key ];
925
+
926
+ $results = $this->query_w_limit( $limit, $query, $prepare_args, $post_ids );
927
+
928
+ return array_combine( array_column( $results, 'ID' ), $results );
929
+ }
930
+
931
+ /**
932
+ * Groups a set of raw database results by start date.
933
+ *
934
+ * @since 4.9.13
935
+ *
936
+ * @param array $results A raw set of database results.
937
+ *
938
+ * @return array The database results, grouped by days, in the shape `[ <Y-m-d> => [ ...<results> ] ]`. Each result
939
+ * is an instance `Event_Result`.
940
+ */
941
+ protected function group_sets_by_start_date( $results ) {
942
+ if ( empty( $results ) || ! is_array( $results ) ) {
943
+ return [];
944
+ }
945
+
946
+ $site_timezone = Timezones::build_timezone_object();
947
+
948
+ $use_site_timezone = $this->use_site_timezone;
949
+
950
+ $one_day = Dates::interval( 'P1D' );
951
+
952
+ $sets_by_day = array_reduce( $results,
953
+ static function ( array $buffer, array $result ) use ( $use_site_timezone, $site_timezone, $one_day ) {
954
+ $display_timezone = $use_site_timezone
955
+ ? $site_timezone
956
+ : Timezones::build_timezone_object( $result['timezone'] );
957
+ $start_date = Dates::build_date_object( $result['start_date'], $display_timezone );
958
+ $end_date = Dates::build_date_object( $result['end_date'], $display_timezone );
959
+ if (
960
+ $start_date->format( Dates::DBDATEFORMAT ) === $end_date->format( Dates::DBDATEFORMAT )
961
+ ) {
962
+ $overlapping_days = [ $start_date->format( Dates::DBDATEFORMAT ) ];
963
+ } else {
964
+ /*
965
+ * "Move" the end date, adding a day to it, to make sure the end date is included in the period.
966
+ * Else multi-day events would only overlap the first two dates.
967
+ */
968
+ $moved_end_date = clone $end_date;
969
+ $moved_end_date->add( $one_day );
970
+ $period = new \DatePeriod( $start_date, $one_day, $moved_end_date );
971
+ $overlapping_days = [];
972
+ /** @var \DateTimeInterface $d */
973
+ foreach ( $period as $d ) {
974
+ // This is skipping the end day on multi-day events.
975
+ $overlapping_days[] = $d->format( Dates::DBDATEFORMAT );
976
+ // Sanity check: break when the current day is equal to the event end date.
977
+ $reached_end = $d->format( Dates::DBDATEFORMAT )
978
+ === $end_date->format( Dates::DBDATEFORMAT );
979
+ if ( $reached_end ) {
980
+ break;
981
+ }
982
+ }
983
+ }
984
+
985
+ // Normalize the timezone to the site one.
986
+ $result['start_date'] = $start_date->setTimezone( $site_timezone )->format( 'Y-m-d H:i:s' );
987
+ $result['end_date'] = $end_date->setTimezone( $site_timezone )->format( Dates::DBDATEFORMAT );
988
+
989
+ foreach ( $overlapping_days as $overlap_day ) {
990
+ if ( isset( $buffer[ $overlap_day ] ) ) {
991
+ $buffer[ $overlap_day ][] = new Event_Result( $result );
992
+ } else {
993
+ $buffer[ $overlap_day ] = [ new Event_Result( $result ) ];
994
+ }
995
+ }
996
+
997
+ return $buffer;
998
+ }, [] );
999
+
1000
+
1001
+ return $sets_by_day;
1002
+ }
1003
+
1004
+ /**
1005
+ * Casts each set to an `Event_Result_Set`.
1006
+ *
1007
+ * @since 4.9.13
1008
+ *
1009
+ * @param array $raw_sets The raw sets.
1010
+ *
1011
+ * @return array The set, each element cast to an `Event_Result_Set`.
1012
+ */
1013
+ protected function cast_sets( array $raw_sets ) {
1014
+ $sets = array_combine(
1015
+ array_keys( $raw_sets ),
1016
+ array_map( static function ( $raw_set ) {
1017
+ return Events_Result_Set::from_value( $raw_set );
1018
+ }, $raw_sets )
1019
+ );
1020
+
1021
+ return $sets;
1022
+ }
1023
+
1024
+ /**
1025
+ * Adds to the sets any missing day.
1026
+ *
1027
+ * @since 4.9.13
1028
+ *
1029
+ * @param array $sets The current sets, by day.
1030
+ *
1031
+ * @return array The filled sets.
1032
+ */
1033
+ protected function add_missing_sets( array $sets ) {
1034
+ $period = new \DatePeriod( $this->period_start, Dates::interval( 'P1D' ), $this->period_end );
1035
+ foreach ( $period as $day ) {
1036
+ $day_string = $day->format( Dates::DBDATEFORMAT );
1037
+ if ( ! array_key_exists( $day_string, $sets ) ) {
1038
+ $sets[ $day_string ] = new Events_Result_Set();
1039
+ }
1040
+ }
1041
+
1042
+ ksort( $sets );
1043
+
1044
+ return $sets;
1045
+ }
1046
+
1047
+ /**
1048
+ * Caches the resulting sets using `Tribe__Cache`.
1049
+ *
1050
+ * As a result sets might be cached either in a real object cache or in transients.
1051
+ *
1052
+ * @param array $sets The sets to cache.
1053
+ */
1054
+ protected function set_results_cache( $sets ) {
1055
+ $days = array_keys( $sets );
1056
+ // EOD cutoff does not apply here, we just do it for the interval.
1057
+ $start = Dates::build_date_object( reset( $days ) )->setTime( 0, 0, 0 );
1058
+ $end = Dates::build_date_object( end( $days ) )->setTime( 23, 59, 59 );
1059
+ $one_day = Dates::interval( 'P1D' );
1060
+ $request_period = new \DatePeriod( $start, $one_day, $end );
1061
+
1062
+ /** @var \Tribe__Cache $cache */
1063
+ $cache = tribe( 'cache' );
1064
+ $trigger = Cache_Listener::TRIGGER_SAVE_POST;
1065
+
1066
+ $periods_key = static::get_cache_key( 'periods' );
1067
+ $cached_periods = $cache->get_transient( $periods_key, $trigger );
1068
+ $cached_periods[] = [ $start->format( Dates::DBDATEFORMAT ), $end->format( Dates::DBDATEFORMAT ) ];
1069
+ $cache->set_transient( $periods_key, $cached_periods, WEEK_IN_SECONDS, $trigger );
1070
+
1071
+ /** @var \DateTime $day */
1072
+ foreach ( $request_period as $day ) {
1073
+ $day_string = $day->format( Dates::DBDATEFORMAT );
1074
+ $day_event_results = Arr::get( $sets, $day_string, [] );
1075
+ $cache->set_transient(
1076
+ static::get_cache_key( $day_string . '_set' ),
1077
+ $day_event_results,
1078
+ WEEK_IN_SECONDS,
1079
+ $trigger
1080
+ );
1081
+ }
1082
+ }
1083
+
1084
+ /**
1085
+ * Returns the full cache key for a partial key.
1086
+ *
1087
+ * @since 4.9.13
1088
+ *
1089
+ * @param string $key The partial key.
1090
+ *
1091
+ * @return string The full cache key.
1092
+ */
1093
+ private static function get_cache_key( $key ) {
1094
+ $key = preg_replace( '/^tribe_event_period_repository_/', '', $key );
1095
+
1096
+ return 'tribe_event_period_repository_' . $key;
1097
+ }
1098
+
1099
+ /**
1100
+ * Further filters the sets using a default event repository to handle the non-period related filters.
1101
+ *
1102
+ * @since 4.9.13
1103
+ *
1104
+ * @param array $sets The sets found by this repository so far.
1105
+ */
1106
+ protected function filter_sets_w_base_repository( array $sets ) {
1107
+ // Restrict the base repository to only operate on the IDs we already have.
1108
+ $matching_ids = $this->base_repository->in( $this->get_sets_ids( $sets ) )->get_ids();
1109
+
1110
+ if ( empty( $matching_ids ) ) {
1111
+ return [];
1112
+ }
1113
+
1114
+ /** @var Events_Result_Set $set */
1115
+ $filtered_sets = array_map( static function ( Events_Result_Set $set ) use ( $matching_ids ) {
1116
+ return $set->filter( static function ( Event_Result $result ) use ( $matching_ids ) {
1117
+ return in_array( $result->id(), $matching_ids, true );
1118
+ } );
1119
+ }, $sets );
1120
+
1121
+ return $filtered_sets;
1122
+ }
1123
+
1124
+ /**
1125
+ * An alias of the `get_sets` method to stick with the convention of naming database-querying methods w/ "fetch".
1126
+ *
1127
+ * This method will "warm up" the instance cache of the repository fetching the events in the period.
1128
+ *
1129
+ * @since 4.9.13
1130
+ */
1131
+ public function fetch() {
1132
+ $this->get_sets();
1133
+ }
1134
+
1135
+ /**
1136
+ * Short-hand to fetch events for a single date.
1137
+ *
1138
+ * A wrapper around the `by_period` method.
1139
+ *
1140
+ * @since 4.9.13
1141
+ *
1142
+ * @param string|int|\DateTimeInterface $date The day date.
1143
+ *
1144
+ * @return $this For chaining.
1145
+ */
1146
+ public function by_date( $date ) {
1147
+ $normalized = Dates::build_date_object( $date )->format( Dates::DBDATEFORMAT );
1148
+
1149
+ return $this->by_period( tribe_beginning_of_day( $normalized ), tribe_end_of_day( $normalized ) );
1150
+ }
1151
+
1152
+ /**
1153
+ * Sets up the filter to fetch events sets in a period.
1154
+ *
1155
+ * @since 4.9.13
1156
+ *
1157
+ * @param string|int|\DateTimeInterface $start_date The period start date.
1158
+ * @param string|int|\DateTimeInterface $end_date The period end date.
1159
+ *
1160
+ * @return static For chaining.
1161
+ */
1162
+ public function by_period( $start_date, $end_date ) {
1163
+ if ( null !== $this->sets ) {
1164
+ // Do we REALLY need to re-fetch?
1165
+ $the_start = Dates::build_date_object( $start_date );
1166
+ $the_end = Dates::build_date_object( $end_date );
1167
+ $set_days = array_keys( $this->sets );
1168
+
1169
+ if (
1170
+ $the_start->format( Dates::DBDATEFORMAT ) < reset( $set_days )
1171
+ || $the_end->format( Dates::DBDATEFORMAT ) > end( $set_days )
1172
+ ) {
1173
+ // We need to re-fetch.
1174
+ $this->sets = null;
1175
+ }
1176
+ }
1177
+
1178
+ $this->period_start = Dates::build_date_object( $start_date );
1179
+ $this->period_end = Dates::build_date_object( $end_date );
1180
+ $this->use_site_timezone = Timezones::is_mode( Timezones::SITE_TIMEZONE );
1181
+
1182
+ if ( $this->sets === null && $this->cache_results ) {
1183
+ // Maybe fetch them from the cache?
1184
+ $this->sets = $this->fetch_cached_sets();
1185
+ }
1186
+
1187
+ return $this;
1188
+ }
1189
+
1190
+ /**
1191
+ * Try and fetch sets from cache to share data between diff. instances of the repository.
1192
+ *
1193
+ * In cache we store periods.
1194
+ * A cached period has a start and an end.
1195
+ * If the current request period overlaps a cached period, then we fetch sets for each day in the period from the
1196
+ * cache.
1197
+ *
1198
+ * @since 4.9.13
1199
+ *
1200
+ * @return array|null Either a set of results fetched from the cache, or `null` if nothing was found in cache.
1201
+ */
1202
+ protected function fetch_cached_sets() {
1203
+ /** @var \Tribe__Cache $cache */
1204
+ $cache = tribe( 'cache' );
1205
+ $trigger = Cache_Listener::TRIGGER_SAVE_POST;
1206
+ // Try and fetch them from the shared cache.
1207
+ $periods_key = static::get_cache_key( 'periods' );
1208
+
1209
+ $cached_periods = (array)$cache->get_transient( $periods_key, $trigger );
1210
+
1211
+ foreach ( $cached_periods as list( $start_date, $end_date ) ) {
1212
+ if (
1213
+ $this->period_start->format( Dates::DBDATEFORMAT ) <= $end_date
1214
+ && $this->period_end->format( Dates::DBDATEFORMAT ) >= $start_date
1215
+ ) {
1216
+ $sets = [];
1217
+ $period = new \DatePeriod(
1218
+ $this->period_start,
1219
+ Dates::interval( 'P1D' ),
1220
+ $this->period_end
1221
+ );
1222
+ /** @var \DateTimeInterface $day */
1223
+ foreach ( $period as $day ) {
1224
+ $day_string = $day->format( Dates::DBDATEFORMAT );
1225
+
1226
+ $sets[ $day_string ] = unserialize( $cache->get_transient(
1227
+ static::get_cache_key( $day_string . '_set' ),
1228
+ $trigger
1229
+ ) );
1230
+ }
1231
+
1232
+ return $sets;
1233
+ break;
1234
+ }
1235
+ }
1236
+
1237
+ return null;
1238
+ }
1239
+
1240
+ /**
1241
+ * Shorthand method to get the first set of a search.
1242
+ *
1243
+ * @since 4.9.13
1244
+ *
1245
+ * @return Events_Result_Set Either the first found set, or an empty set.
1246
+ */
1247
+ public function get_set() {
1248
+ $sets = $this->get_sets();
1249
+
1250
+ return count( $sets ) ? reset( $sets ) : new Events_Result_Set;
1251
+ }
1252
+
1253
+ /**
1254
+ * Sets, or unsets if the passed value is `null`, the base repository used by this repository.
1255
+ *
1256
+ * @since 4.9.13
1257
+ *
1258
+ * @param Core_Read_Interface $base_repository The base repository this repository should use; a `null` value will
1259
+ * unset it.
1260
+ */
1261
+ public function set_base_repository( Core_Read_Interface $base_repository = null ) {
1262
+ $this->base_repository = $base_repository;
1263
+ }
1264
+ }
src/Tribe/Views/V2/Repository/Event_Result.php ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * A value object representing an event query database result and the minimal entity of information required to work
4
+ * with events.
5
+ *
6
+ * @since 4.9.13
7
+ *
8
+ * @package Tribe\Events\Views\V2\Repository
9
+ */
10
+
11
+ namespace Tribe\Events\Views\V2\Repository;
12
+
13
+ /**
14
+ * Class Event_Result
15
+ *
16
+ * @since 4.9.13
17
+ *
18
+ * @package Tribe\Events\Views\V2\Repository
19
+ */
20
+ class Event_Result {
21
+
22
+ /**
23
+ * An array of data keys that are required for an event result to be valid.
24
+ *
25
+ * @since 4.9.13
26
+ *
27
+ * @var array
28
+ */
29
+ protected static $required_keys = [ 'ID', 'post_status', 'start_date', 'end_date', 'timezone', 'all_day' ];
30
+ /**
31
+ * The data wrapped by the value object.
32
+ *
33
+ * @since 4.9.13
34
+ *
35
+ * @var array
36
+ */
37
+ protected $data = [];
38
+
39
+ /**
40
+ * Event_Result constructor.
41
+ *
42
+ * @param array $result
43
+ */
44
+ public function __construct( array $data ) {
45
+ foreach ( static::$required_keys as $required_key ) {
46
+ if ( ! array_key_exists( $required_key, $data ) ) {
47
+ throw new \InvalidArgumentException( 'The "' . $required_key . '" data key is missing!' );
48
+ }
49
+ }
50
+ $this->data = $data;
51
+ // Normalized the `all_day` flag property.
52
+ $this->data['all_day'] = ! empty( $this->data['all_day'] );
53
+ }
54
+
55
+ /**
56
+ * Builds and returns a result set from an array of values.
57
+ *
58
+ * @since 4.9.13
59
+ *
60
+ * @param array $value The value to build the instance from.
61
+ *
62
+ * @return static An result instance.
63
+ */
64
+ public static function from_value( $value ) {
65
+ return $value instanceof static ? $value : new static( $value );
66
+ }
67
+
68
+ /**
69
+ * Returns the event post ID.
70
+ *
71
+ * @since 4.9.13
72
+ *
73
+ * @return int The event post ID.
74
+ */
75
+ public function id() {
76
+ return (int) $this->data['ID'];
77
+ }
78
+
79
+ /**
80
+ * Returns the event start date in the site timezone.
81
+ *
82
+ * @since 4.9.13
83
+ *
84
+ * @return string The event start date and time, in the `Y-m-d H:i:s` format.
85
+ */
86
+ public function start_date() {
87
+ return $this->data['start_date'];
88
+ }
89
+
90
+ /**
91
+ * Returns the event end date in the site timezone.
92
+ *
93
+ * @since 4.9.13
94
+ *
95
+ * @return string The event end date and time, in the `Y-m-d H:i:s` format.
96
+ */
97
+ public function end_date() {
98
+ return $this->data['end_date'];
99
+ }
100
+
101
+ /**
102
+ * Returns the event timezone string.
103
+ *
104
+ * @since 4.9.13
105
+ *
106
+ * @return string The event timezone string.
107
+ */
108
+ public function timezone() {
109
+ return $this->data['timezone'];
110
+ }
111
+
112
+ /**
113
+ * Returns a flag indicating whether the event is an all-day one or not.
114
+ *
115
+ * @since 4.9.13
116
+ *
117
+ * @return bool Whether the event is an all-day one or not.
118
+ */
119
+ public function all_day() {
120
+ return $this->data['all_day'];
121
+ }
122
+
123
+ /**
124
+ * Returns the event post status.
125
+ *
126
+ * @since 4.9.13
127
+ *
128
+ * @return bool The event post status.
129
+ */
130
+ public function status() {
131
+ return $this->data['post_status'];
132
+ }
133
+
134
+ /**
135
+ * Dumps the event result data to array.
136
+ *
137
+ * @since 4.9.13
138
+ *
139
+ * @return array The event result data.
140
+ */
141
+ public function to_array() {
142
+ return $this->data;
143
+ }
144
+
145
+ public function __get( $name ) {
146
+ if ( isset( $this->data[ $name ] ) ) {
147
+ return $this->data[ $name ];
148
+ }
149
+
150
+ throw new \InvalidArgumentException( 'Property "' . $name . '" is not accessible or defined on Event Result.' );
151
+ }
152
+
153
+ /**
154
+ * Sets a property on the result, returning a modified clone.
155
+ *
156
+ * @since 4.9.13
157
+ *
158
+ * @param string $name The name of the property to set.
159
+ * @param mixed $value The property value.
160
+ *
161
+ * @return Event_Result A clone of this result.
162
+ */
163
+ public function __set( $name, $value ) {
164
+ $clone = clone $this;
165
+ $clone->{$name} = $value;
166
+
167
+ return $clone;
168
+ }
169
+
170
+ /**
171
+ * Checks whether a data entry is set or not.
172
+ *
173
+ * @since 4.9.13
174
+ *
175
+ * @param string $name The name of the data entry to set.
176
+ *
177
+ * @return bool Whether a data entry is set or not.
178
+ */
179
+ public function __isset( $name ) {
180
+ return isset( $this->data[ $name ] );
181
+ }
182
+ }
src/Tribe/Views/V2/Repository/Events_Result_Set.php ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * A collection of Event_Results.
4
+ *
5
+ * @since 4.9.13
6
+ *
7
+ * @package Tribe\Events\Views\V2\Repository
8
+ */
9
+
10
+ namespace Tribe\Events\Views\V2\Repository;
11
+
12
+ use Tribe\Utils\Collection_Interface;
13
+ use Tribe\Utils\Collection_Trait;
14
+ use Tribe__Utils__Array as Arr;
15
+
16
+ /**
17
+ * Class Events_Result_Set
18
+ *
19
+ * @since 4.9.13
20
+ *
21
+ * @package Tribe\Events\Views\V2\Repository
22
+ */
23
+ class Events_Result_Set implements Collection_Interface {
24
+ use Collection_Trait;
25
+
26
+ /**
27
+ * An array of event results in this result set.
28
+ *
29
+ * @since 4.9.13
30
+ *
31
+ * @var array
32
+ */
33
+ protected $items;
34
+
35
+ /**
36
+ * Events_Result_Set constructor.
37
+ *
38
+ * @param Event_Result[]|array $event_results An array of event results.
39
+ */
40
+ public function __construct( array $event_results = [] ) {
41
+ $this->items = $this->normalize_event_results( $event_results );
42
+ }
43
+
44
+ /**
45
+ * Builds a result set from different type of values.
46
+ *
47
+ * @since 4.9.13
48
+ *
49
+ * @param mixed $value A result set, that will be returned intact, an array of event results
50
+ *
51
+ * @return Events_Result_Set The original set, a set built on an array of `Event_Result` instances, or a set
52
+ * built on an empty array if the set could not be built.
53
+ */
54
+ public static function from_value( $value ) {
55
+ if ( $value instanceof Events_Result_Set ) {
56
+ return $value;
57
+ }
58
+
59
+ if ( is_array( $value ) ) {
60
+ try {
61
+ return new Events_Result_Set( $value );
62
+ } catch ( \Exception $e ) {
63
+ return new Events_Result_Set( [] );
64
+ }
65
+ }
66
+
67
+ return new Events_Result_Set( [] );
68
+ }
69
+
70
+ public function count() {
71
+ return count( $this->items );
72
+ }
73
+
74
+ public function order_by( $order_by, $order ) {
75
+ $order = strtoupper( $order );
76
+ if ( ! in_array( $order, [ 'ASC', 'DESC' ], true ) ) {
77
+ throw new \InvalidArgumentException( 'Order "' . $order . '" is not supported, only "ASC" and "DESC" are.' );
78
+ }
79
+
80
+ // @todo @be here support more ordering criteria than date.
81
+ $order_by_key_map = [
82
+ 'event_date' => 'start_date',
83
+ ];
84
+
85
+ $order_by_key = Arr::get( $order_by_key_map, $order_by, 'start_date' );
86
+
87
+ /*
88
+ * The `wp_list_sort` function will convert each element of the set in an array.
89
+ * Since we cannot control that `(array)$item` cast, we pre-convert each
90
+ * element into an array and convert it back to a set of `Event_Result` after the sorting.
91
+ */
92
+ $this->items = static::from_value(
93
+ wp_list_sort(
94
+ $this->to_array(),
95
+ $order_by_key,
96
+ $order
97
+ )
98
+ );
99
+
100
+ return $this;
101
+ }
102
+
103
+ /**
104
+ * {@inheritDoc}
105
+ */
106
+ public function all() {
107
+ return $this->items;
108
+ }
109
+
110
+ /**
111
+ * {@inheritDoc}
112
+ */
113
+ public function jsonSerialize() {
114
+ return wp_json_encode( $this->items );
115
+ }
116
+
117
+ /**
118
+ * Plucks a key from all the event results in the collection.
119
+ *
120
+ * @since 4.9.13
121
+ *
122
+ * @param string $column The key to pluck.
123
+ *
124
+ * @return array An array of all the values associated to the key for each event result in the set.
125
+ */
126
+ public function pluck( $column ) {
127
+ return wp_list_pluck( $this->items, $column );
128
+ }
129
+
130
+ /**
131
+ * Iterates over the result set and to return the array version of each result.
132
+ *
133
+ * @since 4.9.13
134
+ *
135
+ * @return array An array of arrays, each one the array version of an `Event_Result`.
136
+ */
137
+ public function to_array() {
138
+ return array_map( static function ( Event_Result $event_result ) {
139
+ return $event_result->to_array();
140
+ }, $this->items );
141
+ }
142
+
143
+ /**
144
+ * Overrides the base `Collection_Trait` implementation to normalize all the items in the result set.
145
+ *
146
+ * @since 4.9.13
147
+ *
148
+ * @param string $data The serialized data.
149
+ */
150
+ public function unserialize( $data ) {
151
+ $event_results = unserialize( $data );
152
+ $this->items = $this->normalize_event_results( $event_results );
153
+ }
154
+
155
+ /**
156
+ * Normalizes the event results in this set ensuring each one is an instance of `Event_Result`.
157
+ *
158
+ * @since 4.9.13
159
+ *
160
+ * @param array $event_results A set of event results in array or object format..
161
+ *
162
+ * @return Event_Result[] The normalized set of results.
163
+ */
164
+ protected function normalize_event_results( array $event_results ) {
165
+ return array_map( static function ( $result ) {
166
+ return Event_Result::from_value( $result );
167
+ }, $event_results );
168
+ }
169
+ }
src/Tribe/Views/V2/Service_Provider.php CHANGED
@@ -24,8 +24,9 @@ class Service_Provider extends \tad_DI52_ServiceProvider {
24
  require_once tribe( 'tec.main' )->plugin_path . 'src/functions/views/provider.php';
25
 
26
  if ( ! tribe_events_views_v2_is_enabled() ) {
27
- // Deactivates upgrade tab
28
  add_filter( 'tribe_events_show_upgrade_tab', '__return_false' );
 
29
 
30
  return;
31
  }
24
  require_once tribe( 'tec.main' )->plugin_path . 'src/functions/views/provider.php';
25
 
26
  if ( ! tribe_events_views_v2_is_enabled() ) {
27
+
28
  add_filter( 'tribe_events_show_upgrade_tab', '__return_false' );
29
+ add_filter( 'tribe_events_views_v2_should_smart_activate', '__return_false' );
30
 
31
  return;
32
  }
src/Tribe/Views/V2/Template.php CHANGED
@@ -12,6 +12,7 @@ use Tribe\Traits\Cache_User;
12
  use Tribe__Repository__Interface as Repository_Interface;
13
  use Tribe__Template as Base_Template;
14
  use Tribe__Utils__Array as Arr;
 
15
 
16
  /**
17
  * Class Template
@@ -155,6 +156,25 @@ class Template extends Base_Template {
155
  return parent::get_template_file( 'base' );
156
  }
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  /**
159
  * Returns the absolute path to the view "not found" template file.
160
  *
12
  use Tribe__Repository__Interface as Repository_Interface;
13
  use Tribe__Template as Base_Template;
14
  use Tribe__Utils__Array as Arr;
15
+ use WP_Post;
16
 
17
  /**
18
  * Class Template
156
  return parent::get_template_file( 'base' );
157
  }
158
 
159
+ /**
160
+ * Sets up the post data and replace the global post variable on all required places.
161
+ *
162
+ * @since 4.9.13
163
+ *
164
+ * @param WP_Post $event Which event will replace the Post for the templates
165
+ *
166
+ * @return bool|void Returns whatever WP_Query::setup_postdata() sends back.
167
+ */
168
+ public function setup_postdata( WP_Post $event ) {
169
+ global $post, $wp_query;
170
+
171
+ // Replace the global $post with the event given.
172
+ $post = $event;
173
+
174
+ // Setup Post data with the info passed.
175
+ return $wp_query->setup_postdata( $post );
176
+ }
177
+
178
  /**
179
  * Returns the absolute path to the view "not found" template file.
180
  *
src/Tribe/Views/V2/Template/Excerpt.php CHANGED
@@ -63,24 +63,12 @@ class Excerpt extends Base_Template {
63
  * @return string The excerpt read more link modified, if necessary.
64
  */
65
  public function maybe_filter_excerpt_more( $link ) {
66
- /**
67
- * Because `maybe_filter_excerpt_more` needs to call `tribe_get_event` it creates
68
- * a infinite loop with adding excerpt calls again.
69
- */
70
- remove_filter( 'excerpt_more', [ tribe( Hooks::class ), 'filter_excerpt_more' ], 50 );
71
-
72
  if ( is_admin() ) {
73
  return $link;
74
  }
75
 
76
  $event = tribe_get_event( get_the_ID() );
77
 
78
- /**
79
- * Because `maybe_filter_excerpt_more` needs to call `tribe_get_event` it creates
80
- * a infinite loop with adding excerpt calls again.
81
- */
82
- add_filter( 'excerpt_more', [ tribe( Hooks::class ), 'filter_excerpt_more' ], 50 );
83
-
84
  $template = strtolower( get_template() );
85
 
86
  // Check if theme is twentyseventeen.
63
  * @return string The excerpt read more link modified, if necessary.
64
  */
65
  public function maybe_filter_excerpt_more( $link ) {
 
 
 
 
 
 
66
  if ( is_admin() ) {
67
  return $link;
68
  }
69
 
70
  $event = tribe_get_event( get_the_ID() );
71
 
 
 
 
 
 
 
72
  $template = strtolower( get_template() );
73
 
74
  // Check if theme is twentyseventeen.
src/Tribe/Views/V2/Template/Page.php CHANGED
@@ -270,7 +270,7 @@ class Page {
270
  }
271
 
272
  // We wont hijack in case we are not dealing with a Post Type query
273
- if ( ! in_array( TEC::POSTTYPE, (array) $query->get( 'post_type' ) ) ) {
274
  $should_hijack = false;
275
  }
276
 
270
  }
271
 
272
  // We wont hijack in case we are not dealing with a Post Type query
273
+ if ( empty( $query->tribe_is_event_query ) ) {
274
  $should_hijack = false;
275
  }
276
 
src/Tribe/Views/V2/Template/Settings/Advanced_Display.php CHANGED
@@ -48,12 +48,13 @@ class Advanced_Display {
48
  $before = convert_chars( $before );
49
  $before = wpautop( $before );
50
  $before = do_shortcode( stripslashes( shortcode_unautop( $before ) ) );
 
51
 
52
  /**
53
  * Filter imported from V1 of Views, kept since there was no requirement to
54
  * remove the backwards compatibility here.
55
  *
56
- * @since ??? Unsure which verison this was introduced to the codebase.
57
  * @since 4.9.11 Moved to the a class method in V2, and removed Loader HTML.
58
  *
59
  * @param string $before HTML after passing all the params.
@@ -91,6 +92,7 @@ class Advanced_Display {
91
  $after = convert_chars( $after );
92
  $after = wpautop( $after );
93
  $after = do_shortcode( stripslashes( shortcode_unautop( $after ) ) );
 
94
 
95
  /**
96
  * Filter imported from V1 of Views, kept since there was no requirement to
48
  $before = convert_chars( $before );
49
  $before = wpautop( $before );
50
  $before = do_shortcode( stripslashes( shortcode_unautop( $before ) ) );
51
+ $before = force_balance_tags( $before );
52
 
53
  /**
54
  * Filter imported from V1 of Views, kept since there was no requirement to
55
  * remove the backwards compatibility here.
56
  *
57
+ * @since ??? Unsure which version this was introduced to the codebase.
58
  * @since 4.9.11 Moved to the a class method in V2, and removed Loader HTML.
59
  *
60
  * @param string $before HTML after passing all the params.
92
  $after = convert_chars( $after );
93
  $after = wpautop( $after );
94
  $after = do_shortcode( stripslashes( shortcode_unautop( $after ) ) );
95
+ $after = force_balance_tags( $after );
96
 
97
  /**
98
  * Filter imported from V1 of Views, kept since there was no requirement to
src/Tribe/Views/V2/Template/Title.php CHANGED
@@ -101,10 +101,6 @@ class Title {
101
  $context = $this->context ?: tribe_context();
102
  $posts = $this->get_posts();
103
 
104
- if ( 'single-event' === $context->get( 'view' ) ) {
105
- return $current_title;
106
- }
107
-
108
  if ( $context->is( 'featured' ) ) {
109
  $this->events_label_plural = sprintf(
110
  _x( 'Featured %s', 'featured events title', 'the-events-calendar' ),
101
  $context = $this->context ?: tribe_context();
102
  $posts = $this->get_posts();
103
 
 
 
 
 
104
  if ( $context->is( 'featured' ) ) {
105
  $this->events_label_plural = sprintf(
106
  _x( 'Featured %s', 'featured events title', 'the-events-calendar' ),
src/Tribe/Views/V2/Template_Bootstrap.php CHANGED
@@ -15,6 +15,8 @@ use Tribe__Events__Rewrite as Rewrite;
15
  use Tribe__Notices;
16
  use Tribe__Utils__Array as Arr;
17
  use WP_Query;
 
 
18
 
19
 
20
  /**
@@ -54,7 +56,9 @@ class Template_Bootstrap {
54
  * @return void
55
  */
56
  public function disable_v1() {
57
- remove_action( 'plugins_loaded', [ 'Tribe__Events__Templates', 'init' ] );
 
 
58
  }
59
 
60
  /**
@@ -141,6 +145,25 @@ class Template_Bootstrap {
141
  return $html;
142
  }
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  /**
145
  * Gets the View HTML
146
  *
@@ -158,7 +181,7 @@ class Template_Bootstrap {
158
  if (
159
  'single-event' === $view_slug
160
  && ! tribe_is_showing_all()
161
- && ! \Tribe__Templates::is_embed()
162
  ) {
163
  $html = $this->get_v1_single_event_html();
164
  } elseif ( isset( $query->query_vars['tribe_events_views_kitchen_sink'] ) ) {
@@ -232,12 +255,18 @@ class Template_Bootstrap {
232
  * @return string Path to the File that initalizes the template
233
  */
234
  public function filter_template_include( $template ) {
235
-
236
  // Determine if we should load bootstrap or bail.
237
  if ( ! $this->should_load() ) {
238
  return $template;
239
  }
240
 
 
 
 
 
 
 
 
241
  return $this->get_template_object()->get_path();
242
  }
243
 
15
  use Tribe__Notices;
16
  use Tribe__Utils__Array as Arr;
17
  use WP_Query;
18
+ use Tribe__Templates as V1_Templates;
19
+ use Tribe__Events__Templates as V1_Event_Templates;
20
 
21
 
22
  /**
56
  * @return void
57
  */
58
  public function disable_v1() {
59
+ remove_filter( 'tribe_events_before_html', [ TEC::instance(), 'before_html_data_wrapper' ] );
60
+ remove_filter( 'tribe_events_after_html', [ TEC::instance(), 'after_html_data_wrapper' ] );
61
+ remove_action( 'plugins_loaded', [ V1_Event_Templates::class, 'init' ] );
62
  }
63
 
64
  /**
145
  return $html;
146
  }
147
 
148
+ /**
149
+ * Fetches the template for the Single Embed Event page using the legacy view system.
150
+ *
151
+ * @since 4.9.13
152
+ *
153
+ * @return string
154
+ */
155
+ protected function get_v1_embed_template_path() {
156
+ global $post;
157
+ $query = tribe_get_global_query_object();
158
+
159
+ if ( ! tribe_is_showing_all() && tribe_is_past_event() ) {
160
+ Tribe__Notices::set_notice( 'event-past', sprintf( esc_html__( 'This %s has passed.', 'the-events-calendar' ), tribe_get_event_label_singular_lowercase() ) );
161
+ }
162
+
163
+ $template_path = V1_Event_Templates::getTemplateHierarchy( 'embed' );
164
+ return $template_path;
165
+ }
166
+
167
  /**
168
  * Gets the View HTML
169
  *
181
  if (
182
  'single-event' === $view_slug
183
  && ! tribe_is_showing_all()
184
+ && ! V1_Templates::is_embed()
185
  ) {
186
  $html = $this->get_v1_single_event_html();
187
  } elseif ( isset( $query->query_vars['tribe_events_views_kitchen_sink'] ) ) {
255
  * @return string Path to the File that initalizes the template
256
  */
257
  public function filter_template_include( $template ) {
 
258
  // Determine if we should load bootstrap or bail.
259
  if ( ! $this->should_load() ) {
260
  return $template;
261
  }
262
 
263
+ $context = tribe_context();
264
+ $view_slug = $context->get( 'view' );
265
+
266
+ if ( V1_Templates::is_embed() || 'embed' === $view_slug ) {
267
+ return $this->get_v1_embed_template_path();
268
+ }
269
+
270
  return $this->get_template_object()->get_path();
271
  }
272
 
src/Tribe/Views/V2/Utils/Separators.php CHANGED
@@ -5,9 +5,10 @@
5
  * @since 4.9.4
6
  * @package Tribe\Events\Views\V2\Utils
7
  */
 
8
  namespace Tribe\Events\Views\V2\Utils;
9
 
10
- use Tribe__Utils__Array as Arr;
11
 
12
  /**
13
  * Class Utils Separators
@@ -20,31 +21,64 @@ class Separators {
20
  * Determines if a given event from a list of events should have a month separator
21
  * for the List view template structure.
22
  *
 
 
 
 
23
  * @since 4.9.4
24
  *
25
- * @param array $events WP_Post or numeric ID for events
26
- * @param WP_Post|int $event Event we want to determine
 
 
27
  *
28
- * @return boolean
29
  */
30
- public static function should_have_month( $events, $event ) {
31
  if ( ! is_array( $events ) ) {
32
  return false;
33
  }
34
 
35
- $ids = array_map( static function( $event ) {
36
- return absint( is_numeric( $event ) ? $event : $event->ID );
37
- }, $events );
38
 
39
- $event_id = is_numeric( $event ) ? $event : $event->ID;
40
 
41
- $start_dates = array_map( static function( $id ) {
42
- return tribe_get_start_date( $id, true, 'Y-m' );
43
- }, $ids );
 
 
 
 
 
44
 
45
- $start_month_ids = array_unique( array_combine( $ids, $start_dates ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
- return isset( $start_month_ids[ $event_id ] );
48
  }
49
 
50
  /**
@@ -53,8 +87,8 @@ class Separators {
53
  *
54
  * @since 4.9.5
55
  *
56
- * @param array $events WP_Post or numeric ID for events
57
- * @param WP_Post|int $event Event we want to determine
58
  *
59
  * @return boolean
60
  */
@@ -70,7 +104,7 @@ class Separators {
70
  $event_id = is_numeric( $event ) ? $event : $event->ID;
71
 
72
  $start_hours = array_map( static function( $id ) {
73
- return tribe_get_start_date( $id, true, 'Y-m-d H' );
74
  }, $ids );
75
 
76
  $start_hours_ids = array_unique( array_combine( $ids, $start_hours ) );
@@ -123,4 +157,4 @@ class Separators {
123
 
124
  return $should_have;
125
  }
126
- }
5
  * @since 4.9.4
6
  * @package Tribe\Events\Views\V2\Utils
7
  */
8
+
9
  namespace Tribe\Events\Views\V2\Utils;
10
 
11
+ use Tribe__Date_Utils as Dates;
12
 
13
  /**
14
  * Class Utils Separators
21
  * Determines if a given event from a list of events should have a month separator
22
  * for the List view template structure.
23
  *
24
+ * Note that events will NOT be sorted by date for this check: this is by design. There are other criteria by which
25
+ * events might be sorted this method should not interfere with.
26
+ * The method will perform the check using the "display" date of the events since this is a front-end facing method.
27
+ *
28
  * @since 4.9.4
29
  *
30
+ * @param array $events WP_Post or numeric ID for events.
31
+ * @param \WP_Post|int $event Event we want to check.
32
+ * @param string|\DateTimeInterface|null $request_date A request date that should be used as context for the
33
+ * evaluation.
34
  *
35
+ * @return boolean Whether the event, in the context of this event set, should show the month separator or not.
36
  */
37
+ public static function should_have_month( $events, $event, $request_date = null ) {
38
  if ( ! is_array( $events ) ) {
39
  return false;
40
  }
41
 
42
+ $events = array_filter( array_map( 'tribe_get_event', $events ), static function ( $event ) {
43
+ return $event instanceof \WP_Post;
44
+ } );
45
 
46
+ $event = tribe_get_event( $event );
47
 
48
+ if ( empty( $events ) || ! $event instanceof \WP_Post ) {
49
+ return false;
50
+ }
51
+
52
+ if ( $event->ID === reset( $events )->ID ) {
53
+ // The first event in a set should always trigger the month separator display.
54
+ return true;
55
+ }
56
 
57
+ if ( null !== $request_date ) {
58
+ $request_date = Dates::build_date_object( $request_date );
59
+ }
60
+
61
+ // Reduce events to only keep the starting ones.
62
+ $start_events_ids = array_unique(
63
+ array_combine(
64
+ wp_list_pluck( $events, 'ID' ),
65
+ array_map( static function ( \WP_Post $event ) use ( $request_date ) {
66
+ /*
67
+ * If we have a request date we "move forward" the event to it.
68
+ * If the event is in this set, then we assume it fits.
69
+ * This is usually the case w/ multi-day events that start "in the past" in relation to a request
70
+ * date; in that case we display them not in their original month, but in the request date one.
71
+ */
72
+ $the_date = null !== $request_date
73
+ ? max( $event->dates->start_display, $request_date )
74
+ : $event->dates->start_display;
75
+
76
+ return $the_date->format( 'Y-m' );
77
+ }, $events )
78
+ )
79
+ );
80
 
81
+ return $event->ID === array_search( $event->dates->start_display->format( 'Y-m' ), $start_events_ids, true );
82
  }
83
 
84
  /**
87
  *
88
  * @since 4.9.5
89
  *
90
+ * @param array $events WP_Post or numeric ID for events.
91
+ * @param \WP_Post|int $event Event we want to check.
92
  *
93
  * @return boolean
94
  */
104
  $event_id = is_numeric( $event ) ? $event : $event->ID;
105
 
106
  $start_hours = array_map( static function( $id ) {
107
+ return Dates::round_nearest_half_hour( tribe_get_start_date( $id, true, Dates::DBDATETIMEFORMAT ) );
108
  }, $ids );
109
 
110
  $start_hours_ids = array_unique( array_combine( $ids, $start_hours ) );
157
 
158
  return $should_have;
159
  }
160
+ }
src/Tribe/Views/V2/View.php CHANGED
@@ -8,8 +8,8 @@
8
 
9
  namespace Tribe\Events\Views\V2;
10
 
11
- use Tribe\Events\Views\V2\Template\Title;
12
  use Tribe\Events\Views\V2\Template\Settings\Advanced_Display;
 
13
  use Tribe__Container as Container;
14
  use Tribe__Context as Context;
15
  use Tribe__Date_Utils as Dates;
@@ -164,6 +164,24 @@ class View implements View_Interface {
164
  */
165
  protected $display_events_bar = true;
166
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
  /**
168
  * View constructor.
169
  *
@@ -173,6 +191,7 @@ class View implements View_Interface {
173
  */
174
  public function __construct( Messages $messages = null ) {
175
  $this->messages = $messages ?: new Messages();
 
176
  }
177
 
178
  /**
@@ -212,20 +231,11 @@ class View implements View_Interface {
212
  $params['name'] = $params[ reset( $post_name ) ];
213
  }
214
 
215
- if ( false === $slug ) {
216
- /*
217
- * If we cannot get the view slug from the request parameters let's try to get it from the URL.
218
- */
219
- $slug = Arr::get( $params, 'eventDisplay', tribe_context()->get( 'view', 'default' ) );
220
- }
221
-
222
  // Let's check if we have a display mode set.
223
  $query_args = $url_object->query_overrides_path( true )
224
  ->parse_url()
225
  ->get_query_args();
226
 
227
- $params['event_display_mode'] = Arr::get( $query_args, 'eventDisplay', false );
228
-
229
  /**
230
  * Filters the parameters that will be used to build the View class for a REST request.
231
  *
@@ -238,6 +248,15 @@ class View implements View_Interface {
238
  */
239
  $params = apply_filters( 'tribe_events_views_v2_rest_params', $params, $request );
240
 
 
 
 
 
 
 
 
 
 
241
  if ( ! empty( $slug ) ) {
242
  /**
243
  * Filters the parameters that will be used to build a specific View class for a REST request.
@@ -503,7 +522,10 @@ class View implements View_Interface {
503
  */
504
  $this->repository_args = $repository_args;
505
 
506
- $this->setup_the_loop( $repository_args );
 
 
 
507
 
508
  $template_vars = $this->filter_template_vars( $this->setup_template_vars() );
509
 
@@ -571,6 +593,58 @@ class View implements View_Interface {
571
  return $this->slug;
572
  }
573
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
574
  /**
575
  * {@inheritDoc}
576
  */
@@ -596,7 +670,7 @@ class View implements View_Interface {
596
  /**
597
  * {@inheritDoc}
598
  */
599
- public function get_url( $canonical = false ) {
600
  $query_args = [
601
  'post_type' => TEC::POSTTYPE,
602
  'eventDisplay' => $this->slug,
@@ -624,10 +698,16 @@ class View implements View_Interface {
624
  if ( ! empty( $query_args['tribe-bar-date'] ) ) {
625
  // If the Events Bar date is the same as today's date, then drop it.
626
  $today = $this->context->get( 'today', 'today' );
627
- $today_date = Dates::build_date_object( $today )->format( Dates::DBDATEFORMAT );
628
- $tribe_bar_date = Dates::build_date_object( $query_args['tribe-bar-date'] )->format( Dates::DBDATEFORMAT );
629
-
630
- if ( $today_date === $tribe_bar_date ) {
 
 
 
 
 
 
631
  unset( $query_args['tribe-bar-date'] );
632
  }
633
  }
@@ -642,11 +722,11 @@ class View implements View_Interface {
642
  $url = add_query_arg( array_filter( $query_args ), home_url() );
643
 
644
  if ( $canonical ) {
645
- $url = Rewrite::instance()->get_clean_url( $url );
646
  }
647
 
648
  $event_display_mode = $this->context->get( 'event_display_mode', false );
649
- if ( false !== $event_display_mode && $event_display_mode !== $this->context->get( 'eventDisplay' ) ) {
650
  $url = add_query_arg( [ 'eventDisplay' => $event_display_mode ], $url );
651
  }
652
 
@@ -757,8 +837,8 @@ class View implements View_Interface {
757
  global $wp_query;
758
 
759
  $this->global_backup = [
760
- 'wp_query' => $wp_query,
761
- '$_SERVER' => isset( $_SERVER ) ? $_SERVER : [],
762
  ];
763
 
764
  $args = wp_parse_args( $args, $this->repository_args );
@@ -768,6 +848,7 @@ class View implements View_Interface {
768
  $this->set_url( $args, true );
769
 
770
  $wp_query = $this->repository->get_query();
 
771
  wp_reset_postdata();
772
 
773
  // Set the $_SERVER['REQUEST_URI'] as many WordPress functions rely on it to correctly work.
@@ -1067,38 +1148,52 @@ class View implements View_Interface {
1067
 
1068
  $this->setup_messages( $events );
1069
 
1070
- $template_vars = [
1071
- 'title' => $this->get_title( $events ),
1072
- 'events' => $events,
1073
- 'url' => $this->get_url( true ),
1074
- 'prev_url' => $this->prev_url( true ),
1075
- 'next_url' => $this->next_url( true ),
1076
- 'bar' => [
 
 
 
 
 
 
 
 
 
1077
  'keyword' => $this->context->get( 'keyword', '' ),
1078
  'date' => $this->context->get( 'event_date', '' ),
1079
  ],
1080
- 'today' => $this->context->get( 'today', 'today' ),
1081
- 'now' => $this->context->get( 'now', 'now' ),
1082
- 'rest_url' => tribe( Rest_Endpoint::class )->get_url(),
1083
- 'rest_nonce' => wp_create_nonce( 'wp_rest' ),
1084
- 'should_manage_url' => $this->should_manage_url,
1085
- 'today_url' => $this->get_today_url( true ),
1086
- 'prev_label' => $this->get_link_label( $this->prev_url( false ) ),
1087
- 'next_label' => $this->get_link_label( $this->next_url( false ) ),
1088
- 'date_formats' => (object) [
 
1089
  'compact' => Dates::datepicker_formats( tribe_get_option( 'datepickerFormat' ) ),
1090
  'month_and_year' => tribe_get_date_option( 'monthAndYearFormat', 'F Y' ),
1091
  'time_range_separator' => tribe_get_date_option( 'timeRangeSeparator', ' - ' ),
1092
  'date_time_separator' => tribe_get_date_option( 'dateTimeSeparator', ' @ ' ),
1093
  ],
1094
- 'messages' => $this->get_messages( $events ),
1095
- 'start_of_week' => get_option( 'start_of_week', 0 ),
1096
- 'breadcrumbs' => $this->get_breadcrumbs(),
1097
- 'before_events' => tribe( Advanced_Display::class )->get_before_events_html( $this ),
1098
- 'after_events' => tribe( Advanced_Display::class )->get_after_events_html( $this ),
1099
- 'display_events_bar' => $this->filter_display_events_bar( $this->display_events_bar ),
1100
- 'disable_event_search' => tribe_is_truthy( tribe_get_option( 'tribeDisableTribeBar', false ) ),
1101
- 'live_refresh' => tribe_is_truthy( tribe_get_option( 'liveFiltersUpdate', true ) ),
 
 
 
 
1102
  ];
1103
 
1104
  return $template_vars;
@@ -1162,7 +1257,7 @@ class View implements View_Interface {
1162
  str_replace(
1163
  home_url(),
1164
  '',
1165
- Rewrite::$instance->get_clean_url( (string) $this->get_url() ) ),
1166
  '/'
1167
  );
1168
 
@@ -1213,7 +1308,7 @@ class View implements View_Interface {
1213
  return $ugly_url;
1214
  }
1215
 
1216
- return Rewrite::instance()->get_canonical_url( $ugly_url );
1217
  }
1218
 
1219
  /**
@@ -1222,13 +1317,15 @@ class View implements View_Interface {
1222
  * This is usually used to build the next and prev link URLs labels.
1223
  * Extending classes can customize the format of the the label by overriding the `get_label_format` method.
1224
  *
 
 
 
 
1225
  * @since 4.9.9
1226
  *
1227
  * @param string $url The input URL to build the link label from.
1228
  *
1229
  * @return string The formatted and localized, but not HTML escaped, link label.
1230
- *
1231
- * @see View::get_label_format(), the method child classes should override to customize the link label format.
1232
  */
1233
  public function get_link_label( $url ) {
1234
  if ( empty( $url ) ) {
@@ -1285,12 +1382,14 @@ class View implements View_Interface {
1285
  *
1286
  * This format will, usually, apply to next and previous links.
1287
  *
1288
- * @since 4.9.9
1289
- *
1290
- * @return string The date format, a valid PHP `date` function format, that should be used to build link labels.
1291
  *
1292
  * @see View::get_link_label(), the method using this method to build a link label.
1293
  * @see date_i18n() as the formatted date will, then, be localized using this method.
 
 
 
 
1294
  */
1295
  protected function get_label_format() {
1296
  return 'Y-m-d';
@@ -1514,6 +1613,20 @@ class View implements View_Interface {
1514
  }
1515
  }
1516
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1517
  /**
1518
  * Filters the breadcrumbs the View will print on the frontend.
1519
  *
@@ -1568,4 +1681,130 @@ class View implements View_Interface {
1568
 
1569
  return $display;
1570
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1571
  }
8
 
9
  namespace Tribe\Events\Views\V2;
10
 
 
11
  use Tribe\Events\Views\V2\Template\Settings\Advanced_Display;
12
+ use Tribe\Events\Views\V2\Template\Title;
13
  use Tribe__Container as Container;
14
  use Tribe__Context as Context;
15
  use Tribe__Date_Utils as Dates;
164
  */
165
  protected $display_events_bar = true;
166
 
167
+ /**
168
+ * The instance of the rewrite handling class to use.
169
+ * Extending classes can override this to use more specific rewrite handlers (e.g. PRO Views).
170
+ *
171
+ * @since 4.9.13
172
+ *
173
+ * @var Rewrite
174
+ */
175
+ protected $rewrite;
176
+
177
+ /**
178
+ * A flag property to indicate whether the View date is part of the "pretty" URL (true) or is supported only as
179
+ * a query argument like. `tribe-bar-date` (false).
180
+ *
181
+ * @var bool
182
+ */
183
+ protected static $date_in_url = true;
184
+
185
  /**
186
  * View constructor.
187
  *
191
  */
192
  public function __construct( Messages $messages = null ) {
193
  $this->messages = $messages ?: new Messages();
194
+ $this->rewrite = Rewrite::instance();
195
  }
196
 
197
  /**
231
  $params['name'] = $params[ reset( $post_name ) ];
232
  }
233
 
 
 
 
 
 
 
 
234
  // Let's check if we have a display mode set.
235
  $query_args = $url_object->query_overrides_path( true )
236
  ->parse_url()
237
  ->get_query_args();
238
 
 
 
239
  /**
240
  * Filters the parameters that will be used to build the View class for a REST request.
241
  *
248
  */
249
  $params = apply_filters( 'tribe_events_views_v2_rest_params', $params, $request );
250
 
251
+ if ( false === $slug ) {
252
+ /*
253
+ * If we cannot get the view slug from the request parameters let's try to get it from the URL.
254
+ */
255
+ $slug = Arr::get( $params, 'eventDisplay', tribe_context()->get( 'view', 'default' ) );
256
+ }
257
+
258
+ $params['event_display_mode'] = Arr::get( $query_args, 'eventDisplay', false );
259
+
260
  if ( ! empty( $slug ) ) {
261
  /**
262
  * Filters the parameters that will be used to build a specific View class for a REST request.
522
  */
523
  $this->repository_args = $repository_args;
524
 
525
+ if ( ! tribe_events_view_v2_use_period_repository() ) {
526
+ // @todo @bluedevs do we still need this? It's slow and time-consuming!
527
+ $this->setup_the_loop( $repository_args );
528
+ }
529
 
530
  $template_vars = $this->filter_template_vars( $this->setup_template_vars() );
531
 
593
  return $this->slug;
594
  }
595
 
596
+ /**
597
+ * {@inheritDoc}
598
+ */
599
+ public function get_parents_slug() {
600
+ $parents = class_parents( $this );
601
+ $parents = array_map( [ tribe( Manager::class ), 'get_view_slug_by_class' ], $parents );
602
+ $parents = array_filter( $parents );
603
+
604
+ return array_values( $parents );
605
+ }
606
+
607
+ /**
608
+ * {@inheritDoc}
609
+ */
610
+ public function get_html_classes( array $classes = [] ) {
611
+ $base_classes = [
612
+ 'tribe-common',
613
+ 'tribe-events',
614
+ 'tribe-events-view',
615
+ 'tribe-events-view--' . $this->get_slug(),
616
+ ];
617
+
618
+ $parents = array_map( static function ( $view_slug ) {
619
+ return 'tribe-events-view--' . $view_slug;
620
+ }, $this->get_parents_slug() );
621
+
622
+ $html_classes = array_merge( $base_classes, $parents, $classes );
623
+
624
+ /**
625
+ * Filters the query arguments array for a View URL.
626
+ *
627
+ * @since 4.9.13
628
+ *
629
+ * @param array $html_classes Array of classes used for this view.
630
+ * @param string $view_slug The current view slug.
631
+ * @param \Tribe\Events\Views\V2\View $instance The current View object.
632
+ */
633
+ $html_classes = apply_filters( 'tribe_events_views_v2_view_html_classes', $html_classes, $this->get_slug(), $this );
634
+
635
+ /**
636
+ * Filters the query arguments array for a specific View URL.
637
+ *
638
+ * @since 4.9.13
639
+ *
640
+ * @param array $html_classes Array of classes used for this view.
641
+ * @param \Tribe\Events\Views\V2\View $instance The current View object.
642
+ */
643
+ $html_classes = apply_filters( "tribe_events_views_v2_{$this->get_slug()}_view_html_classes", $html_classes, $this );
644
+
645
+ return $html_classes;
646
+ }
647
+
648
  /**
649
  * {@inheritDoc}
650
  */
670
  /**
671
  * {@inheritDoc}
672
  */
673
+ public function get_url( $canonical = false, $force = false ) {
674
  $query_args = [
675
  'post_type' => TEC::POSTTYPE,
676
  'eventDisplay' => $this->slug,
698
  if ( ! empty( $query_args['tribe-bar-date'] ) ) {
699
  // If the Events Bar date is the same as today's date, then drop it.
700
  $today = $this->context->get( 'today', 'today' );
701
+ $url_date_format = $this->get_url_date_format();
702
+ $today_date = Dates::build_date_object( $today ) ->format( $url_date_format );
703
+ $tribe_bar_date = Dates::build_date_object( $query_args['tribe-bar-date'] ) ->format( $url_date_format );
704
+
705
+ if ( static::$date_in_url ) {
706
+ if ( $today_date !== $tribe_bar_date ) {
707
+ // Default date is already today, no need to have it.
708
+ $query_args['eventDate'] = $tribe_bar_date;
709
+ }
710
+ // Replace `tribe-bar-date` with `eventDate` as that's the query var used by the rewrite rules.
711
  unset( $query_args['tribe-bar-date'] );
712
  }
713
  }
722
  $url = add_query_arg( array_filter( $query_args ), home_url() );
723
 
724
  if ( $canonical ) {
725
+ $url = $this->rewrite->get_clean_url( $url, $force );
726
  }
727
 
728
  $event_display_mode = $this->context->get( 'event_display_mode', false );
729
+ if ( 'past' === $event_display_mode && $event_display_mode !== $this->context->get( 'eventDisplay' ) ) {
730
  $url = add_query_arg( [ 'eventDisplay' => $event_display_mode ], $url );
731
  }
732
 
837
  global $wp_query;
838
 
839
  $this->global_backup = [
840
+ 'wp_query' => $wp_query,
841
+ '$_SERVER' => isset( $_SERVER ) ? $_SERVER : []
842
  ];
843
 
844
  $args = wp_parse_args( $args, $this->repository_args );
848
  $this->set_url( $args, true );
849
 
850
  $wp_query = $this->repository->get_query();
851
+
852
  wp_reset_postdata();
853
 
854
  // Set the $_SERVER['REQUEST_URI'] as many WordPress functions rely on it to correctly work.
1148
 
1149
  $this->setup_messages( $events );
1150
 
1151
+ $today_url = $this->get_today_url( true );
1152
+ $today = $this->context->get( 'today', 'today' );
1153
+
1154
+ $event_date = $this->context->get( 'event_date', false );
1155
+ $url_event_date = false !== $event_date
1156
+ ? Dates::build_date_object( $event_date )->format( Dates::DBDATEFORMAT )
1157
+ : false;
1158
+
1159
+ $template_vars = [
1160
+ 'title' => $this->get_title( $events ),
1161
+ 'events' => $events,
1162
+ 'url' => $this->get_url( true ),
1163
+ 'prev_url' => $this->prev_url( true ),
1164
+ 'next_url' => $this->next_url( true ),
1165
+ 'url_event_date' => $url_event_date,
1166
+ 'bar' => [
1167
  'keyword' => $this->context->get( 'keyword', '' ),
1168
  'date' => $this->context->get( 'event_date', '' ),
1169
  ],
1170
+ 'today' => $today,
1171
+ 'now' => $this->context->get( 'now', 'now' ),
1172
+ 'request_date' => Dates::build_date_object( $this->context->get( 'event_date', $today ) ),
1173
+ 'rest_url' => tribe( Rest_Endpoint::class )->get_url(),
1174
+ 'rest_nonce' => wp_create_nonce( 'wp_rest' ),
1175
+ 'should_manage_url' => $this->should_manage_url,
1176
+ 'today_url' => $today_url,
1177
+ 'prev_label' => $this->get_link_label( $this->prev_url( false ) ),
1178
+ 'next_label' => $this->get_link_label( $this->next_url( false ) ),
1179
+ 'date_formats' => (object) [
1180
  'compact' => Dates::datepicker_formats( tribe_get_option( 'datepickerFormat' ) ),
1181
  'month_and_year' => tribe_get_date_option( 'monthAndYearFormat', 'F Y' ),
1182
  'time_range_separator' => tribe_get_date_option( 'timeRangeSeparator', ' - ' ),
1183
  'date_time_separator' => tribe_get_date_option( 'dateTimeSeparator', ' @ ' ),
1184
  ],
1185
+ 'messages' => $this->get_messages( $events ),
1186
+ 'start_of_week' => get_option( 'start_of_week', 0 ),
1187
+ 'breadcrumbs' => $this->get_breadcrumbs(),
1188
+ 'before_events' => tribe( Advanced_Display::class )->get_before_events_html( $this ),
1189
+ 'after_events' => tribe( Advanced_Display::class )->get_after_events_html( $this ),
1190
+ 'display_events_bar' => $this->filter_display_events_bar( $this->display_events_bar ),
1191
+ 'disable_event_search' => tribe_is_truthy( tribe_get_option( 'tribeDisableTribeBar', false ) ),
1192
+ 'live_refresh' => tribe_is_truthy( tribe_get_option( 'liveFiltersUpdate', true ) ),
1193
+ 'ical' => $this->get_ical_data(),
1194
+ 'container_classes' => $this->get_html_classes(),
1195
+ 'is_past' => 'past' === $this->context->get( 'event_display_mode', false ),
1196
+ 'show_datepicker_submit' => $this->get_show_datepicker_submit(),
1197
  ];
1198
 
1199
  return $template_vars;
1257
  str_replace(
1258
  home_url(),
1259
  '',
1260
+ $this->rewrite->get_clean_url( (string) $this->get_url() ) ),
1261
  '/'
1262
  );
1263
 
1308
  return $ugly_url;
1309
  }
1310
 
1311
+ return $this->rewrite->get_canonical_url( $ugly_url );
1312
  }
1313
 
1314
  /**
1317
  * This is usually used to build the next and prev link URLs labels.
1318
  * Extending classes can customize the format of the the label by overriding the `get_label_format` method.
1319
  *
1320
+ * @todo @bordoni move this method to a supporting class.
1321
+ *
1322
+ * @see View::get_label_format(), the method child classes should override to customize the link label format.
1323
+ *
1324
  * @since 4.9.9
1325
  *
1326
  * @param string $url The input URL to build the link label from.
1327
  *
1328
  * @return string The formatted and localized, but not HTML escaped, link label.
 
 
1329
  */
1330
  public function get_link_label( $url ) {
1331
  if ( empty( $url ) ) {
1382
  *
1383
  * This format will, usually, apply to next and previous links.
1384
  *
1385
+ * @todo @bordoni move this method to a supporting class.
 
 
1386
  *
1387
  * @see View::get_link_label(), the method using this method to build a link label.
1388
  * @see date_i18n() as the formatted date will, then, be localized using this method.
1389
+ *
1390
+ * @since 4.9.9
1391
+ *
1392
+ * @return string The date format, a valid PHP `date` function format, that should be used to build link labels.
1393
  */
1394
  protected function get_label_format() {
1395
  return 'Y-m-d';
1613
  }
1614
  }
1615
 
1616
+ // Setup breadcrumbs for when it's featured.
1617
+ if ( $is_featured = tribe_is_truthy( $this->context->get( 'featured', false ) ) ) {
1618
+ $non_featured_link = tribe_events_get_url( [ 'featured' => 0 ] );
1619
+
1620
+ $breadcrumbs[] = [
1621
+ 'link' => $non_featured_link,
1622
+ 'label' => tribe_get_event_label_plural(),
1623
+ ];
1624
+ $breadcrumbs[] = [
1625
+ 'link' => '',
1626
+ 'label' => esc_html__( 'Featured', 'the-events-calendar' ),
1627
+ ];
1628
+ }
1629
+
1630
  /**
1631
  * Filters the breadcrumbs the View will print on the frontend.
1632
  *
1681
 
1682
  return $display;
1683
  }
1684
+
1685
+ /**
1686
+ * Returns the iCal data we're sending to the view.
1687
+ *
1688
+ * @todo @bordoni move this method to a supporting class.
1689
+ *
1690
+ * @since 4.9.13
1691
+ *
1692
+ * @return object
1693
+ */
1694
+ protected function get_ical_data() {
1695
+ /**
1696
+ * A filter to control whether the "iCal Import" link shows up or not.
1697
+ *
1698
+ * @since unknown
1699
+ *
1700
+ * @param boolean $show Whether to show the "iCal Import" link; defaults to true.
1701
+ */
1702
+ $display_ical = apply_filters( 'tribe_events_list_show_ical_link', true );
1703
+
1704
+ /**
1705
+ * Allow for customization of the iCal export link "Export Events" text.
1706
+ *
1707
+ * @since unknown
1708
+ *
1709
+ * @param string $text The default link text, which is "Export Events".
1710
+ */
1711
+ $link_text = apply_filters( 'tribe_events_ical_export_text', __( 'Export Events', 'the-events-calendar' ) );
1712
+
1713
+ $link_title = __( 'Use this to share calendar data with Google Calendar, Apple iCal and other compatible apps', 'the-events-calendar' );
1714
+
1715
+ $ical_data = (object) [
1716
+ 'display_link' => $display_ical,
1717
+ 'link' => (object) [
1718
+ 'url' => esc_url( tribe_get_ical_link() ),
1719
+ 'text' => $link_text,
1720
+ 'title' => $link_title,
1721
+ ],
1722
+ ];
1723
+
1724
+ /**
1725
+ * Filters the ical data.
1726
+ *
1727
+ * @since 4.9.13
1728
+ *
1729
+ * @param object $ical_data An object containing the ical data.
1730
+ * @param View $this The current View instance being rendered.
1731
+ */
1732
+ $ical_data = apply_filters( "tribe_events_views_v2_view_ical_data", $ical_data, $this );
1733
+
1734
+ /**
1735
+ * Filters the ical data for a specific view.
1736
+ *
1737
+ * @since 4.9.13
1738
+ *
1739
+ * @param object $ical_data An object containing the ical data.
1740
+ * @param View $this The current View instance being rendered.
1741
+ */
1742
+ $ical_data = apply_filters( "tribe_events_views_v2_view_{$this->slug}_ical_data", $ical_data, $this );
1743
+
1744
+ return $ical_data;
1745
+ }
1746
+
1747
+ /**
1748
+ * Returns a boolean on whether to show the datepicker submit button.
1749
+ *
1750
+ * @since 4.9.13
1751
+ *
1752
+ * @return bool
1753
+ */
1754
+ protected function get_show_datepicker_submit() {
1755
+ $live_refresh = tribe_is_truthy( tribe_get_option( 'liveFiltersUpdate', true ) );
1756
+ $disable_events_bar = tribe_is_truthy( tribe_get_option( 'tribeDisableTribeBar', false ) );
1757
+
1758
+ if ( empty( $live_refresh ) && ! empty( $disable_events_bar ) ) {
1759
+ return true;
1760
+ }
1761
+
1762
+ return false;
1763
+ }
1764
+
1765
+ /**
1766
+ * {@inheritDoc}
1767
+ */
1768
+ public function url_for_query_args( $date = null, $query_args = [] ) {
1769
+ $event_date = Dates::build_date_object( $date )->format( $this->get_url_date_format() );
1770
+
1771
+ if ( ! empty( $query_args ) && is_string( $query_args ) ) {
1772
+ $str_args = $query_args;
1773
+ $query_args = [];
1774
+ wp_parse_str( $str_args, $query_args );
1775
+ }
1776
+
1777
+ $url_query_args = array_filter( array_merge( $query_args, [
1778
+ 'eventDisplay' => $this->get_slug(),
1779
+ 'eventDate' => $event_date,
1780
+ ] ) );
1781
+
1782
+ if ( static::$date_in_url ) {
1783
+ unset( $url_query_args['tribe-bar-date'] );
1784
+
1785
+ // This is the case for Views that include the date in the "pretty" URL, e.g. Month, Day or Week.
1786
+ return tribe_events_get_url( $url_query_args );
1787
+ }
1788
+
1789
+ // This is the case for Views that don't include the date in the "pretty" URL, e.g. List.
1790
+ unset( $url_query_args['eventDate'] );
1791
+
1792
+ return add_query_arg(
1793
+ [ 'tribe-bar-date' => $event_date ],
1794
+ tribe_events_get_url( $url_query_args )
1795
+ );
1796
+ }
1797
+
1798
+ /**
1799
+ * Returns the date format that should be used to format the date in the View URL.
1800
+ *
1801
+ * Extending Views cal override this to customize the URL output (e.g. Month View).
1802
+ *
1803
+ * @since 4.9.13
1804
+ *
1805
+ * @return string The date format that should be used to format the date in the View URL.
1806
+ */
1807
+ protected function get_url_date_format() {
1808
+ return Dates::DBDATEFORMAT;
1809
+ }
1810
  }
src/Tribe/Views/V2/View_Interface.php CHANGED
@@ -89,6 +89,26 @@ interface View_Interface extends View_Url_Provider_Interface, Repository_User_I
89
  */
90
  public function get_slug();
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  /**
93
  * Returns a View template class.
94
  *
@@ -188,4 +208,16 @@ interface View_Interface extends View_Url_Provider_Interface, Repository_User_I
188
  * @return array An array of user-facing messages the View will display on the front-end.
189
  */
190
  public function get_messages();
 
 
 
 
 
 
 
 
 
 
 
 
191
  }
89
  */
90
  public function get_slug();
91
 
92
+ /**
93
+ * Returns all the parent views that the current class as an array of slugs.
94
+ *
95
+ * @since 4.9.13
96
+ *
97
+ * @return string[] Array of string with the slugs of all the registered views.
98
+ */
99
+ public function get_parents_slug();
100
+
101
+ /**
102
+ * Returns all html classes for the view instance we are handling.
103
+ *
104
+ * @since 4.9.13
105
+ *
106
+ * @param array $classes Array of classes that are going to be appended to this instance.
107
+ *
108
+ * @return string[] Array of string with the classes used
109
+ */
110
+ public function get_html_classes( array $classes = [] );
111
+
112
  /**
113
  * Returns a View template class.
114
  *
208
  * @return array An array of user-facing messages the View will display on the front-end.
209
  */
210
  public function get_messages();
211
+
212
+ /**
213
+ * Returns the URL to get the View for a date and a set of arguments.
214
+ *
215
+ * @since 4.9.13
216
+ *
217
+ * @param string|int|\DateTimeInterface $date The date to return the URL for.
218
+ * @param array|string $query_args The query string or arguments to append to the URL.
219
+ *
220
+ * @return string The URL to fetch the View for a date.
221
+ */
222
+ public function url_for_query_args( $date = null, $query_args = null );
223
  }
src/Tribe/Views/V2/Views/By_Day_View.php CHANGED
@@ -10,6 +10,7 @@
10
  namespace Tribe\Events\Views\V2\Views;
11
 
12
  use Tribe\Events\Views\V2\Messages;
 
13
  use Tribe\Events\Views\V2\Utils\Stack;
14
  use Tribe\Events\Views\V2\View;
15
  use Tribe\Traits\Cache_User;
@@ -99,7 +100,9 @@ abstract class By_Day_View extends View {
99
  return $this->grid_days_cache;
100
  }
101
 
102
- $this->user_date = $date ?: $this->context->get( 'event_date', 'now' );
 
 
103
 
104
  list( $grid_start, $grid_end ) = $this->calculate_grid_start_end( $this->user_date );
105
 
@@ -133,42 +136,75 @@ abstract class By_Day_View extends View {
133
  $this->warmup_cache( 'grid_days_found', 0, Cache_Listener::TRIGGER_SAVE_POST );
134
  $events_per_day = $this->get_events_per_day();
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  // phpcs:ignore
137
  /** @var \DateTime $day */
138
  foreach ( $days as $day ) {
139
  $day_string = $day->format( 'Y-m-d' );
140
 
141
- if ( isset( $this->grid_days_cache[ $day_string ] ) ) {
142
- continue;
143
- }
144
 
145
- $start = tribe_beginning_of_day( $day->format( Dates::DBDATETIMEFORMAT ) );
146
- $end = tribe_end_of_day( $day->format( Dates::DBDATETIMEFORMAT ) );
147
-
148
- /*
149
- * We want events overlapping the current day, by more than 1 second.
150
- * This prevents events ending on the cutoff from showing up here.
151
- */
152
- $day_query = tribe_events()
153
- ->by_args( $repository_args )
154
- ->where( 'date_overlaps', $start, $end, null, 2 )
155
- ->per_page( $events_per_day )
156
- ->order_by( $order_by, $order );
157
- $event_ids = $day_query->get_ids();
158
- $found = $day_query->found();
159
 
160
- $this->grid_days_cache[ $day_string ] = (array) $event_ids;
161
- $this->grid_days_found_cache[ $day_string ] = (int) $found;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
 
163
  /*
164
  * Multi-day events will always appear on the second day and forward, back-fill if they did not make the
165
  * cut (of events per day) on previous days.
166
  */
167
- $this->backfill_multiday_event_ids( $event_ids );
168
  }
169
 
170
- if ( is_array( $this->grid_days_cache ) && count( $this->grid_days_cache ) ) {
171
- $this->grid_days_cache = $this->add_implied_events( $this->grid_days_cache );
 
 
 
 
 
 
 
172
  }
173
 
174
  // Drop the last day we've added before.
@@ -238,7 +274,7 @@ abstract class By_Day_View extends View {
238
  * @return int The number of events to show, per each day, in total, in the view.
239
  */
240
  protected function get_events_per_day() {
241
- $events_per_day = $this->context->get( 'events_per_page', 10 );
242
 
243
  /**
244
  * Filters the number of events per day to fetch in th View.
@@ -297,16 +333,6 @@ abstract class By_Day_View extends View {
297
  return $url;
298
  }
299
 
300
- /**
301
- * Return the PHP `date` format that should be used to build the View URL when targeting a specific date.
302
- *
303
- * @since 4.9.9
304
- *
305
- * @return string The PHP `date` format that should be used to build the View URL when targeting a specific date;
306
- * e.g. `Y-m` for Month View, or `Y-m-d` for Week View.
307
- */
308
- abstract protected function get_url_date_format();
309
-
310
  /**
311
  * Adds the implied events to the grid days results.
312
  *
@@ -416,4 +442,16 @@ abstract class By_Day_View extends View {
416
  }
417
  }
418
  }
 
 
 
 
 
 
 
 
 
 
 
 
419
  }
10
  namespace Tribe\Events\Views\V2\Views;
11
 
12
  use Tribe\Events\Views\V2\Messages;
13
+ use Tribe\Events\Views\V2\Repository\Event_Period;
14
  use Tribe\Events\Views\V2\Utils\Stack;
15
  use Tribe\Events\Views\V2\View;
16
  use Tribe\Traits\Cache_User;
100
  return $this->grid_days_cache;
101
  }
102
 
103
+ if ( empty( $this->user_date ) ) {
104
+ $this->user_date = $date ?: $this->context->get( 'event_date', 'now' );
105
+ }
106
 
107
  list( $grid_start, $grid_end ) = $this->calculate_grid_start_end( $this->user_date );
108
 
136
  $this->warmup_cache( 'grid_days_found', 0, Cache_Listener::TRIGGER_SAVE_POST );
137
  $events_per_day = $this->get_events_per_day();
138
 
139
+ // @todo remove this when the Event_Period repository is solid and clean up.
140
+ $using_period_repository = tribe_events_view_v2_use_period_repository();
141
+
142
+ if ( $using_period_repository ) {
143
+ /** @var Event_Period $repository */
144
+ if ( tribe_is_truthy( tribe_get_option( 'enable_month_view_cache', false ) ) ) {
145
+ $repository = tribe_events( 'period', 'caching' );
146
+ } else {
147
+ $repository = tribe_events( 'period' );
148
+ }
149
+ $repository->by_period( $grid_start_date, $grid_end_date )->fetch();
150
+ }
151
+
152
  // phpcs:ignore
153
  /** @var \DateTime $day */
154
  foreach ( $days as $day ) {
155
  $day_string = $day->format( 'Y-m-d' );
156
 
157
+ if ( $using_period_repository && isset( $repository ) ) {
158
+ $day_results = $repository->by_date( $day_string )->get_set();
 
159
 
160
+ $event_ids = [];
161
+ if ( $day_results->count() ) {
162
+ // Sort events by honoring order and direction.
163
+ $day_results->order_by( $order_by, $order );
164
+ $event_ids = array_map( 'absint', $day_results->pluck( 'ID' ) );
165
+ }
 
 
 
 
 
 
 
 
166
 
167
+ // @todo @bluedevs truncating here does not make sense, do in template?
168
+ $day_event_ids = array_slice( $event_ids, 0, $events_per_day );
169
+
170
+ $this->grid_days_cache[ $day_string ] = $day_event_ids;
171
+ $this->grid_days_found_cache[ $day_string ] = $day_results->count();
172
+ } else {
173
+ $start = tribe_beginning_of_day( $day->format( Dates::DBDATETIMEFORMAT ) );
174
+ $end = tribe_end_of_day( $day->format( Dates::DBDATETIMEFORMAT ) );
175
+ /*
176
+ * We want events overlapping the current day, by more than 1 second.
177
+ * This prevents events ending on the cutoff from showing up here.
178
+ */
179
+ $day_query = tribe_events()
180
+ ->set_found_rows(true)
181
+ ->by_args( $repository_args )
182
+ ->where( 'date_overlaps', $start, $end, null, 2 )
183
+ ->per_page( $events_per_day )
184
+ ->order_by( $order_by, $order );
185
+ $day_event_ids = $day_query->get_ids();
186
+ $found = $day_query->found();
187
+
188
+ $this->grid_days_cache[ $day_string ] = (array) $day_event_ids;
189
+ $this->grid_days_found_cache[ $day_string ] = (int) $found;
190
+ }
191
 
192
  /*
193
  * Multi-day events will always appear on the second day and forward, back-fill if they did not make the
194
  * cut (of events per day) on previous days.
195
  */
196
+ $this->backfill_multiday_event_ids( $day_event_ids );
197
  }
198
 
199
+ if ( $using_period_repository ) {
200
+ $post_ids = array_filter( array_unique( array_merge( ... array_values( $this->grid_days_cache ) ) ) );
201
+ /** @var \Tribe__Cache $cache */
202
+ $cache = tribe( 'cache' );
203
+ $cache->warmup_post_caches( $post_ids, true );
204
+ } else {
205
+ if ( is_array( $this->grid_days_cache ) && count( $this->grid_days_cache ) ) {
206
+ $this->grid_days_cache = $this->add_implied_events( $this->grid_days_cache );
207
+ }
208
  }
209
 
210
  // Drop the last day we've added before.
274
  * @return int The number of events to show, per each day, in total, in the view.
275
  */
276
  protected function get_events_per_day() {
277
+ $events_per_day = $this->context->get( 'events_per_page', 12 );
278
 
279
  /**
280
  * Filters the number of events per day to fetch in th View.
333
  return $url;
334
  }
335
 
 
 
 
 
 
 
 
 
 
 
336
  /**
337
  * Adds the implied events to the grid days results.
338
  *
442
  }
443
  }
444
  }
445
+
446
+ /**
447
+ * ${CARET}
448
+ *
449
+ * @since 4.9.13
450
+ *
451
+ * @return bool
452
+ */
453
+ protected function using_period_repository() {
454
+ return defined( 'TRIBE_EVENTS_V2_VIEWS_USE_PERIOD_REPOSITORY' )
455
+ && TRIBE_EVENTS_V2_VIEWS_USE_PERIOD_REPOSITORY;
456
+ }
457
  }
src/Tribe/Views/V2/Views/Day_View.php CHANGED
@@ -174,11 +174,14 @@ class Day_View extends View {
174
  $ongoing = [];
175
  $hourly = [];
176
 
 
 
 
177
  foreach ( $events as $i => $event ) {
178
  if ( ! empty( $event->all_day ) ) {
179
  $event->timeslot = 'all_day';
180
  $all_day[ $i ] = $event;
181
- } elseif ( ! empty( $event->multiday ) ) {
182
  $event->timeslot = 'multiday';
183
  $ongoing[ $i ] = $event;
184
  } else {
174
  $ongoing = [];
175
  $hourly = [];
176
 
177
+ $today = Dates::build_date_object( $this->context->get( 'today', 'today' ) );
178
+ $request_date = $this->context->get( 'event_date', $today->format( Dates::DBDATEFORMAT ) );
179
+
180
  foreach ( $events as $i => $event ) {
181
  if ( ! empty( $event->all_day ) ) {
182
  $event->timeslot = 'all_day';
183
  $all_day[ $i ] = $event;
184
+ } elseif ( ! empty( $event->multiday ) && $event->dates->start_display->format( Dates::DBDATEFORMAT ) !== $request_date ) {
185
  $event->timeslot = 'multiday';
186
  $ongoing[ $i ] = $event;
187
  } else {
src/Tribe/Views/V2/Views/List_View.php CHANGED
@@ -35,6 +35,13 @@ class List_View extends View {
35
  */
36
  protected static $publicly_visible = true;
37
 
 
 
 
 
 
 
 
38
  /**
39
  * {@inheritDoc}
40
  */
@@ -225,7 +232,7 @@ class List_View extends View {
225
  if (
226
  ! empty( $template_vars['events'] )
227
  && is_array( $template_vars['events'] )
228
- && 'past' === $this->context->get( 'event_display_mode', 'map' )
229
  ) {
230
  $template_vars['events'] = array_reverse( $template_vars['events'] );
231
  }
35
  */
36
  protected static $publicly_visible = true;
37
 
38
+ /**
39
+ * Indicates List View supports the date as a query argument appended to its URL, not as part of a "pretty" URL.
40
+ *
41
+ * @var bool
42
+ */
43
+ protected static $date_in_url = false;
44
+
45
  /**
46
  * {@inheritDoc}
47
  */
232
  if (
233
  ! empty( $template_vars['events'] )
234
  && is_array( $template_vars['events'] )
235
+ && 'past' === $this->context->get( 'event_display_mode' )
236
  ) {
237
  $template_vars['events'] = array_reverse( $template_vars['events'] );
238
  }
src/Tribe/Views/V2/Views/Month_View.php CHANGED
@@ -24,7 +24,7 @@ class Month_View extends By_Day_View {
24
  *
25
  * @var int
26
  */
27
- protected static $posts_per_page_default = 10;
28
 
29
  /**
30
  * Slug for this view.
@@ -144,15 +144,14 @@ class Month_View extends By_Day_View {
144
  $context = null !== $context ? $context : $this->context;
145
 
146
  // Let's override the ones the Month View will use differently.
147
- $context_arr = $context->to_array();
148
  // The setting governing the Events > Settings > Display > "Month view events per day" setting.
149
- $args['posts_per_page'] = Arr::get( $context_arr, 'month_posts_per_page', static::$posts_per_page_default );
150
  // Per-day events never paginate.
151
  unset( $args['paged'] );
152
 
153
- $date = Arr::get( $context_arr, 'event_date', 'now' );
154
 
155
- $this->user_date = ( new \DateTime( $date ) )->format( 'Y-m' );
156
 
157
  $args['order_by'] = [
158
  'menu_order' => 'ASC',
@@ -171,7 +170,7 @@ class Month_View extends By_Day_View {
171
  * @return int The Month view number of events per day.
172
  */
173
  protected function get_events_per_day() {
174
- $events_per_day = $this->context->get( 'month_posts_per_page', 10 );
175
 
176
  /**
177
  * Filters the number of events per day to fetch in the Month view.
24
  *
25
  * @var int
26
  */
27
+ protected static $posts_per_page_default = 12;
28
 
29
  /**
30
  * Slug for this view.
144
  $context = null !== $context ? $context : $this->context;
145
 
146
  // Let's override the ones the Month View will use differently.
 
147
  // The setting governing the Events > Settings > Display > "Month view events per day" setting.
148
+ $args['posts_per_page'] = $context->get( 'month_posts_per_page', static::$posts_per_page_default );
149
  // Per-day events never paginate.
150
  unset( $args['paged'] );
151
 
152
+ $date = $context->get( 'event_date', 'now' );
153
 
154
+ $this->user_date = Dates::build_date_object( $date )->format( 'Y-m' );
155
 
156
  $args['order_by'] = [
157
  'menu_order' => 'ASC',
170
  * @return int The Month view number of events per day.
171
  */
172
  protected function get_events_per_day() {
173
+ $events_per_day = $this->context->get( 'month_posts_per_page', 12 );
174
 
175
  /**
176
  * Filters the number of events per day to fetch in the Month view.
src/admin-views/aggregator/origins/refine.php CHANGED
@@ -9,6 +9,12 @@ $radius = new stdClass;
9
  $radius->placeholder = sprintf( _x( 'Radius (%s)', 'Radius with abbreviation', 'the-events-calendar' ), Tribe__Events__Utils__Radius::get_abbreviation() );
10
  $depends_condition = 'data-condition-not-empty';
11
 
 
 
 
 
 
 
12
  switch ( $origin_slug ) {
13
  case 'ics':
14
  $depends = "#tribe-ea-field-{$origin_slug}_file";
@@ -23,9 +29,14 @@ switch ( $origin_slug ) {
23
  $radius->help = __( 'Use the filters to narrow down which events are fetched from this site.', 'the-events-calendar' );
24
  break;
25
  case 'eventbrite':
26
- $depends = "#tribe-ea-field-{$origin_slug}_import_source";
27
- $depends_condition = 'data-condition=source_type_url';
28
  $radius->help = __( 'Use the filters to narrow down which events are fetched from Eventbrite.', 'the-events-calendar' );
 
 
 
 
 
 
29
  // Only new events
30
  if ( empty( $record->meta['start'] ) ) {
31
  $record->meta['start'] = date_i18n( 'Y-m-d' );
@@ -46,9 +57,7 @@ switch ( $origin_slug ) {
46
  *
47
  * @param array $keyword_exclusions List of origins excluded.
48
  */
49
- $keyword_exclusions = apply_filters( 'tribe_events_aggregator_refine_keyword_exclusions', array( 'facebook' ) );
50
- $keyword_exclusions = json_encode( $keyword_exclusions );
51
-
52
  /**
53
  * Allow filtering of origins excluded from refining EA results by location.
54
  *
@@ -56,15 +65,16 @@ $keyword_exclusions = json_encode( $keyword_exclusions );
56
  *
57
  * @param array $location_exclusions List of origins excluded.
58
  */
59
- $location_exclusions = apply_filters( 'tribe_events_aggregator_refine_location_exclusions', array( 'url', 'facebook' ) );
60
- $location_exclusions = json_encode( $location_exclusions );
 
61
  ?>
62
  <tr class="tribe-dependent tribe-refine-filters <?php echo esc_attr( $origin_slug ) ?>" data-depends="<?php echo esc_attr( $depends ); ?>" <?php echo esc_attr( $depends_condition ); ?>>
63
  <th scope="row">
64
  <label for="tribe-ea-field-refine_keywords"><?php echo __( 'Refine:', 'the-events-calendar' ); ?></label>
65
  </th>
66
  <td>
67
- <div class="tribe-refine tribe-dependent" data-depends="#tribe-ea-field-origin" data-condition-not="<?php echo esc_attr( $keyword_exclusions ); ?>">
68
  <input
69
  name="aggregator[<?php echo esc_attr( $origin_slug ); ?>][keywords]"
70
  type="text"
@@ -103,7 +113,7 @@ $location_exclusions = json_encode( $location_exclusions );
103
  <span id="tribe-date-helper-date-<?php echo esc_attr( $origin_slug ); ?>"><?php echo esc_html( $start ); ?></span>
104
  </span>
105
  </div>
106
- <div class="tribe-refine tribe-dependent" data-depends="#tribe-ea-field-origin"
107
  data-condition-relation="and" data-condition-not="<?php echo esc_attr( $location_exclusions ); ?>">
108
  <input
109
  name="aggregator[<?php echo esc_attr( $origin_slug ); ?>][location]"
9
  $radius->placeholder = sprintf( _x( 'Radius (%s)', 'Radius with abbreviation', 'the-events-calendar' ), Tribe__Events__Utils__Radius::get_abbreviation() );
10
  $depends_condition = 'data-condition-not-empty';
11
 
12
+ $location_depends = '#tribe-ea-field-origin';
13
+ $keyword_depends = '#tribe-ea-field-origin';
14
+
15
+ $keyword_exclusions = [ 'facebook' ];
16
+ $location_exclusions = [ 'url', 'facebook' ];
17
+
18
  switch ( $origin_slug ) {
19
  case 'ics':
20
  $depends = "#tribe-ea-field-{$origin_slug}_file";
29
  $radius->help = __( 'Use the filters to narrow down which events are fetched from this site.', 'the-events-calendar' );
30
  break;
31
  case 'eventbrite':
32
+ $depends = '#tribe-ea-field-eventbrite_import_source';
 
33
  $radius->help = __( 'Use the filters to narrow down which events are fetched from Eventbrite.', 'the-events-calendar' );
34
+ $location_depends = '#tribe-ea-field-eventbrite_import_source';
35
+ $keyword_depends = '#tribe-ea-field-eventbrite_import_source';
36
+
37
+ $location_exclusions[] = 'https://www.eventbrite.com/me';
38
+ $keyword_exclusions[] = 'https://www.eventbrite.com/me';
39
+
40
  // Only new events
41
  if ( empty( $record->meta['start'] ) ) {
42
  $record->meta['start'] = date_i18n( 'Y-m-d' );
57
  *
58
  * @param array $keyword_exclusions List of origins excluded.
59
  */
60
+ $keyword_exclusions = json_encode( apply_filters( 'tribe_events_aggregator_refine_keyword_exclusions', $keyword_exclusions ) );
 
 
61
  /**
62
  * Allow filtering of origins excluded from refining EA results by location.
63
  *
65
  *
66
  * @param array $location_exclusions List of origins excluded.
67
  */
68
+ $location_exclusions = json_encode( apply_filters( 'tribe_events_aggregator_refine_location_exclusions', $location_exclusions ) );
69
+
70
+
71
  ?>
72
  <tr class="tribe-dependent tribe-refine-filters <?php echo esc_attr( $origin_slug ) ?>" data-depends="<?php echo esc_attr( $depends ); ?>" <?php echo esc_attr( $depends_condition ); ?>>
73
  <th scope="row">
74
  <label for="tribe-ea-field-refine_keywords"><?php echo __( 'Refine:', 'the-events-calendar' ); ?></label>
75
  </th>
76
  <td>
77
+ <div class="tribe-refine tribe-dependent" data-depends="<?php echo esc_attr($keyword_depends); ?>" data-condition-not="<?php echo esc_attr( $keyword_exclusions ); ?>">
78
  <input
79
  name="aggregator[<?php echo esc_attr( $origin_slug ); ?>][keywords]"
80
  type="text"
113
  <span id="tribe-date-helper-date-<?php echo esc_attr( $origin_slug ); ?>"><?php echo esc_html( $start ); ?></span>
114
  </span>
115
  </div>
116
+ <div class="tribe-refine tribe-dependent" data-depends="<?php echo esc_attr( $location_depends ); ?>"
117
  data-condition-relation="and" data-condition-not="<?php echo esc_attr( $location_exclusions ); ?>">
118
  <input
119
  name="aggregator[<?php echo esc_attr( $origin_slug ); ?>][location]"
src/admin-views/tribe-options-general.php CHANGED
@@ -6,23 +6,23 @@ $site_time_format = get_option( 'time_format' );
6
  $general_tab_fields = Tribe__Main::array_insert_after_key(
7
  'info-start',
8
  $general_tab_fields,
9
- array(
10
  // after info-start
11
- 'upsell-heading' => array(
12
  'type' => 'heading',
13
  'label' => esc_html__( 'Finding & extending your calendar.', 'the-events-calendar' ),
14
  'conditional' => ( ! defined( 'TRIBE_HIDE_UPSELL' ) || ! TRIBE_HIDE_UPSELL ),
15
- ),
16
- 'finding-heading' => array(
17
  'type' => 'heading',
18
  'label' => esc_html__( 'Finding your calendar.', 'the-events-calendar' ),
19
  'conditional' => ( defined( 'TRIBE_HIDE_UPSELL' ) && TRIBE_HIDE_UPSELL ),
20
- ),
21
- 'view-calendar-link' => array(
22
  'type' => 'html',
23
  'html' => '<p>' . esc_html__( 'Where\'s my calendar?', 'the-events-calendar' ) . ' <a href="' . esc_url( Tribe__Events__Main::instance()->getLink() ) . '">' . esc_html__( 'Right here', 'the-events-calendar' ) . '</a>.</p>',
24
- ),
25
- )
26
  );
27
 
28
  $posts_per_page_tooltip = esc_html__( 'The number of events per page on the List View. Does not affect other views.', 'the-events-calendar' );
@@ -34,50 +34,50 @@ if ( class_exists( 'Tribe__Events__Pro__Main' ) ) {
34
  $general_tab_fields = Tribe__Main::array_insert_before_key(
35
  'debugEvents',
36
  $general_tab_fields,
37
- array(
38
- 'tribeEventsDisplayThemeTitle' => array(
39
  'type' => 'html',
40
  'html' => '<h3>' . esc_html__( 'General Settings', 'the-events-calendar' ) . '</h3>',
41
- ),
42
- 'postsPerPage' => array(
43
  'type' => 'text',
44
  'label' => esc_html__( 'Number of events to show per page', 'the-events-calendar' ),
45
  'tooltip' => $posts_per_page_tooltip,
46
  'size' => 'small',
47
- 'default' => get_option( 'posts_per_page' ),
48
  'validation_type' => 'positive_int',
49
- ),
50
- 'liveFiltersUpdate' => array(
51
  'type' => 'checkbox_bool',
52
  'label' => esc_html__( 'Enable live refresh', 'the-events-calendar' ),
53
  'tooltip' => tribe_get_option( 'tribeDisableTribeBar', false ) == true ? esc_html__( 'This option is disabled when "Disable the Event Search Bar" is checked on the Display settings tab.', 'the-events-calendar' ) : esc_html__( 'Instantly updates the calendar view when searching for or filtering events.', 'the-events-calendar' ),
54
- 'attributes' => tribe_get_option( 'tribeDisableTribeBar', false ) == true ? array( 'disabled' => 'disabled' ) : null,
55
  'default' => true,
56
  'validation_type' => 'boolean',
57
  'class' => tribe_get_option( 'tribeDisableTribeBar', false ) == true ? 'tribe-fieldset-disabled' : null,
58
- ),
59
- 'showComments' => array(
60
  'type' => 'checkbox_bool',
61
  'label' => esc_html__( 'Show comments', 'the-events-calendar' ),
62
  'tooltip' => esc_html__( 'Enable comments on event pages.', 'the-events-calendar' ),
63
  'default' => false,
64
  'validation_type' => 'boolean',
65
- ),
66
- 'disable_metabox_custom_fields' => array(
67
  'type' => 'checkbox_bool',
68
  'label' => esc_html__( 'Show Custom Fields metabox', 'the-events-calendar' ),
69
  'tooltip' => esc_html__( 'Enable WordPress Custom Fields on events in the classic editor.', 'the-events-calendar' ),
70
  'default' => true,
71
  'validation_type' => 'boolean',
72
- ),
73
- 'showEventsInMainLoop' => array(
74
  'type' => 'checkbox_bool',
75
  'label' => esc_html__( 'Include events in main blog loop', 'the-events-calendar' ),
76
  'tooltip' => esc_html__( 'Show events with the site\'s other posts. When this box is checked, events will also continue to appear on the default events page.', 'the-events-calendar' ),
77
  'default' => false,
78
  'validation_type' => 'boolean',
79
- ),
80
- 'unprettyPermalinksUrl' => array(
81
  'type' => 'wrapped_html',
82
  'label' => esc_html__( 'Events URL slug', 'the-events-calendar' ),
83
  'html' => '<p>'
@@ -92,43 +92,43 @@ $general_tab_fields = Tribe__Main::array_insert_before_key(
92
  )
93
  . '</p>',
94
  'conditional' => ( '' == get_option( 'permalink_structure' ) ),
95
- ),
96
- 'eventsSlug' => array(
97
  'type' => 'text',
98
  'label' => esc_html__( 'Events URL slug', 'the-events-calendar' ),
99
  'default' => 'events',
100
  'validation_type' => 'slug',
101
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
102
- ),
103
- 'current-events-slug' => array(
104
  'type' => 'html',
105
  'html' => '<p class="tribe-field-indent tribe-field-description description">' . esc_html__( 'The slug used for building the events URL.', 'the-events-calendar' ) . ' ' . sprintf( esc_html__( 'Your current events URL is: %s', 'the-events-calendar' ), '<code><a href="' . esc_url( tribe_get_events_link() ) . '">' . urldecode( tribe_get_events_link() ) . '</a></code>' ) . '</p>',
106
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
107
- ),
108
- 'ical-info' => array(
109
  'type' => 'html',
110
  'display_callback' => ( function_exists( 'tribe_get_ical_link' ) ) ? '<p id="ical-link" class="tribe-field-indent tribe-field-description description">' . esc_html__( 'Here is the iCal feed URL for your events:', 'the-events-calendar' ) . ' <code>' . tribe_get_ical_link() . '</code></p>' : '',
111
  'conditional' => function_exists( 'tribe_get_ical_link' ),
112
- ),
113
- 'singleEventSlug' => array(
114
  'type' => 'text',
115
  'label' => esc_html__( 'Single event URL slug', 'the-events-calendar' ),
116
  'default' => 'event',
117
  'validation_type' => 'slug',
118
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
119
- ),
120
- 'current-single-event-slug' => array(
121
  'type' => 'html',
122
  'html' => '<p class="tribe-field-indent tribe-field-description description">' . sprintf( __( 'The above should ideally be plural, and this singular.<br />Your single event URL is: %s', 'the-events-calendar' ), '<code>' . trailingslashit( home_url() ) . urldecode( tribe_get_option( 'singleEventSlug', 'event' ) ) . '/single-post-name/</code>' ) . '</p>',
123
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
124
- ),
125
- 'multiDayCutoff' => array(
126
  'type' => 'dropdown',
127
  'label' => esc_html__( 'End of day cutoff', 'the-events-calendar' ),
128
  'validation_type' => 'options',
129
  'size' => 'small',
130
  'default' => date_i18n( $site_time_format, strtotime( '12:00 am' ) ),
131
- 'options' => array(
132
  '00:00' => date_i18n( $site_time_format, strtotime( '12:00 am' ) ),
133
  '01:00' => date_i18n( $site_time_format, strtotime( '01:00 am' ) ),
134
  '02:00' => date_i18n( $site_time_format, strtotime( '02:00 am' ) ),
@@ -141,40 +141,40 @@ $general_tab_fields = Tribe__Main::array_insert_before_key(
141
  '09:00' => date_i18n( $site_time_format, strtotime( '09:00 am' ) ),
142
  '10:00' => date_i18n( $site_time_format, strtotime( '10:00 am' ) ),
143
  '11:00' => date_i18n( $site_time_format, strtotime( '11:00 am' ) ),
144
- ),
145
- ),
146
- 'multiDayCutoffHelper' => array(
147
  'type' => 'html',
148
  'html' => '<p class="tribe-field-indent tribe-field-description description">' . sprintf( esc_html__( "Have an event that runs past midnight? Select a time after that event's end to avoid showing the event on the next day's calendar.", 'the-events-calendar' ) ) . '</p>',
149
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
150
- ),
151
- 'defaultCurrencySymbol' => array(
152
  'type' => 'text',
153
  'label' => esc_html__( 'Default currency symbol', 'the-events-calendar' ),
154
  'tooltip' => esc_html__( 'Set the default currency symbol for event costs. Note that this only impacts future events, and changes made will not apply retroactively.', 'the-events-calendar' ),
155
  'validation_type' => 'textarea',
156
  'size' => 'small',
157
  'default' => '$',
158
- ),
159
- 'reverseCurrencyPosition' => array(
160
  'type' => 'checkbox_bool',
161
  'label' => esc_html__( 'Currency symbol follows value', 'the-events-calendar' ),
162
  'tooltip' => esc_html__( 'The currency symbol normally precedes the value. Enabling this option positions the symbol after the value.', 'the-events-calendar' ),
163
  'default' => false,
164
  'validation_type' => 'boolean',
165
- ),
166
- 'amalgamateDuplicates' => array(
167
  'type' => 'html',
168
  'html' => '<fieldset class="tribe-field tribe-field-html"><legend>' . esc_html__( 'Duplicate Venues &amp; Organizers', 'the-events-calendar' ) . '</legend><div class="tribe-field-wrap">' . Tribe__Events__Amalgamator::migration_button( esc_html__( 'Merge Duplicates', 'the-events-calendar' ) ) . '<p class="tribe-field-indent description">' . esc_html__( 'You might find duplicate venues and organizers when updating The Events Calendar from a pre-3.0 version. Click this button to automatically merge identical venues and organizers.', 'the-events-calendar' ) . '</p></div></fieldset><div class="clear"></div>',
169
- ),
170
- tribe( 'tec.event-cleaner' )->key_trash_events => array(
171
  'type' => 'dropdown',
172
  'label' => esc_html__( 'Move to trash events older than', 'the-events-calendar' ),
173
  'tooltip' => esc_html__( 'This option allows you to automatically move past events to trash.', 'the-events-calendar' ),
174
  'validation_type' => 'options',
175
  'size' => 'small',
176
  'default' => null,
177
- 'options' => array(
178
  null => esc_html__( 'Disabled', 'the-events-calendar' ),
179
  3 => esc_html__( '3 months', 'the-events-calendar' ),
180
  6 => esc_html__( '6 months', 'the-events-calendar' ),
@@ -182,16 +182,16 @@ $general_tab_fields = Tribe__Main::array_insert_before_key(
182
  12 => esc_html__( '1 year', 'the-events-calendar' ),
183
  24 => esc_html__( '2 years', 'the-events-calendar' ),
184
  36 => esc_html__( '3 years', 'the-events-calendar' ),
185
- ),
186
- ),
187
- tribe( 'tec.event-cleaner' )->key_delete_events => array(
188
  'type' => 'dropdown',
189
  'label' => esc_html__( 'Permanently delete events older than', 'the-events-calendar' ),
190
  'tooltip' => esc_html__( 'This option allows you to bulk delete past events. Be careful and backup your database before removing your events as there is no way to reverse the changes.', 'the-events-calendar' ),
191
  'validation_type' => 'options',
192
  'size' => 'small',
193
  'default' => null,
194
- 'options' => array(
195
  null => esc_html__( 'Disabled', 'the-events-calendar' ),
196
  3 => esc_html__( '3 months', 'the-events-calendar' ),
197
  6 => esc_html__( '6 months', 'the-events-calendar' ),
@@ -199,54 +199,54 @@ $general_tab_fields = Tribe__Main::array_insert_before_key(
199
  12 => esc_html__( '1 year', 'the-events-calendar' ),
200
  24 => esc_html__( '2 years', 'the-events-calendar' ),
201
  36 => esc_html__( '3 years', 'the-events-calendar' ),
202
- ),
203
- ),
204
- 'tribeEventsMiscellaneousTitle' => array(
205
  'type' => 'html',
206
  'html' => '<h3>' . esc_html__( 'Miscellaneous Settings', 'the-events-calendar' ) . '</h3>',
207
- ),
208
- )
209
  );
210
 
211
  $general_tab_fields = Tribe__Main::array_insert_after_key(
212
  'tribeEventsMiscellaneousTitle',
213
  $general_tab_fields,
214
- array(
215
- 'viewWelcomePage' => array(
216
  'type' => 'html',
217
  'html' =>
218
  '<fieldset class="tribe-field tribe-field-html"><legend>' .
219
  esc_html__( 'View Welcome Page', 'the-events-calendar' ) .
220
- '</legend><div class="tribe-field-wrap"><a href="' . Tribe__Settings::instance()->get_url( array( Tribe__Events__Main::instance()->activation_page->welcome_slug => 1 ) ) . '" class="button">' . esc_html__( 'View Welcome Page', 'the-events-calendar' ) . '</a><p class="tribe-field-indent description">' . esc_html__( 'View the page that displayed when you initially installed the plugin.', 'the-events-calendar' ) . '</p></div></fieldset><div class="clear"></div>',
221
- ),
222
- 'viewUpdatePage' => array(
223
  'type' => 'html',
224
  'html' =>
225
  '<fieldset class="tribe-field tribe-field-html"><legend>' .
226
  esc_html__( 'View Update Page', 'the-events-calendar' ) .
227
- '</legend><div class="tribe-field-wrap"><a href="' . Tribe__Settings::instance()->get_url( array( Tribe__Events__Main::instance()->activation_page->update_slug => 1 ) ) . '" class="button">' . esc_html__( 'View Update Page', 'the-events-calendar' ) . '</a><p class="tribe-field-indent description">' . esc_html__( 'View the page that displayed when you updated the plugin.', 'the-events-calendar' ) . '</p></div></fieldset><div class="clear"></div>',
228
- ),
229
- )
230
  );
231
 
232
 
233
  $general_tab_fields = Tribe__Main::array_insert_before_key(
234
  'tribeEventsMiscellaneousTitle',
235
  $general_tab_fields,
236
- array(
237
- 'tribeGoogleMapsSettings' => array(
238
  'type' => 'html',
239
  'html' => '<h3>' . esc_html__( 'Map Settings', 'the-events-calendar' ) . '</h3>',
240
- ),
241
- 'embedGoogleMaps' => array(
242
  'type' => 'checkbox_bool',
243
  'label' => esc_html__( 'Enable Maps', 'the-events-calendar' ),
244
  'tooltip' => esc_html__( 'Check to enable maps for events and venues.', 'the-events-calendar' ),
245
  'default' => true,
246
  'class' => 'google-embed-size',
247
  'validation_type' => 'boolean',
248
- ),
249
- 'embedGoogleMapsZoom' => array(
250
  'type' => 'text',
251
  'label' => esc_html__( 'Google Maps default zoom level', 'the-events-calendar' ),
252
  'tooltip' => esc_html__( '0 = zoomed out; 21 = zoomed in.', 'the-events-calendar' ),
@@ -254,8 +254,8 @@ $general_tab_fields = Tribe__Main::array_insert_before_key(
254
  'default' => 10,
255
  'class' => 'google-embed-field',
256
  'validation_type' => 'number_or_percent',
257
- ),
258
- )
259
  );
260
 
261
  $general_tab_fields = tribe( 'events.editor.compatibility' )->insert_toggle_blocks_editor_field( $general_tab_fields );
6
  $general_tab_fields = Tribe__Main::array_insert_after_key(
7
  'info-start',
8
  $general_tab_fields,
9
+ [
10
  // after info-start
11
+ 'upsell-heading' => [
12
  'type' => 'heading',
13
  'label' => esc_html__( 'Finding & extending your calendar.', 'the-events-calendar' ),
14
  'conditional' => ( ! defined( 'TRIBE_HIDE_UPSELL' ) || ! TRIBE_HIDE_UPSELL ),
15
+ ],
16
+ 'finding-heading' => [
17
  'type' => 'heading',
18
  'label' => esc_html__( 'Finding your calendar.', 'the-events-calendar' ),
19
  'conditional' => ( defined( 'TRIBE_HIDE_UPSELL' ) && TRIBE_HIDE_UPSELL ),
20
+ ],
21
+ 'view-calendar-link' => [
22
  'type' => 'html',
23
  'html' => '<p>' . esc_html__( 'Where\'s my calendar?', 'the-events-calendar' ) . ' <a href="' . esc_url( Tribe__Events__Main::instance()->getLink() ) . '">' . esc_html__( 'Right here', 'the-events-calendar' ) . '</a>.</p>',
24
+ ],
25
+ ]
26
  );
27
 
28
  $posts_per_page_tooltip = esc_html__( 'The number of events per page on the List View. Does not affect other views.', 'the-events-calendar' );
34
  $general_tab_fields = Tribe__Main::array_insert_before_key(
35
  'debugEvents',
36
  $general_tab_fields,
37
+ [
38
+ 'tribeEventsDisplayThemeTitle' => [
39
  'type' => 'html',
40
  'html' => '<h3>' . esc_html__( 'General Settings', 'the-events-calendar' ) . '</h3>',
41
+ ],
42
+ 'postsPerPage' => [
43
  'type' => 'text',
44
  'label' => esc_html__( 'Number of events to show per page', 'the-events-calendar' ),
45
  'tooltip' => $posts_per_page_tooltip,
46
  'size' => 'small',
47
+ 'default' => tribe_events_views_v2_is_enabled() ? 12 : get_option( 'posts_per_page' ),
48
  'validation_type' => 'positive_int',
49
+ ],
50
+ 'liveFiltersUpdate' => [
51
  'type' => 'checkbox_bool',
52
  'label' => esc_html__( 'Enable live refresh', 'the-events-calendar' ),
53
  'tooltip' => tribe_get_option( 'tribeDisableTribeBar', false ) == true ? esc_html__( 'This option is disabled when "Disable the Event Search Bar" is checked on the Display settings tab.', 'the-events-calendar' ) : esc_html__( 'Instantly updates the calendar view when searching for or filtering events.', 'the-events-calendar' ),
54
+ 'attributes' => tribe_get_option( 'tribeDisableTribeBar', false ) == true ? [ 'disabled' => 'disabled' ] : null,
55
  'default' => true,
56
  'validation_type' => 'boolean',
57
  'class' => tribe_get_option( 'tribeDisableTribeBar', false ) == true ? 'tribe-fieldset-disabled' : null,
58
+ ],
59
+ 'showComments' => [
60
  'type' => 'checkbox_bool',
61
  'label' => esc_html__( 'Show comments', 'the-events-calendar' ),
62
  'tooltip' => esc_html__( 'Enable comments on event pages.', 'the-events-calendar' ),
63
  'default' => false,
64
  'validation_type' => 'boolean',
65
+ ],
66
+ 'disable_metabox_custom_fields' => [
67
  'type' => 'checkbox_bool',
68
  'label' => esc_html__( 'Show Custom Fields metabox', 'the-events-calendar' ),
69
  'tooltip' => esc_html__( 'Enable WordPress Custom Fields on events in the classic editor.', 'the-events-calendar' ),
70
  'default' => true,
71
  'validation_type' => 'boolean',
72
+ ],
73
+ 'showEventsInMainLoop' => [
74
  'type' => 'checkbox_bool',
75
  'label' => esc_html__( 'Include events in main blog loop', 'the-events-calendar' ),
76
  'tooltip' => esc_html__( 'Show events with the site\'s other posts. When this box is checked, events will also continue to appear on the default events page.', 'the-events-calendar' ),
77
  'default' => false,
78
  'validation_type' => 'boolean',
79
+ ],
80
+ 'unprettyPermalinksUrl' => [
81
  'type' => 'wrapped_html',
82
  'label' => esc_html__( 'Events URL slug', 'the-events-calendar' ),
83
  'html' => '<p>'
92
  )
93
  . '</p>',
94
  'conditional' => ( '' == get_option( 'permalink_structure' ) ),
95
+ ],
96
+ 'eventsSlug' => [
97
  'type' => 'text',
98
  'label' => esc_html__( 'Events URL slug', 'the-events-calendar' ),
99
  'default' => 'events',
100
  'validation_type' => 'slug',
101
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
102
+ ],
103
+ 'current-events-slug' => [
104
  'type' => 'html',
105
  'html' => '<p class="tribe-field-indent tribe-field-description description">' . esc_html__( 'The slug used for building the events URL.', 'the-events-calendar' ) . ' ' . sprintf( esc_html__( 'Your current events URL is: %s', 'the-events-calendar' ), '<code><a href="' . esc_url( tribe_get_events_link() ) . '">' . urldecode( tribe_get_events_link() ) . '</a></code>' ) . '</p>',
106
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
107
+ ],
108
+ 'ical-info' => [
109
  'type' => 'html',
110
  'display_callback' => ( function_exists( 'tribe_get_ical_link' ) ) ? '<p id="ical-link" class="tribe-field-indent tribe-field-description description">' . esc_html__( 'Here is the iCal feed URL for your events:', 'the-events-calendar' ) . ' <code>' . tribe_get_ical_link() . '</code></p>' : '',
111
  'conditional' => function_exists( 'tribe_get_ical_link' ),
112
+ ],
113
+ 'singleEventSlug' => [
114
  'type' => 'text',
115
  'label' => esc_html__( 'Single event URL slug', 'the-events-calendar' ),
116
  'default' => 'event',
117
  'validation_type' => 'slug',
118
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
119
+ ],
120
+ 'current-single-event-slug' => [
121
  'type' => 'html',
122
  'html' => '<p class="tribe-field-indent tribe-field-description description">' . sprintf( __( 'The above should ideally be plural, and this singular.<br />Your single event URL is: %s', 'the-events-calendar' ), '<code>' . trailingslashit( home_url() ) . urldecode( tribe_get_option( 'singleEventSlug', 'event' ) ) . '/single-post-name/</code>' ) . '</p>',
123
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
124
+ ],
125
+ 'multiDayCutoff' => [
126
  'type' => 'dropdown',
127
  'label' => esc_html__( 'End of day cutoff', 'the-events-calendar' ),
128
  'validation_type' => 'options',
129
  'size' => 'small',
130
  'default' => date_i18n( $site_time_format, strtotime( '12:00 am' ) ),
131
+ 'options' => [
132
  '00:00' => date_i18n( $site_time_format, strtotime( '12:00 am' ) ),
133
  '01:00' => date_i18n( $site_time_format, strtotime( '01:00 am' ) ),
134
  '02:00' => date_i18n( $site_time_format, strtotime( '02:00 am' ) ),
141
  '09:00' => date_i18n( $site_time_format, strtotime( '09:00 am' ) ),
142
  '10:00' => date_i18n( $site_time_format, strtotime( '10:00 am' ) ),
143
  '11:00' => date_i18n( $site_time_format, strtotime( '11:00 am' ) ),
144
+ ],
145
+ ],
146
+ 'multiDayCutoffHelper' => [
147
  'type' => 'html',
148
  'html' => '<p class="tribe-field-indent tribe-field-description description">' . sprintf( esc_html__( "Have an event that runs past midnight? Select a time after that event's end to avoid showing the event on the next day's calendar.", 'the-events-calendar' ) ) . '</p>',
149
  'conditional' => ( '' != get_option( 'permalink_structure' ) ),
150
+ ],
151
+ 'defaultCurrencySymbol' => [
152
  'type' => 'text',
153
  'label' => esc_html__( 'Default currency symbol', 'the-events-calendar' ),
154
  'tooltip' => esc_html__( 'Set the default currency symbol for event costs. Note that this only impacts future events, and changes made will not apply retroactively.', 'the-events-calendar' ),
155
  'validation_type' => 'textarea',
156
  'size' => 'small',
157
  'default' => '$',
158
+ ],
159
+ 'reverseCurrencyPosition' => [
160
  'type' => 'checkbox_bool',
161
  'label' => esc_html__( 'Currency symbol follows value', 'the-events-calendar' ),
162
  'tooltip' => esc_html__( 'The currency symbol normally precedes the value. Enabling this option positions the symbol after the value.', 'the-events-calendar' ),
163
  'default' => false,
164
  'validation_type' => 'boolean',
165
+ ],
166
+ 'amalgamateDuplicates' => [
167
  'type' => 'html',
168
  'html' => '<fieldset class="tribe-field tribe-field-html"><legend>' . esc_html__( 'Duplicate Venues &amp; Organizers', 'the-events-calendar' ) . '</legend><div class="tribe-field-wrap">' . Tribe__Events__Amalgamator::migration_button( esc_html__( 'Merge Duplicates', 'the-events-calendar' ) ) . '<p class="tribe-field-indent description">' . esc_html__( 'You might find duplicate venues and organizers when updating The Events Calendar from a pre-3.0 version. Click this button to automatically merge identical venues and organizers.', 'the-events-calendar' ) . '</p></div></fieldset><div class="clear"></div>',
169
+ ],
170
+ tribe( 'tec.event-cleaner' )->key_trash_events => [
171
  'type' => 'dropdown',
172
  'label' => esc_html__( 'Move to trash events older than', 'the-events-calendar' ),
173
  'tooltip' => esc_html__( 'This option allows you to automatically move past events to trash.', 'the-events-calendar' ),
174
  'validation_type' => 'options',
175
  'size' => 'small',
176
  'default' => null,
177
+ 'options' => [
178
  null => esc_html__( 'Disabled', 'the-events-calendar' ),
179
  3 => esc_html__( '3 months', 'the-events-calendar' ),
180
  6 => esc_html__( '6 months', 'the-events-calendar' ),
182
  12 => esc_html__( '1 year', 'the-events-calendar' ),
183
  24 => esc_html__( '2 years', 'the-events-calendar' ),
184
  36 => esc_html__( '3 years', 'the-events-calendar' ),
185
+ ],
186
+ ],
187
+ tribe( 'tec.event-cleaner' )->key_delete_events => [
188
  'type' => 'dropdown',
189
  'label' => esc_html__( 'Permanently delete events older than', 'the-events-calendar' ),
190
  'tooltip' => esc_html__( 'This option allows you to bulk delete past events. Be careful and backup your database before removing your events as there is no way to reverse the changes.', 'the-events-calendar' ),
191
  'validation_type' => 'options',
192
  'size' => 'small',
193
  'default' => null,
194
+ 'options' => [
195
  null => esc_html__( 'Disabled', 'the-events-calendar' ),
196
  3 => esc_html__( '3 months', 'the-events-calendar' ),
197
  6 => esc_html__( '6 months', 'the-events-calendar' ),
199
  12 => esc_html__( '1 year', 'the-events-calendar' ),
200
  24 => esc_html__( '2 years', 'the-events-calendar' ),
201
  36 => esc_html__( '3 years', 'the-events-calendar' ),
202
+ ],
203
+ ],
204
+ 'tribeEventsMiscellaneousTitle' => [
205
  'type' => 'html',
206
  'html' => '<h3>' . esc_html__( 'Miscellaneous Settings', 'the-events-calendar' ) . '</h3>',
207
+ ],
208
+ ]
209
  );
210
 
211
  $general_tab_fields = Tribe__Main::array_insert_after_key(
212
  'tribeEventsMiscellaneousTitle',
213
  $general_tab_fields,
214
+ [
215
+ 'viewWelcomePage' => [
216
  'type' => 'html',
217
  'html' =>
218
  '<fieldset class="tribe-field tribe-field-html"><legend>' .
219
  esc_html__( 'View Welcome Page', 'the-events-calendar' ) .
220
+ '</legend><div class="tribe-field-wrap"><a href="' . Tribe__Settings::instance()->get_url( [ Tribe__Events__Main::instance()->activation_page->welcome_slug => 1 ] ) . '" class="button">' . esc_html__( 'View Welcome Page', 'the-events-calendar' ) . '</a><p class="tribe-field-indent description">' . esc_html__( 'View the page that displayed when you initially installed the plugin.', 'the-events-calendar' ) . '</p></div></fieldset><div class="clear"></div>',
221
+ ],
222
+ 'viewUpdatePage' => [
223
  'type' => 'html',
224
  'html' =>
225
  '<fieldset class="tribe-field tribe-field-html"><legend>' .
226
  esc_html__( 'View Update Page', 'the-events-calendar' ) .
227
+ '</legend><div class="tribe-field-wrap"><a href="' . Tribe__Settings::instance()->get_url( [ Tribe__Events__Main::instance()->activation_page->update_slug => 1 ] ) . '" class="button">' . esc_html__( 'View Update Page', 'the-events-calendar' ) . '</a><p class="tribe-field-indent description">' . esc_html__( 'View the page that displayed when you updated the plugin.', 'the-events-calendar' ) . '</p></div></fieldset><div class="clear"></div>',
228
+ ],
229
+ ]
230
  );
231
 
232
 
233
  $general_tab_fields = Tribe__Main::array_insert_before_key(
234
  'tribeEventsMiscellaneousTitle',
235
  $general_tab_fields,
236
+ [
237
+ 'tribeGoogleMapsSettings' => [
238
  'type' => 'html',
239
  'html' => '<h3>' . esc_html__( 'Map Settings', 'the-events-calendar' ) . '</h3>',
240
+ ],
241
+ 'embedGoogleMaps' => [
242
  'type' => 'checkbox_bool',
243
  'label' => esc_html__( 'Enable Maps', 'the-events-calendar' ),
244
  'tooltip' => esc_html__( 'Check to enable maps for events and venues.', 'the-events-calendar' ),
245
  'default' => true,
246
  'class' => 'google-embed-size',
247
  'validation_type' => 'boolean',
248
+ ],
249
+ 'embedGoogleMapsZoom' => [
250
  'type' => 'text',
251
  'label' => esc_html__( 'Google Maps default zoom level', 'the-events-calendar' ),
252
  'tooltip' => esc_html__( '0 = zoomed out; 21 = zoomed in.', 'the-events-calendar' ),
254
  'default' => 10,
255
  'class' => 'google-embed-field',
256
  'validation_type' => 'number_or_percent',
257
+ ],
258
+ ]
259
  );
260
 
261
  $general_tab_fields = tribe( 'events.editor.compatibility' )->insert_toggle_blocks_editor_field( $general_tab_fields );
src/functions/template-tags/event.php CHANGED
@@ -19,6 +19,7 @@ if ( ! function_exists( 'tribe_get_event' ) ) {
19
  * respectively. Defaults to `OBJECT`.
20
  * @param string $filter Type of filter to apply. Accepts 'raw', a valid date string or
21
  * object to localize the event in a specific time-frame.
 
22
  *
23
  * @return array|mixed|void|WP_Post|null {
24
  * The Event post object or array, `null` if not found.
@@ -74,7 +75,7 @@ if ( ! function_exists( 'tribe_get_event' ) ) {
74
  * tags.
75
  * }
76
  */
77
- function tribe_get_event( $event = null, $output = OBJECT, $filter = 'raw' ) {
78
  /**
79
  * Filters the event result before any logic applies.
80
  *
@@ -97,26 +98,38 @@ if ( ! function_exists( 'tribe_get_event' ) ) {
97
  return $return;
98
  }
99
 
100
- $post = Event::from_post( $event )->to_post( $output, $filter );
101
-
102
- if ( empty( $post ) ) {
103
- return null;
 
 
104
  }
105
 
106
- /**
107
- * Filters the event post object before caching it and returning it.
108
- *
109
- * Note: this value will be cached; as such this filter might not run on each request.
110
- * If you need to filter the output value on each call of this function then use the `tribe_get_event_before`
111
- * filter.
112
- *
113
- * @since 4.9.7
114
- *
115
- * @param WP_Post $post The event post object, decorated with a set of custom properties.
116
- * @param string $output The output format to use.
117
- * @param string $filter The filter, or context of the fetch.
118
- */
119
- $post = apply_filters( 'tribe_get_event', $post, $output, $filter );
 
 
 
 
 
 
 
 
 
 
120
 
121
  if ( OBJECT !== $output ) {
122
  $post = ARRAY_A === $output ? (array) $post : array_values( (array) $post );
19
  * respectively. Defaults to `OBJECT`.
20
  * @param string $filter Type of filter to apply. Accepts 'raw', a valid date string or
21
  * object to localize the event in a specific time-frame.
22
+ * @param bool $force Whether to force a re-fetch ignoring cached results or not.
23
  *
24
  * @return array|mixed|void|WP_Post|null {
25
  * The Event post object or array, `null` if not found.
75
  * tags.
76
  * }
77
  */
78
+ function tribe_get_event( $event = null, $output = OBJECT, $filter = 'raw', $force = false ) {
79
  /**
80
  * Filters the event result before any logic applies.
81
  *
98
  return $return;
99
  }
100
 
101
+ $post = false;
102
+ if ( ! $force ) {
103
+ $cache_key = 'tribe_get_event_' . md5( json_encode( [ $event, $output, $filter ] ) );
104
+ /** @var Tribe__Cache $cache */
105
+ $cache = tribe( 'cache' );
106
+ $post = $cache->get( $cache_key, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
107
  }
108
 
109
+ if ( false === $post ) {
110
+ $post = Event::from_post( $event )->to_post( $output, $filter );
111
+
112
+ if ( empty( $post ) ) {
113
+ return null;
114
+ }
115
+
116
+ /**
117
+ * Filters the event post object before caching it and returning it.
118
+ *
119
+ * Note: this value will be cached; as such this filter might not run on each request.
120
+ * If you need to filter the output value on each call of this function then use the `tribe_get_event_before`
121
+ * filter.
122
+ *
123
+ * @since 4.9.7
124
+ *
125
+ * @param WP_Post $post The event post object, decorated with a set of custom properties.
126
+ * @param string $output The output format to use.
127
+ * @param string $filter The filter, or context of the fetch.
128
+ */
129
+ $post = apply_filters( 'tribe_get_event', $post, $output, $filter );
130
+
131
+ $cache->set( $cache_key, $post, WEEK_IN_SECONDS, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
132
+ }
133
 
134
  if ( OBJECT !== $output ) {
135
  $post = ARRAY_A === $output ? (array) $post : array_values( (array) $post );
src/functions/template-tags/orm.php CHANGED
@@ -23,15 +23,20 @@ if ( ! function_exists( 'tribe_events' ) ) {
23
  'default' => 'events.event-repository',
24
  );
25
 
 
 
26
  /**
27
  * Filters the map relating event repository slugs to service container bindings.
28
  *
29
  * @since 4.9
 
30
  *
31
  * @param array $map A map in the shape [ <repository_slug> => <service_name> ]
32
  * @param string $repository The currently requested implementation.
 
 
33
  */
34
- $map = apply_filters( 'tribe_events_event_repository_map', $map, $repository );
35
 
36
  return tribe( Tribe__Utils__Array::get( $map, $repository, $map['default'] ) );
37
  }
23
  'default' => 'events.event-repository',
24
  );
25
 
26
+ $args = func_num_args() > 1 ? array_slice( func_get_args(), 1 ) : [];
27
+
28
  /**
29
  * Filters the map relating event repository slugs to service container bindings.
30
  *
31
  * @since 4.9
32
+ * @since 4.9.13 Added additional call arguements support.
33
  *
34
  * @param array $map A map in the shape [ <repository_slug> => <service_name> ]
35
  * @param string $repository The currently requested implementation.
36
+ * @param array $args An array of additional call arguments used to call the function beside the
37
+ * repository slug.
38
  */
39
+ $map = apply_filters( 'tribe_events_event_repository_map', $map, $repository, $args );
40
 
41
  return tribe( Tribe__Utils__Array::get( $map, $repository, $map['default'] ) );
42
  }
src/functions/template-tags/venue.php CHANGED
@@ -4,6 +4,7 @@
4
  *
5
  * Display functions (template-tags) for use in WordPress templates.
6
  */
 
7
  use Tribe\Events\Models\Post_Types\Venue;
8
 
9
  /**
@@ -16,6 +17,7 @@ use Tribe\Events\Models\Post_Types\Venue;
16
  * correspond to a WP_Post object, an associative array, or a numeric array,
17
  * respectively. Defaults to `OBJECT`.
18
  * @param string $filter Type of filter to apply. Accepts 'raw'.
 
19
  *
20
  * @return array|mixed|void|WP_Post|null {
21
  * The Venue post object or array, `null` if not found.
@@ -33,7 +35,7 @@ use Tribe\Events\Models\Post_Types\Venue;
33
  * @type string $geolocation_string The string we use to crawl and link to the maps provider.
34
  * }
35
  */
36
- function tribe_get_venue_object( $venue = null, $output = OBJECT, $filter = 'raw' ) {
37
  /**
38
  * Filters the venue result before any logic applies.
39
  *
@@ -55,26 +57,37 @@ function tribe_get_venue_object( $venue = null, $output = OBJECT, $filter = 'raw
55
  return $return;
56
  }
57
 
58
- $post = Venue::from_post( $venue )->to_post( $output, $filter );
59
-
60
- if ( empty( $post ) ) {
61
- return null;
 
 
62
  }
63
 
64
- /**
65
- * Filters the venue post object before caching it and returning it.
66
- *
67
- * Note: this value will be cached; as such this filter might not run on each request.
68
- * If you need to filter the output value on each call of this function then use the `tribe_get_venue_object_before`
69
- * filter.
70
- *
71
- * @since 4.9.7
72
- *
73
- * @param WP_Post $post The venue post object, decorated with a set of custom properties.
74
- * @param string $output The output format to use.
75
- * @param string $filter The filter, or context of the fetch.
76
- */
77
- $post = apply_filters( 'tribe_get_venue_object', $post, $output, $filter );
 
 
 
 
 
 
 
 
 
78
 
79
  if ( OBJECT !== $output ) {
80
  $post = ARRAY_A === $output ? (array) $post : array_values( (array) $post );
4
  *
5
  * Display functions (template-tags) for use in WordPress templates.
6
  */
7
+
8
  use Tribe\Events\Models\Post_Types\Venue;
9
 
10
  /**
17
  * correspond to a WP_Post object, an associative array, or a numeric array,
18
  * respectively. Defaults to `OBJECT`.
19
  * @param string $filter Type of filter to apply. Accepts 'raw'.
20
+ * @param bool $force Whether to force a re-fetch ignoring cached results or not.
21
  *
22
  * @return array|mixed|void|WP_Post|null {
23
  * The Venue post object or array, `null` if not found.
35
  * @type string $geolocation_string The string we use to crawl and link to the maps provider.
36
  * }
37
  */
38
+ function tribe_get_venue_object( $venue = null, $output = OBJECT, $filter = 'raw', $force = false ) {
39
  /**
40
  * Filters the venue result before any logic applies.
41
  *
57
  return $return;
58
  }
59
 
60
+ $post = false;
61
+ if ( ! $force ) {
62
+ $cache_key = 'tribe_get_venue_object_' . md5( json_encode( [ $venue, $output, $filter ] ) );
63
+ /** @var Tribe__Cache $cache */
64
+ $cache = tribe( 'cache' );
65
+ $post = $cache->get( $cache_key, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
66
  }
67
 
68
+ if ( false === $post ) {
69
+ $post = Venue::from_post( $venue )->to_post( $output, $filter );
70
+
71
+ if ( empty( $post ) ) {
72
+ return null;
73
+ }
74
+ /**
75
+ * Filters the venue post object before caching it and returning it.
76
+ *
77
+ * Note: this value will be cached; as such this filter might not run on each request.
78
+ * If you need to filter the output value on each call of this function then use the `tribe_get_venue_object_before`
79
+ * filter.
80
+ *
81
+ * @since 4.9.7
82
+ *
83
+ * @param WP_Post $post The venue post object, decorated with a set of custom properties.
84
+ * @param string $output The output format to use.
85
+ * @param string $filter The filter, or context of the fetch.
86
+ */
87
+ $post = apply_filters( 'tribe_get_venue_object', $post, $output, $filter );
88
+
89
+ $cache->set( $cache_key, $post, WEEK_IN_SECONDS, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
90
+ }
91
 
92
  if ( OBJECT !== $output ) {
93
  $post = ARRAY_A === $output ? (array) $post : array_values( (array) $post );
src/functions/utils/install.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ use Tribe__Events__Main as TEC;
3
+
4
+ /**
5
+ * Verifies that the current install of The Events Calendar is not
6
+ * a pre-existing setup, and trigger the activation of View V2.
7
+ *
8
+ * @since 4.9.13
9
+ *
10
+ * @return bool When to activate the View V2 or not.
11
+ */
12
+ function tribe_events_is_new_install() {
13
+ $previous_versions = array_filter( (array) tribe_get_option( 'previous_ecp_versions', [] ) );
14
+ usort( $previous_versions, 'version_compare' );
15
+
16
+ $has_previous_versions = ! empty( $previous_versions );
17
+
18
+ return ! $has_previous_versions;
19
+ }
src/functions/views/provider.php CHANGED
@@ -32,4 +32,82 @@ function tribe_events_views_v2_is_enabled() {
32
  * @param boolean $enabled Determining if V2 Views is enabled\
33
  */
34
  return apply_filters( 'tribe_events_views_v2_is_enabled', $enabled );
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  * @param boolean $enabled Determining if V2 Views is enabled\
33
  */
34
  return apply_filters( 'tribe_events_views_v2_is_enabled', $enabled );
35
+ }
36
+
37
+ /**
38
+ * Checks smart activation of the view v2, is not a function for verification of v2 is active or not.
39
+ *
40
+ * Current only being triggered on plugin actiovation hook.
41
+ *
42
+ * @since 4.9.13
43
+ *
44
+ * @return bool Wether we just activated the v2 on the database.
45
+ */
46
+ function tribe_events_views_v2_smart_activation() {
47
+ /**
48
+ * Allows filtering of the Events Views V2 smart activation..
49
+ *
50
+ * @since 4.9.13
51
+ *
52
+ * @param boolean $enabled Determining if V2 Views is enabled\
53
+ */
54
+ $should_smart_activate = apply_filters( 'tribe_events_views_v2_should_smart_activate', true );
55
+
56
+ if ( ! $should_smart_activate ) {
57
+ return false;
58
+ }
59
+
60
+ if ( tribe_events_views_v2_is_enabled() ) {
61
+ return false;
62
+ }
63
+
64
+ if ( ! tribe_events_is_new_install() ) {
65
+ return false;
66
+ }
67
+
68
+ $current_status = tribe_get_option( Manager::$option_enabled, null );
69
+
70
+ // Only update when value is either null or empty string.
71
+ if ( null !== $current_status && '' !== $current_status ) {
72
+ return false;
73
+ }
74
+
75
+ $status = tribe_update_option( Manager::$option_enabled, true );
76
+
77
+ if ( $status ) {
78
+ // Update the default posts_per_page to 12
79
+ tribe_update_option( 'postsPerPage', 12 );
80
+
81
+ // Update default events per day on month view amount to 3
82
+ tribe_update_option( 'monthEventAmount', 3 );
83
+ }
84
+
85
+ return $status;
86
+ }
87
+
88
+ /**
89
+ * Returns whether the Event Period repository should be used or not.
90
+ *
91
+ * @since 4.9.13
92
+ *
93
+ * @return bool whether the Event Period repository should be used or not.
94
+ */
95
+ function tribe_events_view_v2_use_period_repository() {
96
+ $enabled = false;
97
+ if ( defined( 'TRIBE_EVENTS_V2_VIEWS_USE_PERIOD_REPOSITORY' ) ) {
98
+ $enabled = (bool) TRIBE_EVENTS_V2_VIEWS_USE_PERIOD_REPOSITORY;
99
+ }
100
+
101
+ $env_var = getenv( 'TRIBE_EVENTS_V2_VIEWS_USE_PERIOD_REPOSITORY' );
102
+ if ( false !== $env_var ) {
103
+ $enabled = (bool) $env_var;
104
+ }
105
+ /**
106
+ * Filters whether to use the period repository or not.
107
+ *
108
+ * @since 4.9.13
109
+ *
110
+ * @param boolean $enabled Whether the Event Period repository should be used or not.
111
+ */
112
+ return (bool) apply_filters( 'tribe_events_views_v2_use_period_repository', $enabled );
113
+ }
src/resources/css/views-full.css CHANGED
@@ -153,6 +153,10 @@
153
  * SVG - Filters
154
  * ----------------------------------------------------------------------------- */
155
 
 
 
 
 
156
  /* -----------------------------------------------------------------------------
157
  * SVG - List
158
  * ----------------------------------------------------------------------------- */
@@ -161,10 +165,18 @@
161
  * SVG - Location
162
  * ----------------------------------------------------------------------------- */
163
 
 
 
 
 
164
  /* -----------------------------------------------------------------------------
165
  * SVG - Map
166
  * ----------------------------------------------------------------------------- */
167
 
 
 
 
 
168
  /* -----------------------------------------------------------------------------
169
  * SVG - Messages
170
  * ----------------------------------------------------------------------------- */
@@ -177,6 +189,10 @@
177
  * SVG - No Map
178
  * ----------------------------------------------------------------------------- */
179
 
 
 
 
 
180
  /* -----------------------------------------------------------------------------
181
  * SVG - Photo
182
  * ----------------------------------------------------------------------------- */
@@ -420,6 +436,15 @@
420
  *
421
  * ----------------------------------------------------------------------------- */
422
 
 
 
 
 
 
 
 
 
 
423
  .tribe-events .datepicker {
424
  background-color: #FFFFFF;
425
  border: 1px solid #D5D5D5;
@@ -477,10 +502,6 @@
477
  font-weight: 400;
478
  }
479
 
480
- .tribe-events .datepicker .day.old {
481
- color: #D5D5D5;
482
- }
483
-
484
  .tribe-events .datepicker .month,
485
  .tribe-events .datepicker .year {
486
  color: #141827;
@@ -490,6 +511,10 @@
490
  font-weight: 400;
491
  }
492
 
 
 
 
 
493
  .tribe-events .datepicker .day,
494
  .tribe-events .datepicker .month,
495
  .tribe-events .datepicker .year {
@@ -508,9 +533,26 @@
508
  background: #F7F6F6;
509
  }
510
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  .tribe-events .datepicker .day.active, .tribe-events .datepicker .month.active, .tribe-events .datepicker .year.active {
512
  color: #FFFFFF;
513
  background: #334AFF;
 
514
  }
515
 
516
  .tribe-events .datepicker .day.active:hover,
@@ -524,61 +566,7 @@
524
  .tribe-events .datepicker .year.active.focused {
525
  color: #FFFFFF;
526
  background: #334AFF;
527
- }
528
-
529
- .tribe-events.tribe-events-view--week .datepicker tbody tr.active:after {
530
- border: 1px solid #334AFF;
531
- border-radius: 4px;
532
- content: '';
533
- display: block;
534
- height: 47px;
535
- left: 16px;
536
- pointer-events: none;
537
- position: absolute;
538
- -webkit-transform: translateY(-1px);
539
- transform: translateY(-1px);
540
- width: calc(100% - 34px); /* 16px left padding + 16px right padding + 1px left border + 1px right border */
541
- }
542
-
543
- .tribe-events.tribe-events-view--week .datepicker .day {
544
- border-radius: 0;
545
- }
546
-
547
- .tribe-events.tribe-events-view--week .datepicker .day:first-child {
548
- border-bottom-left-radius: 4px;
549
- border-top-left-radius: 4px;
550
- }
551
-
552
- .tribe-events.tribe-events-view--week .datepicker .day:last-child {
553
- border-bottom-right-radius: 4px;
554
- border-top-right-radius: 4px;
555
- }
556
-
557
- .tribe-events.tribe-events-view--week .datepicker .day.active {
558
- color: #141827;
559
- background: transparent;
560
- }
561
-
562
- .tribe-events.tribe-events-view--week .datepicker .day.active:hover {
563
- background: transparent;
564
- }
565
-
566
- .tribe-events.tribe-events-view--week .datepicker .day.disabled {
567
- color: #141827;
568
- }
569
-
570
- .tribe-events.tribe-events-view--week .datepicker .day.disabled:hover,
571
- .tribe-events.tribe-events-view--week .datepicker .day.disabled:focus,
572
- .tribe-events.tribe-events-view--week .datepicker .day.disabled.focused {
573
- color: #141827;
574
- }
575
-
576
- .tribe-events.tribe-events-view--week .datepicker .hovered .day, .tribe-events.tribe-events-view--week .datepicker .focused .day {
577
- background: #F7F6F6;
578
- }
579
-
580
- .tribe-events.tribe-events-view--week .datepicker .hovered .day:hover, .tribe-events.tribe-events-view--week .datepicker .focused .day:hover {
581
- background: #F7F6F6;
582
  }
583
 
584
  /* -----------------------------------------------------------------------------
@@ -623,10 +611,6 @@
623
  opacity: 1;
624
  }
625
 
626
- .tribe-theme-enfold .tribe-events .datepicker .day.old {
627
- color: #D5D5D5;
628
- }
629
-
630
  .tribe-theme-enfold .tribe-events .datepicker .day,
631
  .tribe-theme-enfold .tribe-events .datepicker .month,
632
  .tribe-theme-enfold .tribe-events .datepicker .year {
@@ -646,6 +630,26 @@
646
  background: #F7F6F6;
647
  }
648
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649
  .tribe-theme-enfold .tribe-events .datepicker .day.active, .tribe-theme-enfold .tribe-events .datepicker .month.active, .tribe-theme-enfold .tribe-events .datepicker .year.active {
650
  color: #FFFFFF;
651
  background: #334AFF;
@@ -664,29 +668,6 @@
664
  background: #334AFF;
665
  }
666
 
667
- /* -----------------------------------------------------------------------------
668
- *
669
- * Datepicker: Theme Overrides
670
- *
671
- * ----------------------------------------------------------------------------- */
672
-
673
- .tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .day.active {
674
- color: #141827;
675
- background: transparent;
676
- }
677
-
678
- .tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .day.active:hover {
679
- background: transparent;
680
- }
681
-
682
- .tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .hovered .day, .tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .focused .day {
683
- background: #F7F6F6;
684
- }
685
-
686
- .tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .hovered .day:hover, .tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .focused .day:hover {
687
- background: #F7F6F6;
688
- }
689
-
690
  /* -----------------------------------------------------------------------------
691
  * Theme Overrides - Avada
692
  * ----------------------------------------------------------------------------- */
@@ -713,6 +694,7 @@
713
  .tribe-theme-avada .tribe-events .datepicker .day.old,
714
  .tribe-theme-avada .tribe-events .datepicker .day.new {
715
  background-color: transparent !important;
 
716
  }
717
 
718
  .tribe-theme-avada .tribe-events .datepicker .day.old:hover,
@@ -724,14 +706,6 @@
724
  background: #F7F6F6 !important;
725
  }
726
 
727
- .tribe-theme-avada .tribe-events .datepicker .day.old {
728
- color: #D5D5D5 !important;
729
- }
730
-
731
- .tribe-theme-avada .tribe-events .datepicker .day.new {
732
- color: #141827 !important;
733
- }
734
-
735
  .tribe-theme-avada .tribe-events .datepicker .day,
736
  .tribe-theme-avada .tribe-events .datepicker .month {
737
  background-color: transparent;
@@ -747,9 +721,26 @@
747
  background: #F7F6F6;
748
  }
749
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
750
  .tribe-theme-avada .tribe-events .datepicker .day.active, .tribe-theme-avada .tribe-events .datepicker .month.active {
751
- color: #FFFFFF;
752
- background: #334AFF;
753
  }
754
 
755
  .tribe-theme-avada .tribe-events .datepicker .day.active:hover,
@@ -758,32 +749,8 @@
758
  .tribe-theme-avada .tribe-events .datepicker .month.active:hover,
759
  .tribe-theme-avada .tribe-events .datepicker .month.active:focus,
760
  .tribe-theme-avada .tribe-events .datepicker .month.active.focused {
761
- color: #FFFFFF;
762
- background: #334AFF;
763
- }
764
-
765
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .day.active {
766
- color: #141827;
767
- background: transparent;
768
- }
769
-
770
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .day.active:hover {
771
- background: transparent;
772
- }
773
-
774
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day, .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day {
775
- background: #F7F6F6;
776
- }
777
-
778
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day:hover, .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day:hover {
779
- background: #F7F6F6;
780
- }
781
-
782
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day.old,
783
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day.new,
784
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day.old,
785
- .tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day.new {
786
- background-color: #F7F6F6 !important;
787
  }
788
 
789
  /* Day marker */
@@ -885,6 +852,14 @@
885
  background-color: #F7F6F6;
886
  }
887
 
 
 
 
 
 
 
 
 
888
  /* Loader */
889
 
890
  /* -----------------------------------------------------------------------------
@@ -972,7 +947,6 @@
972
 
973
  .tribe-events .tribe-events-c-nav__prev:active, .tribe-events .tribe-events-c-nav__next:active, .tribe-events .tribe-events-c-nav__today:active {
974
  color: #141827;
975
- font-weight: 700;
976
  }
977
 
978
  .tribe-events .tribe-events-c-nav__prev:disabled, .tribe-events .tribe-events-c-nav__next:disabled {
@@ -1525,7 +1499,7 @@
1525
  background-color: #334AFF;
1526
  content: '';
1527
  height: 100%;
1528
- left: 3px;
1529
  position: absolute;
1530
  width: 2px;
1531
  }
@@ -1534,19 +1508,6 @@
1534
  height: calc(100% - 16px);
1535
  }
1536
 
1537
- .tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured,
1538
- .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
1539
- display: inline-block;
1540
- }
1541
-
1542
- .tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured {
1543
- margin-right: 4px;
1544
- }
1545
-
1546
- .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
1547
- margin-left: 4px;
1548
- }
1549
-
1550
  .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:hover .tribe-events-calendar-month__calendar-event-datetime-recurring-icon, .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:focus .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
1551
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3C3.753 4.717 1.66 7 1.66 9.827c0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913c.099.109.158.239.198.37 0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E");
1552
  }
@@ -1569,6 +1530,18 @@
1569
  opacity: 0.9;
1570
  }
1571
 
 
 
 
 
 
 
 
 
 
 
 
 
1572
  /* -----------------------------------------------------------------------------
1573
  * Calendar Header
1574
  * ----------------------------------------------------------------------------- */
@@ -1626,15 +1599,9 @@
1626
  opacity: 0.5;
1627
  }
1628
 
1629
- .tribe-events .tribe-events-calendar-month__day-cell--mobile {
1630
- border-bottom: 2px solid transparent;
1631
- -webkit-transition: border-color 0.2s ease;
1632
- transition: border-color 0.2s ease;
1633
- }
1634
-
1635
  .tribe-events .tribe-events-calendar-month__day-cell--mobile:hover,
1636
  .tribe-events .tribe-events-calendar-month__day-cell--mobile:focus {
1637
- border-bottom-color: #334AFF;
1638
  }
1639
 
1640
  .tribe-events .tribe-events-calendar-month__day-cell--selected {
@@ -1796,12 +1763,12 @@
1796
 
1797
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:hover,
1798
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:focus {
1799
- background-color: #F7F6F6;
1800
  }
1801
 
1802
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--focus,
1803
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--hover {
1804
- background-color: #F7F6F6;
1805
  }
1806
 
1807
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-featured-icon,
@@ -1814,6 +1781,14 @@
1814
  text-overflow: ellipsis;
1815
  }
1816
 
 
 
 
 
 
 
 
 
1817
  /* .tribe-events { */
1818
 
1819
  /* -----------------------------------------------------------------------------
@@ -2064,12 +2039,6 @@
2064
  background-color: #141827
2065
  }
2066
 
2067
- .tribe-events .tribe-events-calendar-day__event--featured:before {
2068
- content: '';
2069
- min-width: 90px;
2070
- width: 11.111%
2071
- }
2072
-
2073
  .tribe-events .tribe-events-calendar-day__event--featured:after {
2074
  left: calc(11.111% - 24px);
2075
  width: 4px
153
  * SVG - Filters
154
  * ----------------------------------------------------------------------------- */
155
 
156
+ /* -----------------------------------------------------------------------------
157
+ * SVG - Link
158
+ * ----------------------------------------------------------------------------- */
159
+
160
  /* -----------------------------------------------------------------------------
161
  * SVG - List
162
  * ----------------------------------------------------------------------------- */
165
  * SVG - Location
166
  * ----------------------------------------------------------------------------- */
167
 
168
+ /* -----------------------------------------------------------------------------
169
+ * SVG - Mail
170
+ * ----------------------------------------------------------------------------- */
171
+
172
  /* -----------------------------------------------------------------------------
173
  * SVG - Map
174
  * ----------------------------------------------------------------------------- */
175
 
176
+ /* -----------------------------------------------------------------------------
177
+ * SVG - Map pin
178
+ * ----------------------------------------------------------------------------- */
179
+
180
  /* -----------------------------------------------------------------------------
181
  * SVG - Messages
182
  * ----------------------------------------------------------------------------- */
189
  * SVG - No Map
190
  * ----------------------------------------------------------------------------- */
191
 
192
+ /* -----------------------------------------------------------------------------
193
+ * SVG - Phone
194
+ * ----------------------------------------------------------------------------- */
195
+
196
  /* -----------------------------------------------------------------------------
197
  * SVG - Photo
198
  * ----------------------------------------------------------------------------- */
436
  *
437
  * ----------------------------------------------------------------------------- */
438
 
439
+ .tribe-events {
440
+
441
+ /* -----------------------------------------------------------------------------
442
+ *
443
+ * Datepicker: Theme Overrides
444
+ *
445
+ * ----------------------------------------------------------------------------- */
446
+ }
447
+
448
  .tribe-events .datepicker {
449
  background-color: #FFFFFF;
450
  border: 1px solid #D5D5D5;
502
  font-weight: 400;
503
  }
504
 
 
 
 
 
505
  .tribe-events .datepicker .month,
506
  .tribe-events .datepicker .year {
507
  color: #141827;
511
  font-weight: 400;
512
  }
513
 
514
+ .tribe-events .datepicker .past {
515
+ color: rgba(20,24,39, 0.62);
516
+ }
517
+
518
  .tribe-events .datepicker .day,
519
  .tribe-events .datepicker .month,
520
  .tribe-events .datepicker .year {
533
  background: #F7F6F6;
534
  }
535
 
536
+ .tribe-events .datepicker .day.current, .tribe-events .datepicker .month.current, .tribe-events .datepicker .year.current {
537
+ background: rgba(51,74,255, 0.07);
538
+ }
539
+
540
+ .tribe-events .datepicker .day.current:hover,
541
+ .tribe-events .datepicker .day.current:focus,
542
+ .tribe-events .datepicker .day.current.focused,
543
+ .tribe-events .datepicker .month.current:hover,
544
+ .tribe-events .datepicker .month.current:focus,
545
+ .tribe-events .datepicker .month.current.focused,
546
+ .tribe-events .datepicker .year.current:hover,
547
+ .tribe-events .datepicker .year.current:focus,
548
+ .tribe-events .datepicker .year.current.focused {
549
+ background: rgba(51,74,255, 0.07);
550
+ }
551
+
552
  .tribe-events .datepicker .day.active, .tribe-events .datepicker .month.active, .tribe-events .datepicker .year.active {
553
  color: #FFFFFF;
554
  background: #334AFF;
555
+ text-shadow: none;
556
  }
557
 
558
  .tribe-events .datepicker .day.active:hover,
566
  .tribe-events .datepicker .year.active.focused {
567
  color: #FFFFFF;
568
  background: #334AFF;
569
+ text-shadow: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
570
  }
571
 
572
  /* -----------------------------------------------------------------------------
611
  opacity: 1;
612
  }
613
 
 
 
 
 
614
  .tribe-theme-enfold .tribe-events .datepicker .day,
615
  .tribe-theme-enfold .tribe-events .datepicker .month,
616
  .tribe-theme-enfold .tribe-events .datepicker .year {
630
  background: #F7F6F6;
631
  }
632
 
633
+ .tribe-theme-enfold .tribe-events .datepicker .day.past, .tribe-theme-enfold .tribe-events .datepicker .month.past, .tribe-theme-enfold .tribe-events .datepicker .year.past {
634
+ color: rgba(20,24,39, 0.62);
635
+ }
636
+
637
+ .tribe-theme-enfold .tribe-events .datepicker .day.current, .tribe-theme-enfold .tribe-events .datepicker .month.current, .tribe-theme-enfold .tribe-events .datepicker .year.current {
638
+ background: rgba(51,74,255, 0.07);
639
+ }
640
+
641
+ .tribe-theme-enfold .tribe-events .datepicker .day.current:hover,
642
+ .tribe-theme-enfold .tribe-events .datepicker .day.current:focus,
643
+ .tribe-theme-enfold .tribe-events .datepicker .day.current.focused,
644
+ .tribe-theme-enfold .tribe-events .datepicker .month.current:hover,
645
+ .tribe-theme-enfold .tribe-events .datepicker .month.current:focus,
646
+ .tribe-theme-enfold .tribe-events .datepicker .month.current.focused,
647
+ .tribe-theme-enfold .tribe-events .datepicker .year.current:hover,
648
+ .tribe-theme-enfold .tribe-events .datepicker .year.current:focus,
649
+ .tribe-theme-enfold .tribe-events .datepicker .year.current.focused {
650
+ background: rgba(51,74,255, 0.07);
651
+ }
652
+
653
  .tribe-theme-enfold .tribe-events .datepicker .day.active, .tribe-theme-enfold .tribe-events .datepicker .month.active, .tribe-theme-enfold .tribe-events .datepicker .year.active {
654
  color: #FFFFFF;
655
  background: #334AFF;
668
  background: #334AFF;
669
  }
670
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
671
  /* -----------------------------------------------------------------------------
672
  * Theme Overrides - Avada
673
  * ----------------------------------------------------------------------------- */
694
  .tribe-theme-avada .tribe-events .datepicker .day.old,
695
  .tribe-theme-avada .tribe-events .datepicker .day.new {
696
  background-color: transparent !important;
697
+ color: #141827 !important;
698
  }
699
 
700
  .tribe-theme-avada .tribe-events .datepicker .day.old:hover,
706
  background: #F7F6F6 !important;
707
  }
708
 
 
 
 
 
 
 
 
 
709
  .tribe-theme-avada .tribe-events .datepicker .day,
710
  .tribe-theme-avada .tribe-events .datepicker .month {
711
  background-color: transparent;
721
  background: #F7F6F6;
722
  }
723
 
724
+ .tribe-theme-avada .tribe-events .datepicker .day.past, .tribe-theme-avada .tribe-events .datepicker .month.past {
725
+ color: rgba(20,24,39, 0.62) !important;
726
+ }
727
+
728
+ .tribe-theme-avada .tribe-events .datepicker .day.current, .tribe-theme-avada .tribe-events .datepicker .month.current {
729
+ background: rgba(51,74,255, 0.07);
730
+ }
731
+
732
+ .tribe-theme-avada .tribe-events .datepicker .day.current:hover,
733
+ .tribe-theme-avada .tribe-events .datepicker .day.current:focus,
734
+ .tribe-theme-avada .tribe-events .datepicker .day.current.focused,
735
+ .tribe-theme-avada .tribe-events .datepicker .month.current:hover,
736
+ .tribe-theme-avada .tribe-events .datepicker .month.current:focus,
737
+ .tribe-theme-avada .tribe-events .datepicker .month.current.focused {
738
+ background: rgba(51,74,255, 0.07);
739
+ }
740
+
741
  .tribe-theme-avada .tribe-events .datepicker .day.active, .tribe-theme-avada .tribe-events .datepicker .month.active {
742
+ color: #FFFFFF !important;
743
+ background: #334AFF !important;
744
  }
745
 
746
  .tribe-theme-avada .tribe-events .datepicker .day.active:hover,
749
  .tribe-theme-avada .tribe-events .datepicker .month.active:hover,
750
  .tribe-theme-avada .tribe-events .datepicker .month.active:focus,
751
  .tribe-theme-avada .tribe-events .datepicker .month.active.focused {
752
+ color: #FFFFFF !important;
753
+ background: #334AFF !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
754
  }
755
 
756
  /* Day marker */
852
  background-color: #F7F6F6;
853
  }
854
 
855
+ /* iCal link */
856
+
857
+ /* -----------------------------------------------------------------------------
858
+ *
859
+ * iCal Link
860
+ *
861
+ * ----------------------------------------------------------------------------- */
862
+
863
  /* Loader */
864
 
865
  /* -----------------------------------------------------------------------------
947
 
948
  .tribe-events .tribe-events-c-nav__prev:active, .tribe-events .tribe-events-c-nav__next:active, .tribe-events .tribe-events-c-nav__today:active {
949
  color: #141827;
 
950
  }
951
 
952
  .tribe-events .tribe-events-c-nav__prev:disabled, .tribe-events .tribe-events-c-nav__next:disabled {
1499
  background-color: #334AFF;
1500
  content: '';
1501
  height: 100%;
1502
+ left: 7px;
1503
  position: absolute;
1504
  width: 2px;
1505
  }
1508
  height: calc(100% - 16px);
1509
  }
1510
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1511
  .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:hover .tribe-events-calendar-month__calendar-event-datetime-recurring-icon, .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:focus .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
1512
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3C3.753 4.717 1.66 7 1.66 9.827c0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913c.099.109.158.239.198.37 0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E");
1513
  }
1530
  opacity: 0.9;
1531
  }
1532
 
1533
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime {
1534
+ color: #141827;
1535
+ font-family: "Helvetica Neue", Helvetica, -apple-system, BlinkMacSystemFont, Roboto, Arial, sans-serif;
1536
+ font-size: 11px;
1537
+ font-weight: 400;
1538
+ line-height: 1.5;
1539
+ }
1540
+
1541
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-link:hover .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon, .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-link:focus .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon {
1542
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3C3.753 4.717 1.66 7 1.66 9.827c0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913c.099.109.158.239.198.37 0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E");
1543
+ }
1544
+
1545
  /* -----------------------------------------------------------------------------
1546
  * Calendar Header
1547
  * ----------------------------------------------------------------------------- */
1599
  opacity: 0.5;
1600
  }
1601
 
 
 
 
 
 
 
1602
  .tribe-events .tribe-events-calendar-month__day-cell--mobile:hover,
1603
  .tribe-events .tribe-events-calendar-month__day-cell--mobile:focus {
1604
+ background-color: #F7F6F6;
1605
  }
1606
 
1607
  .tribe-events .tribe-events-calendar-month__day-cell--selected {
1763
 
1764
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:hover,
1765
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:focus {
1766
+ background-color: #F0EEEE;
1767
  }
1768
 
1769
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--focus,
1770
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--hover {
1771
+ background-color: #F0EEEE;
1772
  }
1773
 
1774
  .tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-featured-icon,
1781
  text-overflow: ellipsis;
1782
  }
1783
 
1784
+ /* -----------------------------------------------------------------------------
1785
+ * Theme Overrides - Avada
1786
+ * ----------------------------------------------------------------------------- */
1787
+
1788
+ .tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__multiday-event-bar-title {
1789
+ font-weight: 400;
1790
+ }
1791
+
1792
  /* .tribe-events { */
1793
 
1794
  /* -----------------------------------------------------------------------------
2039
  background-color: #141827
2040
  }
2041
 
 
 
 
 
 
 
2042
  .tribe-events .tribe-events-calendar-day__event--featured:after {
2043
  left: calc(11.111% - 24px);
2044
  width: 4px
src/resources/css/views-full.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-events .tribe-events-c-breadcrumbs__list{font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:24px;line-height:1.42}.tribe-events .tribe-events-c-breadcrumbs__list-item-link{color:#727272;transition:color .2s ease}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:visited{color:#727272}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:focus,.tribe-events .tribe-events-c-breadcrumbs__list-item-link:hover{color:#141827}.tribe-events .datepicker{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tribe-events .datepicker:after,.tribe-events .datepicker:before{content:none}.tribe-events .datepicker .datepicker-switch:active,.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover,.tribe-events .datepicker .next:active,.tribe-events .datepicker .next:focus,.tribe-events .datepicker .next:hover,.tribe-events .datepicker .prev:active,.tribe-events .datepicker .prev:focus,.tribe-events .datepicker .prev:hover{background-color:#fff}.tribe-events .datepicker .datepicker-switch{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400}.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover{color:rgba(20,24,39,.8)}.tribe-events .datepicker .datepicker-switch:active{color:rgba(20,24,39,.9)}.tribe-events .datepicker .dow{font-size:11px;line-height:1.5}.tribe-events .datepicker .day,.tribe-events .datepicker .dow{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:400}.tribe-events .datepicker .day{font-size:16px;line-height:1.62}.tribe-events .datepicker .day.old{color:#d5d5d5}.tribe-events .datepicker .month,.tribe-events .datepicker .year{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400}.tribe-events .datepicker .day,.tribe-events .datepicker .month,.tribe-events .datepicker .year{border-radius:4px}.tribe-events .datepicker .day.focused,.tribe-events .datepicker .day:focus,.tribe-events .datepicker .day:hover,.tribe-events .datepicker .month.focused,.tribe-events .datepicker .month:focus,.tribe-events .datepicker .month:hover,.tribe-events .datepicker .year.focused,.tribe-events .datepicker .year:focus,.tribe-events .datepicker .year:hover{background:#f7f6f6}.tribe-events .datepicker .day.active,.tribe-events .datepicker .day.active.focused,.tribe-events .datepicker .day.active:focus,.tribe-events .datepicker .day.active:hover,.tribe-events .datepicker .month.active,.tribe-events .datepicker .month.active.focused,.tribe-events .datepicker .month.active:focus,.tribe-events .datepicker .month.active:hover,.tribe-events .datepicker .year.active,.tribe-events .datepicker .year.active.focused,.tribe-events .datepicker .year.active:focus,.tribe-events .datepicker .year.active:hover{color:#fff;background:#334aff}.tribe-events.tribe-events-view--week .datepicker tbody tr.active:after{border:1px solid #334aff;border-radius:4px;content:"";display:block;height:47px;left:16px;pointer-events:none;position:absolute;transform:translateY(-1px);width:calc(100% - 34px)}.tribe-events.tribe-events-view--week .datepicker .day{border-radius:0}.tribe-events.tribe-events-view--week .datepicker .day:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.tribe-events.tribe-events-view--week .datepicker .day:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.tribe-events.tribe-events-view--week .datepicker .day.active{color:#141827;background:transparent}.tribe-events.tribe-events-view--week .datepicker .day.active:hover{background:transparent}.tribe-events.tribe-events-view--week .datepicker .day.disabled,.tribe-events.tribe-events-view--week .datepicker .day.disabled.focused,.tribe-events.tribe-events-view--week .datepicker .day.disabled:focus,.tribe-events.tribe-events-view--week .datepicker .day.disabled:hover{color:#141827}.tribe-events.tribe-events-view--week .datepicker .focused .day,.tribe-events.tribe-events-view--week .datepicker .focused .day:hover,.tribe-events.tribe-events-view--week .datepicker .hovered .day,.tribe-events.tribe-events-view--week .datepicker .hovered .day:hover{background:#f7f6f6}.admin-bar .tribe-events .datepicker{margin-top:8px}.tribe-theme-enfold .tribe-events .datepicker{border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{color:#141827!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:focus,.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:hover{color:rgba(20,24,39,.8)!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:active{color:rgba(20,24,39,.9)!important}.tribe-theme-enfold .tribe-events .datepicker .day{background-color:#fff}.tribe-theme-enfold .tribe-events .datepicker .day.new,.tribe-theme-enfold .tribe-events .datepicker .day.old{opacity:1}.tribe-theme-enfold .tribe-events .datepicker .day.old{color:#d5d5d5}.tribe-theme-enfold .tribe-events .datepicker .day,.tribe-theme-enfold .tribe-events .datepicker .month,.tribe-theme-enfold .tribe-events .datepicker .year{color:#141827;background-color:#fff}.tribe-theme-enfold .tribe-events .datepicker .day.focused,.tribe-theme-enfold .tribe-events .datepicker .day:focus,.tribe-theme-enfold .tribe-events .datepicker .day:hover,.tribe-theme-enfold .tribe-events .datepicker .month.focused,.tribe-theme-enfold .tribe-events .datepicker .month:focus,.tribe-theme-enfold .tribe-events .datepicker .month:hover,.tribe-theme-enfold .tribe-events .datepicker .year.focused,.tribe-theme-enfold .tribe-events .datepicker .year:focus,.tribe-theme-enfold .tribe-events .datepicker .year:hover{background:#f7f6f6}.tribe-theme-enfold .tribe-events .datepicker .day.active,.tribe-theme-enfold .tribe-events .datepicker .day.active.focused,.tribe-theme-enfold .tribe-events .datepicker .day.active:focus,.tribe-theme-enfold .tribe-events .datepicker .day.active:hover,.tribe-theme-enfold .tribe-events .datepicker .month.active,.tribe-theme-enfold .tribe-events .datepicker .month.active.focused,.tribe-theme-enfold .tribe-events .datepicker .month.active:focus,.tribe-theme-enfold .tribe-events .datepicker .month.active:hover,.tribe-theme-enfold .tribe-events .datepicker .year.active,.tribe-theme-enfold .tribe-events .datepicker .year.active.focused,.tribe-theme-enfold .tribe-events .datepicker .year.active:focus,.tribe-theme-enfold .tribe-events .datepicker .year.active:hover{color:#fff;background:#334aff}.tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .day.active{color:#141827;background:transparent}.tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .day.active:hover{background:transparent}.tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .focused .day,.tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .focused .day:hover,.tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .hovered .day,.tribe-theme-enfold .tribe-events.tribe-events-view--week .datepicker .hovered .day:hover{background:#f7f6f6}.tribe-theme-avada .tribe-events .datepicker{border:1px solid #d5d5d5;border-radius:4px}.tribe-theme-avada .tribe-events .datepicker tbody td{border:0}.tribe-theme-avada .tribe-events .datepicker .datepicker-switch,.tribe-theme-avada .tribe-events .datepicker .datepicker-switch:hover,.tribe-theme-avada .tribe-events .datepicker .next,.tribe-theme-avada .tribe-events .datepicker .next:hover,.tribe-theme-avada .tribe-events .datepicker .prev,.tribe-theme-avada .tribe-events .datepicker .prev:hover{background-color:#fff}.tribe-theme-avada .tribe-events .datepicker .day.new,.tribe-theme-avada .tribe-events .datepicker .day.old{background-color:transparent!important}.tribe-theme-avada .tribe-events .datepicker .day.new.focused,.tribe-theme-avada .tribe-events .datepicker .day.new:focus,.tribe-theme-avada .tribe-events .datepicker .day.new:hover,.tribe-theme-avada .tribe-events .datepicker .day.old.focused,.tribe-theme-avada .tribe-events .datepicker .day.old:focus,.tribe-theme-avada .tribe-events .datepicker .day.old:hover{background:#f7f6f6!important}.tribe-theme-avada .tribe-events .datepicker .day.old{color:#d5d5d5!important}.tribe-theme-avada .tribe-events .datepicker .day.new{color:#141827!important}.tribe-theme-avada .tribe-events .datepicker .day,.tribe-theme-avada .tribe-events .datepicker .month{background-color:transparent;color:#141827}.tribe-theme-avada .tribe-events .datepicker .day.focused,.tribe-theme-avada .tribe-events .datepicker .day:focus,.tribe-theme-avada .tribe-events .datepicker .day:hover,.tribe-theme-avada .tribe-events .datepicker .month.focused,.tribe-theme-avada .tribe-events .datepicker .month:focus,.tribe-theme-avada .tribe-events .datepicker .month:hover{background:#f7f6f6}.tribe-theme-avada .tribe-events .datepicker .day.active,.tribe-theme-avada .tribe-events .datepicker .day.active.focused,.tribe-theme-avada .tribe-events .datepicker .day.active:focus,.tribe-theme-avada .tribe-events .datepicker .day.active:hover,.tribe-theme-avada .tribe-events .datepicker .month.active,.tribe-theme-avada .tribe-events .datepicker .month.active.focused,.tribe-theme-avada .tribe-events .datepicker .month.active:focus,.tribe-theme-avada .tribe-events .datepicker .month.active:hover{color:#fff;background:#334aff}.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .day.active{color:#141827;background:transparent}.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .day.active:hover{background:transparent}.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day,.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day:hover,.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day,.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day:hover{background:#f7f6f6}.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day.new,.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .focused .day.old,.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day.new,.tribe-theme-avada .tribe-events.tribe-events-view--week .datepicker .hovered .day.old{background-color:#f7f6f6!important}.tribe-events .tribe-events-c-day-marker:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-c-events-bar{background-color:#fff}.tribe-events .tribe-events-c-events-bar__search-button:focus .tribe-events-c-events-bar__search-button-icon,.tribe-events .tribe-events-c-events-bar__search-button:hover .tribe-events-c-events-bar__search-button-icon{opacity:.8}.tribe-events .tribe-events-c-events-bar__search-button:active .tribe-events-c-events-bar__search-button-icon{opacity:.9}.tribe-events .tribe-events-c-events-bar__search-button:before{background-color:#334aff;content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(4px);width:calc(100% - 8px)}.tribe-events .tribe-events-c-events-bar__search-button--active:before{display:block}.tribe-events .tribe-events-c-events-bar__tab{border-radius:4px}.tribe-events .tribe-events-c-events-bar__tab:active .tribe-events-c-events-bar__tab-text,.tribe-events .tribe-events-c-events-bar__tab:focus .tribe-events-c-events-bar__tab-text,.tribe-events .tribe-events-c-events-bar__tab:hover .tribe-events-c-events-bar__tab-text{font-weight:700}.tribe-events .tribe-events-c-events-bar__tab--active,.tribe-events .tribe-events-c-events-bar__tab--active:focus,.tribe-events .tribe-events-c-events-bar__tab--active:hover{background-color:#f7f6f6}.tribe-events .tribe-events-c-events-bar__tab--active .tribe-events-c-events-bar__tab-text{font-weight:700}.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active:hover{background-color:#f7f6f6}.tribe-events .tribe-events-c-messages__message{background-color:rgba(20,24,39,.07);border-radius:4px}.tribe-events .tribe-events-c-messages__message--notice:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 23'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath stroke='%23141827' d='M.5 2.5h20v20H.5z'/%3E%3Cpath stroke='%23334AFF' stroke-linecap='round' d='M7.583 11.583l5.834 5.834m0-5.834l-5.834 5.834'/%3E%3Cpath stroke='%23141827' stroke-linecap='round' d='M4.5.5v4m12-4v4'/%3E%3Cpath stroke='%23141827' stroke-linecap='square' d='M.5 7.5h20'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-size:22px;display:inline-block;content:"";min-width:22px;height:24px;margin-right:12px}.tribe-events .tribe-events-c-nav{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-c-nav__list{list-style:none}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{white-space:pre}.tribe-events .tribe-events-c-nav__next:focus,.tribe-events .tribe-events-c-nav__next:hover,.tribe-events .tribe-events-c-nav__prev:focus,.tribe-events .tribe-events-c-nav__prev:hover,.tribe-events .tribe-events-c-nav__today:focus,.tribe-events .tribe-events-c-nav__today:hover{color:rgba(20,24,39,.8)}.tribe-events .tribe-events-c-nav__next:active,.tribe-events .tribe-events-c-nav__prev:active,.tribe-events .tribe-events-c-nav__today:active{color:#141827;font-weight:700}.tribe-events .tribe-events-c-nav__next:disabled,.tribe-events .tribe-events-c-nav__prev:disabled{background-color:transparent;color:#d5d5d5}.tribe-events .tribe-events-c-nav__prev:before{background-repeat:no-repeat;background-size:contain;content:"";height:12px;margin-right:8px;width:7px}.tribe-events .tribe-events-c-nav__prev:before,.tribe-events .tribe-events-c-nav__prev:focus:before,.tribe-events .tribe-events-c-nav__prev:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-nav__prev:focus:before,.tribe-events .tribe-events-c-nav__prev:hover:before{opacity:.8}.tribe-events .tribe-events-c-nav__prev:active:before{opacity:1}.tribe-events .tribe-events-c-nav__prev:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-nav__next:after{background-repeat:no-repeat;background-size:contain;content:"";height:12px;margin-left:8px;width:7px}.tribe-events .tribe-events-c-nav__next:after,.tribe-events .tribe-events-c-nav__next:focus:after,.tribe-events .tribe-events-c-nav__next:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-nav__next:focus:after,.tribe-events .tribe-events-c-nav__next:hover:after{opacity:.8}.tribe-events .tribe-events-c-nav__next:active:after{opacity:1}.tribe-events .tribe-events-c-nav__next:disabled:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-small-cta__stock{color:#727272}.tribe-events .tribe-events-c-search__input--icon{background-repeat:no-repeat;background-position:100%}.tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");background-size:16px}.tribe-events .tribe-events-c-search__input-control--keyword-focus .tribe-events-c-search__input,.tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23727272' fill-rule='evenodd'/%3E%3C/svg%3E");background-size:10px 15px}.tribe-events .tribe-events-c-search__input-control--location-focus .tribe-events-c-search__input,.tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23334AFF' fill-rule='evenodd'/%3E%3C/svg%3E")}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input--icon{background-repeat:no-repeat;background-position:100%}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");background-size:16px}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--keyword-focus .tribe-events-c-search__input,#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23334AFF'/%3E%3C/svg%3E")}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23727272' fill-rule='evenodd'/%3E%3C/svg%3E");background-size:10px 15px}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--location-focus .tribe-events-c-search__input,#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23334AFF' fill-rule='evenodd'/%3E%3C/svg%3E")}.tooltipster-base.tribe-events-tooltip-theme{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{color:#141827;overflow:inherit}.tribe-events .tribe-events-c-top-bar__datepicker-button{transition:opacity .2s ease}.tribe-events .tribe-events-c-top-bar__datepicker-button:focus,.tribe-events .tribe-events-c-top-bar__datepicker-button:hover{opacity:.8}.tribe-events .tribe-events-c-top-bar__datepicker-button:active{opacity:.9}.tribe-events .tribe-events-c-top-bar__datepicker-button:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21.85L6 5.64 10.79.85 11.94 2 6 7.94.06 2z' fill='%23141827'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;margin-left:8px;height:6px;width:10px}.tribe-events .tribe-events-c-top-bar__datepicker-button--open:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21 7.15L6 2.36l4.79 4.79L11.94 6 6 .06.06 6z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-view-selector__button{text-align:left}.tribe-events .tribe-events-c-view-selector__button:focus .tribe-events-c-view-selector__button-icon,.tribe-events .tribe-events-c-view-selector__button:hover .tribe-events-c-view-selector__button-icon{opacity:.8}.tribe-events .tribe-events-c-view-selector__button:active .tribe-events-c-view-selector__button-icon{opacity:.9}.tribe-events .tribe-events-c-view-selector__button:before{background-color:#334aff;content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(4px);width:calc(100% - 8px)}.tribe-events .tribe-events-c-view-selector__button--active:before{display:block}.tribe-events .tribe-events-c-view-selector__content{border:1px solid #e4e4e4;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tribe-events .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link{background-color:#f7f6f6}.tribe-events .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-text{font-weight:700}.tribe-events .tribe-events-c-view-selector__list-item-link{border-radius:4px}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-icon,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-icon{opacity:.8}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-text,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-text{color:rgba(20,24,39,.8)}.tribe-events .tribe-events-c-view-selector__list-item-text{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400}.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{background-color:#334aff;content:"";height:100%;right:calc(100% - 3px);position:absolute;width:3px}.tribe-events .tribe-events-calendar-list__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5;color:#727272;text-transform:uppercase}.tribe-events .tribe-events-calendar-list__event-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-list__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-list__event-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-list__event-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-list__event-datetime-recurring-link:focus .tribe-events-calendar-list__event-datetime-recurring-icon,.tribe-events .tribe-events-calendar-list__event-datetime-recurring-link:hover .tribe-events-calendar-list__event-datetime-recurring-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-list__month-separator:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-list-nav{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__calendar-event{opacity:.5}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-month__calendar-event-datetime{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5;color:#727272}.tribe-events .tribe-events-calendar-month__calendar-event--featured:before{background-color:#334aff;content:"";height:100%;left:3px;position:absolute;width:2px}.tribe-events .tribe-events-calendar-month__calendar-event--featured:last-child:before{height:calc(100% - 16px)}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured,.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon{display:inline-block}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured{margin-right:4px}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon{margin-left:4px}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:focus .tribe-events-calendar-month__calendar-event-datetime-recurring-icon,.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:hover .tribe-events-calendar-month__calendar-event-datetime-recurring-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-month__header-column{text-transform:uppercase}.tribe-events .tribe-events-calendar-month__header-column-title{color:#727272;text-align:center}.tribe-events .tribe-events-calendar-month__day{border-radius:4px}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link{color:#334aff;font-weight:700}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:rgba(51,74,255,.8)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:rgba(51,74,255,.9)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date{opacity:.4}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--event{background-color:#141827;opacity:.5}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23141827'/%3E%3C/svg%3E");opacity:.5}.tribe-events .tribe-events-calendar-month__day-cell--mobile{border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-events .tribe-events-calendar-month__day-cell--mobile:focus,.tribe-events .tribe-events-calendar-month__day-cell--mobile:hover{border-bottom-color:#334aff}.tribe-events .tribe-events-calendar-month__day-cell--selected,.tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:#334aff}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:#fff;opacity:1}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--event{background-color:#fff;opacity:1}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23FFF'/%3E%3C/svg%3E");opacity:1}.tribe-events .tribe-events-calendar-month__day-date-link{color:#141827;transition:color .2s ease}.tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day-date-link:hover{color:rgba(20,24,39,.8)}.tribe-events .tribe-events-calendar-month__day-date-link:active{color:rgba(20,24,39,.9)}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:#334aff}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:rgba(51,74,255,.8)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:rgba(51,74,255,.9)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:#334aff}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:hover{color:rgba(20,24,39,.8)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:active{color:rgba(20,24,39,.9)}.tribe-theme-twentytwenty .tribe-events .tribe-events-calendar-month__day-cell--selected{background-color:#334aff}.tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:#fff}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event+.tribe-events-calendar-month-mobile-events__mobile-event{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{color:#727272}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{color:#334aff;font-weight:700}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:focus .tribe-events-calendar-month-mobile-events__mobile-event-datetime-icon,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:hover .tribe-events-calendar-month-mobile-events__mobile-event-datetime-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-month__more-events{border-top:1px solid #e4e4e4}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__more-events-link{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event--start .tribe-events-calendar-month__multiday-event-bar{border-top-left-radius:9.5px;border-bottom-left-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event--end .tribe-events-calendar-month__multiday-event-bar{border-top-right-radius:9.5px;border-bottom-right-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{background-color:rgba(51,74,255,.24);transition:background-color .2s ease}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:rgba(51,74,255,.34)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:#f7f6f6}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-featured-icon,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-title{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{font-weight:400;text-overflow:ellipsis}.tribe-events .tribe-events-calendar-day__event--featured{position:relative}.tribe-events .tribe-events-calendar-day__event--featured:after{background-color:#334aff;content:"";height:100%;left:21px;position:absolute;width:3px}.tribe-events .tribe-events-calendar-day__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-day__event-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-day__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-day__event-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-day__event-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-day__event-datetime-recurring-link:focus .tribe-events-calendar-day__event-datetime-recurring-icon,.tribe-events .tribe-events-calendar-day__event-datetime-recurring-link:hover .tribe-events-calendar-day__event-datetime-recurring-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-day-nav{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-calendar-day__time-separator:after,.tribe-events .tribe-events-calendar-day__type-separator:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}@media (min-width:768px){.tribe-events .tribe-events-c-breadcrumbs__list{font-size:42px;line-height:1.38}.admin-bar .tribe-events .datepicker{margin-top:16px}.tribe-events .tribe-events-c-events-bar--border{border:1px solid #e4e4e4}.tribe-events .tribe-events-c-events-bar__filters{border-right:1px solid #e4e4e4}.tribe-events .tribe-events-c-messages__message-list{text-align:center}.tribe-events .tribe-events-c-nav__next,.tribe-events .tribe-events-c-nav__prev{color:#727272}.tribe-events .tribe-events-c-nav__prev:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23727272'/%3E%3C/svg%3E");height:14px;margin-right:15px;width:9px}.tribe-events .tribe-events-c-nav__next:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E");height:14px;margin-left:15px;width:9px}.tribe-events .tribe-events-c-search__input-control{border-right:1px solid #e4e4e4}.tribe-events .tribe-events-c-search__input-control:last-child{border-right:0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input--icon,.tribe-events .tribe-events-c-search__input--icon{background-position:16px}.tribe-events .tribe-events-c-top-bar__datepicker-button:after{height:7px;width:12px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button:before{content:none}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21.85L6 5.64 10.79.85 11.94 2 6 7.94.06 2z' fill='%23141827'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;flex:none;height:6px;margin-left:8px;width:10px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button--active:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21 7.15L6 2.36l4.79 4.79L11.94 6 6 .06.06 6z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{box-shadow:0 2px 5px 0 rgba(0,0,0,.14)}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{border:0;border-radius:0;box-shadow:none}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link{background-color:transparent}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link:after{background-color:#141827;bottom:-1px;content:"";display:block;height:2px;position:absolute;width:100%}.tribe-events .tribe-events-c-view-selector__button:before{width:calc(100% - 16px);transform:none}.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{color:#334aff;font-weight:700}.tribe-events .tribe-events-calendar-month__header-column-title{text-align:left}.tribe-events .tribe-events-calendar-month__day{border-radius:0}.tribe-events .tribe-events-calendar-month__day:after{background-color:transparent;bottom:0;content:"";display:block;height:2px;left:-1px;position:absolute;transition:background-color .2s ease;width:calc(100% + 2px)}.tribe-events .tribe-events-calendar-month__day:hover:after{background-color:#141827}.tribe-events .tribe-events-calendar-day__event--featured:before{content:"";min-width:90px;width:11.111%}.tribe-events .tribe-events-calendar-day__event--featured:after{left:calc(11.111% - 24px);width:4px}.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{color:#334aff;font-weight:700}}
1
+ .tribe-events .tribe-events-c-breadcrumbs__list{font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:24px;line-height:1.42}.tribe-events .tribe-events-c-breadcrumbs__list-item-link{color:#727272;transition:color .2s ease}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:visited{color:#727272}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:focus,.tribe-events .tribe-events-c-breadcrumbs__list-item-link:hover{color:#141827}.tribe-events .datepicker{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tribe-events .datepicker:after,.tribe-events .datepicker:before{content:none}.tribe-events .datepicker .datepicker-switch:active,.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover,.tribe-events .datepicker .next:active,.tribe-events .datepicker .next:focus,.tribe-events .datepicker .next:hover,.tribe-events .datepicker .prev:active,.tribe-events .datepicker .prev:focus,.tribe-events .datepicker .prev:hover{background-color:#fff}.tribe-events .datepicker .datepicker-switch{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400}.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover{color:rgba(20,24,39,.8)}.tribe-events .datepicker .datepicker-switch:active{color:rgba(20,24,39,.9)}.tribe-events .datepicker .dow{font-size:11px;line-height:1.5}.tribe-events .datepicker .day,.tribe-events .datepicker .dow{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:400}.tribe-events .datepicker .day{font-size:16px;line-height:1.62}.tribe-events .datepicker .month,.tribe-events .datepicker .year{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400}.tribe-events .datepicker .past{color:rgba(20,24,39,.62)}.tribe-events .datepicker .day,.tribe-events .datepicker .month,.tribe-events .datepicker .year{border-radius:4px}.tribe-events .datepicker .day.focused,.tribe-events .datepicker .day:focus,.tribe-events .datepicker .day:hover,.tribe-events .datepicker .month.focused,.tribe-events .datepicker .month:focus,.tribe-events .datepicker .month:hover,.tribe-events .datepicker .year.focused,.tribe-events .datepicker .year:focus,.tribe-events .datepicker .year:hover{background:#f7f6f6}.tribe-events .datepicker .day.current,.tribe-events .datepicker .day.current.focused,.tribe-events .datepicker .day.current:focus,.tribe-events .datepicker .day.current:hover,.tribe-events .datepicker .month.current,.tribe-events .datepicker .month.current.focused,.tribe-events .datepicker .month.current:focus,.tribe-events .datepicker .month.current:hover,.tribe-events .datepicker .year.current,.tribe-events .datepicker .year.current.focused,.tribe-events .datepicker .year.current:focus,.tribe-events .datepicker .year.current:hover{background:rgba(51,74,255,.07)}.tribe-events .datepicker .day.active,.tribe-events .datepicker .day.active.focused,.tribe-events .datepicker .day.active:focus,.tribe-events .datepicker .day.active:hover,.tribe-events .datepicker .month.active,.tribe-events .datepicker .month.active.focused,.tribe-events .datepicker .month.active:focus,.tribe-events .datepicker .month.active:hover,.tribe-events .datepicker .year.active,.tribe-events .datepicker .year.active.focused,.tribe-events .datepicker .year.active:focus,.tribe-events .datepicker .year.active:hover{color:#fff;background:#334aff;text-shadow:none}.admin-bar .tribe-events .datepicker{margin-top:8px}.tribe-theme-enfold .tribe-events .datepicker{border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{color:#141827!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:focus,.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:hover{color:rgba(20,24,39,.8)!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:active{color:rgba(20,24,39,.9)!important}.tribe-theme-enfold .tribe-events .datepicker .day{background-color:#fff}.tribe-theme-enfold .tribe-events .datepicker .day.new,.tribe-theme-enfold .tribe-events .datepicker .day.old{opacity:1}.tribe-theme-enfold .tribe-events .datepicker .day,.tribe-theme-enfold .tribe-events .datepicker .month,.tribe-theme-enfold .tribe-events .datepicker .year{color:#141827;background-color:#fff}.tribe-theme-enfold .tribe-events .datepicker .day.focused,.tribe-theme-enfold .tribe-events .datepicker .day:focus,.tribe-theme-enfold .tribe-events .datepicker .day:hover,.tribe-theme-enfold .tribe-events .datepicker .month.focused,.tribe-theme-enfold .tribe-events .datepicker .month:focus,.tribe-theme-enfold .tribe-events .datepicker .month:hover,.tribe-theme-enfold .tribe-events .datepicker .year.focused,.tribe-theme-enfold .tribe-events .datepicker .year:focus,.tribe-theme-enfold .tribe-events .datepicker .year:hover{background:#f7f6f6}.tribe-theme-enfold .tribe-events .datepicker .day.past,.tribe-theme-enfold .tribe-events .datepicker .month.past,.tribe-theme-enfold .tribe-events .datepicker .year.past{color:rgba(20,24,39,.62)}.tribe-theme-enfold .tribe-events .datepicker .day.current,.tribe-theme-enfold .tribe-events .datepicker .day.current.focused,.tribe-theme-enfold .tribe-events .datepicker .day.current:focus,.tribe-theme-enfold .tribe-events .datepicker .day.current:hover,.tribe-theme-enfold .tribe-events .datepicker .month.current,.tribe-theme-enfold .tribe-events .datepicker .month.current.focused,.tribe-theme-enfold .tribe-events .datepicker .month.current:focus,.tribe-theme-enfold .tribe-events .datepicker .month.current:hover,.tribe-theme-enfold .tribe-events .datepicker .year.current,.tribe-theme-enfold .tribe-events .datepicker .year.current.focused,.tribe-theme-enfold .tribe-events .datepicker .year.current:focus,.tribe-theme-enfold .tribe-events .datepicker .year.current:hover{background:rgba(51,74,255,.07)}.tribe-theme-enfold .tribe-events .datepicker .day.active,.tribe-theme-enfold .tribe-events .datepicker .day.active.focused,.tribe-theme-enfold .tribe-events .datepicker .day.active:focus,.tribe-theme-enfold .tribe-events .datepicker .day.active:hover,.tribe-theme-enfold .tribe-events .datepicker .month.active,.tribe-theme-enfold .tribe-events .datepicker .month.active.focused,.tribe-theme-enfold .tribe-events .datepicker .month.active:focus,.tribe-theme-enfold .tribe-events .datepicker .month.active:hover,.tribe-theme-enfold .tribe-events .datepicker .year.active,.tribe-theme-enfold .tribe-events .datepicker .year.active.focused,.tribe-theme-enfold .tribe-events .datepicker .year.active:focus,.tribe-theme-enfold .tribe-events .datepicker .year.active:hover{color:#fff;background:#334aff}.tribe-theme-avada .tribe-events .datepicker{border:1px solid #d5d5d5;border-radius:4px}.tribe-theme-avada .tribe-events .datepicker tbody td{border:0}.tribe-theme-avada .tribe-events .datepicker .datepicker-switch,.tribe-theme-avada .tribe-events .datepicker .datepicker-switch:hover,.tribe-theme-avada .tribe-events .datepicker .next,.tribe-theme-avada .tribe-events .datepicker .next:hover,.tribe-theme-avada .tribe-events .datepicker .prev,.tribe-theme-avada .tribe-events .datepicker .prev:hover{background-color:#fff}.tribe-theme-avada .tribe-events .datepicker .day.new,.tribe-theme-avada .tribe-events .datepicker .day.old{background-color:transparent!important;color:#141827!important}.tribe-theme-avada .tribe-events .datepicker .day.new.focused,.tribe-theme-avada .tribe-events .datepicker .day.new:focus,.tribe-theme-avada .tribe-events .datepicker .day.new:hover,.tribe-theme-avada .tribe-events .datepicker .day.old.focused,.tribe-theme-avada .tribe-events .datepicker .day.old:focus,.tribe-theme-avada .tribe-events .datepicker .day.old:hover{background:#f7f6f6!important}.tribe-theme-avada .tribe-events .datepicker .day,.tribe-theme-avada .tribe-events .datepicker .month{background-color:transparent;color:#141827}.tribe-theme-avada .tribe-events .datepicker .day.focused,.tribe-theme-avada .tribe-events .datepicker .day:focus,.tribe-theme-avada .tribe-events .datepicker .day:hover,.tribe-theme-avada .tribe-events .datepicker .month.focused,.tribe-theme-avada .tribe-events .datepicker .month:focus,.tribe-theme-avada .tribe-events .datepicker .month:hover{background:#f7f6f6}.tribe-theme-avada .tribe-events .datepicker .day.past,.tribe-theme-avada .tribe-events .datepicker .month.past{color:rgba(20,24,39,.62)!important}.tribe-theme-avada .tribe-events .datepicker .day.current,.tribe-theme-avada .tribe-events .datepicker .day.current.focused,.tribe-theme-avada .tribe-events .datepicker .day.current:focus,.tribe-theme-avada .tribe-events .datepicker .day.current:hover,.tribe-theme-avada .tribe-events .datepicker .month.current,.tribe-theme-avada .tribe-events .datepicker .month.current.focused,.tribe-theme-avada .tribe-events .datepicker .month.current:focus,.tribe-theme-avada .tribe-events .datepicker .month.current:hover{background:rgba(51,74,255,.07)}.tribe-theme-avada .tribe-events .datepicker .day.active,.tribe-theme-avada .tribe-events .datepicker .day.active.focused,.tribe-theme-avada .tribe-events .datepicker .day.active:focus,.tribe-theme-avada .tribe-events .datepicker .day.active:hover,.tribe-theme-avada .tribe-events .datepicker .month.active,.tribe-theme-avada .tribe-events .datepicker .month.active.focused,.tribe-theme-avada .tribe-events .datepicker .month.active:focus,.tribe-theme-avada .tribe-events .datepicker .month.active:hover{color:#fff!important;background:#334aff!important}.tribe-events .tribe-events-c-day-marker:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-c-events-bar{background-color:#fff}.tribe-events .tribe-events-c-events-bar__search-button:focus .tribe-events-c-events-bar__search-button-icon,.tribe-events .tribe-events-c-events-bar__search-button:hover .tribe-events-c-events-bar__search-button-icon{opacity:.8}.tribe-events .tribe-events-c-events-bar__search-button:active .tribe-events-c-events-bar__search-button-icon{opacity:.9}.tribe-events .tribe-events-c-events-bar__search-button:before{background-color:#334aff;content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(4px);width:calc(100% - 8px)}.tribe-events .tribe-events-c-events-bar__search-button--active:before{display:block}.tribe-events .tribe-events-c-events-bar__tab{border-radius:4px}.tribe-events .tribe-events-c-events-bar__tab:active .tribe-events-c-events-bar__tab-text,.tribe-events .tribe-events-c-events-bar__tab:focus .tribe-events-c-events-bar__tab-text,.tribe-events .tribe-events-c-events-bar__tab:hover .tribe-events-c-events-bar__tab-text{font-weight:700}.tribe-events .tribe-events-c-events-bar__tab--active,.tribe-events .tribe-events-c-events-bar__tab--active:focus,.tribe-events .tribe-events-c-events-bar__tab--active:hover{background-color:#f7f6f6}.tribe-events .tribe-events-c-events-bar__tab--active .tribe-events-c-events-bar__tab-text{font-weight:700}.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active:hover{background-color:#f7f6f6}.tribe-events .tribe-events-c-messages__message{background-color:rgba(20,24,39,.07);border-radius:4px}.tribe-events .tribe-events-c-messages__message--notice:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 23'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath stroke='%23141827' d='M.5 2.5h20v20H.5z'/%3E%3Cpath stroke='%23334AFF' stroke-linecap='round' d='M7.583 11.583l5.834 5.834m0-5.834l-5.834 5.834'/%3E%3Cpath stroke='%23141827' stroke-linecap='round' d='M4.5.5v4m12-4v4'/%3E%3Cpath stroke='%23141827' stroke-linecap='square' d='M.5 7.5h20'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-size:22px;display:inline-block;content:"";min-width:22px;height:24px;margin-right:12px}.tribe-events .tribe-events-c-nav{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-c-nav__list{list-style:none}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{white-space:pre}.tribe-events .tribe-events-c-nav__next:focus,.tribe-events .tribe-events-c-nav__next:hover,.tribe-events .tribe-events-c-nav__prev:focus,.tribe-events .tribe-events-c-nav__prev:hover,.tribe-events .tribe-events-c-nav__today:focus,.tribe-events .tribe-events-c-nav__today:hover{color:rgba(20,24,39,.8)}.tribe-events .tribe-events-c-nav__next:active,.tribe-events .tribe-events-c-nav__prev:active,.tribe-events .tribe-events-c-nav__today:active{color:#141827}.tribe-events .tribe-events-c-nav__next:disabled,.tribe-events .tribe-events-c-nav__prev:disabled{background-color:transparent;color:#d5d5d5}.tribe-events .tribe-events-c-nav__prev:before{background-repeat:no-repeat;background-size:contain;content:"";height:12px;margin-right:8px;width:7px}.tribe-events .tribe-events-c-nav__prev:before,.tribe-events .tribe-events-c-nav__prev:focus:before,.tribe-events .tribe-events-c-nav__prev:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-nav__prev:focus:before,.tribe-events .tribe-events-c-nav__prev:hover:before{opacity:.8}.tribe-events .tribe-events-c-nav__prev:active:before{opacity:1}.tribe-events .tribe-events-c-nav__prev:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-nav__next:after{background-repeat:no-repeat;background-size:contain;content:"";height:12px;margin-left:8px;width:7px}.tribe-events .tribe-events-c-nav__next:after,.tribe-events .tribe-events-c-nav__next:focus:after,.tribe-events .tribe-events-c-nav__next:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-nav__next:focus:after,.tribe-events .tribe-events-c-nav__next:hover:after{opacity:.8}.tribe-events .tribe-events-c-nav__next:active:after{opacity:1}.tribe-events .tribe-events-c-nav__next:disabled:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-small-cta__stock{color:#727272}.tribe-events .tribe-events-c-search__input--icon{background-repeat:no-repeat;background-position:100%}.tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");background-size:16px}.tribe-events .tribe-events-c-search__input-control--keyword-focus .tribe-events-c-search__input,.tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23727272' fill-rule='evenodd'/%3E%3C/svg%3E");background-size:10px 15px}.tribe-events .tribe-events-c-search__input-control--location-focus .tribe-events-c-search__input,.tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23334AFF' fill-rule='evenodd'/%3E%3C/svg%3E")}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input--icon{background-repeat:no-repeat;background-position:100%}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");background-size:16px}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--keyword-focus .tribe-events-c-search__input,#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23334AFF'/%3E%3C/svg%3E")}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23727272' fill-rule='evenodd'/%3E%3C/svg%3E");background-size:10px 15px}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--location-focus .tribe-events-c-search__input,#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.682 1.548a5.166 5.166 0 0 0-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.288 1.028-2.331 2.3-2.331z' fill='%23334AFF' fill-rule='evenodd'/%3E%3C/svg%3E")}.tooltipster-base.tribe-events-tooltip-theme{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{color:#141827;overflow:inherit}.tribe-events .tribe-events-c-top-bar__datepicker-button{transition:opacity .2s ease}.tribe-events .tribe-events-c-top-bar__datepicker-button:focus,.tribe-events .tribe-events-c-top-bar__datepicker-button:hover{opacity:.8}.tribe-events .tribe-events-c-top-bar__datepicker-button:active{opacity:.9}.tribe-events .tribe-events-c-top-bar__datepicker-button:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21.85L6 5.64 10.79.85 11.94 2 6 7.94.06 2z' fill='%23141827'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;margin-left:8px;height:6px;width:10px}.tribe-events .tribe-events-c-top-bar__datepicker-button--open:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21 7.15L6 2.36l4.79 4.79L11.94 6 6 .06.06 6z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-view-selector__button{text-align:left}.tribe-events .tribe-events-c-view-selector__button:focus .tribe-events-c-view-selector__button-icon,.tribe-events .tribe-events-c-view-selector__button:hover .tribe-events-c-view-selector__button-icon{opacity:.8}.tribe-events .tribe-events-c-view-selector__button:active .tribe-events-c-view-selector__button-icon{opacity:.9}.tribe-events .tribe-events-c-view-selector__button:before{background-color:#334aff;content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(4px);width:calc(100% - 8px)}.tribe-events .tribe-events-c-view-selector__button--active:before{display:block}.tribe-events .tribe-events-c-view-selector__content{border:1px solid #e4e4e4;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14)}.tribe-events .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link{background-color:#f7f6f6}.tribe-events .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-text{font-weight:700}.tribe-events .tribe-events-c-view-selector__list-item-link{border-radius:4px}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-icon,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-icon{opacity:.8}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-text,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-text{color:rgba(20,24,39,.8)}.tribe-events .tribe-events-c-view-selector__list-item-text{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400}.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{background-color:#334aff;content:"";height:100%;right:calc(100% - 3px);position:absolute;width:3px}.tribe-events .tribe-events-calendar-list__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5;color:#727272;text-transform:uppercase}.tribe-events .tribe-events-calendar-list__event-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-list__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-list__event-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-list__event-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-list__event-datetime-recurring-link:focus .tribe-events-calendar-list__event-datetime-recurring-icon,.tribe-events .tribe-events-calendar-list__event-datetime-recurring-link:hover .tribe-events-calendar-list__event-datetime-recurring-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-list__month-separator:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-list-nav{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__calendar-event{opacity:.5}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-month__calendar-event-datetime{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5;color:#727272}.tribe-events .tribe-events-calendar-month__calendar-event--featured:before{background-color:#334aff;content:"";height:100%;left:7px;position:absolute;width:2px}.tribe-events .tribe-events-calendar-month__calendar-event--featured:last-child:before{height:calc(100% - 16px)}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:focus .tribe-events-calendar-month__calendar-event-datetime-recurring-icon,.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-link:hover .tribe-events-calendar-month__calendar-event-datetime-recurring-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-link:focus .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-link:hover .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-month__header-column{text-transform:uppercase}.tribe-events .tribe-events-calendar-month__header-column-title{color:#727272;text-align:center}.tribe-events .tribe-events-calendar-month__day{border-radius:4px}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link{color:#334aff;font-weight:700}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:rgba(51,74,255,.8)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:rgba(51,74,255,.9)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date{opacity:.4}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--event{background-color:#141827;opacity:.5}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23141827'/%3E%3C/svg%3E");opacity:.5}.tribe-events .tribe-events-calendar-month__day-cell--mobile:focus,.tribe-events .tribe-events-calendar-month__day-cell--mobile:hover{background-color:#f7f6f6}.tribe-events .tribe-events-calendar-month__day-cell--selected,.tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:#334aff}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:#fff;opacity:1}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--event{background-color:#fff;opacity:1}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23FFF'/%3E%3C/svg%3E");opacity:1}.tribe-events .tribe-events-calendar-month__day-date-link{color:#141827;transition:color .2s ease}.tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day-date-link:hover{color:rgba(20,24,39,.8)}.tribe-events .tribe-events-calendar-month__day-date-link:active{color:rgba(20,24,39,.9)}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:#334aff}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:rgba(51,74,255,.8)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:rgba(51,74,255,.9)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:#334aff}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:hover{color:rgba(20,24,39,.8)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:active{color:rgba(20,24,39,.9)}.tribe-theme-twentytwenty .tribe-events .tribe-events-calendar-month__day-cell--selected{background-color:#334aff}.tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:#fff}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event+.tribe-events-calendar-month-mobile-events__mobile-event{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{color:#727272}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{color:#334aff;font-weight:700}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:focus .tribe-events-calendar-month-mobile-events__mobile-event-datetime-icon,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:hover .tribe-events-calendar-month-mobile-events__mobile-event-datetime-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-month__more-events{border-top:1px solid #e4e4e4}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__more-events-link{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event--start .tribe-events-calendar-month__multiday-event-bar{border-top-left-radius:9.5px;border-bottom-left-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event--end .tribe-events-calendar-month__multiday-event-bar{border-top-right-radius:9.5px;border-bottom-right-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{background-color:rgba(51,74,255,.24);transition:background-color .2s ease}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:rgba(51,74,255,.34)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner{background-color:#f7f6f6}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:#f0eeee}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-featured-icon,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-title{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{font-weight:400;text-overflow:ellipsis}.tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__multiday-event-bar-title{font-weight:400}.tribe-events .tribe-events-calendar-day__event--featured{position:relative}.tribe-events .tribe-events-calendar-day__event--featured:after{background-color:#334aff;content:"";height:100%;left:21px;position:absolute;width:3px}.tribe-events .tribe-events-calendar-day__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-day__event-featured-image-link{transition:opacity .2s ease}.tribe-events .tribe-events-calendar-day__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-day__event-featured-image-link:hover{opacity:.8}.tribe-events .tribe-events-calendar-day__event-featured-image-link:active{opacity:.9}.tribe-events .tribe-events-calendar-day__event-datetime-recurring-link:focus .tribe-events-calendar-day__event-datetime-recurring-icon,.tribe-events .tribe-events-calendar-day__event-datetime-recurring-link:hover .tribe-events-calendar-day__event-datetime-recurring-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E")}.tribe-events .tribe-events-calendar-day-nav{border-top:1px solid #d5d5d5}.tribe-events .tribe-events-calendar-day__time-separator:after,.tribe-events .tribe-events-calendar-day__type-separator:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}@media (min-width:768px){.tribe-events .tribe-events-c-breadcrumbs__list{font-size:42px;line-height:1.38}.admin-bar .tribe-events .datepicker{margin-top:16px}.tribe-events .tribe-events-c-events-bar--border{border:1px solid #e4e4e4}.tribe-events .tribe-events-c-events-bar__filters{border-right:1px solid #e4e4e4}.tribe-events .tribe-events-c-messages__message-list{text-align:center}.tribe-events .tribe-events-c-nav__next,.tribe-events .tribe-events-c-nav__prev{color:#727272}.tribe-events .tribe-events-c-nav__prev:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23727272'/%3E%3C/svg%3E");height:14px;margin-right:15px;width:9px}.tribe-events .tribe-events-c-nav__next:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E");height:14px;margin-left:15px;width:9px}.tribe-events .tribe-events-c-search__input-control{border-right:1px solid #e4e4e4}.tribe-events .tribe-events-c-search__input-control:last-child{border-right:0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input--icon,.tribe-events .tribe-events-c-search__input--icon{background-position:16px}.tribe-events .tribe-events-c-top-bar__datepicker-button:after{height:7px;width:12px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button:before{content:none}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21.85L6 5.64 10.79.85 11.94 2 6 7.94.06 2z' fill='%23141827'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;flex:none;height:6px;margin-left:8px;width:10px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button--active:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.21 7.15L6 2.36l4.79 4.79L11.94 6 6 .06.06 6z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{box-shadow:0 2px 5px 0 rgba(0,0,0,.14)}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{border:0;border-radius:0;box-shadow:none}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link{background-color:transparent}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link:after{background-color:#141827;bottom:-1px;content:"";display:block;height:2px;position:absolute;width:100%}.tribe-events .tribe-events-c-view-selector__button:before{width:calc(100% - 16px);transform:none}.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{color:#334aff;font-weight:700}.tribe-events .tribe-events-calendar-month__header-column-title{text-align:left}.tribe-events .tribe-events-calendar-month__day{border-radius:0}.tribe-events .tribe-events-calendar-month__day:after{background-color:transparent;bottom:0;content:"";display:block;height:2px;left:-1px;position:absolute;transition:background-color .2s ease;width:calc(100% + 2px)}.tribe-events .tribe-events-calendar-month__day:hover:after{background-color:#141827}.tribe-events .tribe-events-calendar-day__event--featured:after{left:calc(11.111% - 24px);width:4px}.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{color:#334aff;font-weight:700}}
src/resources/css/views-skeleton.css CHANGED
@@ -153,6 +153,10 @@
153
  * SVG - Filters
154
  * ----------------------------------------------------------------------------- */
155
 
 
 
 
 
156
  /* -----------------------------------------------------------------------------
157
  * SVG - List
158
  * ----------------------------------------------------------------------------- */
@@ -161,10 +165,18 @@
161
  * SVG - Location
162
  * ----------------------------------------------------------------------------- */
163
 
 
 
 
 
164
  /* -----------------------------------------------------------------------------
165
  * SVG - Map
166
  * ----------------------------------------------------------------------------- */
167
 
 
 
 
 
168
  /* -----------------------------------------------------------------------------
169
  * SVG - Messages
170
  * ----------------------------------------------------------------------------- */
@@ -177,6 +189,10 @@
177
  * SVG - No Map
178
  * ----------------------------------------------------------------------------- */
179
 
 
 
 
 
180
  /* -----------------------------------------------------------------------------
181
  * SVG - Photo
182
  * ----------------------------------------------------------------------------- */
@@ -515,14 +531,6 @@
515
  width: 25%;
516
  }
517
 
518
- .tribe-events.tribe-events-view--week .datepicker tbody tr.active {
519
- position: relative;
520
- }
521
-
522
- .tribe-events.tribe-events-view--week .datepicker .day.disabled {
523
- cursor: pointer;
524
- }
525
-
526
  /* -----------------------------------------------------------------------------
527
  *
528
  * Datepicker: V1 Style Overrides
@@ -741,6 +749,19 @@
741
  width: 16px;
742
  }
743
 
 
 
 
 
 
 
 
 
 
 
 
 
 
744
  /* Loader */
745
 
746
  /* -----------------------------------------------------------------------------
@@ -1016,6 +1037,7 @@
1016
 
1017
  .tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content {
1018
  padding: 0;
 
1019
  }
1020
 
1021
  .tooltipster-base.tribe-events-tooltip-theme .tooltipster-arrow {
@@ -1039,11 +1061,6 @@
1039
  * ----------------------------------------------------------------------------- */
1040
  }
1041
 
1042
- .tribe-events .tribe-events-c-top-bar__nav {
1043
- display: none !important;
1044
- visibility: hidden;
1045
- }
1046
-
1047
  .tribe-events .tribe-events-c-top-bar__nav-list {
1048
  display: -webkit-box;
1049
  display: flex;
@@ -1063,12 +1080,16 @@
1063
  display: block;
1064
  }
1065
 
1066
- .tribe-events .tribe-events-c-top-bar__today-button {
1067
- display: none !important;
1068
- visibility: hidden;
 
 
1069
  }
1070
 
1071
  .tribe-events .tribe-events-c-top-bar__datepicker {
 
 
1072
  position: relative;
1073
  }
1074
 
@@ -1348,7 +1369,8 @@
1348
  margin-bottom: 16px;
1349
  }
1350
 
1351
- .tribe-events .tribe-events-calendar-list__event-featured-image-link {
 
1352
  display: block;
1353
  }
1354
 
@@ -1470,11 +1492,25 @@
1470
  margin-top: 8px;
1471
  }
1472
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1473
  .tribe-events .tribe-events-calendar-month__calendar-event-featured-image-wrapper {
1474
  margin-bottom: 4px;
1475
  }
1476
 
1477
- .tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link {
 
1478
  display: block;
1479
  }
1480
 
@@ -1495,10 +1531,32 @@
1495
  margin-bottom: 0;
1496
  }
1497
 
1498
- .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link {
 
1499
  display: block;
1500
  }
1501
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1502
  .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description {
1503
  margin-bottom: 8px;
1504
  }
@@ -1511,6 +1569,25 @@
1511
  margin-top: 16px;
1512
  }
1513
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1514
  /* -----------------------------------------------------------------------------
1515
  * Calendar Header
1516
  * ----------------------------------------------------------------------------- */
@@ -1692,6 +1769,10 @@
1692
  z-index: 5;
1693
  }
1694
 
 
 
 
 
1695
  .tribe-events .tribe-events-calendar-month__multiday-event-hidden-link {
1696
  display: block;
1697
  height: 100%;
@@ -1724,6 +1805,7 @@
1724
  .tribe-events .tribe-events-calendar-month__multiday-event-bar-title {
1725
  -webkit-box-flex: 0;
1726
  flex: none;
 
1727
  overflow: hidden;
1728
  white-space: nowrap;
1729
  }
@@ -1759,7 +1841,8 @@
1759
  margin-bottom: 40px;
1760
  }
1761
 
1762
- .tribe-events .tribe-events-calendar-day__time-separator + .tribe-events-calendar-day__event {
 
1763
  margin-top: 20px;
1764
  }
1765
 
@@ -1772,7 +1855,8 @@
1772
  margin-bottom: 16px;
1773
  }
1774
 
1775
- .tribe-events .tribe-events-calendar-day__event-featured-image-link {
 
1776
  display: block;
1777
  }
1778
 
@@ -1820,8 +1904,19 @@
1820
  * Theme Overrides - Twenty Nineteen
1821
  * ------------------------------------------------------------------------- */
1822
 
1823
- .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__event {
 
1824
  margin-top: 32px;
 
 
 
 
 
 
 
 
 
 
1825
  }
1826
 
1827
  /* -----------------------------------------------------------------------------
@@ -2065,6 +2160,14 @@
2065
  min-width: 363px
2066
  }
2067
 
 
 
 
 
 
 
 
 
2068
  .tribe-events .tribe-events-c-top-bar__actions {
2069
  display: block !important;
2070
  -webkit-box-flex: 0;
@@ -2358,7 +2461,14 @@
2358
  margin-bottom: 64px
2359
  }
2360
 
2361
- .tribe-events .tribe-events-calendar-day__time-separator + .tribe-events-calendar-day__event {
 
 
 
 
 
 
 
2362
  margin-top: 40px
2363
  }
2364
 
@@ -2423,8 +2533,19 @@
2423
  margin-top: 16px
2424
  }
2425
 
2426
- .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__event {
2427
- margin-top: 48px
 
 
 
 
 
 
 
 
 
 
 
2428
  }
2429
 
2430
  .tribe-events .tribe-events-calendar-day-nav {
153
  * SVG - Filters
154
  * ----------------------------------------------------------------------------- */
155
 
156
+ /* -----------------------------------------------------------------------------
157
+ * SVG - Link
158
+ * ----------------------------------------------------------------------------- */
159
+
160
  /* -----------------------------------------------------------------------------
161
  * SVG - List
162
  * ----------------------------------------------------------------------------- */
165
  * SVG - Location
166
  * ----------------------------------------------------------------------------- */
167
 
168
+ /* -----------------------------------------------------------------------------
169
+ * SVG - Mail
170
+ * ----------------------------------------------------------------------------- */
171
+
172
  /* -----------------------------------------------------------------------------
173
  * SVG - Map
174
  * ----------------------------------------------------------------------------- */
175
 
176
+ /* -----------------------------------------------------------------------------
177
+ * SVG - Map pin
178
+ * ----------------------------------------------------------------------------- */
179
+
180
  /* -----------------------------------------------------------------------------
181
  * SVG - Messages
182
  * ----------------------------------------------------------------------------- */
189
  * SVG - No Map
190
  * ----------------------------------------------------------------------------- */
191
 
192
+ /* -----------------------------------------------------------------------------
193
+ * SVG - Phone
194
+ * ----------------------------------------------------------------------------- */
195
+
196
  /* -----------------------------------------------------------------------------
197
  * SVG - Photo
198
  * ----------------------------------------------------------------------------- */
531
  width: 25%;
532
  }
533
 
 
 
 
 
 
 
 
 
534
  /* -----------------------------------------------------------------------------
535
  *
536
  * Datepicker: V1 Style Overrides
749
  width: 16px;
750
  }
751
 
752
+ /* iCal link */
753
+
754
+ /* -----------------------------------------------------------------------------
755
+ *
756
+ * iCal link
757
+ *
758
+ * ----------------------------------------------------------------------------- */
759
+
760
+ .tribe-events .tribe-events-c-ical {
761
+ margin-top: 20px;
762
+ text-align: right;
763
+ }
764
+
765
  /* Loader */
766
 
767
  /* -----------------------------------------------------------------------------
1037
 
1038
  .tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content {
1039
  padding: 0;
1040
+ word-break: break-word;
1041
  }
1042
 
1043
  .tooltipster-base.tribe-events-tooltip-theme .tooltipster-arrow {
1061
  * ----------------------------------------------------------------------------- */
1062
  }
1063
 
 
 
 
 
 
1064
  .tribe-events .tribe-events-c-top-bar__nav-list {
1065
  display: -webkit-box;
1066
  display: flex;
1080
  display: block;
1081
  }
1082
 
1083
+ .tribe-events .tribe-events-c-top-bar__datepicker-form {
1084
+ -webkit-box-align: center;
1085
+ align-items: center;
1086
+ display: -webkit-box;
1087
+ display: flex;
1088
  }
1089
 
1090
  .tribe-events .tribe-events-c-top-bar__datepicker {
1091
+ -webkit-box-flex: 1;
1092
+ flex: auto;
1093
  position: relative;
1094
  }
1095
 
1369
  margin-bottom: 16px;
1370
  }
1371
 
1372
+ .tribe-events .tribe-events-calendar-list__event-featured-image-link,
1373
+ .tribe-events .tribe-events-calendar-list__event-featured-image {
1374
  display: block;
1375
  }
1376
 
1492
  margin-top: 8px;
1493
  }
1494
 
1495
+ .tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured-icon,
1496
+ .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
1497
+ display: inline-block;
1498
+ }
1499
+
1500
+ .tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured-icon {
1501
+ margin-right: 4px;
1502
+ }
1503
+
1504
+ .tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
1505
+ margin-left: 2px;
1506
+ }
1507
+
1508
  .tribe-events .tribe-events-calendar-month__calendar-event-featured-image-wrapper {
1509
  margin-bottom: 4px;
1510
  }
1511
 
1512
+ .tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link,
1513
+ .tribe-events .tribe-events-calendar-month__calendar-event-featured-image {
1514
  display: block;
1515
  }
1516
 
1531
  margin-bottom: 0;
1532
  }
1533
 
1534
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link,
1535
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image {
1536
  display: block;
1537
  }
1538
 
1539
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime {
1540
+ margin-bottom: 4px;
1541
+ }
1542
+
1543
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon,
1544
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon {
1545
+ display: inline-block;
1546
+ }
1547
+
1548
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon {
1549
+ margin-right: 4px;
1550
+ }
1551
+
1552
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon {
1553
+ margin-left: 2px;
1554
+ }
1555
+
1556
+ .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title {
1557
+ margin-bottom: 4px;
1558
+ }
1559
+
1560
  .tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description {
1561
  margin-bottom: 8px;
1562
  }
1569
  margin-top: 16px;
1570
  }
1571
 
1572
+ /* -------------------------------------------------------------------------
1573
+ * Theme Overrides - Twenty Nineteen
1574
+ * ------------------------------------------------------------------------- */
1575
+
1576
+ .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event, .tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event {
1577
+ margin: 8px 0;
1578
+ padding: 0 16px;
1579
+ position: relative;
1580
+ }
1581
+
1582
+ .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:first-child, .tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:first-child {
1583
+ margin-top: 0;
1584
+ }
1585
+
1586
+ .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:last-child, .tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:last-child {
1587
+ margin-bottom: 0;
1588
+ padding-bottom: 16px;
1589
+ }
1590
+
1591
  /* -----------------------------------------------------------------------------
1592
  * Calendar Header
1593
  * ----------------------------------------------------------------------------- */
1769
  z-index: 5;
1770
  }
1771
 
1772
+ .tribe-events .tribe-events-calendar-month__multiday-event-hidden-title {
1773
+ white-space: nowrap;
1774
+ }
1775
+
1776
  .tribe-events .tribe-events-calendar-month__multiday-event-hidden-link {
1777
  display: block;
1778
  height: 100%;
1805
  .tribe-events .tribe-events-calendar-month__multiday-event-bar-title {
1806
  -webkit-box-flex: 0;
1807
  flex: none;
1808
+ max-width: 100%;
1809
  overflow: hidden;
1810
  white-space: nowrap;
1811
  }
1841
  margin-bottom: 40px;
1842
  }
1843
 
1844
+ .tribe-events .tribe-events-calendar-day__time-separator + .tribe-events-calendar-day__event,
1845
+ .tribe-events .tribe-events-calendar-day__type-separator + .tribe-events-calendar-day__event {
1846
  margin-top: 20px;
1847
  }
1848
 
1855
  margin-bottom: 16px;
1856
  }
1857
 
1858
+ .tribe-events .tribe-events-calendar-day__event-featured-image-link,
1859
+ .tribe-events .tribe-events-calendar-list__event-featured-image {
1860
  display: block;
1861
  }
1862
 
1904
  * Theme Overrides - Twenty Nineteen
1905
  * ------------------------------------------------------------------------- */
1906
 
1907
+ .tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event {
1908
+ margin-bottom: 24px;
1909
  margin-top: 32px;
1910
+ padding-left: 54px;
1911
+ }
1912
+
1913
+ .tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event:last-child {
1914
+ margin-bottom: 40px;
1915
+ }
1916
+
1917
+ .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__time-separator + .entry.tribe-events-calendar-day__event,
1918
+ .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__type-separator + .entry.tribe-events-calendar-day__event {
1919
+ margin-top: 20px;
1920
  }
1921
 
1922
  /* -----------------------------------------------------------------------------
2160
  min-width: 363px
2161
  }
2162
 
2163
+ .tribe-events .tribe-events-c-top-bar__datepicker-submit {
2164
+ display: block !important;
2165
+ -webkit-box-flex: 0;
2166
+ flex: none;
2167
+ margin-left: 15px;
2168
+ visibility: visible
2169
+ }
2170
+
2171
  .tribe-events .tribe-events-c-top-bar__actions {
2172
  display: block !important;
2173
  -webkit-box-flex: 0;
2461
  margin-bottom: 64px
2462
  }
2463
 
2464
+ .tribe-events .tribe-events-calendar-day__event:before {
2465
+ content: '';
2466
+ min-width: 90px;
2467
+ width: 11.111%
2468
+ }
2469
+
2470
+ .tribe-events .tribe-events-calendar-day__time-separator + .tribe-events-calendar-day__event,
2471
+ .tribe-events .tribe-events-calendar-day__type-separator + .tribe-events-calendar-day__event {
2472
  margin-top: 40px
2473
  }
2474
 
2533
  margin-top: 16px
2534
  }
2535
 
2536
+ .tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event {
2537
+ margin-bottom: 40px;
2538
+ margin-top: 48px;
2539
+ padding-left: 0
2540
+ }
2541
+
2542
+ .tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event:last-child {
2543
+ margin-bottom: 64px
2544
+ }
2545
+
2546
+ .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__time-separator + .entry.tribe-events-calendar-day__event,
2547
+ .tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__type-separator + .entry.tribe-events-calendar-day__event {
2548
+ margin-top: 40px
2549
  }
2550
 
2551
  .tribe-events .tribe-events-calendar-day-nav {
src/resources/css/views-skeleton.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-events-view{position:relative}.tribe-events .tribe-events-l-container{padding-bottom:80px;padding-top:64px}.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:24px;width:100%}.tribe-events .tribe-events-c-breadcrumbs__list{display:flex;flex-wrap:wrap}.tribe-events .tribe-events-c-breadcrumbs__list-item{display:inline-flex;align-items:center}.tribe-events .tribe-events-c-breadcrumbs__list-item:not(:last-child):after{content:"";background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;display:inline-block;height:10px;width:6px;margin:0 6px}.tribe-events .datepicker{margin-top:8px;padding:0 16px 16px}.tribe-events .datepicker table{border-collapse:collapse}.tribe-events .datepicker .datepicker-switch,.tribe-events .datepicker .next,.tribe-events .datepicker .prev{padding:20px 0}.tribe-events .datepicker .next .tribe-common-svgicon,.tribe-events .datepicker .prev .tribe-common-svgicon{display:block;height:14px;width:9px}.tribe-events .datepicker .prev:active .tribe-common-svgicon,.tribe-events .datepicker .prev:focus .tribe-common-svgicon,.tribe-events .datepicker .prev:hover .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .datepicker .prev .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23BABABA'/%3E%3C/svg%3E");margin-right:auto}.tribe-events .datepicker .next:active .tribe-common-svgicon,.tribe-events .datepicker .next:focus .tribe-common-svgicon,.tribe-events .datepicker .next:hover .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .datepicker .next .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23BABABA'/%3E%3C/svg%3E");margin-left:auto}.tribe-events .datepicker .datepicker-months td,.tribe-events .datepicker .datepicker-months th,.tribe-events .datepicker .datepicker-years td,.tribe-events .datepicker .datepicker-years th{padding:0}.tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-events .datepicker .datepicker-months .next,.tribe-events .datepicker .datepicker-months .prev,.tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-events .datepicker .datepicker-years .next,.tribe-events .datepicker .datepicker-years .prev{padding:20px 0 8px}.tribe-events .datepicker .dow{padding:0;width:14.285%}.tribe-events .datepicker .day{padding:11px 0;width:48px}.tribe-events .datepicker .month,.tribe-events .datepicker .year{height:auto;margin:0;padding:15px 0;width:25%}.tribe-events.tribe-events-view--week .datepicker tbody tr.active{position:relative}.tribe-events.tribe-events-view--week .datepicker .day.disabled{cursor:pointer}.admin-bar .tribe-events .datepicker{margin-top:8px}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .next,.tribe-theme-divi #content-area .tribe-events .datepicker .prev{padding:20px 0}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .prev,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .prev{padding:20px 0 8px}.tribe-theme-divi #content-area .tribe-events .datepicker .dow{padding:0}.tribe-theme-divi #content-area .tribe-events .datepicker .day{padding:11px 0}.tribe-theme-enfold .tribe-events .datepicker{min-width:0;padding:0 16px 16px}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{cursor:pointer!important}.tribe-theme-avada .tribe-events .datepicker{padding:0 16px 16px}.tribe-theme-avada .tribe-events .datepicker .datepicker-months td{padding:0}.tribe-events .tribe-events-c-day-marker{align-items:center;display:flex}.tribe-events .tribe-events-c-day-marker__date{flex:none}.tribe-events .tribe-events-c-events-bar{display:flex}.tribe-events .tribe-events-c-events-bar__views{display:flex;flex:none;justify-content:center}.tribe-events .tribe-events-c-events-bar__search-filters-container{background-color:#fff;display:none;left:0;padding:12px 21px;position:absolute;right:0;top:calc(100% - 12px);z-index:30}.tribe-events .tribe-events-c-events-bar__search-form{width:100%}.tribe-events .tribe-events-c-events-bar__filters{display:flex;flex:none;justify-content:flex-end;margin-right:-12px}.tribe-events .tribe-events-c-events-bar__filters-button{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-events-bar__search-button{display:inline-block;margin-right:8px;padding:4px;position:relative}.tribe-events .tribe-events-c-events-bar__search-button-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E");display:block;height:21px;width:21px}.tribe-events .tribe-events-c-events-bar__search-button-icon--filter{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='22'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='%23141827' fill-rule='nonzero' d='M30.128 21.41c.22.221.554.247.743.058l.6-.6c.19-.189.163-.524-.057-.744l-6.557-6.557c-.55-.55-1.83.743-1.278 1.295l6.549 6.549z'/%3E%3Ccircle cx='18.777' cy='8.777' r='7.564' stroke='%23141827' stroke-width='1.5' transform='rotate(4 18.777 8.777)'/%3E%3Cpath fill='%23141827' fill-rule='nonzero' d='M7.442 9.533C7.75 9.533 8 9.293 8 9v-.467A.547.547 0 0 0 7.442 8H.558A.547.547 0 0 0 0 8.533V9c0 .293.25.533.558.533h6.884zM9.533 2.5c.257 0 .467-.24.467-.533v-.434C10 1.24 9.79 1 9.533 1H.467C.21 1 0 1.24 0 1.533v.434c0 .293.21.533.467.533h9.066zM.535 16.533h3.93c.294 0 .535-.24.535-.533v-.467A.536.536 0 0 0 4.465 15H.535a.536.536 0 0 0-.535.533V16c0 .293.24.533.535.533z'/%3E%3C/g%3E%3C/svg%3E");width:31px}.tribe-events .tribe-events-c-events-bar__search-button-icon--filter+.tribe-events-c-events-bar__search-button-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-events-bar__tabs{display:flex;padding-bottom:12px}.tribe-events .tribe-events-c-events-bar__tab{align-items:center;display:flex;flex:1 1 50%;flex-direction:column;margin:0 4px;padding:16px 0}.tribe-events .tribe-events-c-events-bar__tab:active .tribe-common-svgicon--search,.tribe-events .tribe-events-c-events-bar__tab:focus .tribe-common-svgicon--search,.tribe-events .tribe-events-c-events-bar__tab:hover .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab:active .tribe-common-svgicon--filters,.tribe-events .tribe-events-c-events-bar__tab:focus .tribe-common-svgicon--filters,.tribe-events .tribe-events-c-events-bar__tab:hover .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab:first-of-type{margin-left:0}.tribe-events .tribe-events-c-events-bar__tab:last-of-type{margin-right:0}.tribe-events .tribe-events-c-events-bar__tab--active .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab--active .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab-icon{height:16px;margin-bottom:4px;width:16px}.tribe-events .tribe-events-view-loader{align-items:flex-start;justify-content:center;display:flex;position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;background-color:hsla(0,0%,100%,.6)}.tribe-events .tribe-events-c-messages{display:flex;flex-direction:column}.tribe-events .tribe-events-c-messages__message{align-items:center;display:flex;padding:12px;width:100%}.tribe-events .tribe-events-c-nav{padding-top:20px}.tribe-events .tribe-events-c-nav__list{display:flex;width:100%;flex-wrap:wrap;justify-content:space-between}.tribe-events .tribe-events-c-nav__list-item{display:flex;width:33.33%}.tribe-events .tribe-events-c-nav__list-item--prev{justify-content:flex-start}.tribe-events .tribe-events-c-nav__list-item--next{justify-content:flex-end}.tribe-events .tribe-events-c-nav__list-item--today{justify-content:center}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-events .tribe-events-c-nav__next,.tribe-events .tribe-events-c-nav__prev{align-items:center;display:flex;flex:none;flex-wrap:wrap;justify-content:center}.tribe-events .tribe-events-c-promo{margin-top:20px}.tribe-events .tribe-events-c-read-more{margin-top:12px}.tribe-events .tribe-events-c-small-cta>*{margin-left:8px}.tribe-events .tribe-events-c-small-cta>:first-child{margin-left:0}.tribe-events .tribe-events-c-small-cta__link{cursor:pointer}.tribe-events .tribe-events-c-small-cta__stock{margin-left:4px}.tribe-events .tribe-events-c-search__button{margin-top:24px}.tooltipster-base.tribe-events-tooltip-theme{height:auto!important;padding:24px;max-width:254px}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{margin:0}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{padding:0}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-arrow{display:none}.tribe-events .tribe-events-c-top-bar__nav{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-top-bar__nav-list{display:flex}.tribe-events .tribe-events-c-top-bar__nav-list-item{flex:none;padding-right:15px}.tribe-events .tribe-events-c-top-bar__nav-list-item>*{vertical-align:middle}.tribe-events .tribe-events-c-top-bar__nav-link{display:block}.tribe-events .tribe-events-c-top-bar__today-button{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-top-bar__datepicker{position:relative}.tribe-events .tribe-events-c-top-bar__datepicker-button{align-items:center;display:flex;flex:none}.tribe-events .tribe-events-c-top-bar__datepicker-container{bottom:0;left:0;max-width:calc(100% + 66px);position:absolute;width:363px}.tribe-events .tribe-events-c-top-bar__actions{display:none!important;visibility:hidden}#top.tribe-theme-enfold .tribe-events .tribe-events-c-top-bar__datepicker-input,.tribe-theme-avada .tribe-events .tribe-events-c-top-bar__datepicker-input{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-events .tribe-events-c-view-selector{position:relative;width:29px}.tribe-events .tribe-events-c-view-selector__button{align-items:center;display:flex;padding:4px;position:relative;width:100%}.tribe-events .tribe-events-c-view-selector__button-icon{display:block;height:21px;width:21px}.tribe-events .tribe-events-c-view-selector__content{display:none;background-color:#fff;padding:12px 6px;position:absolute;right:0;top:100%;transform:translateY(16px);z-index:30}.tribe-events .tribe-events-c-view-selector__list-item-link{align-items:center;display:flex;padding:8px 24px 8px 12px}.tribe-events .tribe-events-c-view-selector__list-item-icon{flex:none;height:18px;margin-right:12px;width:18px}.tribe-events .tribe-events-c-view-selector__list-item-text{flex:auto}.tribe-events .tribe-events-header{align-items:center;background-color:#fff;display:flex;flex-direction:row-reverse;flex-wrap:wrap;justify-content:space-between;margin:0 -21px;padding:0 21px 16px;position:relative}.tribe-events .tribe-events-header__messages{margin-bottom:16px;width:100%}.tribe-events .tribe-events-header__events-bar{flex:none}.tribe-events .tribe-events-header__top-bar{flex:auto}.tribe-events .tribe-events-calendar-list__event-row{flex-wrap:nowrap;margin-bottom:24px;margin-top:32px}.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:40px}.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:20px}.tribe-events .tribe-events-calendar-list__event-date-tag{flex:none;width:54px;position:relative}.tribe-events .tribe-events-calendar-list__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;text-align:center}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{margin-bottom:-4px}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1;width:calc(75% + 21px)}.tribe-events .tribe-events-calendar-list__event{flex-direction:column}.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{flex:none;margin-bottom:16px}.tribe-events .tribe-events-calendar-list__event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-list__event-details{flex:none}.tribe-events .tribe-events-calendar-list__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper,.tribe-events .tribe-events-calendar-list__event-title{margin-bottom:8px}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-list__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-datetime-featured-icon{display:inline-block;margin-right:4px}.tribe-events .tribe-events-calendar-list__event-datetime-recurring-icon{display:inline-block;margin-left:4px}.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:8px}.tribe-events .tribe-events-calendar-list__event-description{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-list__event-cost{margin-top:12px}.tribe-events .tribe-events-calendar-list__month-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-list__month-separator-text{flex:none}.tribe-events .tribe-events-calendar-list-nav{padding-top:24px}.tribe-events .tribe-events-calendar-month{margin-bottom:8px}.tribe-events .tribe-events-calendar-month__week{display:flex}.tribe-events .tribe-events-calendar-month__calendar-event{margin:8px 0;padding:0 16px;position:relative}.tribe-events .tribe-events-calendar-month__calendar-event:first-child{margin-top:0}.tribe-events .tribe-events-calendar-month__calendar-event:last-child{margin-bottom:0;padding-bottom:16px}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event{margin-top:0}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event--featured{margin-top:8px}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-wrapper{margin-bottom:4px}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper{margin-bottom:12px;width:206px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description{margin-bottom:8px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-cost{margin-top:16px}.tribe-events .tribe-events-calendar-month__header-row{display:flex}.tribe-events .tribe-events-calendar-month__header-column{width:14.285%;padding-bottom:16px}.tribe-events .tribe-events-calendar-month__day{height:48px;overflow:hidden;position:relative;width:14.285%}.tribe-events .tribe-events-calendar-month__day-cell{height:100%;width:100%}.tribe-events .tribe-events-calendar-month__day-cell--mobile{align-items:center;display:flex;flex-direction:column;text-align:center}.tribe-events .tribe-events-calendar-month__events{flex:auto}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:#141827;border-radius:50%;height:8px;width:8px}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23141827'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;height:10px;width:8px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day{display:none}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day--show{display:block}.tribe-events .tribe-events-calendar-month-mobile-events__day-marker{padding-top:16px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event{padding:12px 0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event--featured{padding-bottom:20px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-featured-image-wrapper{margin-bottom:12px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{margin-bottom:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-icon{display:inline-block;margin-right:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon{display:inline-block;margin-left:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{margin-right:8px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-cost{margin-top:8px}.tribe-events .tribe-events-calendar-month-mobile-events__more-events{padding:4px 0 20px}.tribe-events .tribe-events-calendar-month__more-events{display:flex;flex:none;margin:0 16px;padding:8px 0 16px}.tribe-events .tribe-events-calendar-month__more-events-link{flex:none}.tribe-events .tribe-events-calendar-month__multiday-event--width-2 .tribe-events-calendar-month__multiday-event-bar{width:calc(200% + 1px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-3 .tribe-events-calendar-month__multiday-event-bar{width:calc(300% + 2px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-4 .tribe-events-calendar-month__multiday-event-bar{width:calc(400% + 3px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-5 .tribe-events-calendar-month__multiday-event-bar{width:calc(500% + 4px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-6 .tribe-events-calendar-month__multiday-event-bar{width:calc(600% + 5px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-7 .tribe-events-calendar-month__multiday-event-bar{width:calc(700% + 6px)}.tribe-events .tribe-events-calendar-month__multiday-event-hidden{height:100%;opacity:0;position:absolute;width:100%;z-index:5}.tribe-events .tribe-events-calendar-month__multiday-event-hidden-link{display:block;height:100%}.tribe-events .tribe-events-calendar-month__multiday-event-bar{background-color:#fff;overflow:hidden;position:relative;width:100%;z-index:2}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{align-items:center;cursor:pointer;display:flex;flex-wrap:nowrap;padding:1px 16px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-featured-icon{flex:none;margin-right:5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{flex:none;overflow:hidden;white-space:nowrap}.tribe-events .tribe-events-calendar-month-nav{padding-top:20px}.tribe-events .tribe-events-calendar-day__event{margin-bottom:24px;margin-top:32px;padding-left:54px}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:40px}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event{margin-top:20px}.tribe-events .tribe-events-calendar-day__event-content{flex:none}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-day__event-details{position:relative}.tribe-events .tribe-events-calendar-day__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-events .tribe-events-calendar-day__event-title{margin-bottom:8px}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-day__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-featured-icon{display:inline-block;margin-right:4px}.tribe-events .tribe-events-calendar-day__event-datetime-recurring-icon{display:inline-block;margin-left:4px}.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:8px}.tribe-events .tribe-events-calendar-day__event-description{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-day__event-cost{margin-top:12px}.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__event{margin-top:32px}.tribe-events .tribe-events-calendar-day-nav{padding-top:24px}.tribe-events .tribe-events-calendar-day__time-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-day__time-separator-text{flex:none}.tribe-events .tribe-events-calendar-day__type-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-day__type-separator-text{flex:none}@media (min-width:768px){.tribe-events .tribe-events-l-container{padding-bottom:160px;padding-top:96px}.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:48px}.tribe-events .tribe-events-c-breadcrumbs__list-item:not(:last-child):after{height:16px;width:10px;margin:0 10px}.admin-bar .tribe-events .datepicker,.tribe-events .datepicker{margin-top:16px}.tribe-events .tribe-events-c-events-bar{flex-direction:row}.tribe-events .tribe-events-c-events-bar__search-filters-container{align-items:center;display:flex;flex:auto;padding:0;position:static;z-index:auto}.tribe-events .tribe-events-c-events-bar__search{display:flex;flex:auto}.tribe-events .tribe-events-c-events-bar__filters{margin:12px 0}.tribe-events .tribe-events-c-events-bar__filters-button{align-items:center;display:flex!important;margin:-12px 0;padding:20px 24px;visibility:visible}.tribe-events .tribe-events-c-events-bar__filters-button:active:before,.tribe-events .tribe-events-c-events-bar__filters-button:focus:before,.tribe-events .tribe-events-c-events-bar__filters-button:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__filters-button:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;background-size:17px;content:"";display:inline-block;flex:none;height:17px;margin-right:8px;width:17px}.tribe-events .tribe-events-c-events-bar__search-button,.tribe-events .tribe-events-c-events-bar__tabs{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-messages__message{justify-content:center;padding:16px}.tribe-events .tribe-events-c-nav{padding-top:28px}.tribe-events .tribe-events-c-nav__list-item{width:50%}.tribe-events .tribe-events-c-nav__list-item--today{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{clip:auto;width:auto;height:auto;margin:0;position:static}.tribe-events .tribe-events-c-search{display:flex;align-items:center}.tribe-events .tribe-events-c-search__input-group{align-items:center;display:flex;flex:auto}.tribe-events .tribe-events-c-search__input-control{flex:auto;margin:12px 0}.tribe-events .tribe-events-c-search__input{margin:-12px 0}.tribe-events .tribe-events-c-search__button{flex:none;margin-top:0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input,.tribe-theme-avada .tribe-events .tribe-events-c-search__input{margin:-12px 0}.tribe-events .tribe-events-c-top-bar{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap}.tribe-events .tribe-events-c-top-bar__nav{display:block!important;flex:none;visibility:visible}.tribe-events .tribe-events-c-top-bar__nav-link:before{height:18px;width:11px}.tribe-events .tribe-events-c-top-bar__today-button{display:block!important;flex:none;margin-right:15px;visibility:visible}.tribe-events .tribe-events-c-top-bar__datepicker{margin:0;padding:0}.tribe-events .tribe-events-c-top-bar__datepicker-container{max-width:none;min-width:363px}.tribe-events .tribe-events-c-top-bar__actions{display:block!important;flex:none;margin-left:auto;visibility:visible}.tribe-events .tribe-events-c-view-selector{width:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button{height:100%;padding:20px 24px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{clip:auto;width:auto;height:auto;margin:0;position:static;flex:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{left:0;padding:8px;right:auto;transform:translateY(8px);width:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-link{padding:4px 32px 4px 16px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector--tabs{width:auto}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__button{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{display:block;height:100%;padding:0 12px;position:static;transform:none}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list{display:flex;height:100%}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item{margin:0 12px}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item-link{height:100%;padding:20px 0;position:relative}.tribe-events .tribe-events-c-view-selector__button{padding:8px}.tribe-events .tribe-events-c-view-selector__button-icon{height:23px;width:23px}.tribe-events .tribe-events-c-view-selector__content{transform:translateY(12px)}.tribe-events .tribe-events-header{margin:0;padding:0}.tribe-events .tribe-events-header--has-event-search{background-color:transparent;flex-direction:row}.tribe-events .tribe-events-header--has-event-search .tribe-events-header__events-bar{margin-left:0;width:100%}.tribe-events .tribe-events-header--has-event-search .tribe-events-header__top-bar{width:100%}.tribe-events .tribe-events-header__messages{margin-bottom:32px;order:1}.tribe-events .tribe-events-header__events-bar{margin-bottom:32px;margin-left:16px}.tribe-events .tribe-events-header__top-bar{margin-bottom:32px}.tribe-events .tribe-events-calendar-list__event-row{margin:48px -24px 40px}.tribe-events .tribe-events-calendar-list__event-row>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:64px}.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:40px}.tribe-events .tribe-events-calendar-list__event-date-tag{min-width:90px;width:11.111%}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1 1 88.888%}.tribe-events .tribe-events-calendar-list__event{flex-direction:row-reverse;justify-content:flex-end}.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{margin-bottom:0;width:37.5%}.tribe-events .tribe-events-calendar-list__event-details{width:62.5%}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper,.tribe-events .tribe-events-calendar-list__event-title{margin-bottom:16px}.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{clip:auto;width:auto;height:auto;margin:0;position:static;margin-right:8px}.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:16px}.tribe-events .tribe-events-calendar-list__event-description{display:block!important;margin-top:16px;visibility:visible}.tribe-events .tribe-events-calendar-list__event-cost{margin-top:16px}.tribe-events .tribe-events-calendar-list-nav{padding-top:32px}.tribe-events .tribe-events-calendar-month{margin:0}.tribe-events .tribe-events-calendar-month__body{border-top:1px solid #e4e4e4}.tribe-events .tribe-events-calendar-month__week{border-left:1px solid #e4e4e4}.tribe-events .tribe-events-calendar-month__header-column-title-mobile{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month__header-column-title-desktop{display:block!important;visibility:visible}.tribe-events .tribe-events-calendar-month__day{border-color:#e4e4e4;border-style:solid;border-width:0 1px 1px 0;height:auto;min-height:168px;overflow:visible}.tribe-events .tribe-events-calendar-month__day-cell--mobile{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month__day-cell--desktop{display:flex!important;flex-direction:column;visibility:visible}.tribe-events .tribe-events-calendar-month__day-date{flex:none;padding:8px 16px}.tribe-events .tribe-events-calendar-month-mobile-events{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper{height:19px;margin-bottom:4px;position:relative}.tribe-events .tribe-events-calendar-month-nav{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-day__event{margin-bottom:40px;margin-top:48px;padding-left:0}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:64px}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event{margin-top:40px}.tribe-events .tribe-events-calendar-day__event-content{display:flex;flex-direction:row-reverse;justify-content:flex-end;flex:1 1 88.888%;margin-left:-24px;margin-right:-24px}.tribe-events .tribe-events-calendar-day__event-content>*{padding-left:24px;padding-right:24px}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{flex:none;margin-bottom:0;width:37.5%}.tribe-events .tribe-events-calendar-day__event-details{flex:none;width:62.5%}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-events .tribe-events-calendar-day__event-title{margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{clip:auto;width:auto;height:auto;margin:0;position:static;margin-right:8px}.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-description{display:block!important;margin-top:16px;visibility:visible}.tribe-events .tribe-events-calendar-day__event-cost{margin-top:16px}.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__event{margin-top:48px}.tribe-events .tribe-events-calendar-day-nav{padding-top:32px}}@media (min-width:960px){.tribe-events .tribe-events-c-top-bar__datepicker-mobile{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-top-bar__datepicker-desktop{display:block!important;visibility:visible}}
1
+ .tribe-events-view{position:relative}.tribe-events .tribe-events-l-container{padding-bottom:80px;padding-top:64px}.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:24px;width:100%}.tribe-events .tribe-events-c-breadcrumbs__list{display:flex;flex-wrap:wrap}.tribe-events .tribe-events-c-breadcrumbs__list-item{display:inline-flex;align-items:center}.tribe-events .tribe-events-c-breadcrumbs__list-item:not(:last-child):after{content:"";background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;display:inline-block;height:10px;width:6px;margin:0 6px}.tribe-events .datepicker{margin-top:8px;padding:0 16px 16px}.tribe-events .datepicker table{border-collapse:collapse}.tribe-events .datepicker .datepicker-switch,.tribe-events .datepicker .next,.tribe-events .datepicker .prev{padding:20px 0}.tribe-events .datepicker .next .tribe-common-svgicon,.tribe-events .datepicker .prev .tribe-common-svgicon{display:block;height:14px;width:9px}.tribe-events .datepicker .prev:active .tribe-common-svgicon,.tribe-events .datepicker .prev:focus .tribe-common-svgicon,.tribe-events .datepicker .prev:hover .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .datepicker .prev .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23BABABA'/%3E%3C/svg%3E");margin-right:auto}.tribe-events .datepicker .next:active .tribe-common-svgicon,.tribe-events .datepicker .next:focus .tribe-common-svgicon,.tribe-events .datepicker .next:hover .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .datepicker .next .tribe-common-svgicon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23BABABA'/%3E%3C/svg%3E");margin-left:auto}.tribe-events .datepicker .datepicker-months td,.tribe-events .datepicker .datepicker-months th,.tribe-events .datepicker .datepicker-years td,.tribe-events .datepicker .datepicker-years th{padding:0}.tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-events .datepicker .datepicker-months .next,.tribe-events .datepicker .datepicker-months .prev,.tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-events .datepicker .datepicker-years .next,.tribe-events .datepicker .datepicker-years .prev{padding:20px 0 8px}.tribe-events .datepicker .dow{padding:0;width:14.285%}.tribe-events .datepicker .day{padding:11px 0;width:48px}.tribe-events .datepicker .month,.tribe-events .datepicker .year{height:auto;margin:0;padding:15px 0;width:25%}.admin-bar .tribe-events .datepicker{margin-top:8px}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .next,.tribe-theme-divi #content-area .tribe-events .datepicker .prev{padding:20px 0}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .prev,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .prev{padding:20px 0 8px}.tribe-theme-divi #content-area .tribe-events .datepicker .dow{padding:0}.tribe-theme-divi #content-area .tribe-events .datepicker .day{padding:11px 0}.tribe-theme-enfold .tribe-events .datepicker{min-width:0;padding:0 16px 16px}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{cursor:pointer!important}.tribe-theme-avada .tribe-events .datepicker{padding:0 16px 16px}.tribe-theme-avada .tribe-events .datepicker .datepicker-months td{padding:0}.tribe-events .tribe-events-c-day-marker{align-items:center;display:flex}.tribe-events .tribe-events-c-day-marker__date{flex:none}.tribe-events .tribe-events-c-events-bar{display:flex}.tribe-events .tribe-events-c-events-bar__views{display:flex;flex:none;justify-content:center}.tribe-events .tribe-events-c-events-bar__search-filters-container{background-color:#fff;display:none;left:0;padding:12px 21px;position:absolute;right:0;top:calc(100% - 12px);z-index:30}.tribe-events .tribe-events-c-events-bar__search-form{width:100%}.tribe-events .tribe-events-c-events-bar__filters{display:flex;flex:none;justify-content:flex-end;margin-right:-12px}.tribe-events .tribe-events-c-events-bar__filters-button{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-events-bar__search-button{display:inline-block;margin-right:8px;padding:4px;position:relative}.tribe-events .tribe-events-c-events-bar__search-button-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E");display:block;height:21px;width:21px}.tribe-events .tribe-events-c-events-bar__search-button-icon--filter{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='22'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='%23141827' fill-rule='nonzero' d='M30.128 21.41c.22.221.554.247.743.058l.6-.6c.19-.189.163-.524-.057-.744l-6.557-6.557c-.55-.55-1.83.743-1.278 1.295l6.549 6.549z'/%3E%3Ccircle cx='18.777' cy='8.777' r='7.564' stroke='%23141827' stroke-width='1.5' transform='rotate(4 18.777 8.777)'/%3E%3Cpath fill='%23141827' fill-rule='nonzero' d='M7.442 9.533C7.75 9.533 8 9.293 8 9v-.467A.547.547 0 0 0 7.442 8H.558A.547.547 0 0 0 0 8.533V9c0 .293.25.533.558.533h6.884zM9.533 2.5c.257 0 .467-.24.467-.533v-.434C10 1.24 9.79 1 9.533 1H.467C.21 1 0 1.24 0 1.533v.434c0 .293.21.533.467.533h9.066zM.535 16.533h3.93c.294 0 .535-.24.535-.533v-.467A.536.536 0 0 0 4.465 15H.535a.536.536 0 0 0-.535.533V16c0 .293.24.533.535.533z'/%3E%3C/g%3E%3C/svg%3E");width:31px}.tribe-events .tribe-events-c-events-bar__search-button-icon--filter+.tribe-events-c-events-bar__search-button-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-events-bar__tabs{display:flex;padding-bottom:12px}.tribe-events .tribe-events-c-events-bar__tab{align-items:center;display:flex;flex:1 1 50%;flex-direction:column;margin:0 4px;padding:16px 0}.tribe-events .tribe-events-c-events-bar__tab:active .tribe-common-svgicon--search,.tribe-events .tribe-events-c-events-bar__tab:focus .tribe-common-svgicon--search,.tribe-events .tribe-events-c-events-bar__tab:hover .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab:active .tribe-common-svgicon--filters,.tribe-events .tribe-events-c-events-bar__tab:focus .tribe-common-svgicon--filters,.tribe-events .tribe-events-c-events-bar__tab:hover .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab:first-of-type{margin-left:0}.tribe-events .tribe-events-c-events-bar__tab:last-of-type{margin-right:0}.tribe-events .tribe-events-c-events-bar__tab--active .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab--active .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__tab-icon{height:16px;margin-bottom:4px;width:16px}.tribe-events .tribe-events-c-ical{margin-top:20px;text-align:right}.tribe-events .tribe-events-view-loader{align-items:flex-start;justify-content:center;display:flex;position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;background-color:hsla(0,0%,100%,.6)}.tribe-events .tribe-events-c-messages{display:flex;flex-direction:column}.tribe-events .tribe-events-c-messages__message{align-items:center;display:flex;padding:12px;width:100%}.tribe-events .tribe-events-c-nav{padding-top:20px}.tribe-events .tribe-events-c-nav__list{display:flex;width:100%;flex-wrap:wrap;justify-content:space-between}.tribe-events .tribe-events-c-nav__list-item{display:flex;width:33.33%}.tribe-events .tribe-events-c-nav__list-item--prev{justify-content:flex-start}.tribe-events .tribe-events-c-nav__list-item--next{justify-content:flex-end}.tribe-events .tribe-events-c-nav__list-item--today{justify-content:center}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-events .tribe-events-c-nav__next,.tribe-events .tribe-events-c-nav__prev{align-items:center;display:flex;flex:none;flex-wrap:wrap;justify-content:center}.tribe-events .tribe-events-c-promo{margin-top:20px}.tribe-events .tribe-events-c-read-more{margin-top:12px}.tribe-events .tribe-events-c-small-cta>*{margin-left:8px}.tribe-events .tribe-events-c-small-cta>:first-child{margin-left:0}.tribe-events .tribe-events-c-small-cta__link{cursor:pointer}.tribe-events .tribe-events-c-small-cta__stock{margin-left:4px}.tribe-events .tribe-events-c-search__button{margin-top:24px}.tooltipster-base.tribe-events-tooltip-theme{height:auto!important;padding:24px;max-width:254px}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{margin:0}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{padding:0;word-break:break-word}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-arrow{display:none}.tribe-events .tribe-events-c-top-bar__nav-list{display:flex}.tribe-events .tribe-events-c-top-bar__nav-list-item{flex:none;padding-right:15px}.tribe-events .tribe-events-c-top-bar__nav-list-item>*{vertical-align:middle}.tribe-events .tribe-events-c-top-bar__nav-link{display:block}.tribe-events .tribe-events-c-top-bar__datepicker-form{align-items:center;display:flex}.tribe-events .tribe-events-c-top-bar__datepicker{flex:auto;position:relative}.tribe-events .tribe-events-c-top-bar__datepicker-button{align-items:center;display:flex;flex:none}.tribe-events .tribe-events-c-top-bar__datepicker-container{bottom:0;left:0;max-width:calc(100% + 66px);position:absolute;width:363px}.tribe-events .tribe-events-c-top-bar__actions{display:none!important;visibility:hidden}#top.tribe-theme-enfold .tribe-events .tribe-events-c-top-bar__datepicker-input,.tribe-theme-avada .tribe-events .tribe-events-c-top-bar__datepicker-input{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-events .tribe-events-c-view-selector{position:relative;width:29px}.tribe-events .tribe-events-c-view-selector__button{align-items:center;display:flex;padding:4px;position:relative;width:100%}.tribe-events .tribe-events-c-view-selector__button-icon{display:block;height:21px;width:21px}.tribe-events .tribe-events-c-view-selector__content{display:none;background-color:#fff;padding:12px 6px;position:absolute;right:0;top:100%;transform:translateY(16px);z-index:30}.tribe-events .tribe-events-c-view-selector__list-item-link{align-items:center;display:flex;padding:8px 24px 8px 12px}.tribe-events .tribe-events-c-view-selector__list-item-icon{flex:none;height:18px;margin-right:12px;width:18px}.tribe-events .tribe-events-c-view-selector__list-item-text{flex:auto}.tribe-events .tribe-events-header{align-items:center;background-color:#fff;display:flex;flex-direction:row-reverse;flex-wrap:wrap;justify-content:space-between;margin:0 -21px;padding:0 21px 16px;position:relative}.tribe-events .tribe-events-header__messages{margin-bottom:16px;width:100%}.tribe-events .tribe-events-header__events-bar{flex:none}.tribe-events .tribe-events-header__top-bar{flex:auto}.tribe-events .tribe-events-calendar-list__event-row{flex-wrap:nowrap;margin-bottom:24px;margin-top:32px}.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:40px}.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:20px}.tribe-events .tribe-events-calendar-list__event-date-tag{flex:none;width:54px;position:relative}.tribe-events .tribe-events-calendar-list__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;text-align:center}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{margin-bottom:-4px}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1;width:calc(75% + 21px)}.tribe-events .tribe-events-calendar-list__event{flex-direction:column}.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{flex:none;margin-bottom:16px}.tribe-events .tribe-events-calendar-list__event-featured-image,.tribe-events .tribe-events-calendar-list__event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-list__event-details{flex:none}.tribe-events .tribe-events-calendar-list__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper,.tribe-events .tribe-events-calendar-list__event-title{margin-bottom:8px}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-list__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-datetime-featured-icon{display:inline-block;margin-right:4px}.tribe-events .tribe-events-calendar-list__event-datetime-recurring-icon{display:inline-block;margin-left:4px}.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:8px}.tribe-events .tribe-events-calendar-list__event-description{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-list__event-cost{margin-top:12px}.tribe-events .tribe-events-calendar-list__month-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-list__month-separator-text{flex:none}.tribe-events .tribe-events-calendar-list-nav{padding-top:24px}.tribe-events .tribe-events-calendar-month{margin-bottom:8px}.tribe-events .tribe-events-calendar-month__week{display:flex}.tribe-events .tribe-events-calendar-month__calendar-event{margin:8px 0;padding:0 16px;position:relative}.tribe-events .tribe-events-calendar-month__calendar-event:first-child{margin-top:0}.tribe-events .tribe-events-calendar-month__calendar-event:last-child{margin-bottom:0;padding-bottom:16px}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event{margin-top:0}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event--featured{margin-top:8px}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured-icon,.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon{display:inline-block}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured-icon{margin-right:4px}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-recurring-icon{margin-left:2px}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-wrapper{margin-bottom:4px}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image,.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper{margin-bottom:12px;width:206px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime{margin-bottom:4px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon{display:inline-block}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon{margin-right:4px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon{margin-left:2px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title{margin-bottom:4px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description{margin-bottom:8px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-cost{margin-top:16px}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event{margin:8px 0;padding:0 16px;position:relative}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:first-child,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:first-child{margin-top:0}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:last-child,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:last-child{margin-bottom:0;padding-bottom:16px}.tribe-events .tribe-events-calendar-month__header-row{display:flex}.tribe-events .tribe-events-calendar-month__header-column{width:14.285%;padding-bottom:16px}.tribe-events .tribe-events-calendar-month__day{height:48px;overflow:hidden;position:relative;width:14.285%}.tribe-events .tribe-events-calendar-month__day-cell{height:100%;width:100%}.tribe-events .tribe-events-calendar-month__day-cell--mobile{align-items:center;display:flex;flex-direction:column;text-align:center}.tribe-events .tribe-events-calendar-month__events{flex:auto}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:#141827;border-radius:50%;height:8px;width:8px}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23141827'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;height:10px;width:8px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day{display:none}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day--show{display:block}.tribe-events .tribe-events-calendar-month-mobile-events__day-marker{padding-top:16px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event{padding:12px 0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event--featured{padding-bottom:20px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-featured-image-wrapper{margin-bottom:12px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{margin-bottom:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-icon{display:inline-block;margin-right:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon{display:inline-block;margin-left:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{margin-right:8px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-cost{margin-top:8px}.tribe-events .tribe-events-calendar-month-mobile-events__more-events{padding:4px 0 20px}.tribe-events .tribe-events-calendar-month__more-events{display:flex;flex:none;margin:0 16px;padding:8px 0 16px}.tribe-events .tribe-events-calendar-month__more-events-link{flex:none}.tribe-events .tribe-events-calendar-month__multiday-event--width-2 .tribe-events-calendar-month__multiday-event-bar{width:calc(200% + 1px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-3 .tribe-events-calendar-month__multiday-event-bar{width:calc(300% + 2px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-4 .tribe-events-calendar-month__multiday-event-bar{width:calc(400% + 3px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-5 .tribe-events-calendar-month__multiday-event-bar{width:calc(500% + 4px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-6 .tribe-events-calendar-month__multiday-event-bar{width:calc(600% + 5px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-7 .tribe-events-calendar-month__multiday-event-bar{width:calc(700% + 6px)}.tribe-events .tribe-events-calendar-month__multiday-event-hidden{height:100%;opacity:0;position:absolute;width:100%;z-index:5}.tribe-events .tribe-events-calendar-month__multiday-event-hidden-title{white-space:nowrap}.tribe-events .tribe-events-calendar-month__multiday-event-hidden-link{display:block;height:100%}.tribe-events .tribe-events-calendar-month__multiday-event-bar{background-color:#fff;overflow:hidden;position:relative;width:100%;z-index:2}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{align-items:center;cursor:pointer;display:flex;flex-wrap:nowrap;padding:1px 16px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-featured-icon{flex:none;margin-right:5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{flex:none;max-width:100%;overflow:hidden;white-space:nowrap}.tribe-events .tribe-events-calendar-month-nav{padding-top:20px}.tribe-events .tribe-events-calendar-day__event{margin-bottom:24px;margin-top:32px;padding-left:54px}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:40px}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event,.tribe-events .tribe-events-calendar-day__type-separator+.tribe-events-calendar-day__event{margin-top:20px}.tribe-events .tribe-events-calendar-day__event-content{flex:none}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-featured-image-link,.tribe-events .tribe-events-calendar-list__event-featured-image{display:block}.tribe-events .tribe-events-calendar-day__event-details{position:relative}.tribe-events .tribe-events-calendar-day__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-events .tribe-events-calendar-day__event-title{margin-bottom:8px}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-day__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-featured-icon{display:inline-block;margin-right:4px}.tribe-events .tribe-events-calendar-day__event-datetime-recurring-icon{display:inline-block;margin-left:4px}.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:8px}.tribe-events .tribe-events-calendar-day__event-description{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-day__event-cost{margin-top:12px}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event{margin-bottom:24px;margin-top:32px;padding-left:54px}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event:last-child{margin-bottom:40px}.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__time-separator+.entry.tribe-events-calendar-day__event,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__type-separator+.entry.tribe-events-calendar-day__event{margin-top:20px}.tribe-events .tribe-events-calendar-day-nav{padding-top:24px}.tribe-events .tribe-events-calendar-day__time-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-day__time-separator-text{flex:none}.tribe-events .tribe-events-calendar-day__type-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-day__type-separator-text{flex:none}@media (min-width:768px){.tribe-events .tribe-events-l-container{padding-bottom:160px;padding-top:96px}.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:48px}.tribe-events .tribe-events-c-breadcrumbs__list-item:not(:last-child):after{height:16px;width:10px;margin:0 10px}.admin-bar .tribe-events .datepicker,.tribe-events .datepicker{margin-top:16px}.tribe-events .tribe-events-c-events-bar{flex-direction:row}.tribe-events .tribe-events-c-events-bar__search-filters-container{align-items:center;display:flex;flex:auto;padding:0;position:static;z-index:auto}.tribe-events .tribe-events-c-events-bar__search{display:flex;flex:auto}.tribe-events .tribe-events-c-events-bar__filters{margin:12px 0}.tribe-events .tribe-events-c-events-bar__filters-button{align-items:center;display:flex!important;margin:-12px 0;padding:20px 24px;visibility:visible}.tribe-events .tribe-events-c-events-bar__filters-button:active:before,.tribe-events .tribe-events-c-events-bar__filters-button:focus:before,.tribe-events .tribe-events-c-events-bar__filters-button:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-events .tribe-events-c-events-bar__filters-button:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;background-size:17px;content:"";display:inline-block;flex:none;height:17px;margin-right:8px;width:17px}.tribe-events .tribe-events-c-events-bar__search-button,.tribe-events .tribe-events-c-events-bar__tabs{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-messages__message{justify-content:center;padding:16px}.tribe-events .tribe-events-c-nav{padding-top:28px}.tribe-events .tribe-events-c-nav__list-item{width:50%}.tribe-events .tribe-events-c-nav__list-item--today{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{clip:auto;width:auto;height:auto;margin:0;position:static}.tribe-events .tribe-events-c-search{display:flex;align-items:center}.tribe-events .tribe-events-c-search__input-group{align-items:center;display:flex;flex:auto}.tribe-events .tribe-events-c-search__input-control{flex:auto;margin:12px 0}.tribe-events .tribe-events-c-search__input{margin:-12px 0}.tribe-events .tribe-events-c-search__button{flex:none;margin-top:0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input,.tribe-theme-avada .tribe-events .tribe-events-c-search__input{margin:-12px 0}.tribe-events .tribe-events-c-top-bar{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap}.tribe-events .tribe-events-c-top-bar__nav{display:block!important;flex:none;visibility:visible}.tribe-events .tribe-events-c-top-bar__nav-link:before{height:18px;width:11px}.tribe-events .tribe-events-c-top-bar__today-button{display:block!important;flex:none;margin-right:15px;visibility:visible}.tribe-events .tribe-events-c-top-bar__datepicker{margin:0;padding:0}.tribe-events .tribe-events-c-top-bar__datepicker-container{max-width:none;min-width:363px}.tribe-events .tribe-events-c-top-bar__datepicker-submit{display:block!important;flex:none;margin-left:15px;visibility:visible}.tribe-events .tribe-events-c-top-bar__actions{display:block!important;flex:none;margin-left:auto;visibility:visible}.tribe-events .tribe-events-c-view-selector{width:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button{height:100%;padding:20px 24px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{clip:auto;width:auto;height:auto;margin:0;position:static;flex:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{left:0;padding:8px;right:auto;transform:translateY(8px);width:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-link{padding:4px 32px 4px 16px}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector--tabs{width:auto}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__button{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{display:block;height:100%;padding:0 12px;position:static;transform:none}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list{display:flex;height:100%}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item{margin:0 12px}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item-link{height:100%;padding:20px 0;position:relative}.tribe-events .tribe-events-c-view-selector__button{padding:8px}.tribe-events .tribe-events-c-view-selector__button-icon{height:23px;width:23px}.tribe-events .tribe-events-c-view-selector__content{transform:translateY(12px)}.tribe-events .tribe-events-header{margin:0;padding:0}.tribe-events .tribe-events-header--has-event-search{background-color:transparent;flex-direction:row}.tribe-events .tribe-events-header--has-event-search .tribe-events-header__events-bar{margin-left:0;width:100%}.tribe-events .tribe-events-header--has-event-search .tribe-events-header__top-bar{width:100%}.tribe-events .tribe-events-header__messages{margin-bottom:32px;order:1}.tribe-events .tribe-events-header__events-bar{margin-bottom:32px;margin-left:16px}.tribe-events .tribe-events-header__top-bar{margin-bottom:32px}.tribe-events .tribe-events-calendar-list__event-row{margin:48px -24px 40px}.tribe-events .tribe-events-calendar-list__event-row>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:64px}.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:40px}.tribe-events .tribe-events-calendar-list__event-date-tag{min-width:90px;width:11.111%}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1 1 88.888%}.tribe-events .tribe-events-calendar-list__event{flex-direction:row-reverse;justify-content:flex-end}.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{margin-bottom:0;width:37.5%}.tribe-events .tribe-events-calendar-list__event-details{width:62.5%}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper,.tribe-events .tribe-events-calendar-list__event-title{margin-bottom:16px}.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{clip:auto;width:auto;height:auto;margin:0;position:static;margin-right:8px}.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:16px}.tribe-events .tribe-events-calendar-list__event-description{display:block!important;margin-top:16px;visibility:visible}.tribe-events .tribe-events-calendar-list__event-cost{margin-top:16px}.tribe-events .tribe-events-calendar-list-nav{padding-top:32px}.tribe-events .tribe-events-calendar-month{margin:0}.tribe-events .tribe-events-calendar-month__body{border-top:1px solid #e4e4e4}.tribe-events .tribe-events-calendar-month__week{border-left:1px solid #e4e4e4}.tribe-events .tribe-events-calendar-month__header-column-title-mobile{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month__header-column-title-desktop{display:block!important;visibility:visible}.tribe-events .tribe-events-calendar-month__day{border-color:#e4e4e4;border-style:solid;border-width:0 1px 1px 0;height:auto;min-height:168px;overflow:visible}.tribe-events .tribe-events-calendar-month__day-cell--mobile{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month__day-cell--desktop{display:flex!important;flex-direction:column;visibility:visible}.tribe-events .tribe-events-calendar-month__day-date{flex:none;padding:8px 16px}.tribe-events .tribe-events-calendar-month-mobile-events{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper{height:19px;margin-bottom:4px;position:relative}.tribe-events .tribe-events-calendar-month-nav{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-day__event{margin-bottom:40px;margin-top:48px;padding-left:0}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:64px}.tribe-events .tribe-events-calendar-day__event:before{content:"";min-width:90px;width:11.111%}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event,.tribe-events .tribe-events-calendar-day__type-separator+.tribe-events-calendar-day__event{margin-top:40px}.tribe-events .tribe-events-calendar-day__event-content{display:flex;flex-direction:row-reverse;justify-content:flex-end;flex:1 1 88.888%;margin-left:-24px;margin-right:-24px}.tribe-events .tribe-events-calendar-day__event-content>*{padding-left:24px;padding-right:24px}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{flex:none;margin-bottom:0;width:37.5%}.tribe-events .tribe-events-calendar-day__event-details{flex:none;width:62.5%}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-events .tribe-events-calendar-day__event-title{margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{clip:auto;width:auto;height:auto;margin:0;position:static;margin-right:8px}.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-description{display:block!important;margin-top:16px;visibility:visible}.tribe-events .tribe-events-calendar-day__event-cost{margin-top:16px}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event{margin-bottom:40px;margin-top:48px;padding-left:0}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event:last-child{margin-bottom:64px}.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__time-separator+.entry.tribe-events-calendar-day__event,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__type-separator+.entry.tribe-events-calendar-day__event{margin-top:40px}.tribe-events .tribe-events-calendar-day-nav{padding-top:32px}}@media (min-width:960px){.tribe-events .tribe-events-c-top-bar__datepicker-mobile{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-top-bar__datepicker-desktop{display:block!important;visibility:visible}}
src/resources/js/views/datepicker.js CHANGED
@@ -39,6 +39,7 @@ tribe.events.views.datepicker = {};
39
  * @type {PlainObject}
40
  */
41
  obj.selectors = {
 
42
  datepickerContainer: '[data-js="tribe-events-top-bar-datepicker-container"]',
43
  datepickerDaysBody: '.datepicker-days tbody',
44
  input: '[data-js="tribe-events-top-bar-date"]',
@@ -72,13 +73,21 @@ tribe.events.views.datepicker = {};
72
  minViewMode: 'month',
73
  orientation: 'bottom left',
74
  showOnFocus: false,
75
- todayHighlight: true,
76
  templates: {
77
  leftArrow: '',
78
  rightArrow: '',
79
  },
80
  };
81
 
 
 
 
 
 
 
 
 
 
82
  /**
83
  * Object of date format map.
84
  * Date formats are mapped from PHP to Bootstrap Datepicker format.
@@ -189,14 +198,19 @@ tribe.events.views.datepicker = {};
189
 
190
  obj.request( viewData, $container );
191
  } else {
192
- var $input = obj.createDateInputObj( value );
193
- var $forms = $container.find( tribe.events.views.manager.selectors.form );
 
194
 
195
- $forms
196
- .find( obj.selectors.dateInput )
197
- .remove();
198
 
199
- $forms.prepend( $input );
 
 
 
 
 
200
 
201
  $container
202
  .find( obj.selectors.input )
@@ -248,6 +262,19 @@ tribe.events.views.datepicker = {};
248
  obj.submitRequest( $container, dateValue );
249
  };
250
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  /**
252
  * Handle datepicker hide event
253
  *
@@ -268,7 +295,9 @@ tribe.events.views.datepicker = {};
268
  return;
269
  }
270
 
271
- $datepickerButton.removeClass( obj.selectors.buttonOpenClass.className() );
 
 
272
  };
273
 
274
  /**
@@ -283,16 +312,12 @@ tribe.events.views.datepicker = {};
283
  obj.handleMousedown = function( event ) {
284
  var $datepickerButton = event.data.target;
285
  var state = $datepickerButton.data( 'tribeEventsState' );
286
- var tapHide = false;
287
 
288
  if ( 'touchstart' === event.type ) {
289
  var method = $datepickerButton.hasClass( obj.selectors.buttonOpenClass.className() ) ? 'hide' : 'show';
 
290
  state.isTarget = false;
291
 
292
- if ( 'hide' === method ) {
293
- tapHide = true;
294
- }
295
-
296
  $datepickerButton
297
  .data( 'tribeTapHide', tapHide )
298
  .data( 'tribeEventsState', state )
@@ -327,11 +352,12 @@ tribe.events.views.datepicker = {};
327
 
328
  state.isTarget = false;
329
 
330
- $datepickerButton
331
- .toggleClass( obj.selectors.buttonOpenClass.className() )
332
- .data( 'tribeEventsState', state );
333
- $input
334
- .bootstrapDatepicker( method );
 
335
  };
336
 
337
  /**
@@ -371,6 +397,121 @@ tribe.events.views.datepicker = {};
371
  };
372
  };
373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
  /**
375
  * Convert date format from PHP to Bootstrap datepicker format.
376
  *
@@ -430,6 +571,7 @@ tribe.events.views.datepicker = {};
430
  $input
431
  .bootstrapDatepicker( 'destroy' )
432
  .off( changeEvent, changeHandler )
 
433
  .off( 'hide', obj.handleHide );
434
  $datepickerButton
435
  .off( 'mousedown', obj.handleMousedown )
@@ -470,6 +612,9 @@ tribe.events.views.datepicker = {};
470
  // set up mutation observer
471
  obj.observer = new MutationObserver( obj.handleMutation( { container: $container } ) );
472
 
 
 
 
473
  // set options for datepicker
474
  obj.initDateFormat( data );
475
  obj.isLiveRefresh = data.live_refresh ? data.live_refresh : false;
@@ -482,10 +627,14 @@ tribe.events.views.datepicker = {};
482
  var prevText = datepickerI18n.prevText || 'Prev';
483
  obj.options.templates.leftArrow = '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + prevText + '</span>',
484
  obj.options.templates.rightArrow = '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + nextText + '</span>',
 
 
 
485
 
486
  $input
487
  .bootstrapDatepicker( obj.options )
488
  .on( changeEvent, { container: $container }, changeHandler )
 
489
  .on( 'hide', { datepickerButton: $datepickerButton, input: $input, observer: obj.observer }, obj.handleHide );
490
 
491
  $datepickerButton
39
  * @type {PlainObject}
40
  */
41
  obj.selectors = {
42
+ datepickerFormClass: '.tribe-events-c-top-bar__datepicker-form',
43
  datepickerContainer: '[data-js="tribe-events-top-bar-datepicker-container"]',
44
  datepickerDaysBody: '.datepicker-days tbody',
45
  input: '[data-js="tribe-events-top-bar-date"]',
73
  minViewMode: 'month',
74
  orientation: 'bottom left',
75
  showOnFocus: false,
 
76
  templates: {
77
  leftArrow: '',
78
  rightArrow: '',
79
  },
80
  };
81
 
82
+ /**
83
+ * Date object representing today
84
+ *
85
+ * @since 4.9.13
86
+ *
87
+ * @type {Date|null}
88
+ */
89
+ obj.today = null;
90
+
91
  /**
92
  * Object of date format map.
93
  * Date formats are mapped from PHP to Bootstrap Datepicker format.
198
 
199
  obj.request( viewData, $container );
200
  } else {
201
+ var $forms = $container
202
+ .find( tribe.events.views.manager.selectors.form )
203
+ .not( obj.selectors.datepickerFormClass );
204
 
205
+ if ( $forms.length ) {
206
+ var $input = obj.createDateInputObj( value );
 
207
 
208
+ $forms
209
+ .find( obj.selectors.dateInput )
210
+ .remove();
211
+
212
+ $forms.prepend( $input );
213
+ }
214
 
215
  $container
216
  .find( obj.selectors.input )
262
  obj.submitRequest( $container, dateValue );
263
  };
264
 
265
+ /**
266
+ * Handle datepicker show event
267
+ *
268
+ * @since 4.9.13
269
+ *
270
+ * @param {Event} event event object for 'show' event
271
+ *
272
+ * @return {void}
273
+ */
274
+ obj.handleShow = function( event ) {
275
+ event.data.datepickerButton.addClass( obj.selectors.buttonOpenClass.className() );
276
+ };
277
+
278
  /**
279
  * Handle datepicker hide event
280
  *
295
  return;
296
  }
297
 
298
+ $datepickerButton
299
+ .removeClass( obj.selectors.buttonOpenClass.className() )
300
+ .focus();
301
  };
302
 
303
  /**
312
  obj.handleMousedown = function( event ) {
313
  var $datepickerButton = event.data.target;
314
  var state = $datepickerButton.data( 'tribeEventsState' );
 
315
 
316
  if ( 'touchstart' === event.type ) {
317
  var method = $datepickerButton.hasClass( obj.selectors.buttonOpenClass.className() ) ? 'hide' : 'show';
318
+ var tapHide = 'hide' === method;
319
  state.isTarget = false;
320
 
 
 
 
 
321
  $datepickerButton
322
  .data( 'tribeTapHide', tapHide )
323
  .data( 'tribeEventsState', state )
352
 
353
  state.isTarget = false;
354
 
355
+ $datepickerButton.data( 'tribeEventsState', state );
356
+ $input.bootstrapDatepicker( method );
357
+
358
+ if ( 'show' === method ) {
359
+ $input.focus();
360
+ }
361
  };
362
 
363
  /**
397
  };
398
  };
399
 
400
+ /**
401
+ * Set today to date object representing today
402
+ *
403
+ * @since 4.9.13
404
+ *
405
+ * @param {string} today string representation of today's date according to website time
406
+ *
407
+ * @return {void}
408
+ */
409
+ obj.setToday = function( today ) {
410
+ var date = today;
411
+ if ( today.indexOf( ' ' ) >= 0 ) {
412
+ date = today.split( ' ' )[0];
413
+ }
414
+
415
+ obj.today = new Date( date );
416
+ };
417
+
418
+ /**
419
+ * Determine whether or not date is the same as today.
420
+ * The function uses UTC values to maintain consistency with website date.
421
+ * Function will return false if proper unit is not provided.
422
+ *
423
+ * @since 4.9.13
424
+ *
425
+ * @param {Date} date Date object representing the date being compared
426
+ * @param {string} unit Unit to compare dates to
427
+ *
428
+ * @return {bool}
429
+ */
430
+ obj.isSameAsToday = function( date, unit ) {
431
+ switch ( unit ) {
432
+ case 'year':
433
+ return date.getFullYear() === obj.today.getUTCFullYear();
434
+ case 'month':
435
+ return obj.isSameAsToday( date, 'year' ) && date.getMonth() === obj.today.getUTCMonth();
436
+ case 'day':
437
+ return obj.isSameAsToday( date, 'month' ) && date.getDate() === obj.today.getUTCDate();
438
+ default:
439
+ return false;
440
+ }
441
+ }
442
+
443
+ /**
444
+ * Determine whether or not date is before today.
445
+ * The function uses UTC values to maintain consistency with website date.
446
+ * Function will return false if proper unit is not provided.
447
+ *
448
+ * @since 4.9.13
449
+ *
450
+ * @param {Date} date Date object representing the date being compared
451
+ * @param {string} unit Unit to compare dates to
452
+ *
453
+ * @return {bool}
454
+ */
455
+ obj.isBeforeToday = function( date, unit ) {
456
+ switch ( unit ) {
457
+ case 'year':
458
+ return date.getFullYear() < obj.today.getUTCFullYear();
459
+ case 'month':
460
+ return obj.isBeforeToday( date, 'year' )
461
+ || ( obj.isSameAsToday( date, 'year' ) && date.getMonth() < obj.today.getUTCMonth() );
462
+ case 'day':
463
+ return obj.isBeforeToday( date, 'month' )
464
+ || ( obj.isSameAsToday( date, 'month' ) && date.getDate() < obj.today.getUTCDate() );
465
+ default:
466
+ return false;
467
+ }
468
+ };
469
+
470
+ /**
471
+ * Filter datepicker day cells
472
+ *
473
+ * @since 4.9.13
474
+ *
475
+ * @return {string|void}
476
+ */
477
+ obj.filterDayCells = function( date ) {
478
+ if ( obj.isBeforeToday( date, 'day' ) ) {
479
+ return 'past';
480
+ } else if ( obj.isSameAsToday( date, 'day' ) ) {
481
+ return 'current';
482
+ }
483
+ };
484
+
485
+ /**
486
+ * Filter datepicker month cells
487
+ *
488
+ * @since 4.9.13
489
+ *
490
+ * @return {string|void}
491
+ */
492
+ obj.filterMonthCells = function( date ) {
493
+ if ( obj.isBeforeToday( date, 'month' ) ) {
494
+ return 'past';
495
+ } else if ( obj.isSameAsToday( date, 'month' ) ) {
496
+ return 'current';
497
+ }
498
+ };
499
+
500
+ /**
501
+ * Filter datepicker year cells
502
+ *
503
+ * @since 4.9.13
504
+ *
505
+ * @return {string|void}
506
+ */
507
+ obj.filterYearCells = function( date ) {
508
+ if ( obj.isBeforeToday( date, 'year' ) ) {
509
+ return 'past';
510
+ } else if ( obj.isSameAsToday( date, 'year' ) ) {
511
+ return 'current';
512
+ }
513
+ };
514
+
515
  /**
516
  * Convert date format from PHP to Bootstrap datepicker format.
517
  *
571
  $input
572
  .bootstrapDatepicker( 'destroy' )
573
  .off( changeEvent, changeHandler )
574
+ .off( 'show', obj.handleShow )
575
  .off( 'hide', obj.handleHide );
576
  $datepickerButton
577
  .off( 'mousedown', obj.handleMousedown )
612
  // set up mutation observer
613
  obj.observer = new MutationObserver( obj.handleMutation( { container: $container } ) );
614
 
615
+ // set up today's date
616
+ obj.setToday( data.today );
617
+
618
  // set options for datepicker
619
  obj.initDateFormat( data );
620
  obj.isLiveRefresh = data.live_refresh ? data.live_refresh : false;
627
  var prevText = datepickerI18n.prevText || 'Prev';
628
  obj.options.templates.leftArrow = '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + prevText + '</span>',
629
  obj.options.templates.rightArrow = '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + nextText + '</span>',
630
+ obj.options.beforeShowDay = obj.filterDayCells;
631
+ obj.options.beforeShowMonth = obj.filterMonthCells;
632
+ obj.options.beforeShowYear = obj.filterYearCells;
633
 
634
  $input
635
  .bootstrapDatepicker( obj.options )
636
  .on( changeEvent, { container: $container }, changeHandler )
637
+ .on( 'show', { datepickerButton: $datepickerButton }, obj.handleShow )
638
  .on( 'hide', { datepickerButton: $datepickerButton, input: $input, observer: obj.observer }, obj.handleHide );
639
 
640
  $datepickerButton
src/resources/js/views/manager.js CHANGED
@@ -314,7 +314,6 @@ tribe.events.views.manager = {};
314
  var formData = Qs.parse( $form.serialize() );
315
 
316
  var data = {
317
- url: window.location.href,
318
  view_data: formData['tribe-events-views'],
319
  _wpnonce: nonce
320
  };
314
  var formData = Qs.parse( $form.serialize() );
315
 
316
  var data = {
 
317
  view_data: formData['tribe-events-views'],
318
  _wpnonce: nonce
319
  };
src/resources/js/views/tooltip.js CHANGED
@@ -263,6 +263,7 @@ tribe.events.views.tooltip = {};
263
  .find( obj.selectors.tooltipTrigger )
264
  .each( function( index, trigger ) {
265
  $( trigger ).tooltipster( {
 
266
  interactive: true,
267
  delay: [ obj.config.delayHoverIn, obj.config.delayHoverOut ],
268
  delayTouch: [ obj.config.delayHoverIn, obj.config.delayHoverOut ],
263
  .find( obj.selectors.tooltipTrigger )
264
  .each( function( index, trigger ) {
265
  $( trigger ).tooltipster( {
266
+ animationDuration: 0,
267
  interactive: true,
268
  delay: [ obj.config.delayHoverIn, obj.config.delayHoverOut ],
269
  delayTouch: [ obj.config.delayHoverIn, obj.config.delayHoverOut ],
src/resources/postcss/components/full/_all.pcss CHANGED
@@ -19,6 +19,9 @@
19
  /* Events bar */
20
  @import "_events-bar.pcss";
21
 
 
 
 
22
  /* Loader */
23
  @import "_loader.pcss";
24
 
19
  /* Events bar */
20
  @import "_events-bar.pcss";
21
 
22
+ /* iCal link */
23
+ @import "_ical-link.pcss";
24
+
25
  /* Loader */
26
  @import "_loader.pcss";
27
 
src/resources/postcss/components/full/_datepicker.pcss CHANGED
@@ -47,10 +47,6 @@
47
 
48
  .day {
49
  @mixin desktop-body-1;
50
-
51
- &.old {
52
- color: var(--color-text-disabled);
53
- }
54
  }
55
 
56
  .month,
@@ -58,6 +54,10 @@
58
  @mixin desktop-body-3;
59
  }
60
 
 
 
 
 
61
  .day,
62
  .month,
63
  .year {
@@ -69,82 +69,27 @@
69
  background: var(--color-background-secondary);
70
  }
71
 
72
- &.active {
73
- color: var(--color-background);
74
- background: var(--color-accent-primary);
75
 
76
  &:hover,
77
  &:focus,
78
  &.focused {
79
- color: var(--color-background);
80
- background: var(--color-accent-primary);
81
  }
82
  }
83
- }
84
- }
85
-
86
- &.tribe-events-view--week .datepicker {
87
-
88
- tbody tr {
89
-
90
- &.active {
91
-
92
- &:after {
93
- border: 1px solid var(--color-accent-primary);
94
- border-radius: var(--border-radius-default);
95
- content: '';
96
- display: block;
97
- height: 47px;
98
- left: var(--spacer-3);
99
- pointer-events: none;
100
- position: absolute;
101
- transform: translateY(-1px);
102
- width: calc(100% - 34px); /* 16px left padding + 16px right padding + 1px left border + 1px right border */
103
- }
104
- }
105
- }
106
-
107
- .day {
108
- border-radius: 0;
109
-
110
- &:first-child {
111
- border-bottom-left-radius: var(--border-radius-default);
112
- border-top-left-radius: var(--border-radius-default);
113
- }
114
-
115
- &:last-child {
116
- border-bottom-right-radius: var(--border-radius-default);
117
- border-top-right-radius: var(--border-radius-default);
118
- }
119
 
120
  &.active {
121
- color: var(--color-text-primary);
122
- background: transparent;
123
-
124
- &:hover {
125
- background: transparent;
126
- }
127
- }
128
-
129
- &.disabled {
130
- color: var(--color-text-primary);
131
 
132
  &:hover,
133
  &:focus,
134
  &.focused {
135
- color: var(--color-text-primary);
136
- }
137
- }
138
- }
139
-
140
- .hovered,
141
- .focused {
142
-
143
- .day {
144
- background: var(--color-background-secondary);
145
-
146
- &:hover {
147
- background: var(--color-background-secondary);
148
  }
149
  }
150
  }
@@ -199,10 +144,6 @@
199
  &.new {
200
  opacity: 1;
201
  }
202
-
203
- &.old {
204
- color: var(--color-text-disabled);
205
- }
206
  }
207
 
208
  .day,
@@ -217,42 +158,29 @@
217
  background: var(--color-background-secondary);
218
  }
219
 
220
- &.active {
221
- color: var(--color-background);
222
- background: var(--color-accent-primary);
 
 
 
223
 
224
  &:hover,
225
  &:focus,
226
  &.focused {
227
- color: var(--color-background);
228
- background: var(--color-accent-primary);
229
  }
230
  }
231
- }
232
- }
233
-
234
- .tribe-theme-enfold &.tribe-events-view--week .datepicker {
235
-
236
- .day {
237
 
238
  &.active {
239
- color: var(--color-text-primary);
240
- background: transparent;
241
-
242
- &:hover {
243
- background: transparent;
244
- }
245
- }
246
- }
247
-
248
- .hovered,
249
- .focused {
250
-
251
- .day {
252
- background: var(--color-background-secondary);
253
 
254
- &:hover {
255
- background: var(--color-background-secondary);
 
 
 
256
  }
257
  }
258
  }
@@ -285,6 +213,7 @@
285
  &.old,
286
  &.new {
287
  background-color: transparent !important;
 
288
 
289
  &:hover,
290
  &:focus,
@@ -292,14 +221,6 @@
292
  background: var(--color-background-secondary) !important;
293
  }
294
  }
295
-
296
- &.old {
297
- color: var(--color-text-disabled) !important;
298
- }
299
-
300
- &.new {
301
- color: var(--color-text-primary) !important;
302
- }
303
  }
304
 
305
  .day,
@@ -313,47 +234,29 @@
313
  background: var(--color-background-secondary);
314
  }
315
 
316
- &.active {
317
- color: var(--color-background);
318
- background: var(--color-accent-primary);
 
 
 
319
 
320
  &:hover,
321
  &:focus,
322
  &.focused {
323
- color: var(--color-background);
324
- background: var(--color-accent-primary);
325
  }
326
  }
327
- }
328
- }
329
-
330
- .tribe-theme-avada &.tribe-events-view--week .datepicker {
331
-
332
- .day {
333
 
334
  &.active {
335
- color: var(--color-text-primary);
336
- background: transparent;
337
 
338
- &:hover {
339
- background: transparent;
340
- }
341
- }
342
- }
343
-
344
- .hovered,
345
- .focused {
346
-
347
- .day {
348
- background: var(--color-background-secondary);
349
-
350
- &:hover {
351
- background: var(--color-background-secondary);
352
- }
353
-
354
- &.old,
355
- &.new {
356
- background-color: var(--color-background-secondary) !important;
357
  }
358
  }
359
  }
47
 
48
  .day {
49
  @mixin desktop-body-1;
 
 
 
 
50
  }
51
 
52
  .month,
54
  @mixin desktop-body-3;
55
  }
56
 
57
+ .past {
58
+ color: var(--color-text-primary-light);
59
+ }
60
+
61
  .day,
62
  .month,
63
  .year {
69
  background: var(--color-background-secondary);
70
  }
71
 
72
+ &.current {
73
+ background: var(--color-accent-primary-background);
 
74
 
75
  &:hover,
76
  &:focus,
77
  &.focused {
78
+ background: var(--color-accent-primary-background);
 
79
  }
80
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  &.active {
83
+ color: var(--color-background);
84
+ background: var(--color-accent-primary);
85
+ text-shadow: none;
 
 
 
 
 
 
 
86
 
87
  &:hover,
88
  &:focus,
89
  &.focused {
90
+ color: var(--color-background);
91
+ background: var(--color-accent-primary);
92
+ text-shadow: none;
 
 
 
 
 
 
 
 
 
 
93
  }
94
  }
95
  }
144
  &.new {
145
  opacity: 1;
146
  }
 
 
 
 
147
  }
148
 
149
  .day,
158
  background: var(--color-background-secondary);
159
  }
160
 
161
+ &.past {
162
+ color: var(--color-text-primary-light);
163
+ }
164
+
165
+ &.current {
166
+ background: var(--color-accent-primary-background);
167
 
168
  &:hover,
169
  &:focus,
170
  &.focused {
171
+ background: var(--color-accent-primary-background);
 
172
  }
173
  }
 
 
 
 
 
 
174
 
175
  &.active {
176
+ color: var(--color-background);
177
+ background: var(--color-accent-primary);
 
 
 
 
 
 
 
 
 
 
 
 
178
 
179
+ &:hover,
180
+ &:focus,
181
+ &.focused {
182
+ color: var(--color-background);
183
+ background: var(--color-accent-primary);
184
  }
185
  }
186
  }
213
  &.old,
214
  &.new {
215
  background-color: transparent !important;
216
+ color: var(--color-text-primary) !important;
217
 
218
  &:hover,
219
  &:focus,
221
  background: var(--color-background-secondary) !important;
222
  }
223
  }
 
 
 
 
 
 
 
 
224
  }
225
 
226
  .day,
234
  background: var(--color-background-secondary);
235
  }
236
 
237
+ &.past {
238
+ color: var(--color-text-primary-light) !important;
239
+ }
240
+
241
+ &.current {
242
+ background: var(--color-accent-primary-background);
243
 
244
  &:hover,
245
  &:focus,
246
  &.focused {
247
+ background: var(--color-accent-primary-background);
 
248
  }
249
  }
 
 
 
 
 
 
250
 
251
  &.active {
252
+ color: var(--color-background) !important;
253
+ background: var(--color-accent-primary) !important;
254
 
255
+ &:hover,
256
+ &:focus,
257
+ &.focused {
258
+ color: var(--color-background) !important;
259
+ background: var(--color-accent-primary) !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
  }
261
  }
262
  }
src/resources/postcss/components/full/_ical-link.pcss ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ /* -----------------------------------------------------------------------------
2
+ *
3
+ * iCal Link
4
+ *
5
+ * ----------------------------------------------------------------------------- */
src/resources/postcss/components/full/_navigation.pcss CHANGED
@@ -44,7 +44,6 @@
44
 
45
  &:active {
46
  color: var(--color-text-primary);
47
- font-weight: var(--font-weight-bold);
48
  }
49
  }
50
 
44
 
45
  &:active {
46
  color: var(--color-text-primary);
 
47
  }
48
  }
49
 
src/resources/postcss/components/skeleton/_all.pcss CHANGED
@@ -19,6 +19,9 @@
19
  /* Events bar */
20
  @import "_events-bar.pcss";
21
 
 
 
 
22
  /* Loader */
23
  @import "_loader.pcss";
24
 
19
  /* Events bar */
20
  @import "_events-bar.pcss";
21
 
22
+ /* iCal link */
23
+ @import "_ical-link.pcss";
24
+
25
  /* Loader */
26
  @import "_loader.pcss";
27
 
src/resources/postcss/components/skeleton/_datepicker.pcss CHANGED
@@ -102,23 +102,6 @@
102
  }
103
  }
104
 
105
- &.tribe-events-view--week .datepicker {
106
-
107
- tbody tr {
108
-
109
- &.active {
110
- position: relative;
111
- }
112
- }
113
-
114
- .day {
115
-
116
- &.disabled {
117
- cursor: pointer;
118
- }
119
- }
120
- }
121
-
122
  /* -----------------------------------------------------------------------------
123
  *
124
  * Datepicker: V1 Style Overrides
102
  }
103
  }
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  /* -----------------------------------------------------------------------------
106
  *
107
  * Datepicker: V1 Style Overrides
src/resources/postcss/components/skeleton/_ical-link.pcss ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* -----------------------------------------------------------------------------
2
+ *
3
+ * iCal link
4
+ *
5
+ * ----------------------------------------------------------------------------- */
6
+
7
+ .tribe-events {
8
+
9
+ .tribe-events-c-ical {
10
+ margin-top: var(--spacer-4);
11
+ text-align: right;
12
+ }
13
+ }
src/resources/postcss/components/skeleton/_tooltip.pcss CHANGED
@@ -15,6 +15,7 @@
15
 
16
  .tooltipster-content {
17
  padding: 0;
 
18
  }
19
  }
20
 
15
 
16
  .tooltipster-content {
17
  padding: 0;
18
+ word-break: break-word;
19
  }
20
  }
21
 
src/resources/postcss/components/skeleton/_top-bar.pcss CHANGED
@@ -16,8 +16,6 @@
16
  }
17
 
18
  .tribe-events-c-top-bar__nav {
19
- @mixin hidden;
20
-
21
  @media (--viewport-medium) {
22
  display: block !important;
23
  flex: none;
@@ -50,8 +48,6 @@
50
  }
51
 
52
  .tribe-events-c-top-bar__today-button {
53
- @mixin hidden;
54
-
55
  @media (--viewport-medium) {
56
  display: block !important;
57
  flex: none;
@@ -60,7 +56,13 @@
60
  }
61
  }
62
 
 
 
 
 
 
63
  .tribe-events-c-top-bar__datepicker {
 
64
  position: relative;
65
 
66
  @media (--viewport-medium) {
@@ -101,6 +103,15 @@
101
  }
102
  }
103
 
 
 
 
 
 
 
 
 
 
104
  .tribe-events-c-top-bar__actions {
105
  @mixin hidden;
106
 
16
  }
17
 
18
  .tribe-events-c-top-bar__nav {
 
 
19
  @media (--viewport-medium) {
20
  display: block !important;
21
  flex: none;
48
  }
49
 
50
  .tribe-events-c-top-bar__today-button {
 
 
51
  @media (--viewport-medium) {
52
  display: block !important;
53
  flex: none;
56
  }
57
  }
58
 
59
+ .tribe-events-c-top-bar__datepicker-form {
60
+ align-items: center;
61
+ display: flex;
62
+ }
63
+
64
  .tribe-events-c-top-bar__datepicker {
65
+ flex: auto;
66
  position: relative;
67
 
68
  @media (--viewport-medium) {
103
  }
104
  }
105
 
106
+ .tribe-events-c-top-bar__datepicker-submit {
107
+ @media (--viewport-medium) {
108
+ display: block !important;
109
+ flex: none;
110
+ margin-left: 15px;
111
+ visibility: visible;
112
+ }
113
+ }
114
+
115
  .tribe-events-c-top-bar__actions {
116
  @mixin hidden;
117
 
src/resources/postcss/utilities/icons/link.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 18"><defs/><g fill="none" fill-rule="evenodd" stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="M15.53125 1.5l-7.5 8M8.96875 1.5h6.5625v7M5.21875 1.5h-2.8125c-.5175 0-.9375.448-.9375 1v13c0 .552.42 1 .9375 1h12.1875c.5175 0 .9375-.448.9375-1v-3"/></g></svg>
src/resources/postcss/utilities/icons/list.svg CHANGED
@@ -1 +1 @@
1
- <svg width="21" height="18" xmlns="http://www.w3.org/2000/svg"><g fill="#141827" fill-rule="nonzero"><path d="M19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467h12.756zM1.838 4.207a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 9.98c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466h12.756zM1.838 10.916a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/><g><path d="M19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466H7.127c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467h12.756zM1.838 17.624a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/></g></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><defs/><g fill="#141827" fill-rule="evenodd"><path fill-rule="nonzero" d="M0 .50378788V20.5332919c0 .278234.19022354.5037879.42487547.5037879H20.6133064c.2346519 0 .4248754-.2255539.4248754-.5037879V.50378788C21.0381818.22555389 20.8479583 0 20.6133064 0H.42487547C.19022355 0 0 .2255539 0 .50378788zm1.1580346.94435628h18.6945206v2.70490149H1.1580346V1.44814416zm0 2.70490796h18.6945206V19.5845078H1.1580346V4.15305212z"/><path d="M13.38928235 5.73125033V7.860417c0 .58795234.48212125 1.06458333 1.07684605 1.06458333h2.1536922c.5947248 0 1.0768461-.47663099 1.0768461-1.06458333V5.73125033c0-.58795234-.4821213-1.06458333-1.0768461-1.06458333h-2.1536922c-.5947248 0-1.07684605.476631-1.07684605 1.06458333z"/><path fill-rule="nonzero" d="M8.83943685 8.936667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092h-4.8185522C3.7343981 7.466667 3.5 7.70188614 3.5 7.9893762v.4245816c0 .28749006.2343981.5227092.52088465.5227092h4.8185522zM10.9041036 6.136667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092H4.02088465C3.7343981 4.666667 3.5 4.90188614 3.5 5.1893762v.4245816c0 .28749006.2343981.5227092.52088465.5227092h6.88321895z"/><g><path d="M13.38928235 12.73125033V14.860417c0 .58795234.48212125 1.06458333 1.07684605 1.06458333h2.1536922c.5947248 0 1.0768461-.47663099 1.0768461-1.06458333v-2.12916667c0-.58795234-.4821213-1.06458333-1.0768461-1.06458333h-2.1536922c-.5947248 0-1.07684605.476631-1.07684605 1.06458333z"/><path fill-rule="nonzero" d="M8.83943685 15.936667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092h-4.8185522c-.28648655 0-.52088465.23521914-.52088465.5227092v.4245816c0 .28749006.2343981.5227092.52088465.5227092h4.8185522zM10.9041036 13.136667c.28648654 0 .52088465-.23521914.52088465-.5227092v-.4245816c0-.28749006-.23439811-.5227092-.52088465-.5227092H4.02088465c-.28648655 0-.52088465.23521914-.52088465.5227092v.4245816c0 .28749006.2343981.5227092.52088465.5227092h6.88321895z"/></g></g></svg>
src/resources/postcss/utilities/icons/mail.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 15"><defs/><g fill="none" fill-rule="evenodd" stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="M1.40468965 1.40468965l7.87117242 7.04358621 7.31255173-7.05131034"/><path d="M1 2.37931034V12.862069c0 .761772.61753828 1.3793103 1.37931034 1.3793103H15.6206897C16.3824617 14.2413793 17 13.623841 17 12.862069V2.37931034C17 1.61753828 16.3824617 1 15.6206897 1H2.37931034C1.61753828 1 1 1.61753828 1 2.37931034z"/></g></svg>
src/resources/postcss/utilities/icons/map-pin.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 18"><defs/><g fill="none" fill-rule="evenodd" stroke="#141828" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" transform="translate(1 1)"><path d="M11.9322034 5.99186441C11.9322034 10.0338983 5.96610169 16 5.96610169 16S0 10.0338983 0 5.99186441C0 2.20013559 3.08311864 0 5.96610169 0c2.88298306 0 5.96610171 2.20013559 5.96610171 5.99186441z"/><circle cx="5.96610169" cy="5.96610169" r="2.16949153"/></g></svg>
src/resources/postcss/utilities/icons/map.svg CHANGED
@@ -1 +1 @@
1
- <svg width="22" height="21" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path stroke="#141827" stroke-linejoin="round" d="M13.921 11.632H17.5l3.588 8.421H1l3.488-8.421h4.016"/><path d="M11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468-2.833 0-5.138 2.453-5.138 5.467 0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z" stroke="#141827" stroke-width=".4" fill="#141827" fill-rule="nonzero"/><path d="M12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826 0 1.007.78 1.826 1.74 1.826.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z" stroke="#000" stroke-width=".7" fill="#000" fill-rule="nonzero"/></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><defs/><g fill="none" fill-rule="evenodd"><g fill-rule="nonzero" stroke-width=".7"><path fill="#141827" stroke="#141827" d="M10.66992557 17.2092094c.18208949-.2244634 4.46052505-5.52626362 4.46052505-8.17980983 0-2.72724863-2.08535521-4.94606657-4.64855882-4.94606657-2.56320359 0-4.6485588 2.21881794-4.6485588 4.94606657 0 2.65354618 4.27843556 7.95534643 4.46052504 8.17980983.04719041.0580842.11585307.0915149.18803376.0915149.0721807 0 .14084336-.0334307.18803377-.0915149zM6.33022741 9.02939957c0-2.43579482 1.86238353-4.41737092 4.15166439-4.41737092 2.28928088 0 4.15166441 1.9815761 4.15166441 4.41737092 0 2.15995923-3.31788627 6.53241163-4.15166441 7.59703123-.83377813-1.0644905-4.15166439-5.43616846-4.15166439-7.59703123z"/><path fill="#000" stroke="#000" d="M12.05539077 9.03985474c0-.91098834-.70589102-1.65217392-1.57349897-1.65217392-.86760794 0-1.57349896.74118558-1.57349896 1.65217392 0 .91098834.70589102 1.65217392 1.57349896 1.65217392.86760795 0 1.57349897-.74118558 1.57349897-1.65217392zm-2.85036002 0c0-.73928452.57278056-1.34070411 1.27686105-1.34070411.70408051 0 1.27686107.60141959 1.27686107 1.34070411 0 .73928452-.57278056 1.34070411-1.27686107 1.34070411-.70408049 0-1.27686105-.60141959-1.27686105-1.34070411z"/></g><path fill="#000" fill-rule="nonzero" d="M0 .50378788V20.5332919c0 .278234.19022354.5037879.42487547.5037879H20.6133064c.2346519 0 .4248754-.2255539.4248754-.5037879V.50378788C21.0381818.22555389 20.8479583 0 20.6133064 0H.42487547C.19022355 0 0 .2255539 0 .50378788zm1.1580346.94435628h18.6945206v2.70490796H1.1580346V1.44814416zm0 2.70490796h18.6945206V19.5845078H1.1580346V4.15305212z"/></g></svg>
src/resources/postcss/utilities/icons/phone.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"><defs/><path fill="none" fill-rule="evenodd" stroke="#141827" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M11.6819994 10.88200048l-1.30400005 1.62857142c-2.01929741-1.1866922-3.70231405-2.86911883-4.88971428-4.888l1.63-1.304c.39282682-.31454501.52426073-.85436286.32-1.31428571L5.95257078 1.6585719c-.22002641-.49569916-.76652996-.75927831-1.29142857-.62285714l-2.82857143.73371429c-.54614963.14276045-.89926073.67138385-.822 1.23057143C2.03036105 10.26199785 7.73800197 15.9696388 14.99999 16.989429c.5591969.0772608 1.0878203-.2758503 1.2305808-.822l.7337143-2.8285714c.1360844-.5247877-.1272478-1.0710299-.6225715-1.2914286l-3.3454285-1.48571424c-.4599576-.20451327-.9999874-.07291035-1.3142857.32028572z"/></svg>
src/resources/postcss/utilities/icons/photo.svg CHANGED
@@ -1 +1 @@
1
- <svg width="20" height="17" xmlns="http://www.w3.org/2000/svg"><g fill="#141827" fill-rule="nonzero"><path d="M19.348.11H.634a.509.509 0 0 0-.52.508v15.017c0 .284.23.508.52.508h18.714c.29 0 .52-.224.52-.508V.618a.509.509 0 0 0-.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0-1.227-.528 1.6 1.6 0 0 0-1.206.548l-4.657 5.175V1.145h17.632zM1.174 15.108v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603H1.175v-.02z"/><path d="M14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934 0 .507-.414.933-.906.933-.492 0-.906-.426-.906-.933 0-.507.414-.934.906-.934z"/></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 21"><defs/><g fill="#141827" fill-rule="nonzero"><path d="M20.4070967 0H.57757675C.25413377 0 0 .24803922 0 .5637255v19.872549C0 20.7519607.25413377 21 .57757676 21H20.4070967c.323443 0 .5775767-.2480393.5775767-.5637255V.5637255C20.9846734.24803921 20.7305397 0 20.4070967 0zm-.6006799 1.15v14.8679567l-2.2249804-3.4274509c-.6468859-.6764706-1.8482455-.6764706-2.4951316 0l-1.5479057 1.6460784-4.48199558-5.02843135c-.34654605-.38333333-.83171053-.58627451-1.36308114-.58627451-.50826755 0-1.01653509.22549021-1.33997808.60882354L1.17825658 14.9807019V1.15H19.8064168zM1.17825658 19.8499999v-3.1330235l6.0530044-6.76470589c.11551535-.13529412.27723684-.20294118.4620614-.20294118.16172149 0 .36964912.06764706.48516448.20294118l4.92095394 5.52450979c.1155153.1127452.2772369.2029412.4389583.2029412.1848246.022549.3234431-.067647.4389583-.1803922l1.9868641-2.1196078c.1848246-.2029412.5544737-.2029412.7624013 0l3.1028972 4.3519608v2.1408666H1.17825658v-.022549z"/><path d="M14.9552083 9.04117648c1.159375 0 2.121875-.96960785 2.121875-2.18725491 0-1.21764705-.940625-2.1872549-2.121875-2.1872549-1.18125 0-2.121875.96960785-2.121875 2.1872549 0 1.21764706.9625 2.18725491 2.121875 2.18725491zm0-3.22450981c.546875 0 1.00625.47352941 1.00625 1.0372549 0 .5637255-.459375 1.03725491-1.00625 1.03725491-.546875 0-1.00625-.47352941-1.00625-1.03725491 0-.56372549.459375-1.0372549 1.00625-1.0372549z"/></g></svg>
src/resources/postcss/utilities/variables/_box-shadows.pcss CHANGED
@@ -6,6 +6,6 @@
6
  --box-shadow-default: 0 2px 5px 0 var(--color-box-shadow);
7
  --box-shadow-tooltip: 0 2px 12px 0 var(--color-box-shadow);
8
  --box-shadow-card: 0 1px 6px 2px var(--color-box-shadow);
9
- --box-shadow-multiday: 16px 6px 6px -2px var(--color-box-shadow);
10
  }
11
 
6
  --box-shadow-default: 0 2px 5px 0 var(--color-box-shadow);
7
  --box-shadow-tooltip: 0 2px 12px 0 var(--color-box-shadow);
8
  --box-shadow-card: 0 1px 6px 2px var(--color-box-shadow);
9
+ --box-shadow-multiday: 16px 6px 6px -2px var(--color-box-shadow-secondary);
10
  }
11
 
src/resources/postcss/utilities/variables/_colors.pcss CHANGED
@@ -4,6 +4,7 @@
4
  * ----------------------------------------------------------------------------- */
5
 
6
  --color-text-primary: #141827;
 
7
  --color-text-secondary: #727272;
8
  --color-text-disabled: #D5D5D5;
9
 
@@ -50,6 +51,7 @@
50
  --color-background-messages: rgba(var(--color-text-primary), 0.07);
51
  --color-background-secondary-hover: #F0EEEE;
52
  --color-box-shadow: rgba(#000000, 0.14);
 
53
  --color-scroll-track: rgba(#000000, 0.25);
54
  --color-scroll-bar: rgba(#000000, 0.5);
55
 
4
  * ----------------------------------------------------------------------------- */
5
 
6
  --color-text-primary: #141827;
7
+ --color-text-primary-light: rgba(var(--color-text-primary), 0.62);
8
  --color-text-secondary: #727272;
9
  --color-text-disabled: #D5D5D5;
10
 
51
  --color-background-messages: rgba(var(--color-text-primary), 0.07);
52
  --color-background-secondary-hover: #F0EEEE;
53
  --color-box-shadow: rgba(#000000, 0.14);
54
+ --color-box-shadow-secondary: rgba(#000000, 0.1);
55
  --color-scroll-track: rgba(#000000, 0.25);
56
  --color-scroll-bar: rgba(#000000, 0.5);
57
 
src/resources/postcss/utilities/variables/_svgs.pcss CHANGED
@@ -222,6 +222,17 @@
222
  }
223
  }
224
 
 
 
 
 
 
 
 
 
 
 
 
225
  /* -----------------------------------------------------------------------------
226
  * SVG - List
227
  * ----------------------------------------------------------------------------- */
@@ -265,12 +276,34 @@
265
  }
266
  }
267
 
 
 
 
 
 
 
 
 
 
 
 
268
  /* -----------------------------------------------------------------------------
269
  * SVG - Map
270
  * ----------------------------------------------------------------------------- */
271
 
272
  @svg-load map url('../icons/map.svg') {
273
 
 
 
 
 
 
 
 
 
 
 
 
274
  path {
275
  stroke: var(--color-icon-active);
276
  }
@@ -299,6 +332,17 @@
299
 
300
  @svg-load no-map url('../icons/no-map.svg') {}
301
 
 
 
 
 
 
 
 
 
 
 
 
302
  /* -----------------------------------------------------------------------------
303
  * SVG - Photo
304
  * ----------------------------------------------------------------------------- */
222
  }
223
  }
224
 
225
+ /* -----------------------------------------------------------------------------
226
+ * SVG - Link
227
+ * ----------------------------------------------------------------------------- */
228
+
229
+ @svg-load link-active url('../icons/link.svg') {
230
+
231
+ path {
232
+ stroke: var(--color-icon-active);
233
+ }
234
+ }
235
+
236
  /* -----------------------------------------------------------------------------
237
  * SVG - List
238
  * ----------------------------------------------------------------------------- */
276
  }
277
  }
278
 
279
+ /* -----------------------------------------------------------------------------
280
+ * SVG - Mail
281
+ * ----------------------------------------------------------------------------- */
282
+
283
+ @svg-load mail-active url('../icons/mail.svg') {
284
+
285
+ path {
286
+ stroke: var(--color-icon-active);
287
+ }
288
+ }
289
+
290
  /* -----------------------------------------------------------------------------
291
  * SVG - Map
292
  * ----------------------------------------------------------------------------- */
293
 
294
  @svg-load map url('../icons/map.svg') {
295
 
296
+ path {
297
+ fill: var(--color-icon-active);
298
+ }
299
+ }
300
+
301
+ /* -----------------------------------------------------------------------------
302
+ * SVG - Map pin
303
+ * ----------------------------------------------------------------------------- */
304
+
305
+ @svg-load map-pin-active url('../icons/map-pin.svg') {
306
+
307
  path {
308
  stroke: var(--color-icon-active);
309
  }
332
 
333
  @svg-load no-map url('../icons/no-map.svg') {}
334
 
335
+ /* -----------------------------------------------------------------------------
336
+ * SVG - Phone
337
+ * ----------------------------------------------------------------------------- */
338
+
339
+ @svg-load phone-active url('../icons/phone.svg') {
340
+
341
+ path {
342
+ stroke: var(--color-icon-active);
343
+ }
344
+ }
345
+
346
  /* -----------------------------------------------------------------------------
347
  * SVG - Photo
348
  * ----------------------------------------------------------------------------- */
src/resources/postcss/views/full/day/_event.pcss CHANGED
@@ -7,14 +7,6 @@
7
  .tribe-events-calendar-day__event--featured {
8
  position: relative;
9
 
10
- &:before {
11
- @media (--viewport-medium) {
12
- content: '';
13
- min-width: 90px;
14
- width: var(--grid-width-1-of-9);
15
- }
16
- }
17
-
18
  &:after {
19
  background-color: var(--color-accent-primary);
20
  content: '';
7
  .tribe-events-calendar-day__event--featured {
8
  position: relative;
9
 
 
 
 
 
 
 
 
 
10
  &:after {
11
  background-color: var(--color-accent-primary);
12
  content: '';
src/resources/postcss/views/full/month/_calendar-event.pcss CHANGED
@@ -36,7 +36,7 @@
36
  background-color: var(--color-accent-primary);
37
  content: '';
38
  height: 100%;
39
- left: 3px;
40
  position: absolute;
41
  width: 2px;
42
  }
@@ -49,19 +49,6 @@
49
  }
50
  }
51
 
52
- .tribe-events-calendar-month__calendar-event-datetime-featured,
53
- .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
54
- display: inline-block;
55
- }
56
-
57
- .tribe-events-calendar-month__calendar-event-datetime-featured {
58
- margin-right: var(--spacer-0);
59
- }
60
-
61
- .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
62
- margin-left: var(--spacer-0);
63
- }
64
-
65
  .tribe-events-calendar-month__calendar-event-datetime-recurring-link {
66
 
67
  &:hover,
@@ -89,4 +76,20 @@
89
  opacity: var(--opacity-icon-active);
90
  }
91
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  }
36
  background-color: var(--color-accent-primary);
37
  content: '';
38
  height: 100%;
39
+ left: 7px;
40
  position: absolute;
41
  width: 2px;
42
  }
49
  }
50
  }
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  .tribe-events-calendar-month__calendar-event-datetime-recurring-link {
53
 
54
  &:hover,
76
  opacity: var(--opacity-icon-active);
77
  }
78
  }
79
+
80
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime {
81
+ @mixin mobile-body-3;
82
+ }
83
+
84
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-link {
85
+
86
+ &:hover,
87
+ &:focus {
88
+
89
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon {
90
+ background-image: svg-inline(recurring);
91
+ }
92
+ }
93
+ }
94
+
95
  }
src/resources/postcss/views/full/month/_day.pcss CHANGED
@@ -74,12 +74,10 @@
74
  }
75
 
76
  .tribe-events-calendar-month__day-cell--mobile {
77
- border-bottom: 2px solid transparent;
78
- transition: var(--transition-border-color);
79
 
80
  &:hover,
81
  &:focus {
82
- border-bottom-color: var(--color-accent-primary);
83
  }
84
  }
85
 
74
  }
75
 
76
  .tribe-events-calendar-month__day-cell--mobile {
 
 
77
 
78
  &:hover,
79
  &:focus {
80
+ background-color: var(--color-background-secondary);
81
  }
82
  }
83
 
src/resources/postcss/views/full/month/_multiday-event.pcss CHANGED
@@ -42,13 +42,13 @@
42
 
43
  &:hover,
44
  &:focus {
45
- background-color: var(--color-background-secondary);
46
  }
47
  }
48
 
49
  .tribe-events-calendar-month__multiday-event-bar-inner--focus,
50
  .tribe-events-calendar-month__multiday-event-bar-inner--hover {
51
- background-color: var(--color-background-secondary);
52
  }
53
 
54
  .tribe-events-calendar-month__multiday-event-bar-featured-icon,
@@ -61,4 +61,14 @@
61
  font-weight: var(--font-weight-regular);
62
  text-overflow: ellipsis;
63
  }
 
 
 
 
 
 
 
 
 
 
64
  }
42
 
43
  &:hover,
44
  &:focus {
45
+ background-color: var(--color-background-secondary-hover);
46
  }
47
  }
48
 
49
  .tribe-events-calendar-month__multiday-event-bar-inner--focus,
50
  .tribe-events-calendar-month__multiday-event-bar-inner--hover {
51
+ background-color: var(--color-background-secondary-hover);
52
  }
53
 
54
  .tribe-events-calendar-month__multiday-event-bar-featured-icon,
61
  font-weight: var(--font-weight-regular);
62
  text-overflow: ellipsis;
63
  }
64
+
65
+ /* -----------------------------------------------------------------------------
66
+ * Theme Overrides - Avada
67
+ * ----------------------------------------------------------------------------- */
68
+
69
+ .tribe-theme-avada #main & {
70
+ .tribe-events-calendar-month__multiday-event-bar-title {
71
+ font-weight: var(--font-weight-regular);
72
+ }
73
+ }
74
  }
src/resources/postcss/views/skeleton/day/_event.pcss CHANGED
@@ -22,9 +22,18 @@
22
  margin-bottom: var(--spacer-11);
23
  }
24
  }
 
 
 
 
 
 
 
 
25
  }
26
 
27
- .tribe-events-calendar-day__time-separator + .tribe-events-calendar-day__event {
 
28
  margin-top: var(--spacer-4);
29
 
30
  @media (--viewport-medium) {
@@ -62,7 +71,8 @@
62
  }
63
  }
64
 
65
- .tribe-events-calendar-day__event-featured-image-link {
 
66
  display: block;
67
  }
68
 
@@ -145,11 +155,32 @@
145
 
146
  .tribe-theme-twentynineteen & {
147
 
148
- .tribe-events-calendar-day__event {
 
149
  margin-top: var(--spacer-7);
 
150
 
151
  @media (--viewport-medium) {
 
152
  margin-top: var(--spacer-9);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  }
154
  }
155
  }
22
  margin-bottom: var(--spacer-11);
23
  }
24
  }
25
+
26
+ &:before {
27
+ @media (--viewport-medium) {
28
+ content: '';
29
+ min-width: 90px;
30
+ width: var(--grid-width-1-of-9);
31
+ }
32
+ }
33
  }
34
 
35
+ .tribe-events-calendar-day__time-separator + .tribe-events-calendar-day__event,
36
+ .tribe-events-calendar-day__type-separator + .tribe-events-calendar-day__event {
37
  margin-top: var(--spacer-4);
38
 
39
  @media (--viewport-medium) {
71
  }
72
  }
73
 
74
+ .tribe-events-calendar-day__event-featured-image-link,
75
+ .tribe-events-calendar-list__event-featured-image {
76
  display: block;
77
  }
78
 
155
 
156
  .tribe-theme-twentynineteen & {
157
 
158
+ .entry.tribe-events-calendar-day__event {
159
+ margin-bottom: var(--spacer-5);
160
  margin-top: var(--spacer-7);
161
+ padding-left: 54px;
162
 
163
  @media (--viewport-medium) {
164
+ margin-bottom: var(--spacer-8);
165
  margin-top: var(--spacer-9);
166
+ padding-left: 0;
167
+ }
168
+
169
+ &:last-child {
170
+ margin-bottom: var(--spacer-8);
171
+
172
+ @media (--viewport-medium) {
173
+ margin-bottom: var(--spacer-11);
174
+ }
175
+ }
176
+ }
177
+
178
+ .tribe-events-calendar-day__time-separator + .entry.tribe-events-calendar-day__event,
179
+ .tribe-events-calendar-day__type-separator + .entry.tribe-events-calendar-day__event {
180
+ margin-top: var(--spacer-4);
181
+
182
+ @media (--viewport-medium) {
183
+ margin-top: var(--spacer-8);
184
  }
185
  }
186
  }
src/resources/postcss/views/skeleton/list/_event.pcss CHANGED
@@ -90,7 +90,8 @@
90
  }
91
  }
92
 
93
- .tribe-events-calendar-list__event-featured-image-link {
 
94
  display: block;
95
  }
96
 
90
  }
91
  }
92
 
93
+ .tribe-events-calendar-list__event-featured-image-link,
94
+ .tribe-events-calendar-list__event-featured-image {
95
  display: block;
96
  }
97
 
src/resources/postcss/views/skeleton/month/_calendar-event.pcss CHANGED
@@ -27,11 +27,25 @@
27
  margin-top: var(--spacer-1);
28
  }
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  .tribe-events-calendar-month__calendar-event-featured-image-wrapper {
31
  margin-bottom: var(--spacer-0);
32
  }
33
 
34
- .tribe-events-calendar-month__calendar-event-featured-image-link {
 
35
  display: block;
36
  }
37
 
@@ -55,10 +69,32 @@
55
  }
56
  }
57
 
58
- .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link {
 
59
  display: block;
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  .tribe-events-calendar-month__calendar-event-tooltip-description {
63
  margin-bottom: var(--spacer-1);
64
 
@@ -70,4 +106,27 @@
70
  .tribe-events-calendar-month__calendar-event-tooltip-cost {
71
  margin-top: var(--spacer-3);
72
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  }
27
  margin-top: var(--spacer-1);
28
  }
29
 
30
+ .tribe-events-calendar-month__calendar-event-datetime-featured-icon,
31
+ .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
32
+ display: inline-block;
33
+ }
34
+
35
+ .tribe-events-calendar-month__calendar-event-datetime-featured-icon {
36
+ margin-right: var(--spacer-0);
37
+ }
38
+
39
+ .tribe-events-calendar-month__calendar-event-datetime-recurring-icon {
40
+ margin-left: 2px;
41
+ }
42
+
43
  .tribe-events-calendar-month__calendar-event-featured-image-wrapper {
44
  margin-bottom: var(--spacer-0);
45
  }
46
 
47
+ .tribe-events-calendar-month__calendar-event-featured-image-link,
48
+ .tribe-events-calendar-month__calendar-event-featured-image {
49
  display: block;
50
  }
51
 
69
  }
70
  }
71
 
72
+ .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link,
73
+ .tribe-events-calendar-month__calendar-event-tooltip-featured-image {
74
  display: block;
75
  }
76
 
77
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime {
78
+ margin-bottom: var(--spacer-0);
79
+ }
80
+
81
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon,
82
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon {
83
+ display: inline-block;
84
+ }
85
+
86
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon {
87
+ margin-right: var(--spacer-0);
88
+ }
89
+
90
+ .tribe-events-calendar-month__calendar-event-tooltip-datetime-recurring-icon {
91
+ margin-left: 2px;
92
+ }
93
+
94
+ .tribe-events-calendar-month__calendar-event-tooltip-title {
95
+ margin-bottom: var(--spacer-0);
96
+ }
97
+
98
  .tribe-events-calendar-month__calendar-event-tooltip-description {
99
  margin-bottom: var(--spacer-1);
100
 
106
  .tribe-events-calendar-month__calendar-event-tooltip-cost {
107
  margin-top: var(--spacer-3);
108
  }
109
+
110
+ /* -------------------------------------------------------------------------
111
+ * Theme Overrides - Twenty Nineteen
112
+ * ------------------------------------------------------------------------- */
113
+
114
+ .tribe-theme-twentynineteen &,
115
+ .tribe-theme-twentynineteen .entry & {
116
+
117
+ .tribe-events-calendar-month__calendar-event {
118
+ margin: var(--spacer-1) 0;
119
+ padding: 0 var(--spacer-3);
120
+ position: relative;
121
+
122
+ &:first-child {
123
+ margin-top: 0;
124
+ }
125
+
126
+ &:last-child {
127
+ margin-bottom: 0;
128
+ padding-bottom: var(--spacer-3);
129
+ }
130
+ }
131
+ }
132
  }
src/resources/postcss/views/skeleton/month/_multiday-event.pcss CHANGED
@@ -62,6 +62,10 @@
62
  z-index: var(--z-index-multiday-event);
63
  }
64
 
 
 
 
 
65
  .tribe-events-calendar-month__multiday-event-hidden-link {
66
  display: block;
67
  height: 100%;
@@ -90,6 +94,7 @@
90
 
91
  .tribe-events-calendar-month__multiday-event-bar-title {
92
  flex: none;
 
93
  overflow: hidden;
94
  white-space: nowrap;
95
  }
62
  z-index: var(--z-index-multiday-event);
63
  }
64
 
65
+ .tribe-events-calendar-month__multiday-event-hidden-title {
66
+ white-space: nowrap;
67
+ }
68
+
69
  .tribe-events-calendar-month__multiday-event-hidden-link {
70
  display: block;
71
  height: 100%;
94
 
95
  .tribe-events-calendar-month__multiday-event-bar-title {
96
  flex: none;
97
+ max-width: 100%;
98
  overflow: hidden;
99
  white-space: nowrap;
100
  }
src/views/v2/base.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Base View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/base.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Base View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/base.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/after.php CHANGED
@@ -3,7 +3,7 @@
3
  * Component: After Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/after.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * Component: After Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/after.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/before.php CHANGED
@@ -3,7 +3,7 @@
3
  * Component: Before Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/before.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * Component: Before Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/before.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/breadcrumbs.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Breadcrumbs
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/breadcrumbs.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Breadcrumbs
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/breadcrumbs.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/breadcrumbs/breadcrumb.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Linked Breadcrumb
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/breadcrumbs/breadcrumb.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Linked Breadcrumb
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/breadcrumbs/breadcrumb.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/breadcrumbs/linked-breadcrumb.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Linked Breadcrumb
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/breadcrumbs/linked-breadcrumb.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Linked Breadcrumb
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/breadcrumbs/linked-breadcrumb.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/data.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Data Object.
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/data.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Data Object.
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/data.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/filters.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Filters
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/filters.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Filters
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/filters.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/search-button.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Search Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/search-button.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Search Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/search-button.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/search-button/icon.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Search Button Icon
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/search-button/icon.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Search Button Icon
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/search-button/icon.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/search.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Search
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/search.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Search
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/search.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/search/keyword.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Search Keyword Input
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/search/keyword.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Search Keyword Input
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/search/keyword.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/search/submit.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Search Submit Input
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/search/submit.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Search Submit Input
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/search/submit.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/tabs.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Mobile Tabs
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/tabs.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Mobile Tabs
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/tabs.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/views.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Views
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/views.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Views
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/views.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/views/list.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Events Bar Views List
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/views/list.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Events Bar Views List
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/views/list.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/events-bar/views/list/item.php CHANGED
@@ -3,25 +3,38 @@
3
  * View: Events Bar Views List Item
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/events-bar/views/list/item.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
 
 
 
 
12
  * @version 4.9.10
13
  */
 
14
  use Tribe\Events\Views\V2\View;
 
15
 
16
  // Bail on invalid name of class
17
  if ( ! $this->get( 'view_class_name' ) ) {
18
  return;
19
  }
20
 
21
- $view_instance = View::make( $this->get( 'view_class_name' ) );
22
- $view_slug = $view_instance->get_slug();
23
  $is_current_view = $view->get_slug() === $view_instance->get_slug();
24
- $view_url = tribe_events_get_url( [ 'eventDisplay' => $view_slug ] );
 
 
 
 
 
 
 
25
 
26
  $list_item_classes = [ 'tribe-events-c-view-selector__list-item', "tribe-events-c-view-selector__list-item--$view_slug" ];
27
  if ( $is_current_view ) {
3
  * View: Events Bar Views List Item
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/events-bar/views/list/item.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var View_Interface $view The View that is currently rendering.
13
+ * @var string $url_event_date The value, `Y-m-d` format, of the `eventDate` request variable to append to the
14
+ * view URL, if any.
15
+ *
16
  * @version 4.9.10
17
  */
18
+
19
  use Tribe\Events\Views\V2\View;
20
+ use Tribe\Events\Views\V2\View_Interface;
21
 
22
  // Bail on invalid name of class
23
  if ( ! $this->get( 'view_class_name' ) ) {
24
  return;
25
  }
26
 
27
+ $view_instance = View::make( $this->get( 'view_class_name' ) );
28
+ $view_slug = $view_instance->get_slug();
29
  $is_current_view = $view->get_slug() === $view_instance->get_slug();
30
+
31
+ if ( ! empty( $url_event_date ) ) {
32
+ // Each View expects the event date in a specific format, here we account for it.
33
+ $query_args = wp_parse_url( $view->get_url( false ), PHP_URL_QUERY );
34
+ $view_url = $view_instance->url_for_query_args( $url_event_date, $query_args );
35
+ } else {
36
+ $view_url = tribe_events_get_url( array_filter( [ 'eventDisplay' => $view_slug ] ) );
37
+ }
38
 
39
  $list_item_classes = [ 'tribe-events-c-view-selector__list-item', "tribe-events-c-view-selector__list-item--$view_slug" ];
40
  if ( $is_current_view ) {
src/views/v2/components/filter-bar.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Filter Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/filter-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Filter Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/filter-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/ical-link.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Component: iCal Link
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/ical-link.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version 4.9.13
13
+ *
14
+ * @var object $ical Object containing iCal data
15
+ */
16
+
17
+ if ( empty( $ical->display_link ) ) {
18
+ return;
19
+ }
20
+
21
+ ?>
22
+ <div class="tribe-events-c-ical tribe-common-b1">
23
+ <a
24
+ class="tribe-events-c-ical__link tribe-common-anchor-alt"
25
+ title="<?php echo esc_attr( $ical->link->title ); ?>"
26
+ href="<?php echo esc_url( $ical->link->url ); ?>"
27
+ ><?php echo esc_html( $ical->link->text ); ?></a>
28
+ </div>
29
+
src/views/v2/components/loader.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Loader
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/loader.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Loader
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/loader.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/messages.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Messages
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/messaging.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Messages
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/messaging.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/read-more.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Read More
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/read-more.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,9 +11,7 @@
11
  *
12
  * @version 4.9.11
13
  *
14
- * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
- *
16
- * @see tribe_get_event() For the format of the event object.
17
  */
18
  ?>
19
  <span class="tribe-events-c-read-more-hellip"> &hellip; </span>
3
  * View: Read More
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/read-more.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @version 4.9.11
13
  *
14
+ * @var WP_Post $event The event post object, with an added `permalink` property.
 
 
15
  */
16
  ?>
17
  <span class="tribe-events-c-read-more-hellip"> &hellip; </span>
src/views/v2/components/top-bar/actions.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Top Bar - Actions
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/actions.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Top Bar - Actions
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/actions.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/top-bar/actions/content.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Top Bar Actions Content
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/actions/content.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Top Bar Actions Content
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/actions/content.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/top-bar/datepicker/submit.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Top Bar - Datepicker Submit
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/datepicker/submit.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version 4.9.13
13
+ *
14
+ * @var bool $show_datepicker_submit Boolean on whether to show the datepicker submit button.
15
+ *
16
+ */
17
+
18
+ if ( empty( $show_datepicker_submit ) ) {
19
+ return;
20
+ }
21
+ ?>
22
+ <button
23
+ class="tribe-common-c-btn tribe-common-a11y-hidden tribe-events-c-top-bar__datepicker-submit"
24
+ type="submit"
25
+ name="submit-bar"
26
+ >
27
+ <?php printf( esc_html__( 'Find %s', 'the-events-calendar' ), tribe_get_event_label_plural() ); ?>
28
+ </button>
src/views/v2/components/top-bar/nav.php CHANGED
@@ -3,17 +3,19 @@
3
  * View: Top Bar - Navigation
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.10
13
  *
 
 
14
  */
15
  ?>
16
- <nav class="tribe-events-c-top-bar__nav">
17
  <ul class="tribe-events-c-top-bar__nav-list">
18
  <?php
19
  if ( ! empty( $prev_url ) ) {
3
  * View: Top Bar - Navigation
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
+ * @var string $prev_url The URL to the previous page, if any, or an empty string.
15
+ * @var string $next_url The URL to the next page, if any, or an empty string.
16
  */
17
  ?>
18
+ <nav class="tribe-events-c-top-bar__nav tribe-common-a11y-hidden">
19
  <ul class="tribe-events-c-top-bar__nav-list">
20
  <?php
21
  if ( ! empty( $prev_url ) ) {
src/views/v2/components/top-bar/nav/next-disabled.php CHANGED
@@ -3,15 +3,13 @@
3
  * View: Top Bar Navigation Next Disabled Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @var string $link The URL to the previous page, if any, or an empty string.
13
- *
14
- * @version 4.9.10
15
  *
16
  */
17
  ?>
3
  * View: Top Bar Navigation Next Disabled Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
 
 
13
  *
14
  */
15
  ?>
src/views/v2/components/top-bar/nav/next.php CHANGED
@@ -3,15 +3,15 @@
3
  * View: Top Bar Navigation Next Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
- * @version 4.9.10
15
  *
16
  */
17
  ?>
3
  * View: Top Bar Navigation Next Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $link The URL to the next page, if any, or an empty string.
13
  *
14
+ * @version 4.9.13
15
  *
16
  */
17
  ?>
src/views/v2/components/top-bar/nav/prev-disabled.php CHANGED
@@ -3,15 +3,13 @@
3
  * View: Top Bar Navigation Previous Disabled Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @var string $link The URL to the previous page, if any, or an empty string.
13
- *
14
- * @version 4.9.10
15
  *
16
  */
17
  ?>
3
  * View: Top Bar Navigation Previous Disabled Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
 
 
13
  *
14
  */
15
  ?>
src/views/v2/components/top-bar/nav/prev.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Top Bar Navigation Previous Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Top Bar Navigation Previous Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/components/top-bar/today.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Top Bar - Today
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/components/top-bar/today.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,12 +11,12 @@
11
  *
12
  * @var string $today_url The URL to the today page.
13
  *
14
- * @version 4.9.10
15
  */
16
  ?>
17
  <a
18
  href="<?php echo esc_url( $today_url ); ?>"
19
- class="tribe-common-c-btn-border tribe-events-c-top-bar__today-button"
20
  data-js="tribe-events-view-link"
21
  >
22
  <?php esc_html_e( 'Today', 'the-events-calendar' ); ?>
3
  * View: Top Bar - Today
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/components/top-bar/today.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @var string $today_url The URL to the today page.
13
  *
14
+ * @version 4.9.13
15
  */
16
  ?>
17
  <a
18
  href="<?php echo esc_url( $today_url ); ?>"
19
+ class="tribe-common-c-btn-border tribe-events-c-top-bar__today-button tribe-common-a11y-hidden"
20
  data-js="tribe-events-view-link"
21
  >
22
  <?php esc_html_e( 'Today', 'the-events-calendar' ); ?>
src/views/v2/day.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,19 +11,21 @@
11
  *
12
  * @version 4.9.11
13
  *
14
- * @var array $events The array containing the events.
15
- * @var string $rest_url The REST URL.
16
- * @var string $rest_nonce The REST nonce.
17
- * @var bool $disable_event_search Boolean on whether to disable the event search.
 
18
  */
19
 
20
  $header_classes = [ 'tribe-events-header' ];
21
  if ( empty( $disable_event_search ) ) {
22
  $header_classes[] = 'tribe-events-header--has-event-search';
23
  }
 
24
  ?>
25
  <div
26
- class="tribe-common tribe-events tribe-events-view tribe-events-view--day"
27
  data-js="tribe-events-view"
28
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
29
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
@@ -51,6 +53,7 @@ if ( empty( $disable_event_search ) ) {
51
  <div class="tribe-events-calendar-day">
52
 
53
  <?php foreach ( $events as $event ) : ?>
 
54
 
55
  <?php $this->template( 'day/type-separator', [ 'event' => $event ] ); ?>
56
  <?php $this->template( 'day/time-separator', [ 'event' => $event ] ); ?>
@@ -62,6 +65,8 @@ if ( empty( $disable_event_search ) ) {
62
 
63
  <?php $this->template( 'day/nav' ); ?>
64
 
 
 
65
  <?php $this->template( 'components/after' ); ?>
66
 
67
  </div>
3
  * View: Day View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @version 4.9.11
13
  *
14
+ * @var array $events The array containing the events.
15
+ * @var string $rest_url The REST URL.
16
+ * @var string $rest_nonce The REST nonce.
17
+ * @var bool $disable_event_search Boolean on whether to disable the event search.
18
+ * @var string[] $container_classes Classes used for the container of the view.
19
  */
20
 
21
  $header_classes = [ 'tribe-events-header' ];
22
  if ( empty( $disable_event_search ) ) {
23
  $header_classes[] = 'tribe-events-header--has-event-search';
24
  }
25
+
26
  ?>
27
  <div
28
+ <?php tribe_classes( $container_classes ); ?>
29
  data-js="tribe-events-view"
30
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
31
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
53
  <div class="tribe-events-calendar-day">
54
 
55
  <?php foreach ( $events as $event ) : ?>
56
+ <?php $this->setup_postdata( $event ); ?>
57
 
58
  <?php $this->template( 'day/type-separator', [ 'event' => $event ] ); ?>
59
  <?php $this->template( 'day/time-separator', [ 'event' => $event ] ); ?>
65
 
66
  <?php $this->template( 'day/nav' ); ?>
67
 
68
+ <?php $this->template( 'components/ical-link' ); ?>
69
+
70
  <?php $this->template( 'components/after' ); ?>
71
 
72
  </div>
src/views/v2/day/event.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/event/cost.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day Single Event Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day Single Event Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/event/date.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View - Single Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View - Single Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/event/date/meta.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View - Single Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View - Single Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/event/description.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day Single Event Description
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event/description.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -16,10 +16,10 @@
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
- if ( empty( $event->excerpt ) ) {
20
  return;
21
  }
22
  ?>
23
  <div class="tribe-events-calendar-day__event-description tribe-common-b2">
24
- <?php echo $event->excerpt; ?>
25
  </div>
3
  * View: Day Single Event Description
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event/description.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
+ if ( empty( (string) $event->excerpt ) ) {
20
  return;
21
  }
22
  ?>
23
  <div class="tribe-events-calendar-day__event-description tribe-common-b2">
24
+ <?php echo (string) $event->excerpt; ?>
25
  </div>
src/views/v2/day/event/featured-image.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View - Single Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View - Single Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/event/title.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View - Single Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -16,7 +16,7 @@
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
  ?>
19
- <h3 class="tribe-events-calendar-day__event-title tribe-common-h6 tribe-common-h5--min-medium">
20
  <a
21
  href="<?php echo esc_url( $event->permalink ); ?>"
22
  title="<?php echo esc_attr( get_the_title( $event->ID ) ); ?>"
3
  * View: Day View - Single Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
  ?>
19
+ <h3 class="tribe-events-calendar-day__event-title tribe-common-h6 tribe-common-h4--min-medium">
20
  <a
21
  href="<?php echo esc_url( $event->permalink ); ?>"
22
  title="<?php echo esc_attr( get_the_title( $event->ID ) ); ?>"
src/views/v2/day/event/venue.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day Single Event Venue
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/event/venue.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day Single Event Venue
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/event/venue.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/nav.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View Nav Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View Nav Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/nav/next-disabled.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View Nav Disabled Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View Nav Disabled Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/nav/next.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View Nav Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View Nav Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/nav/prev-disabled.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View Nav Disabled Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View Nav Disabled Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/nav/prev.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View Nav Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View Nav Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/time-separator.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View Time separator
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/time-separator.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -22,17 +22,17 @@ if ( ! $should_have_time_separator || ! empty( $event->timeslot ) ) {
22
  return;
23
  }
24
 
25
- $event_start_datetime = strtotime( $event->dates->start->format( Dates::DBDATETIMEFORMAT ) );
26
- $event_start_hour = strtotime( date_i18n( 'Y-m-d H:00:00', $event_start_datetime ) );
27
 
28
  // Format to WP format
29
  $separator_text = date_i18n( tribe_get_time_format(), $event_start_hour );
 
30
 
31
  ?>
32
  <div class="tribe-events-calendar-day__time-separator">
33
  <time
34
  class="tribe-events-calendar-day__time-separator-text tribe-common-h7 tribe-common-h6--min-medium tribe-common-h--alt"
35
- datetime="<?php echo esc_attr( $event->dates->start->format( 'H:00' ) ); ?>"
36
  >
37
  <?php echo esc_html( $separator_text ); ?>
38
  </time>
3
  * View: Day View Time separator
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/time-separator.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
22
  return;
23
  }
24
 
25
+ $event_start_hour = strtotime( Dates::round_nearest_half_hour( $event->dates->start->format( Dates::DBDATETIMEFORMAT ) ) );
 
26
 
27
  // Format to WP format
28
  $separator_text = date_i18n( tribe_get_time_format(), $event_start_hour );
29
+ $time_attribute = date_i18n( 'H:i', $event_start_hour );
30
 
31
  ?>
32
  <div class="tribe-events-calendar-day__time-separator">
33
  <time
34
  class="tribe-events-calendar-day__time-separator-text tribe-common-h7 tribe-common-h6--min-medium tribe-common-h--alt"
35
+ datetime="<?php echo esc_attr( $time_attribute ); ?>"
36
  >
37
  <?php echo esc_html( $separator_text ); ?>
38
  </time>
src/views/v2/day/top-bar.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Top Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/top-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Top Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/top-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/day/top-bar/datepicker.php CHANGED
@@ -3,16 +3,17 @@
3
  * View: Top Bar - Date Picker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/top-bar/datepicker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.11
13
  *
14
- * @var string $now The current date and time in the `Y-m-d H:i:s` format.
15
- * @var obj $date_formats Object containing the date formats.
 
16
  */
17
  use Tribe__Date_Utils as Dates;
18
 
@@ -27,33 +28,49 @@ $selected_date_label = date_i18n( tribe_get_date_format( true ), $selected_datet
27
 
28
  $datepicker_date = Dates::build_date_object( $selected_date_value )->format( $date_formats->compact );
29
  ?>
30
- <div class="tribe-events-c-top-bar__datepicker">
31
- <button
32
- class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
33
- data-js="tribe-events-top-bar-datepicker-button"
 
34
  >
35
- <time
36
- datetime="<?php echo esc_attr( date( 'Y-m-d', $selected_datetime ) ); ?>"
37
- class="tribe-events-c-top-bar__datepicker-time"
 
 
 
 
 
 
38
  >
39
- <?php echo esc_html( $selected_date_label ); ?>
40
- </time>
41
- </button>
42
- <label
43
- class="tribe-events-c-top-bar__datepicker-label tribe-common-a11y-visual-hide"
44
- for="tribe-events-top-bar-date"
45
- >
46
- <?php esc_html_e( 'Select date.', 'the-events-calendar' ); ?>
47
- </label>
48
- <input
49
- type="text"
50
- class="tribe-events-c-top-bar__datepicker-input tribe-common-a11y-visual-hide"
51
- data-js="tribe-events-top-bar-date"
52
- id="tribe-events-top-bar-date"
53
- name="tribe-events-views[tribe-bar-search]"
54
- value="<?php echo esc_attr( $datepicker_date ); ?>"
55
- tabindex="-1"
56
- autocomplete="off"
57
- />
58
- <div class="tribe-events-c-top-bar__datepicker-container" data-js="tribe-events-top-bar-datepicker-container"></div>
59
- </div>
 
 
 
 
 
 
 
 
 
3
  * View: Top Bar - Date Picker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/top-bar/datepicker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
+ * @var string $now The current date and time in the `Y-m-d H:i:s` format.
15
+ * @var object $date_formats Object containing the date formats.
16
+ * @var bool $show_datepicker_submit Boolean on whether to show the datepicker submit button.
17
  */
18
  use Tribe__Date_Utils as Dates;
19
 
28
 
29
  $datepicker_date = Dates::build_date_object( $selected_date_value )->format( $date_formats->compact );
30
  ?>
31
+ <?php if ( $show_datepicker_submit ) : ?>
32
+ <form
33
+ class="tribe-events-c-top-bar__datepicker-form"
34
+ method="get"
35
+ data-js="tribe-events-view-form"
36
  >
37
+ <?php wp_nonce_field( 'wp_rest', 'tribe-events-views[_wpnonce]' ); ?>
38
+ <input type="hidden" name="tribe-events-views[url]" value="<?php echo esc_url( $this->get( 'url' ) ); ?>" />
39
+ <?php endif; ?>
40
+
41
+ <div class="tribe-events-c-top-bar__datepicker">
42
+ <button
43
+ class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
44
+ data-js="tribe-events-top-bar-datepicker-button"
45
+ type="button"
46
  >
47
+ <time
48
+ datetime="<?php echo esc_attr( date( 'Y-m-d', $selected_datetime ) ); ?>"
49
+ class="tribe-events-c-top-bar__datepicker-time"
50
+ >
51
+ <?php echo esc_html( $selected_date_label ); ?>
52
+ </time>
53
+ </button>
54
+ <label
55
+ class="tribe-events-c-top-bar__datepicker-label tribe-common-a11y-visual-hide"
56
+ for="tribe-events-top-bar-date"
57
+ >
58
+ <?php esc_html_e( 'Select date.', 'the-events-calendar' ); ?>
59
+ </label>
60
+ <input
61
+ type="text"
62
+ class="tribe-events-c-top-bar__datepicker-input tribe-common-a11y-visual-hide"
63
+ data-js="tribe-events-top-bar-date"
64
+ id="tribe-events-top-bar-date"
65
+ name="tribe-events-views[tribe-bar-date]"
66
+ value="<?php echo esc_attr( $datepicker_date ); ?>"
67
+ tabindex="-1"
68
+ autocomplete="off"
69
+ />
70
+ <div class="tribe-events-c-top-bar__datepicker-container" data-js="tribe-events-top-bar-datepicker-container"></div>
71
+ </div>
72
+
73
+ <?php if ( $show_datepicker_submit ) : ?>
74
+ <?php $this->template( 'components/top-bar/datepicker/submit' ); ?>
75
+ </form>
76
+ <?php endif; ?>
src/views/v2/day/type-separator.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Day View Type separator
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/day/type-separator.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Day View Type separator
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/day/type-separator.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,11 +11,12 @@
11
  *
12
  * @version 4.9.11
13
  *
14
- * @var array $events The array containing the events.
15
- * @var string $rest_url The REST URL.
16
- * @var string $rest_nonce The REST nonce.
17
- * @var int $should_manage_url int containing if it should manage the URL.
18
- * @var bool $disable_event_search Boolean on whether to disable the event search.
 
19
  */
20
 
21
  $header_classes = [ 'tribe-events-header' ];
@@ -24,7 +25,7 @@ if ( empty( $disable_event_search ) ) {
24
  }
25
  ?>
26
  <div
27
- class="tribe-common tribe-events tribe-events-view tribe-events-view--list"
28
  data-js="tribe-events-view"
29
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
30
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
@@ -52,6 +53,7 @@ if ( empty( $disable_event_search ) ) {
52
  <div class="tribe-events-calendar-list">
53
 
54
  <?php foreach ( $events as $event ) : ?>
 
55
 
56
  <?php $this->template( 'list/month-separator', [ 'event' => $event ] ); ?>
57
 
@@ -63,6 +65,8 @@ if ( empty( $disable_event_search ) ) {
63
 
64
  <?php $this->template( 'list/nav' ); ?>
65
 
 
 
66
  <?php $this->template( 'components/after' ); ?>
67
 
68
  </div>
3
  * View: List View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @version 4.9.11
13
  *
14
+ * @var array $events The array containing the events.
15
+ * @var string $rest_url The REST URL.
16
+ * @var string $rest_nonce The REST nonce.
17
+ * @var int $should_manage_url int containing if it should manage the URL.
18
+ * @var bool $disable_event_search Boolean on whether to disable the event search.
19
+ * @var string[] $container_classes Classes used for the container of the view.
20
  */
21
 
22
  $header_classes = [ 'tribe-events-header' ];
25
  }
26
  ?>
27
  <div
28
+ <?php tribe_classes( $container_classes ); ?>
29
  data-js="tribe-events-view"
30
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
31
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
53
  <div class="tribe-events-calendar-list">
54
 
55
  <?php foreach ( $events as $event ) : ?>
56
+ <?php $this->setup_postdata( $event ); ?>
57
 
58
  <?php $this->template( 'list/month-separator', [ 'event' => $event ] ); ?>
59
 
65
 
66
  <?php $this->template( 'list/nav' ); ?>
67
 
68
+ <?php $this->template( 'components/ical-link' ); ?>
69
+
70
  <?php $this->template( 'components/after' ); ?>
71
 
72
  </div>
src/views/v2/list/event.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -17,7 +17,7 @@
17
  */
18
 
19
  $container_classes = [ 'tribe-common-g-row', 'tribe-events-calendar-list__event-row' ];
20
- $container_classes['tribe-events-calendar-list__event-row--featured'] = $event->featured;;
21
 
22
  $event_classes = get_post_class( [ 'tribe-events-calendar-list__event', 'tribe-common-g-row', 'tribe-common-g-row--gutters' ], $event->ID );
23
  ?>
3
  * View: List Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
17
  */
18
 
19
  $container_classes = [ 'tribe-common-g-row', 'tribe-events-calendar-list__event-row' ];
20
+ $container_classes['tribe-events-calendar-list__event-row--featured'] = $event->featured;
21
 
22
  $event_classes = get_post_class( [ 'tribe-events-calendar-list__event', 'tribe-common-g-row', 'tribe-common-g-row--gutters' ], $event->ID );
23
  ?>
src/views/v2/list/event/cost.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List Single Event Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List Single Event Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/event/date-tag.php CHANGED
@@ -3,24 +3,35 @@
3
  * View: List View - Single Event Date Tag
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/date-tag.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.9
13
  *
14
- * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
 
 
 
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
  use Tribe__Date_Utils as Dates;
20
 
21
- $event_week_day = $event->dates->start_display->format( 'D' );
22
- $event_day_num = $event->dates->start_display->format( 'j' );
23
- $event_date_attr = $event->dates->start_display->format( Dates::DBDATEFORMAT );
 
 
 
 
 
 
 
 
24
  ?>
25
  <div class="tribe-events-calendar-list__event-date-tag tribe-common-g-col">
26
  <time class="tribe-events-calendar-list__event-date-tag-datetime" datetime="<?php echo esc_attr( $event_date_attr ); ?>">
3
  * View: List View - Single Event Date Tag
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/date-tag.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ * @var \DateTimeInterface $request_date The request date object. This will be "today" if the user did not input any
16
+ * date, or the user input date.
17
+ * @var bool $is_past Whether the current display mode is "past" or not.
18
  *
19
  * @see tribe_get_event() For the format of the event object.
20
  */
21
 
22
  use Tribe__Date_Utils as Dates;
23
 
24
+ /*
25
+ * If the request date is after the event start date, show the request date to avoid users from seeing dates "in the
26
+ * past" in relation to the date they requested (or today's date).
27
+ */
28
+ $display_date = empty( $is_past ) && ! empty( $request_date )
29
+ ? max( $event->dates->start_display, $request_date )
30
+ : $event->dates->start_display;
31
+
32
+ $event_week_day = $display_date->format( 'D' );
33
+ $event_day_num = $display_date->format( 'j' );
34
+ $event_date_attr = $display_date->format( Dates::DBDATEFORMAT );
35
  ?>
36
  <div class="tribe-events-calendar-list__event-date-tag tribe-common-g-col">
37
  <time class="tribe-events-calendar-list__event-date-tag-datetime" datetime="<?php echo esc_attr( $event_date_attr ); ?>">
src/views/v2/list/event/date.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View - Single Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View - Single Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/event/date/meta.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View - Single Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View - Single Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/event/description.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List Single Event Description
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/description.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -16,10 +16,10 @@
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
- if ( empty( $event->excerpt ) ) {
20
  return;
21
  }
22
  ?>
23
  <div class="tribe-events-calendar-list__event-description tribe-common-b2">
24
- <?php echo $event->excerpt; ?>
25
  </div>
3
  * View: List Single Event Description
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/description.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
+ if ( empty( (string) $event->excerpt ) ) {
20
  return;
21
  }
22
  ?>
23
  <div class="tribe-events-calendar-list__event-description tribe-common-b2">
24
+ <?php echo (string) $event->excerpt; ?>
25
  </div>
src/views/v2/list/event/featured-image.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View - Single Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View - Single Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/event/title.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View - Single Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -16,7 +16,7 @@
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
  ?>
19
- <h3 class="tribe-events-calendar-list__event-title tribe-common-h6 tribe-common-h5--min-medium">
20
  <a
21
  href="<?php echo esc_url( $event->permalink ); ?>"
22
  title="<?php echo esc_attr( get_the_title( $event->ID ) ); ?>"
3
  * View: List View - Single Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
  ?>
19
+ <h3 class="tribe-events-calendar-list__event-title tribe-common-h6 tribe-common-h4--min-medium">
20
  <a
21
  href="<?php echo esc_url( $event->permalink ); ?>"
22
  title="<?php echo esc_attr( get_the_title( $event->ID ) ); ?>"
src/views/v2/list/event/venue.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List Single Event Venue
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/event/venue.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List Single Event Venue
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/event/venue.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/month-separator.php CHANGED
@@ -3,33 +3,49 @@
3
  * View: List View Month separator
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/month-separator.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.9
13
  *
14
- * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
 
 
 
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
  use Tribe\Events\Views\V2\Utils;
20
 
21
- $should_have_month_separator = Utils\Separators::should_have_month( $this->get( 'events' ), $event );
 
 
 
 
22
 
23
  if ( ! $should_have_month_separator ) {
24
  return;
25
  }
26
 
 
 
 
 
 
 
 
 
27
  ?>
28
  <div class="tribe-events-calendar-list__month-separator">
29
  <time
30
  class="tribe-events-calendar-list__month-separator-text tribe-common-h7 tribe-common-h6--min-medium tribe-common-h--alt"
31
- datetime="<?php echo esc_attr( $event->dates->start->format( 'Y-m' ) ); ?>"
 
32
  >
33
- <?php echo esc_html( $event->dates->start->format( 'F Y' ) ); ?>
34
  </time>
35
  </div>
3
  * View: List View Month separator
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/month-separator.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ * @var \DateTimeInterface $request_date The request date object. This will be "today" if the user did not input any
16
+ * date, or the user input date.
17
+ * @var bool $is_past Whether the current display mode is "past" or not.
18
  *
19
  * @see tribe_get_event() For the format of the event object.
20
  */
21
 
22
  use Tribe\Events\Views\V2\Utils;
23
 
24
+ if ( empty( $is_past ) && ! empty ( $request_date ) ) {
25
+ $should_have_month_separator = Utils\Separators::should_have_month( $this->get( 'events' ), $event, $request_date );
26
+ } else {
27
+ $should_have_month_separator = Utils\Separators::should_have_month( $this->get( 'events' ), $event );
28
+ }
29
 
30
  if ( ! $should_have_month_separator ) {
31
  return;
32
  }
33
 
34
+ /*
35
+ * Depending on the request date we show the later date between the real event start date and the request date.
36
+ * This avoids users from seeing results "in the past" in relation to an input date or "today".
37
+ * This does not apply to past events.
38
+ */
39
+ $sep_date = empty( $is_past ) && ! empty( $request_date )
40
+ ? max( $event->dates->start_display, $request_date )
41
+ : $event->dates->start_display;
42
  ?>
43
  <div class="tribe-events-calendar-list__month-separator">
44
  <time
45
  class="tribe-events-calendar-list__month-separator-text tribe-common-h7 tribe-common-h6--min-medium tribe-common-h--alt"
46
+ datetime="<?php
47
+ echo esc_attr( $sep_date->format( 'Y-m' ) ); ?>"
48
  >
49
+ <?php echo esc_html( $sep_date->format( 'F Y' ) ); ?>
50
  </time>
51
  </div>
src/views/v2/list/nav.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View Nav Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View Nav Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/nav/next-disabled.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View Nav Disabled Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View Nav Disabled Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/nav/next.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View Nav Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View Nav Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/nav/prev-disabled.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View Nav Disabled Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View Nav Disabled Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/nav/prev.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View Nav Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View Nav Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/nav/today.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: List View Nav Today Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/nav/today.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: List View Nav Today Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/nav/today.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/top-bar.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Top Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/top-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Top Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/top-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/list/top-bar/datepicker.php CHANGED
@@ -3,13 +3,13 @@
3
  * View: Top Bar - Date Picker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/list/top-bar/datepicker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.11
13
  *
14
  * @var bool $is_now Whether the date selected in the datepicker is "now" or not.
15
  * @var bool $show_now Whether to show the "Now" label as range start or not.
@@ -22,59 +22,76 @@
22
  * @var string $selected_end_date_mobile The formatted date that will show in the datepicker mobile version.
23
  * @var string $selected_end_date_label The label of the datepicker interval end.
24
  * @var string $datepicker_date The datepicker selected date, in the `Y-m-d` format.
 
25
  */
26
 
27
  ?>
28
- <div class="tribe-events-c-top-bar__datepicker">
29
- <button
30
- class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
31
- data-js="tribe-events-top-bar-datepicker-button"
 
32
  >
33
- <?php if ( $show_now ) : ?>
34
- <?php echo esc_html( $now_label ); ?>
35
- <?php else : ?>
36
- <time
37
- datetime="<?php echo esc_attr( $selected_start_datetime ); ?>"
38
- class="tribe-events-c-top-bar__datepicker-time"
39
- >
40
- <span class="tribe-events-c-top-bar__datepicker-mobile">
41
- <?php echo esc_html( $selected_start_date_mobile ); ?>
42
- </span>
43
- <span class="tribe-events-c-top-bar__datepicker-desktop tribe-common-a11y-hidden">
44
- <?php echo esc_html( $selected_start_date_label ); ?>
45
- </span>
46
- </time>
47
- <?php endif; ?>
48
- <?php if ( $show_end ) : ?>
49
- <span class="tribe-events-c-top-bar__datepicker-separator"> - </span>
50
- <time
51
- datetime="<?php echo esc_attr( $selected_end_datetime ); ?>"
52
- class="tribe-events-c-top-bar__datepicker-time"
53
- >
54
- <span class="tribe-events-c-top-bar__datepicker-mobile">
55
- <?php echo esc_html( $selected_end_date_mobile ); ?>
56
- </span>
57
- <span class="tribe-events-c-top-bar__datepicker-desktop tribe-common-a11y-hidden">
58
- <?php echo esc_html( $selected_end_date_label ); ?>
59
- </span>
60
- </time>
61
- <?php endif; ?>
62
- </button>
63
- <label
64
- class="tribe-events-c-top-bar__datepicker-label tribe-common-a11y-visual-hide"
65
- for="tribe-events-top-bar-date"
66
- >
67
- <?php esc_html_e( 'Select date.', 'the-events-calendar' ); ?>
68
- </label>
69
- <input
70
- type="text"
71
- class="tribe-events-c-top-bar__datepicker-input tribe-common-a11y-visual-hide"
72
- data-js="tribe-events-top-bar-date"
73
- id="tribe-events-top-bar-date"
74
- name="tribe-events-views[tribe-bar-search]"
75
- value="<?php echo esc_attr( $datepicker_date ); ?>"
76
- tabindex="-1"
77
- autocomplete="off"
78
- />
79
- <div class="tribe-events-c-top-bar__datepicker-container" data-js="tribe-events-top-bar-datepicker-container"></div>
80
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  * View: Top Bar - Date Picker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/list/top-bar/datepicker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
  * @var bool $is_now Whether the date selected in the datepicker is "now" or not.
15
  * @var bool $show_now Whether to show the "Now" label as range start or not.
22
  * @var string $selected_end_date_mobile The formatted date that will show in the datepicker mobile version.
23
  * @var string $selected_end_date_label The label of the datepicker interval end.
24
  * @var string $datepicker_date The datepicker selected date, in the `Y-m-d` format.
25
+ * @var bool $show_datepicker_submit Boolean on whether to show the datepicker submit button.
26
  */
27
 
28
  ?>
29
+ <?php if ( $show_datepicker_submit ) : ?>
30
+ <form
31
+ class="tribe-events-c-top-bar__datepicker-form"
32
+ method="get"
33
+ data-js="tribe-events-view-form"
34
  >
35
+ <?php wp_nonce_field( 'wp_rest', 'tribe-events-views[_wpnonce]' ); ?>
36
+ <input type="hidden" name="tribe-events-views[url]" value="<?php echo esc_url( $this->get( 'url' ) ); ?>" />
37
+ <?php endif; ?>
38
+
39
+ <div class="tribe-events-c-top-bar__datepicker">
40
+ <button
41
+ class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
42
+ data-js="tribe-events-top-bar-datepicker-button"
43
+ type="button"
44
+ >
45
+ <?php if ( $show_now ) : ?>
46
+ <?php echo esc_html( $now_label ); ?>
47
+ <?php else : ?>
48
+ <time
49
+ datetime="<?php echo esc_attr( $selected_start_datetime ); ?>"
50
+ class="tribe-events-c-top-bar__datepicker-time"
51
+ >
52
+ <span class="tribe-events-c-top-bar__datepicker-mobile">
53
+ <?php echo esc_html( $selected_start_date_mobile ); ?>
54
+ </span>
55
+ <span class="tribe-events-c-top-bar__datepicker-desktop tribe-common-a11y-hidden">
56
+ <?php echo esc_html( $selected_start_date_label ); ?>
57
+ </span>
58
+ </time>
59
+ <?php endif; ?>
60
+ <?php if ( $show_end ) : ?>
61
+ <span class="tribe-events-c-top-bar__datepicker-separator"> - </span>
62
+ <time
63
+ datetime="<?php echo esc_attr( $selected_end_datetime ); ?>"
64
+ class="tribe-events-c-top-bar__datepicker-time"
65
+ >
66
+ <span class="tribe-events-c-top-bar__datepicker-mobile">
67
+ <?php echo esc_html( $selected_end_date_mobile ); ?>
68
+ </span>
69
+ <span class="tribe-events-c-top-bar__datepicker-desktop tribe-common-a11y-hidden">
70
+ <?php echo esc_html( $selected_end_date_label ); ?>
71
+ </span>
72
+ </time>
73
+ <?php endif; ?>
74
+ </button>
75
+ <label
76
+ class="tribe-events-c-top-bar__datepicker-label tribe-common-a11y-visual-hide"
77
+ for="tribe-events-top-bar-date"
78
+ >
79
+ <?php esc_html_e( 'Select date.', 'the-events-calendar' ); ?>
80
+ </label>
81
+ <input
82
+ type="text"
83
+ class="tribe-events-c-top-bar__datepicker-input tribe-common-a11y-visual-hide"
84
+ data-js="tribe-events-top-bar-date"
85
+ id="tribe-events-top-bar-date"
86
+ name="tribe-events-views[tribe-bar-date]"
87
+ value="<?php echo esc_attr( $datepicker_date ); ?>"
88
+ tabindex="-1"
89
+ autocomplete="off"
90
+ />
91
+ <div class="tribe-events-c-top-bar__datepicker-container" data-js="tribe-events-top-bar-datepicker-container"></div>
92
+ </div>
93
+
94
+ <?php if ( $show_datepicker_submit ) : ?>
95
+ <?php $this->template( 'components/top-bar/datepicker/submit' ); ?>
96
+ </form>
97
+ <?php endif; ?>
src/views/v2/month.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,10 +11,11 @@
11
  *
12
  * @version 4.9.11
13
  *
14
- * @var string $rest_url The REST URL.
15
- * @var string $rest_nonce The REST nonce.
16
- * @var int $should_manage_url int containing if it should manage the URL.
17
- * @var bool $disable_event_search Boolean on whether to disable the event search.
 
18
  */
19
 
20
  $header_classes = [ 'tribe-events-header' ];
@@ -23,7 +24,7 @@ if ( empty( $disable_event_search ) ) {
23
  }
24
  ?>
25
  <div
26
- class="tribe-common tribe-events tribe-events-view tribe-events-view--month"
27
  data-js="tribe-events-view"
28
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
29
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
@@ -64,6 +65,8 @@ if ( empty( $disable_event_search ) ) {
64
 
65
  <?php $this->template( 'month/mobile-events' ); ?>
66
 
 
 
67
  <?php $this->template( 'components/after' ); ?>
68
 
69
  </div>
3
  * View: Month View
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @version 4.9.11
13
  *
14
+ * @var string $rest_url The REST URL.
15
+ * @var string $rest_nonce The REST nonce.
16
+ * @var int $should_manage_url int containing if it should manage the URL.
17
+ * @var bool $disable_event_search Boolean on whether to disable the event search.
18
+ * @var string[] $container_classes Classes used for the container of the view.
19
  */
20
 
21
  $header_classes = [ 'tribe-events-header' ];
24
  }
25
  ?>
26
  <div
27
+ <?php tribe_classes( $container_classes ); ?>
28
  data-js="tribe-events-view"
29
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
30
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
65
 
66
  <?php $this->template( 'month/mobile-events' ); ?>
67
 
68
+ <?php $this->template( 'components/ical-link' ); ?>
69
+
70
  <?php $this->template( 'components/after' ); ?>
71
 
72
  </div>
src/views/v2/month/calendar-body.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Calendar Body
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Calendar Body
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Day
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Day
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/calendar-events.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Calendar Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -24,6 +24,7 @@ if ( empty ( $day_events ) ) {
24
  ?>
25
 
26
  <?php foreach ( $day_events as $event ) : ?>
 
27
 
28
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event', [ 'event' => $event ] ); ?>
29
 
3
  * View: Month View - Calendar Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
24
  ?>
25
 
26
  <?php foreach ( $day_events as $event ) : ?>
27
+ <?php $this->setup_postdata( $event ); ?>
28
 
29
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event', [ 'event' => $event ] ); ?>
30
 
src/views/v2/month/calendar-body/day/calendar-events/calendar-event.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month Calendar Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month Calendar Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php CHANGED
@@ -3,36 +3,40 @@
3
  * View: Month View - Calendar Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.12
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  * @var obj $date_formats Object containing the date formats.
16
  *
17
  * @see tribe_get_event() For the format of the event object.
18
  */
19
- $time_format = tribe_get_time_format();
 
 
20
  ?>
21
  <div class="tribe-events-calendar-month__calendar-event-datetime">
22
  <?php if ( ! empty( $event->featured ) ) : ?>
23
  <em
24
- class="tribe-events-calendar-month__calendar-event-datetime-featured tribe-common-svgicon tribe-common-svgicon--featured"
25
  aria-label="<?php esc_attr_e( 'Featured', 'the-events-calendar' ) ?>"
26
  title="<?php esc_attr_e( 'Featured', 'the-events-calendar' ) ?>"
27
  >
28
  </em>
29
  <?php endif; ?>
30
- <time datetime="<?php echo esc_attr( $event->dates->start_display->format( 'H:i' ) ) ?>">
31
- <?php echo esc_html( $event->dates->start_display->format( $time_format ) ) ?>
32
- </time>
33
- <span class="tribe-events-calendar-month__calendar-event-datetime-separator"><?php echo esc_html( $date_formats->time_range_separator ); ?></span>
34
- <time datetime="<?php echo esc_attr($event->dates->end_display->format( 'H:i' )) ?>">
35
- <?php echo esc_html( $event->dates->end_display->format( $time_format ) ) ?>
36
  </time>
 
 
 
 
 
 
37
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/date/meta', [ 'event' => $event ] ); ?>
38
  </div>
3
  * View: Month View - Calendar Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  * @var obj $date_formats Object containing the date formats.
16
  *
17
  * @see tribe_get_event() For the format of the event object.
18
  */
19
+
20
+ $time_format = tribe_get_time_format();
21
+ $display_end_date = $event->dates->start_display->format( 'H:i' ) !== $event->dates->end_display->format( 'H:i' );
22
  ?>
23
  <div class="tribe-events-calendar-month__calendar-event-datetime">
24
  <?php if ( ! empty( $event->featured ) ) : ?>
25
  <em
26
+ class="tribe-events-calendar-month__calendar-event-datetime-featured-icon tribe-common-svgicon tribe-common-svgicon--featured"
27
  aria-label="<?php esc_attr_e( 'Featured', 'the-events-calendar' ) ?>"
28
  title="<?php esc_attr_e( 'Featured', 'the-events-calendar' ) ?>"
29
  >
30
  </em>
31
  <?php endif; ?>
32
+ <time datetime="<?php echo esc_attr( $event->dates->start_display->format( 'H:i' ) ); ?>">
33
+ <?php echo esc_html( $event->dates->start_display->format( $time_format ) ); ?>
 
 
 
 
34
  </time>
35
+ <?php if ( $display_end_date ) : ?>
36
+ <span class="tribe-events-calendar-month__calendar-event-datetime-separator"><?php echo esc_html( $date_formats->time_range_separator ); ?></span>
37
+ <time datetime="<?php echo esc_attr($event->dates->end_display->format( 'H:i' ) ); ?>">
38
+ <?php echo esc_html( $event->dates->end_display->format( $time_format ) ); ?>
39
+ </time>
40
+ <?php endif; ?>
41
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/date/meta', [ 'event' => $event ] ); ?>
42
  </div>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date/meta.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Calendar Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Calendar Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/featured-image.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Calendar Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Calendar Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/title.php CHANGED
@@ -3,19 +3,19 @@
3
  * View: Month View - Calendar Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTICLE_LINK_HERE}
11
  *
12
- * @version 4.9.11
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
- $display_tooltip = ! empty( $event->excerpt ) || ! empty( $event->cost ) || $event->thumbnail->exists;
19
  ?>
20
  <h3 class="tribe-events-calendar-month__calendar-event-title tribe-common-h8 tribe-common-h--alt">
21
  <a
@@ -23,11 +23,9 @@ $display_tooltip = ! empty( $event->excerpt ) || ! empty( $event->cost ) || $eve
23
  title="<?php echo esc_attr( get_the_title( $event->ID ) ); ?>"
24
  rel="bookmark"
25
  class="tribe-events-calendar-month__calendar-event-title-link tribe-common-anchor-thin"
26
- <?php if ( $display_tooltip ) : ?>
27
- data-js="tribe-events-tooltip"
28
- data-tooltip-content="#tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
29
- aria-describedby="tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
30
- <?php endif; ?>
31
  >
32
  <?php echo wp_kses_post( get_the_title( $event->ID ) ); ?>
33
  </a>
3
  * View: Month View - Calendar Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTICLE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
+
19
  ?>
20
  <h3 class="tribe-events-calendar-month__calendar-event-title tribe-common-h8 tribe-common-h--alt">
21
  <a
23
  title="<?php echo esc_attr( get_the_title( $event->ID ) ); ?>"
24
  rel="bookmark"
25
  class="tribe-events-calendar-month__calendar-event-title-link tribe-common-anchor-thin"
26
+ data-js="tribe-events-tooltip"
27
+ data-tooltip-content="#tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
28
+ aria-describedby="tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
 
 
29
  >
30
  <?php echo wp_kses_post( get_the_title( $event->ID ) ); ?>
31
  </a>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip.php CHANGED
@@ -3,23 +3,19 @@
3
  * View: Month View - Calendar Event Tooltip
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.10
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
- $display_tooltip = ! empty( $event->excerpt ) || ! empty( $event->cost ) || $event->thumbnail->exists;
19
 
20
- if ( ! $display_tooltip ) {
21
- return;
22
- }
23
  ?>
24
  <div class="tribe-events-calendar-month__calendar-event-tooltip-template tribe-common-a11y-hidden">
25
  <div
@@ -28,6 +24,8 @@ if ( ! $display_tooltip ) {
28
  role="tooltip"
29
  >
30
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image', [ 'event' => $event ] ); ?>
 
 
31
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/description', [ 'event' => $event ] ); ?>
32
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/cost', [ 'event' => $event ] ); ?>
33
  </div>
3
  * View: Month View - Calendar Event Tooltip
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
 
18
 
 
 
 
19
  ?>
20
  <div class="tribe-events-calendar-month__calendar-event-tooltip-template tribe-common-a11y-hidden">
21
  <div
24
  role="tooltip"
25
  >
26
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image', [ 'event' => $event ] ); ?>
27
+ <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/date', [ 'event' => $event ] ); ?>
28
+ <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/title', [ 'event' => $event ] ); ?>
29
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/description', [ 'event' => $event ] ); ?>
30
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/cost', [ 'event' => $event ] ); ?>
31
  </div>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Single Event Tooltip Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Single Event Tooltip Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Month View - Single Event Tooltip Date
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version 4.9.13
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
18
+
19
+ use Tribe__Date_Utils as Dates;
20
+ $event_date_attr = $event->dates->start->format( Dates::DBDATEFORMAT );
21
+ ?>
22
+ <div class="tribe-events-calendar-month__calendar-event-tooltip-datetime">
23
+ <?php if ( ! empty( $event->featured ) ) : ?>
24
+ <em
25
+ class="tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon tribe-common-svgicon tribe-common-svgicon--featured"
26
+ aria-label="<?php esc_attr_e( 'Featured', 'the-events-calendar' ) ?>"
27
+ title="<?php esc_attr_e( 'Featured', 'the-events-calendar' ) ?>"
28
+ >
29
+ </em>
30
+ <?php endif; ?>
31
+ <time datetime="<?php echo esc_attr( $event_date_attr ); ?>">
32
+ <?php echo $event->schedule_details->value(); ?>
33
+ </time>
34
+ <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip/date/meta', [ 'event' => $event ] ); ?>
35
+ </div>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date/meta.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Month View - Single Event Tooltip Meta
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date/meta.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version 4.9.13
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Calendar Event Tooltip Description
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -16,10 +16,10 @@
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
- if ( empty( $event->excerpt ) ) {
20
  return;
21
  }
22
  ?>
23
  <div class="tribe-events-calendar-month__calendar-event-tooltip-description tribe-common-b3">
24
- <?php echo $event->excerpt; ?>
25
  </div>
3
  * View: Month View - Calendar Event Tooltip Description
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
+ if ( empty( (string) $event->excerpt ) ) {
20
  return;
21
  }
22
  ?>
23
  <div class="tribe-events-calendar-month__calendar-event-tooltip-description tribe-common-b3">
24
+ <?php echo (string) $event->excerpt; ?>
25
  </div>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Calendar Event Tooltip Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Calendar Event Tooltip Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/title.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Month View - Single Event Tooltip Title
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/title.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link {INSERT_ARTICLE_LINK_HERE}
11
+ *
12
+ * @version 4.9.13
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
18
+
19
+ ?>
20
+ <h3 class="tribe-events-calendar-month__calendar-event-tooltip-title tribe-common-h7">
21
+ <a
22
+ href="<?php echo esc_url( $event->permalink ) ?>"
23
+ title="<?php echo esc_attr( get_the_title( $event->ID ) ); ?>"
24
+ rel="bookmark"
25
+ class="tribe-events-calendar-month__calendar-event-tooltip-title-link tribe-common-anchor-thin"
26
+ >
27
+ <?php echo wp_kses_post( get_the_title( $event->ID ) ); ?>
28
+ </a>
29
+ </h3>
src/views/v2/month/calendar-body/day/more-events.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - More Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/more-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - More Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/more-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/multiday-events.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Multiday Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/multiday-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -27,7 +27,6 @@ if ( 0 === count( $multiday_events ) ) {
27
  ?>
28
 
29
  <?php foreach ( $multiday_events as $event ) : ?>
30
-
31
  <?php
32
  // If we receive a falsy value, then we need to add a spacer in the "stack".
33
  if ( false === $event ) {
@@ -35,6 +34,8 @@ if ( 0 === count( $multiday_events ) ) {
35
  continue;
36
  }
37
 
 
 
38
  $this->template( 'month/calendar-body/day/multiday-events/multiday-event', [
39
  'day_date' => $day_date,
40
  'event' => $event,
3
  * View: Month View - Multiday Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/multiday-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
27
  ?>
28
 
29
  <?php foreach ( $multiday_events as $event ) : ?>
 
30
  <?php
31
  // If we receive a falsy value, then we need to add a spacer in the "stack".
32
  if ( false === $event ) {
34
  continue;
35
  }
36
 
37
+ $this->setup_postdata( $event );
38
+
39
  $this->template( 'month/calendar-body/day/multiday-events/multiday-event', [
40
  'day_date' => $day_date,
41
  'event' => $event,
src/views/v2/month/calendar-body/day/multiday-events/multiday-event-spacer.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Multiday Event Spacer
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/multiday-events/multiday-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Multiday Event Spacer
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/multiday-events/multiday-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php CHANGED
@@ -3,13 +3,13 @@
3
  * View: Month View - Multiday Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-body/day/multiday-events/multiday-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.11
13
  *
14
  * @var string $day_date The `Y-m-d` date of the day currently being displayed.
15
  * @var string $today_date Today's date in the `Y-m-d` format.
@@ -41,13 +41,8 @@ if ( $event->featured ) {
41
 
42
  // If the event started on a previous month.
43
  $started_previous_month = $event->dates->start_display->format( 'Y-m-d' ) < $grid_start_date;
44
-
45
- // We display the tooltip only if there's excpert or cost or it has a thumbnail.
46
- $display_tooltip = ! empty( $event->excerpt ) || ! empty( $event->cost ) || $event->thumbnail->exists;
47
  $is_first_appearance = ( $event->dates->start_display->format( 'Y-m-d' ) === $day_date )
48
  || ( $started_previous_month && $grid_start_date === $day_date );
49
- // We print the tooltip contents if it's the first appearrance and we should display it.
50
- $should_print_tooltip = $is_first_appearance && $display_tooltip;
51
 
52
  // If it starts today and this week, let's add the left border and set the width.
53
  if ( $should_display ) {
@@ -74,6 +69,7 @@ if ( $should_display ) {
74
  }
75
  }
76
 
 
77
  ?>
78
  <div class="tribe-events-calendar-month__multiday-event-wrapper">
79
  <article <?php tribe_classes( $classes ); ?> data-event-id="<?php echo esc_attr( $event->ID ); ?>">
@@ -87,11 +83,9 @@ if ( $should_display ) {
87
  <a
88
  href="<?php echo esc_url( $event->permalink ); ?>"
89
  class="tribe-events-calendar-month__multiday-event-hidden-link"
90
- <?php if ( $display_tooltip ) : ?>
91
- data-js="tribe-events-tooltip"
92
- data-tooltip-content="#tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
93
- aria-describedby="tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
94
- <?php endif; ?>
95
  >
96
  <?php if ( $event->featured ) : ?>
97
  <em
@@ -120,7 +114,7 @@ if ( $should_display ) {
120
  </h3>
121
  </div>
122
  </div>
123
- <?php if ( $should_print_tooltip ) : ?>
124
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip', [ 'event' => $event ] ); ?>
125
  <?php endif; ?>
126
  <?php endif; ?>
3
  * View: Month View - Multiday Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-body/day/multiday-events/multiday-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
  * @var string $day_date The `Y-m-d` date of the day currently being displayed.
15
  * @var string $today_date Today's date in the `Y-m-d` format.
41
 
42
  // If the event started on a previous month.
43
  $started_previous_month = $event->dates->start_display->format( 'Y-m-d' ) < $grid_start_date;
 
 
 
44
  $is_first_appearance = ( $event->dates->start_display->format( 'Y-m-d' ) === $day_date )
45
  || ( $started_previous_month && $grid_start_date === $day_date );
 
 
46
 
47
  // If it starts today and this week, let's add the left border and set the width.
48
  if ( $should_display ) {
69
  }
70
  }
71
 
72
+ $classes = get_post_class( $classes, $event->ID );
73
  ?>
74
  <div class="tribe-events-calendar-month__multiday-event-wrapper">
75
  <article <?php tribe_classes( $classes ); ?> data-event-id="<?php echo esc_attr( $event->ID ); ?>">
83
  <a
84
  href="<?php echo esc_url( $event->permalink ); ?>"
85
  class="tribe-events-calendar-month__multiday-event-hidden-link"
86
+ data-js="tribe-events-tooltip"
87
+ data-tooltip-content="#tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
88
+ aria-describedby="tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
 
 
89
  >
90
  <?php if ( $event->featured ) : ?>
91
  <em
114
  </h3>
115
  </div>
116
  </div>
117
+ <?php if ( $is_first_appearance ) : ?>
118
  <?php $this->template( 'month/calendar-body/day/calendar-events/calendar-event/tooltip', [ 'event' => $event ] ); ?>
119
  <?php endif; ?>
120
  <?php endif; ?>
src/views/v2/month/calendar-header.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Calendar Header
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/calendar-header.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Calendar Header
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/calendar-header.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Mobile Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Mobile Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/mobile-day.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Mobile Day
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -52,6 +52,7 @@ if ( $today_date === $day_date ) {
52
  <?php $this->template( 'month/mobile-events/mobile-day/day-marker', [ 'day_date' => $day_date ] ); ?>
53
 
54
  <?php foreach( $events as $event ) : ?>
 
55
 
56
  <?php $this->template( 'month/mobile-events/mobile-day/mobile-event', [ 'event' => $event ] ); ?>
57
 
3
  * View: Month View Mobile Day
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
52
  <?php $this->template( 'month/mobile-events/mobile-day/day-marker', [ 'day_date' => $day_date ] ); ?>
53
 
54
  <?php foreach( $events as $event ) : ?>
55
+ <?php $this->setup_postdata( $event ); ?>
56
 
57
  <?php $this->template( 'month/mobile-events/mobile-day/mobile-event', [ 'event' => $event ] ); ?>
58
 
src/views/v2/month/mobile-events/mobile-day/day-marker.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Day marker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/day-marker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Day marker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/day-marker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/mobile-day/mobile-event.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Mobile Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/mobile-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Mobile Event
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/mobile-event.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Mobile Event Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Mobile Event Cost
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/mobile-event/cost.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Mobile Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/mobile-event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Mobile Event Date
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/mobile-event/date.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/mobile-day/mobile-event/date/meta.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Mobile Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/mobile-event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Mobile Event Meta
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/mobile-event/date/meta.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/mobile-day/mobile-event/featured-image.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - Mobile Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/mobile-event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - Mobile Event Featured Image
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/mobile-event/featured-image.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/mobile-day/mobile-event/title.php CHANGED
@@ -3,20 +3,20 @@
3
  * View: Month View - Mobile Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/mobile-event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.11
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
- $classes = [ 'tribe-events-calendar-month-mobile-events__mobile-event-title', 'tribe-common-h8' ];
20
 
21
  ?>
22
  <h3 <?php tribe_classes( $classes ); ?>>
3
  * View: Month View - Mobile Event Title
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/mobile-event/title.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  *
16
  * @see tribe_get_event() For the format of the event object.
17
  */
18
 
19
+ $classes = [ 'tribe-events-calendar-month-mobile-events__mobile-event-title', 'tribe-common-h7' ];
20
 
21
  ?>
22
  <h3 <?php tribe_classes( $classes ); ?>>
src/views/v2/month/mobile-events/mobile-day/more-events.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View - More Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/mobile-day/more-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View - More Events
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/mobile-day/more-events.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/nav.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Nav Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Nav Template
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/nav/next-disabled.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Nav Disabled Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Nav Disabled Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/nav/next.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Nav Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Nav Next Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/nav/prev-disabled.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Nav Disabled Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Nav Disabled Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/nav/prev.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Nav Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Nav Previous Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/mobile-events/nav/today.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Month View Nav Today Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/mobile-events/nav/today.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Month View Nav Today Button
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/mobile-events/nav/today.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/top-bar.php CHANGED
@@ -3,7 +3,7 @@
3
  * View: Top Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/top-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
3
  * View: Top Bar
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/top-bar.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
src/views/v2/month/top-bar/datepicker.php CHANGED
@@ -3,20 +3,21 @@
3
  * View: Top Bar - Date Picker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/views/v2/month/top-bar/datepicker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.11
13
  *
14
- * @var string $now The current date and time in the `Y-m-d H:i:s` format.
15
- * @var string $grid_date The current calendar grid date in the `Y-m-d` format.
16
- * @var string $formatted_grid_date The current calendar grid date in the format specified by the "Month and year
17
- * format" option.
18
- * @var obj $date_formats Object containing the date formats.
19
- * @var \DateTime $the_date The Month current date object.
 
20
  */
21
  use Tribe__Date_Utils as Dates;
22
 
@@ -24,33 +25,49 @@ $default_date = $now;
24
  $selected_date_value = $this->get( [ 'bar', 'date' ], $default_date );
25
  $datepicker_date = Dates::build_date_object( $selected_date_value )->format( $date_formats->compact );
26
  ?>
27
- <div class="tribe-events-c-top-bar__datepicker">
28
- <button
29
- class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
30
- data-js="tribe-events-top-bar-datepicker-button"
 
31
  >
32
- <time
33
- datetime="<?php echo esc_attr( $the_date->format( 'Y-m' ) ); ?>"
34
- class="tribe-events-c-top-bar__datepicker-time"
 
 
 
 
 
 
35
  >
36
- <?php echo esc_html( $formatted_grid_date ); ?>
37
- </time>
38
- </button>
39
- <label
40
- class="tribe-events-c-top-bar__datepicker-label tribe-common-a11y-visual-hide"
41
- for="tribe-events-top-bar-date"
42
- >
43
- <?php esc_html_e( 'Select date.', 'the-events-calendar' ); ?>
44
- </label>
45
- <input
46
- type="text"
47
- class="tribe-events-c-top-bar__datepicker-input tribe-common-a11y-visual-hide"
48
- data-js="tribe-events-top-bar-date"
49
- id="tribe-events-top-bar-date"
50
- name="tribe-events-views[tribe-bar-search]"
51
- value="<?php echo esc_attr( $datepicker_date ); ?>"
52
- tabindex="-1"
53
- autocomplete="off"
54
- />
55
- <div class="tribe-events-c-top-bar__datepicker-container" data-js="tribe-events-top-bar-datepicker-container"></div>
56
- </div>
 
 
 
 
 
 
 
 
 
3
  * View: Top Bar - Date Picker
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/month/top-bar/datepicker.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version 4.9.13
13
  *
14
+ * @var string $now The current date and time in the `Y-m-d H:i:s` format.
15
+ * @var string $grid_date The current calendar grid date in the `Y-m-d` format.
16
+ * @var string $formatted_grid_date The current calendar grid date in the format specified by the "Month and year
17
+ * format" option.
18
+ * @var object $date_formats Object containing the date formats.
19
+ * @var \DateTime $the_date The Month current date object.
20
+ * @var bool $show_datepicker_submit Boolean on whether to show the datepicker submit button.
21
  */
22
  use Tribe__Date_Utils as Dates;
23
 
25
  $selected_date_value = $this->get( [ 'bar', 'date' ], $default_date );
26
  $datepicker_date = Dates::build_date_object( $selected_date_value )->format( $date_formats->compact );
27
  ?>
28
+ <?php if ( $show_datepicker_submit ) : ?>
29
+ <form
30
+ class="tribe-events-c-top-bar__datepicker-form"
31
+ method="get"
32
+ data-js="tribe-events-view-form"
33
  >
34
+ <?php wp_nonce_field( 'wp_rest', 'tribe-events-views[_wpnonce]' ); ?>
35
+ <input type="hidden" name="tribe-events-views[url]" value="<?php echo esc_url( $this->get( 'url' ) ); ?>" />
36
+ <?php endif; ?>
37
+
38
+ <div class="tribe-events-c-top-bar__datepicker">
39
+ <button
40
+ class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
41
+ data-js="tribe-events-top-bar-datepicker-button"
42
+ type="button"
43
  >
44
+ <time
45
+ datetime="<?php echo esc_attr( $the_date->format( 'Y-m' ) ); ?>"
46
+ class="tribe-events-c-top-bar__datepicker-time"
47
+ >
48
+ <?php echo esc_html( $formatted_grid_date ); ?>
49
+ </time>
50
+ </button>
51
+ <label
52
+ class="tribe-events-c-top-bar__datepicker-label tribe-common-a11y-visual-hide"
53
+ for="tribe-events-top-bar-date"
54
+ >
55
+ <?php esc_html_e( 'Select date.', 'the-events-calendar' ); ?>
56
+ </label>
57
+ <input
58
+ type="text"
59
+ class="tribe-events-c-top-bar__datepicker-input tribe-common-a11y-visual-hide"
60
+ data-js="tribe-events-top-bar-date"
61
+ id="tribe-events-top-bar-date"
62
+ name="tribe-events-views[tribe-bar-date]"
63
+ value="<?php echo esc_attr( $datepicker_date ); ?>"
64
+ tabindex="-1"
65
+ autocomplete="off"
66
+ />
67
+ <div class="tribe-events-c-top-bar__datepicker-container" data-js="tribe-events-top-bar-datepicker-container"></div>
68
+ </div>
69
+
70
+ <?php if ( $show_datepicker_submit ) : ?>
71
+ <?php $this->template( 'components/top-bar/datepicker/submit' ); ?>
72
+ </form>
73
+ <?php endif; ?>
the-events-calendar.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: The Events Calendar
4
  * Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
- * Version: 4.9.12
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
@@ -74,3 +74,4 @@ Tribe__Events__Main::instance();
74
  register_activation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'activate' ) );
75
  register_deactivation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'deactivate' ) );
76
 
 
2
  /**
3
  * Plugin Name: The Events Calendar
4
  * Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
+ * Version: 4.9.13
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
74
  register_activation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'activate' ) );
75
  register_deactivation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'deactivate' ) );
76
 
77
+ // GlotPress Manual Change
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit4905b28e588a12c1b4d3264a69cb1850::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit57a7bee611e58fdf0332bbcb2dd79453::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -39,11 +39,13 @@ return array(
39
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\ViewsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/ViewsTest.php',
40
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_ListTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_ListTest.php',
41
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_List\\ItemTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_List/ItemTest.php',
 
42
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\LoaderTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/LoaderTest.php',
43
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\MessagesTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/MessagesTest.php',
44
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Read_MoreTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Read_MoreTest.php',
45
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ActionsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/ActionsTest.php',
46
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ContentTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Actions/ContentTest.php',
 
47
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/NavTest.php',
48
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\NextTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/NextTest.php',
49
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\Next_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/Next_DisabledTest.php',
@@ -95,8 +97,11 @@ return array(
95
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TooltipTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TooltipTest.php',
96
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CostTest.php',
97
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CtaTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CtaTest.php',
 
 
98
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\DescriptionTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/DescriptionTest.php',
99
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/Featured_ImageTest.php',
 
100
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\More_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/More_EventsTest.php',
101
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_EventsTest.php',
102
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_Events\\Multiday_EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_Events/Multiday_EventTest.php',
@@ -125,6 +130,10 @@ return array(
125
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
126
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => $baseDir . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
127
  'Tribe\\Events\\Views\\V2\\Query\\MainQueryControlTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Query/MainQueryControlTest.php',
 
 
 
 
128
  'Tribe\\Events\\Views\\V2\\Rest_Endpoint' => $baseDir . '/src/Tribe/Views/V2/Rest_Endpoint.php',
129
  'Tribe\\Events\\Views\\V2\\Rest_EndpointTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Rest_EndpointTest.php',
130
  'Tribe\\Events\\Views\\V2\\Service_Provider' => $baseDir . '/src/Tribe/Views/V2/Service_Provider.php',
39
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\ViewsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/ViewsTest.php',
40
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_ListTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_ListTest.php',
41
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_List\\ItemTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_List/ItemTest.php',
42
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Ical_LinkTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Ical_LinkTest.php',
43
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\LoaderTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/LoaderTest.php',
44
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\MessagesTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/MessagesTest.php',
45
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Read_MoreTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Read_MoreTest.php',
46
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ActionsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/ActionsTest.php',
47
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ContentTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Actions/ContentTest.php',
48
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Datepicker\\SubmitTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Datepicker/SubmitTest.php',
49
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/NavTest.php',
50
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\NextTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/NextTest.php',
51
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\Next_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/Next_DisabledTest.php',
97
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TooltipTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TooltipTest.php',
98
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CostTest.php',
99
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CtaTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CtaTest.php',
100
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\DateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/DateTest.php',
101
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\Date\\MetaTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/Date/MetaTest.php',
102
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\DescriptionTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/DescriptionTest.php',
103
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/Featured_ImageTest.php',
104
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/TitleTest.php',
105
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\More_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/More_EventsTest.php',
106
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_EventsTest.php',
107
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_Events\\Multiday_EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_Events/Multiday_EventTest.php',
130
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
131
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => $baseDir . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
132
  'Tribe\\Events\\Views\\V2\\Query\\MainQueryControlTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Query/MainQueryControlTest.php',
133
+ 'Tribe\\Events\\Views\\V2\\Repository\\Event_Period' => $baseDir . '/src/Tribe/Views/V2/Repository/Event_Period.php',
134
+ 'Tribe\\Events\\Views\\V2\\Repository\\Event_Period_Test' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Repository/Event_Period_Test.php',
135
+ 'Tribe\\Events\\Views\\V2\\Repository\\Event_Result' => $baseDir . '/src/Tribe/Views/V2/Repository/Event_Result.php',
136
+ 'Tribe\\Events\\Views\\V2\\Repository\\Events_Result_Set' => $baseDir . '/src/Tribe/Views/V2/Repository/Events_Result_Set.php',
137
  'Tribe\\Events\\Views\\V2\\Rest_Endpoint' => $baseDir . '/src/Tribe/Views/V2/Rest_Endpoint.php',
138
  'Tribe\\Events\\Views\\V2\\Rest_EndpointTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Rest_EndpointTest.php',
139
  'Tribe\\Events\\Views\\V2\\Service_Provider' => $baseDir . '/src/Tribe/Views/V2/Service_Provider.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit4905b28e588a12c1b4d3264a69cb1850
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit4905b28e588a12c1b4d3264a69cb1850
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit4905b28e588a12c1b4d3264a69cb1850', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit4905b28e588a12c1b4d3264a69cb1850', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit57a7bee611e58fdf0332bbcb2dd79453
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit57a7bee611e58fdf0332bbcb2dd79453', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit57a7bee611e58fdf0332bbcb2dd79453', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit57a7bee611e58fdf0332bbcb2dd79453::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -64,11 +64,13 @@ class ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850
64
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\ViewsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/ViewsTest.php',
65
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_ListTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_ListTest.php',
66
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_List\\ItemTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_List/ItemTest.php',
 
67
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\LoaderTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/LoaderTest.php',
68
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\MessagesTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/MessagesTest.php',
69
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Read_MoreTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Read_MoreTest.php',
70
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ActionsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/ActionsTest.php',
71
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ContentTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Actions/ContentTest.php',
 
72
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/NavTest.php',
73
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\NextTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/NextTest.php',
74
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\Next_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/Next_DisabledTest.php',
@@ -120,8 +122,11 @@ class ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850
120
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TooltipTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TooltipTest.php',
121
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CostTest.php',
122
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CtaTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CtaTest.php',
 
 
123
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\DescriptionTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/DescriptionTest.php',
124
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/Featured_ImageTest.php',
 
125
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\More_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/More_EventsTest.php',
126
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_EventsTest.php',
127
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_Events\\Multiday_EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_Events/Multiday_EventTest.php',
@@ -150,6 +155,10 @@ class ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850
150
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
151
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
152
  'Tribe\\Events\\Views\\V2\\Query\\MainQueryControlTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Query/MainQueryControlTest.php',
 
 
 
 
153
  'Tribe\\Events\\Views\\V2\\Rest_Endpoint' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Rest_Endpoint.php',
154
  'Tribe\\Events\\Views\\V2\\Rest_EndpointTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Rest_EndpointTest.php',
155
  'Tribe\\Events\\Views\\V2\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Service_Provider.php',
@@ -217,9 +226,9 @@ class ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850
217
  public static function getInitializer(ClassLoader $loader)
218
  {
219
  return \Closure::bind(function () use ($loader) {
220
- $loader->prefixLengthsPsr4 = ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850::$prefixLengthsPsr4;
221
- $loader->prefixDirsPsr4 = ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850::$prefixDirsPsr4;
222
- $loader->classMap = ComposerStaticInit4905b28e588a12c1b4d3264a69cb1850::$classMap;
223
 
224
  }, null, ClassLoader::class);
225
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit57a7bee611e58fdf0332bbcb2dd79453
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
64
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\ViewsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/ViewsTest.php',
65
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_ListTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_ListTest.php',
66
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Views\\Views_List\\ItemTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Views/Views_List/ItemTest.php',
67
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Ical_LinkTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Ical_LinkTest.php',
68
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\LoaderTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/LoaderTest.php',
69
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\MessagesTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/MessagesTest.php',
70
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Read_MoreTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Read_MoreTest.php',
71
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ActionsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/ActionsTest.php',
72
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ContentTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Actions/ContentTest.php',
73
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Datepicker\\SubmitTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Datepicker/SubmitTest.php',
74
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/NavTest.php',
75
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\NextTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/NextTest.php',
76
  'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\Next_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/Next_DisabledTest.php',
122
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TooltipTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TooltipTest.php',
123
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CostTest.php',
124
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\CtaTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/CtaTest.php',
125
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\DateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/DateTest.php',
126
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\Date\\MetaTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/Date/MetaTest.php',
127
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\DescriptionTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/DescriptionTest.php',
128
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/Featured_ImageTest.php',
129
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Tooltip\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Tooltip/TitleTest.php',
130
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\More_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/More_EventsTest.php',
131
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_EventsTest.php',
132
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_Events\\Multiday_EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_Events/Multiday_EventTest.php',
155
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
156
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
157
  'Tribe\\Events\\Views\\V2\\Query\\MainQueryControlTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Query/MainQueryControlTest.php',
158
+ 'Tribe\\Events\\Views\\V2\\Repository\\Event_Period' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Repository/Event_Period.php',
159
+ 'Tribe\\Events\\Views\\V2\\Repository\\Event_Period_Test' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Repository/Event_Period_Test.php',
160
+ 'Tribe\\Events\\Views\\V2\\Repository\\Event_Result' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Repository/Event_Result.php',
161
+ 'Tribe\\Events\\Views\\V2\\Repository\\Events_Result_Set' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Repository/Events_Result_Set.php',
162
  'Tribe\\Events\\Views\\V2\\Rest_Endpoint' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Rest_Endpoint.php',
163
  'Tribe\\Events\\Views\\V2\\Rest_EndpointTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Rest_EndpointTest.php',
164
  'Tribe\\Events\\Views\\V2\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Service_Provider.php',
226
  public static function getInitializer(ClassLoader $loader)
227
  {
228
  return \Closure::bind(function () use ($loader) {
229
+ $loader->prefixLengthsPsr4 = ComposerStaticInit57a7bee611e58fdf0332bbcb2dd79453::$prefixLengthsPsr4;
230
+ $loader->prefixDirsPsr4 = ComposerStaticInit57a7bee611e58fdf0332bbcb2dd79453::$prefixDirsPsr4;
231
+ $loader->classMap = ComposerStaticInit57a7bee611e58fdf0332bbcb2dd79453::$classMap;
232
 
233
  }, null, ClassLoader::class);
234
  }