The Events Calendar - Version 4.9.10

Version Description

Download this release

Release Info

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

Code changes from version 4.9.9 to 4.9.10

Files changed (201) hide show
  1. common/lang/tribe-common-af.mo +0 -0
  2. common/lang/tribe-common-ar.mo +0 -0
  3. common/lang/tribe-common-bg_BG.mo +0 -0
  4. common/lang/tribe-common-ca.mo +0 -0
  5. common/lang/tribe-common-cs_CZ.mo +0 -0
  6. common/lang/tribe-common-da_DK.mo +0 -0
  7. common/lang/tribe-common-de_DE.mo +0 -0
  8. common/lang/tribe-common-el.mo +0 -0
  9. common/lang/tribe-common-en_GB.mo +0 -0
  10. common/lang/tribe-common-es_ES.mo +0 -0
  11. common/lang/tribe-common-et.mo +0 -0
  12. common/lang/tribe-common-fi.mo +0 -0
  13. common/lang/tribe-common-fr_CA.mo +0 -0
  14. common/lang/tribe-common-fr_FR.mo +0 -0
  15. common/lang/tribe-common-hu_HU.mo +0 -0
  16. common/lang/tribe-common-id_ID.mo +0 -0
  17. common/lang/tribe-common-is_IS.mo +0 -0
  18. common/lang/tribe-common-it_IT.mo +0 -0
  19. common/lang/tribe-common-ja.mo +0 -0
  20. common/lang/tribe-common-lt_LT.mo +0 -0
  21. common/lang/tribe-common-lv.mo +0 -0
  22. common/lang/tribe-common-nb_NO.mo +0 -0
  23. common/lang/tribe-common-nl_NL.mo +0 -0
  24. common/lang/tribe-common-pl_PL.mo +0 -0
  25. common/lang/tribe-common-pt_BR.mo +0 -0
  26. common/lang/tribe-common-pt_PT.mo +0 -0
  27. common/lang/tribe-common-ro_RO.mo +0 -0
  28. common/lang/tribe-common-ru_RU.mo +0 -0
  29. common/lang/tribe-common-sk_SK.mo +0 -0
  30. common/lang/tribe-common-sl_SI.mo +0 -0
  31. common/lang/tribe-common-sr_RS.mo +0 -0
  32. common/lang/tribe-common-sv_SE.mo +0 -0
  33. common/lang/tribe-common-tr_TR.mo +0 -0
  34. common/lang/tribe-common-zh_CN.mo +0 -0
  35. common/lang/tribe-common-zh_TW.mo +0 -0
  36. common/lang/tribe-common.pot +61 -59
  37. common/src/Tribe/Context.php +81 -0
  38. common/src/Tribe/Context/locations.php +17 -0
  39. common/src/Tribe/Main.php +21 -2
  40. common/src/Tribe/Promoter/Auth.php +0 -10
  41. common/src/Tribe/Promoter/Connector.php +87 -39
  42. common/src/Tribe/Repository.php +7 -1
  43. common/src/Tribe/Service_Providers/{Promoter_Connector.php → Promoter.php} +6 -4
  44. common/src/admin-views/tribe-options-display.php +2 -2
  45. common/src/functions/multibyte.php +31 -0
  46. common/src/functions/utils.php +42 -2
  47. common/src/resources/css/common.css +78 -0
  48. common/src/resources/css/common.min.css +1 -1
  49. common/src/resources/postcss/README.md +266 -0
  50. common/src/resources/postcss/components/_all.pcss +2 -0
  51. common/src/resources/postcss/components/_loader.pcss +61 -0
  52. common/src/resources/postcss/utilities/variables/_borders.pcss +5 -0
  53. common/src/resources/postcss/utilities/variables/_box-shadows.pcss +1 -0
  54. common/src/resources/postcss/utilities/variables/_colors.pcss +1 -0
  55. common/vendor/autoload.php +1 -1
  56. common/vendor/autoload_52.php +1 -1
  57. common/vendor/composer/autoload_real.php +4 -4
  58. common/vendor/composer/autoload_real_52.php +3 -3
  59. common/vendor/composer/autoload_static.php +5 -5
  60. common/vendor/composer/installed.json +6 -6
  61. common/vendor/lucatume/di52/src/tad/DI52/Container.php +6 -2
  62. lang/the-events-calendar-de_DE.mo +0 -0
  63. lang/the-events-calendar-el.mo +0 -0
  64. lang/the-events-calendar-es_VE.mo +0 -0
  65. lang/the-events-calendar-fr_FR.mo +0 -0
  66. lang/the-events-calendar-nb_NO.mo +0 -0
  67. lang/the-events-calendar-sv_SE.mo +0 -0
  68. lang/the-events-calendar-zh_CN.mo +0 -0
  69. lang/the-events-calendar.pot +75 -64
  70. readme.txt +12 -3
  71. src/Tribe/Main.php +1 -1
  72. src/Tribe/Models/Post_Types/Event.php +1 -0
  73. src/Tribe/Organizer.php +3 -10
  74. src/Tribe/Service_Providers/Context.php +52 -0
  75. src/Tribe/Venue.php +3 -5
  76. src/Tribe/Views/V2/Assets.php +55 -11
  77. src/Tribe/Views/V2/Hooks.php +66 -15
  78. src/Tribe/Views/V2/Query/Abstract_Query_Controller.php +3 -0
  79. src/Tribe/Views/V2/Template/Event.php +0 -2
  80. src/Tribe/Views/V2/Template/Excerpt.php +80 -0
  81. src/Tribe/Views/V2/Template/Page.php +29 -13
  82. src/Tribe/Views/V2/Template/Title.php +378 -0
  83. src/Tribe/Views/V2/Url.php +53 -4
  84. src/Tribe/Views/V2/View.php +132 -11
  85. src/Tribe/Views/V2/Views/By_Day_View.php +4 -1
  86. src/Tribe/Views/V2/Views/Day_View.php +66 -112
  87. src/Tribe/Views/V2/Views/List_View.php +22 -3
  88. src/Tribe/Views/V2/Views/Month_View.php +13 -8
  89. src/admin-views/aggregator/settings.php +1 -1
  90. src/resources/css/views-full.css +80 -33
  91. src/resources/css/views-full.min.css +1 -1
  92. src/resources/js/views/accordion.js +12 -1
  93. src/resources/js/views/datepicker.js +77 -126
  94. src/resources/js/views/events-bar-inputs.js +3 -1
  95. src/resources/js/views/events-bar.js +3 -1
  96. src/resources/js/views/manager.js +10 -2
  97. src/resources/js/views/month-grid.js +3 -1
  98. src/resources/js/views/month-mobile-events.js +3 -1
  99. src/resources/js/views/multiday-events.js +3 -1
  100. src/resources/js/views/tooltip.js +150 -43
  101. src/resources/js/views/view-selector.js +3 -1
  102. src/resources/postcss/README.md +215 -0
  103. src/resources/postcss/components/_all.pcss +3 -0
  104. src/resources/postcss/components/_events-bar.pcss +23 -0
  105. src/resources/postcss/{views → components}/_loader.pcss +7 -5
  106. src/resources/postcss/components/_small-cta.pcss +8 -0
  107. src/resources/postcss/components/_tooltip.pcss +0 -8
  108. src/resources/postcss/components/_top-bar.pcss +14 -1
  109. src/resources/postcss/utilities/variables/_borders.pcss +5 -0
  110. src/resources/postcss/utilities/variables/_box-shadows.pcss +1 -0
  111. src/resources/postcss/utilities/variables/_colors.pcss +1 -0
  112. src/resources/postcss/views/_all.pcss +0 -3
  113. src/resources/postcss/views/month/_calendar-header.pcss +14 -0
  114. src/resources/postcss/views/month/_nav.pcss +1 -8
  115. src/views/blocks/event-organizer.php +1 -1
  116. src/views/v2/{data.php → components/data.php} +14 -12
  117. src/views/v2/components/events-bar.php +41 -0
  118. src/views/v2/{events-bar → components/events-bar}/filters.php +2 -2
  119. src/views/v2/{events-bar → components/events-bar}/search-button.php +3 -3
  120. src/views/v2/{events-bar → components/events-bar}/search-button/icon.php +2 -2
  121. src/views/v2/{events-bar → components/events-bar}/search.php +4 -4
  122. src/views/v2/{events-bar → components/events-bar}/search/keyword.php +2 -2
  123. src/views/v2/{events-bar → components/events-bar}/search/submit.php +5 -3
  124. src/views/v2/{events-bar → components/events-bar}/tabs.php +2 -2
  125. src/views/v2/{events-bar → components/events-bar}/views.php +3 -3
  126. src/views/v2/{events-bar → components/events-bar}/views/list.php +3 -3
  127. src/views/v2/{events-bar → components/events-bar}/views/list/item.php +2 -2
  128. src/views/v2/components/filter-bar.php +15 -0
  129. src/views/v2/components/loader.php +26 -0
  130. src/views/v2/components/read-more.php +23 -0
  131. src/views/v2/components/top-bar/actions.php +2 -2
  132. src/views/v2/components/top-bar/actions/content.php +2 -2
  133. src/views/v2/components/top-bar/nav.php +2 -2
  134. src/views/v2/components/top-bar/nav/next-disabled.php +2 -2
  135. src/views/v2/components/top-bar/nav/next.php +2 -2
  136. src/views/v2/components/top-bar/nav/prev-disabled.php +2 -2
  137. src/views/v2/components/top-bar/nav/prev.php +2 -2
  138. src/views/v2/{day → components}/top-bar/today.php +3 -4
  139. src/views/v2/day.php +5 -3
  140. src/views/v2/day/event.php +0 -1
  141. src/views/v2/day/event/date.php +0 -1
  142. src/views/v2/day/event/date/meta.php +0 -1
  143. src/views/v2/day/event/description.php +6 -3
  144. src/views/v2/day/event/featured-image.php +0 -1
  145. src/views/v2/day/event/title.php +0 -1
  146. src/views/v2/day/event/venue.php +0 -1
  147. src/views/v2/day/nav/next-disabled.php +1 -3
  148. src/views/v2/day/nav/next.php +2 -2
  149. src/views/v2/day/nav/prev-disabled.php +1 -3
  150. src/views/v2/day/nav/prev.php +2 -2
  151. src/views/v2/day/top-bar.php +2 -2
  152. src/views/v2/day/top-bar/datepicker.php +6 -3
  153. src/views/v2/events-bar.php +0 -39
  154. src/views/v2/list.php +5 -3
  155. src/views/v2/list/event.php +0 -1
  156. src/views/v2/list/event/date.php +0 -1
  157. src/views/v2/list/event/date/meta.php +0 -1
  158. src/views/v2/list/event/description.php +6 -3
  159. src/views/v2/list/event/featured-image.php +0 -1
  160. src/views/v2/list/event/title.php +0 -1
  161. src/views/v2/list/event/venue.php +0 -1
  162. src/views/v2/list/month-separator.php +4 -0
  163. src/views/v2/list/nav.php +2 -2
  164. src/views/v2/list/nav/next-disabled.php +1 -3
  165. src/views/v2/list/nav/next.php +1 -1
  166. src/views/v2/list/nav/prev-disabled.php +1 -3
  167. src/views/v2/list/nav/prev.php +1 -1
  168. src/views/v2/list/nav/today.php +3 -10
  169. src/views/v2/list/top-bar.php +2 -2
  170. src/views/v2/list/top-bar/datepicker.php +27 -7
  171. src/views/v2/list/top-bar/today.php +0 -24
  172. src/views/v2/loader.php +0 -9
  173. src/views/v2/month.php +6 -4
  174. src/views/v2/month/calendar-body/day.php +1 -1
  175. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date/meta.php +4 -0
  176. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/title.php +8 -13
  177. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip.php +11 -11
  178. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description.php +8 -6
  179. src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image.php +3 -0
  180. src/views/v2/month/calendar-header.php +10 -3
  181. src/views/v2/month/mobile-events.php +1 -1
  182. src/views/v2/month/mobile-events/mobile-day.php +23 -1
  183. src/views/v2/month/mobile-events/mobile-day/mobile-event.php +0 -1
  184. src/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php +1 -2
  185. src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php +5 -10
  186. src/views/v2/month/mobile-events/mobile-day/mobile-event/featured-image.php +0 -1
  187. src/views/v2/month/mobile-events/mobile-day/mobile-event/title.php +2 -2
  188. src/views/v2/month/{nav.php → mobile-events/nav.php} +8 -9
  189. src/views/v2/month/{nav → mobile-events/nav}/next-disabled.php +2 -2
  190. src/views/v2/month/{nav → mobile-events/nav}/next.php +2 -2
  191. src/views/v2/month/{nav → mobile-events/nav}/prev-disabled.php +2 -2
  192. src/views/v2/month/{nav → mobile-events/nav}/prev.php +2 -2
  193. src/views/v2/month/{nav → mobile-events/nav}/today.php +4 -11
  194. src/views/v2/month/top-bar.php +2 -2
  195. src/views/v2/month/top-bar/datepicker.php +6 -3
  196. src/views/v2/month/top-bar/today.php +0 -24
  197. the-events-calendar.php +1 -1
  198. vendor/autoload.php +1 -1
  199. vendor/composer/autoload_classmap.php +59 -1
  200. vendor/composer/autoload_real.php +4 -4
  201. vendor/composer/autoload_static.php +63 -5
common/lang/tribe-common-af.mo CHANGED
Binary file
common/lang/tribe-common-ar.mo CHANGED
Binary file
common/lang/tribe-common-bg_BG.mo CHANGED
Binary file
common/lang/tribe-common-ca.mo CHANGED
Binary file
common/lang/tribe-common-cs_CZ.mo CHANGED
Binary file
common/lang/tribe-common-da_DK.mo CHANGED
Binary file
common/lang/tribe-common-de_DE.mo CHANGED
Binary file
common/lang/tribe-common-el.mo CHANGED
Binary file
common/lang/tribe-common-en_GB.mo CHANGED
Binary file
common/lang/tribe-common-es_ES.mo CHANGED
Binary file
common/lang/tribe-common-et.mo CHANGED
Binary file
common/lang/tribe-common-fi.mo CHANGED
Binary file
common/lang/tribe-common-fr_CA.mo CHANGED
Binary file
common/lang/tribe-common-fr_FR.mo CHANGED
Binary file
common/lang/tribe-common-hu_HU.mo CHANGED
Binary file
common/lang/tribe-common-id_ID.mo CHANGED
Binary file
common/lang/tribe-common-is_IS.mo CHANGED
Binary file
common/lang/tribe-common-it_IT.mo CHANGED
Binary file
common/lang/tribe-common-ja.mo CHANGED
Binary file
common/lang/tribe-common-lt_LT.mo CHANGED
Binary file
common/lang/tribe-common-lv.mo CHANGED
Binary file
common/lang/tribe-common-nb_NO.mo CHANGED
Binary file
common/lang/tribe-common-nl_NL.mo CHANGED
Binary file
common/lang/tribe-common-pl_PL.mo CHANGED
Binary file
common/lang/tribe-common-pt_BR.mo CHANGED
Binary file
common/lang/tribe-common-pt_PT.mo CHANGED
Binary file
common/lang/tribe-common-ro_RO.mo CHANGED
Binary file
common/lang/tribe-common-ru_RU.mo CHANGED
Binary file
common/lang/tribe-common-sk_SK.mo CHANGED
Binary file
common/lang/tribe-common-sl_SI.mo CHANGED
Binary file
common/lang/tribe-common-sr_RS.mo CHANGED
Binary file
common/lang/tribe-common-sv_SE.mo CHANGED
Binary file
common/lang/tribe-common-tr_TR.mo CHANGED
Binary file
common/lang/tribe-common-zh_CN.mo CHANGED
Binary file
common/lang/tribe-common-zh_TW.mo CHANGED
Binary file
common/lang/tribe-common.pot CHANGED
@@ -2,13 +2,13 @@
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.17\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2019-09-08 14:53:37+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-09-08 14:53\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -989,135 +989,135 @@ msgid "Macau"
989
  msgstr ""
990
 
991
  #: src/Tribe/Languages/Locations.php:185
992
- msgid "Macedonia"
993
  msgstr ""
994
 
995
  #: src/Tribe/Languages/Locations.php:186
996
- msgid "Madagascar"
997
  msgstr ""
998
 
999
  #: src/Tribe/Languages/Locations.php:187
1000
- msgid "Malawi"
1001
  msgstr ""
1002
 
1003
  #: src/Tribe/Languages/Locations.php:188
1004
- msgid "Malaysia"
1005
  msgstr ""
1006
 
1007
  #: src/Tribe/Languages/Locations.php:189
1008
- msgid "Maldives"
1009
  msgstr ""
1010
 
1011
  #: src/Tribe/Languages/Locations.php:190
1012
- msgid "Mali"
1013
  msgstr ""
1014
 
1015
  #: src/Tribe/Languages/Locations.php:191
1016
- msgid "Malta"
1017
  msgstr ""
1018
 
1019
  #: src/Tribe/Languages/Locations.php:192
1020
- msgid "Marshall Islands"
1021
  msgstr ""
1022
 
1023
  #: src/Tribe/Languages/Locations.php:193
1024
- msgid "Martinique"
1025
  msgstr ""
1026
 
1027
  #: src/Tribe/Languages/Locations.php:194
1028
- msgid "Mauritania"
1029
  msgstr ""
1030
 
1031
  #: src/Tribe/Languages/Locations.php:195
1032
- msgid "Mauritius"
1033
  msgstr ""
1034
 
1035
  #: src/Tribe/Languages/Locations.php:196
1036
- msgid "Mayotte"
1037
  msgstr ""
1038
 
1039
  #: src/Tribe/Languages/Locations.php:197
1040
- msgid "Mexico"
1041
  msgstr ""
1042
 
1043
  #: src/Tribe/Languages/Locations.php:198
1044
- msgid "Micronesia, Federated States of"
1045
  msgstr ""
1046
 
1047
  #: src/Tribe/Languages/Locations.php:199
1048
- msgid "Moldova, Republic of"
1049
  msgstr ""
1050
 
1051
  #: src/Tribe/Languages/Locations.php:200
1052
- msgid "Monaco"
1053
  msgstr ""
1054
 
1055
  #: src/Tribe/Languages/Locations.php:201
1056
- msgid "Mongolia"
1057
  msgstr ""
1058
 
1059
  #: src/Tribe/Languages/Locations.php:202
1060
- msgid "Montenegro"
1061
  msgstr ""
1062
 
1063
  #: src/Tribe/Languages/Locations.php:203
1064
- msgid "Montserrat"
1065
  msgstr ""
1066
 
1067
  #: src/Tribe/Languages/Locations.php:204
1068
- msgid "Morocco"
1069
  msgstr ""
1070
 
1071
  #: src/Tribe/Languages/Locations.php:205
1072
- msgid "Mozambique"
1073
  msgstr ""
1074
 
1075
  #: src/Tribe/Languages/Locations.php:206
1076
- msgid "Myanmar"
1077
  msgstr ""
1078
 
1079
  #: src/Tribe/Languages/Locations.php:207
1080
- msgid "Namibia"
1081
  msgstr ""
1082
 
1083
  #: src/Tribe/Languages/Locations.php:208
1084
- msgid "Nauru"
1085
  msgstr ""
1086
 
1087
  #: src/Tribe/Languages/Locations.php:209
1088
- msgid "Nepal"
1089
  msgstr ""
1090
 
1091
  #: src/Tribe/Languages/Locations.php:210
1092
- msgid "Netherlands"
1093
  msgstr ""
1094
 
1095
  #: src/Tribe/Languages/Locations.php:211
1096
- msgid "New Caledonia"
1097
  msgstr ""
1098
 
1099
  #: src/Tribe/Languages/Locations.php:212
1100
- msgid "New Zealand"
1101
  msgstr ""
1102
 
1103
  #: src/Tribe/Languages/Locations.php:213
1104
- msgid "Nicaragua"
1105
  msgstr ""
1106
 
1107
  #: src/Tribe/Languages/Locations.php:214
1108
- msgid "Niger"
1109
  msgstr ""
1110
 
1111
  #: src/Tribe/Languages/Locations.php:215
1112
- msgid "Nigeria"
1113
  msgstr ""
1114
 
1115
  #: src/Tribe/Languages/Locations.php:216
1116
- msgid "Niue"
1117
  msgstr ""
1118
 
1119
  #: src/Tribe/Languages/Locations.php:217
1120
- msgid "Norfolk Island"
1121
  msgstr ""
1122
 
1123
  #: src/Tribe/Languages/Locations.php:218
@@ -1682,87 +1682,87 @@ msgstr ""
1682
  msgid "Full debug (all events)"
1683
  msgstr ""
1684
 
1685
- #: src/Tribe/Main.php:281
1686
  msgid ": activate to sort column ascending"
1687
  msgstr ""
1688
 
1689
- #: src/Tribe/Main.php:282
1690
  msgid ": activate to sort column descending"
1691
  msgstr ""
1692
 
1693
- #: src/Tribe/Main.php:284
1694
  msgid "Show _MENU_ entries"
1695
  msgstr ""
1696
 
1697
- #: src/Tribe/Main.php:285
1698
  msgid "No data available in table"
1699
  msgstr ""
1700
 
1701
- #: src/Tribe/Main.php:286
1702
  msgid "Showing _START_ to _END_ of _TOTAL_ entries"
1703
  msgstr ""
1704
 
1705
- #: src/Tribe/Main.php:287
1706
  msgid "Showing 0 to 0 of 0 entries"
1707
  msgstr ""
1708
 
1709
- #: src/Tribe/Main.php:288
1710
  msgid "(filtered from _MAX_ total entries)"
1711
  msgstr ""
1712
 
1713
- #: src/Tribe/Main.php:289
1714
  msgid "No matching records found"
1715
  msgstr ""
1716
 
1717
- #: src/Tribe/Main.php:290
1718
  msgid "Search:"
1719
  msgstr ""
1720
 
1721
- #: src/Tribe/Main.php:291
1722
  msgid "All items on this page were selected. "
1723
  msgstr ""
1724
 
1725
- #: src/Tribe/Main.php:292
1726
  msgid "Select all pages"
1727
  msgstr ""
1728
 
1729
- #: src/Tribe/Main.php:293
1730
  msgid "Clear Selection."
1731
  msgstr ""
1732
 
1733
- #: src/Tribe/Main.php:295
1734
  msgid "All"
1735
  msgstr ""
1736
 
1737
- #: src/Tribe/Main.php:296 src/Tribe/Main.php:313
1738
  msgid "Next"
1739
  msgstr ""
1740
 
1741
- #: src/Tribe/Main.php:297
1742
  msgid "Previous"
1743
  msgstr ""
1744
 
1745
- #: src/Tribe/Main.php:302
1746
  msgid ": Selected %d rows"
1747
  msgstr ""
1748
 
1749
- #: src/Tribe/Main.php:303
1750
  msgid ": Selected 1 row"
1751
  msgstr ""
1752
 
1753
- #: src/Tribe/Main.php:314
1754
  msgid "Prev"
1755
  msgstr ""
1756
 
1757
- #: src/Tribe/Main.php:315 src/Tribe/Main.php:317
1758
  msgid "Today"
1759
  msgstr ""
1760
 
1761
- #: src/Tribe/Main.php:316
1762
  msgid "Done"
1763
  msgstr ""
1764
 
1765
- #: src/Tribe/Main.php:318
1766
  msgid "Clear"
1767
  msgstr ""
1768
 
@@ -2353,11 +2353,13 @@ msgid ""
2353
  msgstr ""
2354
 
2355
  #: src/admin-views/tribe-options-display.php:36
2356
- msgid "Datepicker Date Format"
2357
  msgstr ""
2358
 
2359
  #: src/admin-views/tribe-options-display.php:37
2360
- msgid "Select the date format to use in datepickers"
 
 
2361
  msgstr ""
2362
 
2363
  #: src/admin-views/tribe-options-general.php:10
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.20\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
+ "POT-Creation-Date: 2019-10-15 06:31:39+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-10-15 06:31\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
989
  msgstr ""
990
 
991
  #: src/Tribe/Languages/Locations.php:185
992
+ msgid "Madagascar"
993
  msgstr ""
994
 
995
  #: src/Tribe/Languages/Locations.php:186
996
+ msgid "Malawi"
997
  msgstr ""
998
 
999
  #: src/Tribe/Languages/Locations.php:187
1000
+ msgid "Malaysia"
1001
  msgstr ""
1002
 
1003
  #: src/Tribe/Languages/Locations.php:188
1004
+ msgid "Maldives"
1005
  msgstr ""
1006
 
1007
  #: src/Tribe/Languages/Locations.php:189
1008
+ msgid "Mali"
1009
  msgstr ""
1010
 
1011
  #: src/Tribe/Languages/Locations.php:190
1012
+ msgid "Malta"
1013
  msgstr ""
1014
 
1015
  #: src/Tribe/Languages/Locations.php:191
1016
+ msgid "Marshall Islands"
1017
  msgstr ""
1018
 
1019
  #: src/Tribe/Languages/Locations.php:192
1020
+ msgid "Martinique"
1021
  msgstr ""
1022
 
1023
  #: src/Tribe/Languages/Locations.php:193
1024
+ msgid "Mauritania"
1025
  msgstr ""
1026
 
1027
  #: src/Tribe/Languages/Locations.php:194
1028
+ msgid "Mauritius"
1029
  msgstr ""
1030
 
1031
  #: src/Tribe/Languages/Locations.php:195
1032
+ msgid "Mayotte"
1033
  msgstr ""
1034
 
1035
  #: src/Tribe/Languages/Locations.php:196
1036
+ msgid "Mexico"
1037
  msgstr ""
1038
 
1039
  #: src/Tribe/Languages/Locations.php:197
1040
+ msgid "Micronesia, Federated States of"
1041
  msgstr ""
1042
 
1043
  #: src/Tribe/Languages/Locations.php:198
1044
+ msgid "Moldova, Republic of"
1045
  msgstr ""
1046
 
1047
  #: src/Tribe/Languages/Locations.php:199
1048
+ msgid "Monaco"
1049
  msgstr ""
1050
 
1051
  #: src/Tribe/Languages/Locations.php:200
1052
+ msgid "Mongolia"
1053
  msgstr ""
1054
 
1055
  #: src/Tribe/Languages/Locations.php:201
1056
+ msgid "Montenegro"
1057
  msgstr ""
1058
 
1059
  #: src/Tribe/Languages/Locations.php:202
1060
+ msgid "Montserrat"
1061
  msgstr ""
1062
 
1063
  #: src/Tribe/Languages/Locations.php:203
1064
+ msgid "Morocco"
1065
  msgstr ""
1066
 
1067
  #: src/Tribe/Languages/Locations.php:204
1068
+ msgid "Mozambique"
1069
  msgstr ""
1070
 
1071
  #: src/Tribe/Languages/Locations.php:205
1072
+ msgid "Myanmar"
1073
  msgstr ""
1074
 
1075
  #: src/Tribe/Languages/Locations.php:206
1076
+ msgid "Namibia"
1077
  msgstr ""
1078
 
1079
  #: src/Tribe/Languages/Locations.php:207
1080
+ msgid "Nauru"
1081
  msgstr ""
1082
 
1083
  #: src/Tribe/Languages/Locations.php:208
1084
+ msgid "Nepal"
1085
  msgstr ""
1086
 
1087
  #: src/Tribe/Languages/Locations.php:209
1088
+ msgid "Netherlands"
1089
  msgstr ""
1090
 
1091
  #: src/Tribe/Languages/Locations.php:210
1092
+ msgid "New Caledonia"
1093
  msgstr ""
1094
 
1095
  #: src/Tribe/Languages/Locations.php:211
1096
+ msgid "New Zealand"
1097
  msgstr ""
1098
 
1099
  #: src/Tribe/Languages/Locations.php:212
1100
+ msgid "Nicaragua"
1101
  msgstr ""
1102
 
1103
  #: src/Tribe/Languages/Locations.php:213
1104
+ msgid "Niger"
1105
  msgstr ""
1106
 
1107
  #: src/Tribe/Languages/Locations.php:214
1108
+ msgid "Nigeria"
1109
  msgstr ""
1110
 
1111
  #: src/Tribe/Languages/Locations.php:215
1112
+ msgid "Niue"
1113
  msgstr ""
1114
 
1115
  #: src/Tribe/Languages/Locations.php:216
1116
+ msgid "Norfolk Island"
1117
  msgstr ""
1118
 
1119
  #: src/Tribe/Languages/Locations.php:217
1120
+ msgid "North Macedonia"
1121
  msgstr ""
1122
 
1123
  #: src/Tribe/Languages/Locations.php:218
1682
  msgid "Full debug (all events)"
1683
  msgstr ""
1684
 
1685
+ #: src/Tribe/Main.php:283
1686
  msgid ": activate to sort column ascending"
1687
  msgstr ""
1688
 
1689
+ #: src/Tribe/Main.php:284
1690
  msgid ": activate to sort column descending"
1691
  msgstr ""
1692
 
1693
+ #: src/Tribe/Main.php:286
1694
  msgid "Show _MENU_ entries"
1695
  msgstr ""
1696
 
1697
+ #: src/Tribe/Main.php:287
1698
  msgid "No data available in table"
1699
  msgstr ""
1700
 
1701
+ #: src/Tribe/Main.php:288
1702
  msgid "Showing _START_ to _END_ of _TOTAL_ entries"
1703
  msgstr ""
1704
 
1705
+ #: src/Tribe/Main.php:289
1706
  msgid "Showing 0 to 0 of 0 entries"
1707
  msgstr ""
1708
 
1709
+ #: src/Tribe/Main.php:290
1710
  msgid "(filtered from _MAX_ total entries)"
1711
  msgstr ""
1712
 
1713
+ #: src/Tribe/Main.php:291
1714
  msgid "No matching records found"
1715
  msgstr ""
1716
 
1717
+ #: src/Tribe/Main.php:292
1718
  msgid "Search:"
1719
  msgstr ""
1720
 
1721
+ #: src/Tribe/Main.php:293
1722
  msgid "All items on this page were selected. "
1723
  msgstr ""
1724
 
1725
+ #: src/Tribe/Main.php:294
1726
  msgid "Select all pages"
1727
  msgstr ""
1728
 
1729
+ #: src/Tribe/Main.php:295
1730
  msgid "Clear Selection."
1731
  msgstr ""
1732
 
1733
+ #: src/Tribe/Main.php:297
1734
  msgid "All"
1735
  msgstr ""
1736
 
1737
+ #: src/Tribe/Main.php:298 src/Tribe/Main.php:315
1738
  msgid "Next"
1739
  msgstr ""
1740
 
1741
+ #: src/Tribe/Main.php:299
1742
  msgid "Previous"
1743
  msgstr ""
1744
 
1745
+ #: src/Tribe/Main.php:304
1746
  msgid ": Selected %d rows"
1747
  msgstr ""
1748
 
1749
+ #: src/Tribe/Main.php:305
1750
  msgid ": Selected 1 row"
1751
  msgstr ""
1752
 
1753
+ #: src/Tribe/Main.php:316
1754
  msgid "Prev"
1755
  msgstr ""
1756
 
1757
+ #: src/Tribe/Main.php:317 src/Tribe/Main.php:319
1758
  msgid "Today"
1759
  msgstr ""
1760
 
1761
+ #: src/Tribe/Main.php:318
1762
  msgid "Done"
1763
  msgstr ""
1764
 
1765
+ #: src/Tribe/Main.php:320
1766
  msgid "Clear"
1767
  msgstr ""
1768
 
2353
  msgstr ""
2354
 
2355
  #: src/admin-views/tribe-options-display.php:36
2356
+ msgid "Compact Date Format"
2357
  msgstr ""
2358
 
2359
  #: src/admin-views/tribe-options-display.php:37
2360
+ msgid ""
2361
+ "Select the date format used for elements with minimal space, such as in "
2362
+ "datepickers."
2363
  msgstr ""
2364
 
2365
  #: src/admin-views/tribe-options-general.php:10
common/src/Tribe/Context.php CHANGED
@@ -59,6 +59,13 @@ class Tribe__Context {
59
  */
60
  const QUERY_PROP = 'query_prop';
61
 
 
 
 
 
 
 
 
62
  /**
63
  * The key to locate a context value as the value of a constant.
64
  *
@@ -1490,4 +1497,78 @@ class Tribe__Context {
1490
 
1491
  return $callback( $this->get( $location ) );
1492
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1493
  }
59
  */
60
  const QUERY_PROP = 'query_prop';
61
 
62
+ /**
63
+ * The key to locate a context value as the value of the main query (global `$wp_query`) method return value.
64
+ *
65
+ * @since TBD
66
+ */
67
+ const QUERY_METHOD = 'query_method';
68
+
69
  /**
70
  * The key to locate a context value as the value of a constant.
71
  *
1497
 
1498
  return $callback( $this->get( $location ) );
1499
  }
1500
+
1501
+ /**
1502
+ * Checks whether the current request is a REST API one or not.
1503
+ *
1504
+ * @since TBD
1505
+ *
1506
+ * @return bool Whether the current request is a REST API one or not.
1507
+ */
1508
+ public function doing_rest() {
1509
+ return defined( 'REST_REQUEST' ) && REST_REQUEST;
1510
+ }
1511
+
1512
+ /**
1513
+ * Reads the value from one or more global WP_Query object methods.
1514
+ *
1515
+ * @since TBD
1516
+ *
1517
+ * @param array $query_vars The list of query methods to call, in order.
1518
+ * @param mixed $default The default value to return if no method was defined on the global `WP_Query` object.
1519
+ *
1520
+ * @return mixed The first valid value found or the default value.
1521
+ */
1522
+ public function query_method( $methods, $default ) {
1523
+ global $wp_query;
1524
+ $found = $default;
1525
+
1526
+ foreach ( $methods as $method ) {
1527
+ $this_value = $wp_query instanceof WP_Query && method_exists( $wp_query, $method )
1528
+ ? call_user_func( [ $wp_query, $method ] )
1529
+ : static::NOT_FOUND;
1530
+
1531
+ if ( static::NOT_FOUND !== $this_value ) {
1532
+ return $this_value;
1533
+ }
1534
+ }
1535
+
1536
+ return $found;
1537
+ }
1538
+
1539
+ /**
1540
+ * Whether the current request is for a PHP-rendered initial state or not.
1541
+ *
1542
+ * This method is a shortcut to make sure we're not doing an AJAX, REST or Cron request.
1543
+ *
1544
+ * @since TBD
1545
+ *
1546
+ * @return bool Whether the current request is for a PHP-rendered initial state or not.
1547
+ */
1548
+ public function doing_php_initial_state() {
1549
+ return ! $this->doing_rest() && ! $this->doing_ajax() && ! $this->doing_cron();
1550
+ }
1551
+
1552
+ /**
1553
+ * Returns the first key, if there are many, that will be used to read a location.
1554
+ *
1555
+ * The type ar
1556
+ *
1557
+ * @since TBD
1558
+ *
1559
+ * @param string $location The location to get the read key for.
1560
+ * @param string|null $type The type of read location to return the key for; default to `static::REQUEST_VAR`.
1561
+ *
1562
+ * @return string Either the first key for the type of read location, or the input location if not found.
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
  }
common/src/Tribe/Context/locations.php CHANGED
@@ -11,6 +11,13 @@
11
  */
12
 
13
  return [
 
 
 
 
 
 
 
14
  'posts_per_page' => [
15
  'read' => [
16
  Tribe__Context::REQUEST_VAR => 'posts_per_page',
@@ -74,4 +81,14 @@ return [
74
  Tribe__Context::REQUEST_VAR => 'post_type',
75
  ],
76
  ],
 
 
 
 
 
 
 
 
 
 
77
  ];
11
  */
12
 
13
  return [
14
+ 'post_id' => [
15
+ 'read' => [
16
+ Tribe__Context::FUNC => static function () {
17
+ return get_the_ID();
18
+ }
19
+ ],
20
+ ],
21
  'posts_per_page' => [
22
  'read' => [
23
  Tribe__Context::REQUEST_VAR => 'posts_per_page',
81
  Tribe__Context::REQUEST_VAR => 'post_type',
82
  ],
83
  ],
84
+ 'single' => [
85
+ 'read' => [ Tribe__Context::QUERY_METHOD => 'is_single' ]
86
+ ],
87
+ 'taxonomy' => [
88
+ 'read' => [
89
+ Tribe__Context::QUERY_PROP => [ 'taxonomy' ],
90
+ Tribe__Context::QUERY_VAR => [ 'taxonomy' ],
91
+ Tribe__Context::REQUEST_VAR => [ 'taxonomy' ],
92
+ ],
93
+ ]
94
  ];
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.9.18';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
@@ -86,6 +86,8 @@ class Tribe__Main {
86
  $parent_plugin_dir = trailingslashit( plugin_basename( $this->plugin_path ) );
87
  $this->plugin_url = plugins_url( $parent_plugin_dir === $this->plugin_dir ? $this->plugin_dir : $parent_plugin_dir );
88
 
 
 
89
  add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ), 1 );
90
  add_action( 'tribe_common_loaded', array( $this, 'tribe_common_app_store' ), 10 );
91
  }
@@ -580,13 +582,30 @@ class Tribe__Main {
580
 
581
  tribe_register_provider( Tribe__Editor__Provider::class );
582
  tribe_register_provider( Tribe__Service_Providers__Debug_Bar::class );
583
- tribe_register_provider( Tribe__Service_Providers__Promoter_Connector::class );
584
  tribe_register_provider( Tribe__Service_Providers__Tooltip::class );
585
 
586
  tribe_register_provider( Tribe\Service_Providers\PUE::class );
587
  tribe_register_provider( Tribe\Log\Service_Provider::class );
588
  }
589
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
590
  /************************
591
  * *
592
  * Deprecated Methods *
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
+ const VERSION = '4.9.20';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
86
  $parent_plugin_dir = trailingslashit( plugin_basename( $this->plugin_path ) );
87
  $this->plugin_url = plugins_url( $parent_plugin_dir === $this->plugin_dir ? $this->plugin_dir : $parent_plugin_dir );
88
 
89
+ $this->promoter_connector();
90
+
91
  add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ), 1 );
92
  add_action( 'tribe_common_loaded', array( $this, 'tribe_common_app_store' ), 10 );
93
  }
582
 
583
  tribe_register_provider( Tribe__Editor__Provider::class );
584
  tribe_register_provider( Tribe__Service_Providers__Debug_Bar::class );
585
+ tribe_register_provider( Tribe__Service_Providers__Promoter::class );
586
  tribe_register_provider( Tribe__Service_Providers__Tooltip::class );
587
 
588
  tribe_register_provider( Tribe\Service_Providers\PUE::class );
589
  tribe_register_provider( Tribe\Log\Service_Provider::class );
590
  }
591
 
592
+ /**
593
+ * Create the Promoter connector singleton early to allow hook into the filters early.
594
+ *
595
+ * Add a filter to determine_current_user during the setup of common library.
596
+ *
597
+ * @since TBD
598
+ */
599
+ public function promoter_connector() {
600
+ tribe_singleton( 'promoter.connector', 'Tribe__Promoter__Connector' );
601
+
602
+ add_filter(
603
+ 'determine_current_user',
604
+ tribe_callback( 'promoter.connector', 'authenticate_user_with_connector' )
605
+ );
606
+ }
607
+
608
+
609
  /************************
610
  * *
611
  * Deprecated Methods *
common/src/Tribe/Promoter/Auth.php CHANGED
@@ -21,16 +21,6 @@ class Tribe__Promoter__Auth {
21
  */
22
  public function __construct( Tribe__Promoter__Connector $connector ) {
23
  $this->connector = $connector;
24
- $this->hook();
25
- }
26
-
27
- /**
28
- * Attach hooks to this class.
29
- *
30
- * @since 4.9.12
31
- */
32
- public function hook() {
33
- add_filter( 'tribe_promoter_secret_key', [ $this, 'filter_promoter_secret_key' ] );
34
  }
35
 
36
  /**
21
  */
22
  public function __construct( Tribe__Promoter__Connector $connector ) {
23
  $this->connector = $connector;
 
 
 
 
 
 
 
 
 
 
24
  }
25
 
26
  /**
common/src/Tribe/Promoter/Connector.php CHANGED
@@ -1,7 +1,9 @@
1
  <?php
2
 
3
  /**
4
- * Custom class for communicating with the Promoter Auth Connector
 
 
5
  *
6
  * @since 4.9
7
  */
@@ -24,13 +26,11 @@ class Tribe__Promoter__Connector {
24
  * @since 4.9
25
  */
26
  public function base_url() {
27
- $url = 'https://us-central1-promoter-auth-connector.cloudfunctions.net/promoterConnector/';
28
-
29
  if ( defined( 'TRIBE_PROMOTER_AUTH_CONNECTOR_URL' ) ) {
30
- $url = TRIBE_PROMOTER_AUTH_CONNECTOR_URL;
31
  }
32
 
33
- return $url;
34
  }
35
 
36
  /**
@@ -48,22 +48,18 @@ class Tribe__Promoter__Connector {
48
  public function authorize_with_connector( $user_id, $secret_key, $promoter_key, $license_key ) {
49
  $url = $this->base_url() . 'connect';
50
 
51
- $payload = array(
52
  'clientSecret' => $secret_key,
53
- 'licenseKey' => $license_key,
54
- 'userId' => $user_id,
55
- );
56
-
57
- tribe( 'logger' )->log( $url );
58
 
59
  $token = \Firebase\JWT\JWT::encode( $payload, $promoter_key );
60
 
61
- $args = array(
62
- 'body' => array( 'token' => $token ),
63
  'sslverify' => false,
64
- );
65
-
66
- $response = $this->make_call( $url, $args );
67
 
68
  return (bool) $response;
69
  }
@@ -80,7 +76,13 @@ class Tribe__Promoter__Connector {
80
  public function authenticate_user_with_connector( $user_id ) {
81
  $this->authorized = false;
82
 
83
- $token = tribe_get_request_var( 'tribe_promoter_auth_token' );
 
 
 
 
 
 
84
 
85
  if ( empty( $token ) ) {
86
  return $user_id;
@@ -88,12 +90,10 @@ class Tribe__Promoter__Connector {
88
 
89
  $url = $this->base_url() . 'connect/auth';
90
 
91
- $args = array(
92
- 'body' => array( 'token' => $token ),
93
  'sslverify' => false,
94
- );
95
-
96
- $response = $this->make_call( $url, $args );
97
 
98
  if ( ! $response ) {
99
  return $user_id;
@@ -104,6 +104,63 @@ class Tribe__Promoter__Connector {
104
  return $response;
105
  }
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  /**
108
  * Notify the Promoter app of changes within this system.
109
  *
@@ -114,7 +171,7 @@ class Tribe__Promoter__Connector {
114
  public function notify_promoter_of_changes( $post_id ) {
115
  $post_type = get_post_type( $post_id );
116
 
117
- if ( ! in_array( $post_type, array( 'tribe_events', 'tribe_tickets' ), true ) ) {
118
  return;
119
  }
120
 
@@ -133,19 +190,19 @@ class Tribe__Promoter__Connector {
133
  return;
134
  }
135
 
136
- $payload = array(
137
  'licenseKey' => $license_key,
138
- 'sourceId' => $post_id,
139
- );
140
 
141
  $token = \Firebase\JWT\JWT::encode( $payload, $secret_key );
142
 
143
  $url = $this->base_url() . 'connect/notify';
144
 
145
- $args = array(
146
- 'body' => array( 'token' => $token ),
147
  'sslverify' => false,
148
- );
149
 
150
  $this->make_call( $url, $args );
151
  }
@@ -183,15 +240,7 @@ class Tribe__Promoter__Connector {
183
  $code = wp_remote_retrieve_response_code( $response );
184
  $body = wp_remote_retrieve_body( $response );
185
 
186
- if ( is_wp_error( $response ) ) {
187
- tribe( 'logger' )->log( $response->get_error_message() );
188
-
189
- return false;
190
- }
191
-
192
- if ( $code > 299 ) {
193
- tribe( 'logger' )->log( $body, 0 );
194
-
195
  return false;
196
  }
197
 
@@ -208,5 +257,4 @@ class Tribe__Promoter__Connector {
208
  public function is_user_authorized() {
209
  return $this->authorized;
210
  }
211
-
212
  }
1
  <?php
2
 
3
  /**
4
+ * Custom class for communicating with the Promoter Auth Connector the class is created
5
+ * early in the process and many functions that come from utils are not available during the
6
+ * execution of the methods from this class
7
  *
8
  * @since 4.9
9
  */
26
  * @since 4.9
27
  */
28
  public function base_url() {
 
 
29
  if ( defined( 'TRIBE_PROMOTER_AUTH_CONNECTOR_URL' ) ) {
30
+ return TRIBE_PROMOTER_AUTH_CONNECTOR_URL;
31
  }
32
 
33
+ return 'https://us-central1-promoter-auth-connector.cloudfunctions.net/promoterConnector/';
34
  }
35
 
36
  /**
48
  public function authorize_with_connector( $user_id, $secret_key, $promoter_key, $license_key ) {
49
  $url = $this->base_url() . 'connect';
50
 
51
+ $payload = [
52
  'clientSecret' => $secret_key,
53
+ 'licenseKey' => $license_key,
54
+ 'userId' => $user_id,
55
+ ];
 
 
56
 
57
  $token = \Firebase\JWT\JWT::encode( $payload, $promoter_key );
58
 
59
+ $response = $this->make_call( $url, [
60
+ 'body' => [ 'token' => $token ],
61
  'sslverify' => false,
62
+ ] );
 
 
63
 
64
  return (bool) $response;
65
  }
76
  public function authenticate_user_with_connector( $user_id ) {
77
  $this->authorized = false;
78
 
79
+ // If user is already authenticated no need to move forward (wp-admin) and others.
80
+ if ( ! empty( $user_id ) ) {
81
+ $this->authorized = true;
82
+ return $user_id;
83
+ }
84
+
85
+ $token = $this->get_token();
86
 
87
  if ( empty( $token ) ) {
88
  return $user_id;
90
 
91
  $url = $this->base_url() . 'connect/auth';
92
 
93
+ $response = $this->make_call( $url, [
94
+ 'body' => [ 'token' => $token ],
95
  'sslverify' => false,
96
+ ] );
 
 
97
 
98
  if ( ! $response ) {
99
  return $user_id;
104
  return $response;
105
  }
106
 
107
+ /**
108
+ * Get the token either from a request or a header
109
+ *
110
+ * @since TBD
111
+ *
112
+ * @return mixed
113
+ */
114
+ protected function get_token() {
115
+ $request_token = $this->get_token_from_request();
116
+
117
+ return ( $request_token )
118
+ ? sanitize_text_field( $request_token )
119
+ : $this->get_token_from_headers();
120
+ }
121
+
122
+ /**
123
+ * Get the token from a Request variable if present, otherwise fallback to `null`
124
+ *
125
+ * @since TBD
126
+ *
127
+ * @return mixed
128
+ */
129
+ protected function get_token_from_request() {
130
+ // Used in favor of tribe_get_request_var as at this point tribe_get_request_var is not defined.
131
+ return \Tribe__Utils__Array::get_in_any(
132
+ [ $_GET, $_POST, $_REQUEST ],
133
+ 'tribe_promoter_auth_token'
134
+ );
135
+ }
136
+
137
+ /**
138
+ * Get the token directly from a Bearer Authentication Header, for hosts that
139
+ * does not support large Query strings
140
+ *
141
+ * @since TBD
142
+ *
143
+ * @return mixed
144
+ */
145
+ protected function get_token_from_headers() {
146
+ $headers = [
147
+ 'HTTP_AUTHORIZATION',
148
+ 'REDIRECT_HTTP_AUTHORIZATION',
149
+ ];
150
+
151
+ foreach ( $headers as $header ) {
152
+ if ( empty( $_SERVER[ $header ] ) ) {
153
+ continue;
154
+ }
155
+
156
+ list( $token ) = sscanf( $_SERVER[ $header ], 'Bearer %s' );
157
+
158
+ if ( $token ) {
159
+ return sanitize_text_field( $token );
160
+ }
161
+ }
162
+ }
163
+
164
  /**
165
  * Notify the Promoter app of changes within this system.
166
  *
171
  public function notify_promoter_of_changes( $post_id ) {
172
  $post_type = get_post_type( $post_id );
173
 
174
+ if ( ! in_array( $post_type, [ 'tribe_events', 'tribe_tickets' ], true ) ) {
175
  return;
176
  }
177
 
190
  return;
191
  }
192
 
193
+ $payload = [
194
  'licenseKey' => $license_key,
195
+ 'sourceId' => $post_id,
196
+ ];
197
 
198
  $token = \Firebase\JWT\JWT::encode( $payload, $secret_key );
199
 
200
  $url = $this->base_url() . 'connect/notify';
201
 
202
+ $args = [
203
+ 'body' => [ 'token' => $token ],
204
  'sslverify' => false,
205
+ ];
206
 
207
  $this->make_call( $url, $args );
208
  }
240
  $code = wp_remote_retrieve_response_code( $response );
241
  $body = wp_remote_retrieve_body( $response );
242
 
243
+ if ( is_wp_error( $response ) || $code > 299 ) {
 
 
 
 
 
 
 
 
244
  return false;
245
  }
246
 
257
  public function is_user_authorized() {
258
  return $this->authorized;
259
  }
 
260
  }
common/src/Tribe/Repository.php CHANGED
@@ -559,6 +559,10 @@ abstract class Tribe__Repository
559
  public function build_query( $use_query_builder = true ) {
560
  $query = null;
561
 
 
 
 
 
562
  // We'll let the query builder decide if the query has to be rebuilt or not.
563
  if ( $use_query_builder && null !== $this->query_builder ) {
564
  $query = $this->build_query_with_builder();
@@ -1068,7 +1072,9 @@ abstract class Tribe__Repository
1068
  * {@inheritdoc}
1069
  */
1070
  public function by( $key, $value = null ) {
1071
- if ( $this->void_query ) {
 
 
1072
  // No point in doing more computations if the query is void.
1073
  return $this;
1074
  }
559
  public function build_query( $use_query_builder = true ) {
560
  $query = null;
561
 
562
+ if ( array_key_exists( 'void_query', $this->query_args ) && false !== $this->query_args['void_query'] ) {
563
+ $this->void_query = true;
564
+ }
565
+
566
  // We'll let the query builder decide if the query has to be rebuilt or not.
567
  if ( $use_query_builder && null !== $this->query_builder ) {
568
  $query = $this->build_query_with_builder();
1072
  * {@inheritdoc}
1073
  */
1074
  public function by( $key, $value = null ) {
1075
+ if ( $this->void_query || ( 'void_query' === $key && false !== $value ) ) {
1076
+ $this->void_query = true;
1077
+
1078
  // No point in doing more computations if the query is void.
1079
  return $this;
1080
  }
common/src/Tribe/Service_Providers/{Promoter_Connector.php → Promoter.php} RENAMED
@@ -7,14 +7,13 @@
7
  *
8
  * Handles the registration and creation of our async process handlers.
9
  */
10
- class Tribe__Service_Providers__Promoter_Connector extends tad_DI52_ServiceProvider {
11
 
12
  /**
13
  * Binds and sets up implementations.
14
  */
15
  public function register() {
16
  tribe_singleton( 'promoter.auth', 'Tribe__Promoter__Auth' );
17
- tribe_singleton( 'promoter.connector', 'Tribe__Promoter__Connector' );
18
  tribe_singleton( 'promoter.pue', 'Tribe__Promoter__PUE', array( 'load' ) );
19
  tribe_singleton( 'promoter.view', 'Tribe__Promoter__View' );
20
 
@@ -27,11 +26,14 @@ class Tribe__Service_Providers__Promoter_Connector extends tad_DI52_ServiceProvi
27
  private function hook() {
28
  add_action( 'template_redirect', tribe_callback( 'promoter.view', 'display_auth_check_view' ), 10, 0 );
29
  add_action( 'init', tribe_callback( 'promoter.view', 'add_rewrites' ) );
30
- // Add early-firing filter for user auth on REST.
31
- add_filter( 'determine_current_user', tribe_callback( 'promoter.connector', 'authenticate_user_with_connector' ), 10, 1 );
32
 
33
  tribe( 'promoter.pue' );
34
 
 
 
 
 
 
35
  // The usage of a high priority so we can push the icon to the end
36
  add_action( 'admin_bar_menu', array( $this, 'add_promoter_logo_on_admin_bar' ), 1000 );
37
  add_action( 'tribe_common_loaded', array( $this, 'add_promoter_assets' ) );
7
  *
8
  * Handles the registration and creation of our async process handlers.
9
  */
10
+ class Tribe__Service_Providers__Promoter extends tad_DI52_ServiceProvider {
11
 
12
  /**
13
  * Binds and sets up implementations.
14
  */
15
  public function register() {
16
  tribe_singleton( 'promoter.auth', 'Tribe__Promoter__Auth' );
 
17
  tribe_singleton( 'promoter.pue', 'Tribe__Promoter__PUE', array( 'load' ) );
18
  tribe_singleton( 'promoter.view', 'Tribe__Promoter__View' );
19
 
26
  private function hook() {
27
  add_action( 'template_redirect', tribe_callback( 'promoter.view', 'display_auth_check_view' ), 10, 0 );
28
  add_action( 'init', tribe_callback( 'promoter.view', 'add_rewrites' ) );
 
 
29
 
30
  tribe( 'promoter.pue' );
31
 
32
+ add_filter(
33
+ 'tribe_promoter_secret_key',
34
+ tribe_callback( 'promoter.auth', 'filter_promoter_secret_key' )
35
+ );
36
+
37
  // The usage of a high priority so we can push the icon to the end
38
  add_action( 'admin_bar_menu', array( $this, 'add_promoter_logo_on_admin_bar' ), 1000 );
39
  add_action( 'tribe_common_loaded', array( $this, 'add_promoter_assets' ) );
common/src/admin-views/tribe-options-display.php CHANGED
@@ -33,8 +33,8 @@ $displayTab = array(
33
  ),
34
  'datepickerFormat' => array(
35
  'type' => 'dropdown',
36
- 'label' => esc_html__( 'Datepicker Date Format', 'tribe-common' ),
37
- 'tooltip' => esc_html__( 'Select the date format to use in datepickers', 'tribe-common' ),
38
  'default' => 'Y-m-d',
39
  'options' => array(
40
  '0' => date( 'Y-m-d', $sample_date ),
33
  ),
34
  'datepickerFormat' => array(
35
  'type' => 'dropdown',
36
+ 'label' => esc_html__( 'Compact Date Format', 'tribe-common' ),
37
+ 'tooltip' => esc_html__( 'Select the date format used for elements with minimal space, such as in datepickers.', 'tribe-common' ),
38
  'default' => 'Y-m-d',
39
  'options' => array(
40
  '0' => date( 'Y-m-d', $sample_date ),
common/src/functions/multibyte.php CHANGED
@@ -160,3 +160,34 @@ if ( ! function_exists( 'tribe_uc_first_letter' ) ) {
160
  return $letter;
161
  }
162
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  return $letter;
161
  }
162
  }
163
+
164
+ if ( ! function_exists( 'tribe_strpos' ) ) {
165
+ /**
166
+ * Find the numeric position of the first occurrence of needle in the haystack string using multibyte function if available.
167
+ *
168
+ * @since 4.9.19
169
+ *
170
+ * @param string $haystack The string to search in.
171
+ * @param string $needle The string to find in haystack.
172
+ * @param int $offset The search offset. If it is not specified, 0 is used. A negative offset counts from the end of the string.
173
+ *
174
+ * @return int|false The numeric position of the first occurrence of needle in the haystack string. If needle is not found, it returns false.
175
+ *
176
+ * @see strpos The fallback function used if mb_strpos does not exist.
177
+ * @see mb_strpos The multibyte compatible version of strpos.
178
+ */
179
+ function tribe_strpos( $haystack, $needle, $offset = 0 ) {
180
+ if ( function_exists( 'mb_strpos' ) ) {
181
+ $encoding = tribe_detect_encoding( $haystack );
182
+
183
+ // Use encoding if it was detected.
184
+ if ( $encoding ) {
185
+ return mb_strpos( $haystack, $needle, $offset, $encoding );
186
+ }
187
+
188
+ return mb_strpos( $haystack, $needle, $offset );
189
+ }
190
+
191
+ return strpos( $haystack, $needle, $offset );
192
+ }
193
+ }
common/src/functions/utils.php CHANGED
@@ -142,7 +142,8 @@ if ( ! function_exists( 'tribe_get_request_var' ) ) {
142
  * @return mixed
143
  */
144
  function tribe_get_request_var( $var, $default = null ) {
145
- return Tribe__Utils__Array::get_in_any( array( $_GET, $_POST, $_REQUEST ), $var, $default );
 
146
  }
147
  }
148
 
@@ -676,4 +677,43 @@ if ( ! function_exists( 'tribe_get_request_vars' ) ) {
676
 
677
  return $cache;
678
  }
679
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  * @return mixed
143
  */
144
  function tribe_get_request_var( $var, $default = null ) {
145
+ $unsafe = Tribe__Utils__Array::get_in_any( [ $_GET, $_POST, $_REQUEST ], $var, $default );
146
+ return tribe_sanitize_deep( $unsafe );
147
  }
148
  }
149
 
677
 
678
  return $cache;
679
  }
680
+ }
681
+
682
+ if ( ! function_exists( 'tribe_sanitize_deep' ) ) {
683
+
684
+ /**
685
+ * Sanitizes a value according to its type.
686
+ *
687
+ * The function will recursively sanitize array values.
688
+ *
689
+ * @since TBD
690
+ *
691
+ * @param mixed $value The value, or values, to sanitize.
692
+ *
693
+ * @return mixed|null Either the sanitized version of the value, or `null` if the value is not a string, number or
694
+ * array.
695
+ */
696
+ function tribe_sanitize_deep( &$value ) {
697
+ if ( is_bool( $value ) ) {
698
+ return $value;
699
+ }
700
+ if ( is_string( $value ) ) {
701
+ $value = filter_var( $value, FILTER_SANITIZE_STRING );
702
+ return $value;
703
+ }
704
+ if ( is_int( $value ) ) {
705
+ $value = filter_var( $value, FILTER_VALIDATE_INT );
706
+ return $value;
707
+ }
708
+ if ( is_float( $value ) ) {
709
+ $value = filter_var( $value, FILTER_VALIDATE_FLOAT );
710
+ return $value;
711
+ }
712
+ if ( is_array( $value ) ) {
713
+ array_walk( $value, 'tribe_sanitize_deep' );
714
+ return $value;
715
+ }
716
+
717
+ return null;
718
+ }
719
+ }
common/src/resources/css/common.css CHANGED
@@ -168,6 +168,9 @@
168
  * Borders - Radius
169
  * ----------------------------------------------------------------------------- */
170
 
 
 
 
171
  }
172
 
173
  :root {
@@ -2190,6 +2193,77 @@
2190
  width: 100%;
2191
  }
2192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2193
  @media (min-width: 768px) {
2194
 
2195
  .tribe-common .tribe-common-form-control-text__input {
@@ -2369,4 +2443,8 @@
2369
  .tribe-common a.tribe-common-c-btn {
2370
  width: auto
2371
  }
 
 
 
 
2372
  }
168
  * Borders - Radius
169
  * ----------------------------------------------------------------------------- */
170
 
171
+ /* -----------------------------------------------------------------------------
172
+ * Borders - Width
173
+ * ----------------------------------------------------------------------------- */
174
  }
175
 
176
  :root {
2193
  width: 100%;
2194
  }
2195
 
2196
+ /*.tribe-common-c-loader {}*/
2197
+
2198
+ .tribe-common .tribe-common-c-loader {
2199
+ display: flex;
2200
+ padding-top: 192px;
2201
+ }
2202
+
2203
+ /* -----------------------------------------------------------------------------
2204
+ *
2205
+ * Component: Loader
2206
+ *
2207
+ *
2208
+ * Example:
2209
+ * <div class="tribe-events-view-loader__dots tribe-common-c-loader">
2210
+ * <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--first"></div>
2211
+ * <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--second"></div>
2212
+ * <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--third"></div>
2213
+ * </div>
2214
+ *
2215
+ * ----------------------------------------------------------------------------- */
2216
+
2217
+ .tribe-common .tribe-common-c-loader__dot {
2218
+ background-color: rgba(51,74,255, 0.07);
2219
+ height: 15px;
2220
+ width: 15px;
2221
+ -webkit-animation-name: tribe-common-c-loader-bounce;
2222
+ animation-name: tribe-common-c-loader-bounce;
2223
+ -webkit-animation-duration: 2.24s;
2224
+ animation-duration: 2.24s;
2225
+ -webkit-animation-iteration-count: infinite;
2226
+ animation-iteration-count: infinite;
2227
+ -webkit-animation-direction: normal;
2228
+ animation-direction: normal;
2229
+ border-radius: 50%;
2230
+ }
2231
+
2232
+ .tribe-common .tribe-common-c-loader__dot:not(:first-of-type) {
2233
+ margin-left: 8px;
2234
+ }
2235
+
2236
+ .tribe-common .tribe-common-c-loader__dot--first {
2237
+ -webkit-animation-delay: 0.45s;
2238
+ animation-delay: 0.45s;
2239
+ }
2240
+
2241
+ .tribe-common .tribe-common-c-loader__dot--second {
2242
+ -webkit-animation-delay: 1.05s;
2243
+ animation-delay: 1.05s;
2244
+ }
2245
+
2246
+ .tribe-common .tribe-common-c-loader__dot--third {
2247
+ -webkit-animation-delay: 1.35s;
2248
+ animation-delay: 1.35s;
2249
+ }
2250
+
2251
+ @-webkit-keyframes tribe-common-c-loader-bounce {
2252
+ 0% {}
2253
+
2254
+ 50% { background-color: #334AFF; }
2255
+
2256
+ 100% {}
2257
+ }
2258
+
2259
+ @keyframes tribe-common-c-loader-bounce {
2260
+ 0% {}
2261
+
2262
+ 50% { background-color: #334AFF; }
2263
+
2264
+ 100% {}
2265
+ }
2266
+
2267
  @media (min-width: 768px) {
2268
 
2269
  .tribe-common .tribe-common-form-control-text__input {
2443
  .tribe-common a.tribe-common-c-btn {
2444
  width: auto
2445
  }
2446
+
2447
+ .tribe-common .tribe-common-c-loader {
2448
+ padding-top: 288px
2449
+ }
2450
  }
common/src/resources/css/common.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 ol,.tribe-common ul{list-style:none}.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-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;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{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;cursor:pointer;display:inline-block;height:20px;margin:0;position:relative;vertical-align:middle;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__input{display:inline-block}#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-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{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.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;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}#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__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{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;height:auto;padding:12px 28px 12px 0;width:100%}.tribe-common .tribe-common-form-control-text__input::-webkit-input-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}#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;padding:12px 28px 12px 0;width:100%}#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;cursor:pointer;display:inline-block;vertical-align:middle;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;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.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}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.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-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: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-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{border:none;padding:0}.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-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--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--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='%23334AFF'/%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='%23334AFF'/%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-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.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{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;width:100%}.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:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.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-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-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;background-color:#334aff;padding:11px 20px;width:100%}.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-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%}@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;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-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-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}}
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 ol,.tribe-common ul{list-style:none}.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-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;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{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;cursor:pointer;display:inline-block;height:20px;margin:0;position:relative;vertical-align:middle;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__input{display:inline-block}#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-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{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.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;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}#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__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{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;height:auto;padding:12px 28px 12px 0;width:100%}.tribe-common .tribe-common-form-control-text__input::-webkit-input-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}#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;padding:12px 28px 12px 0;width:100%}#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;cursor:pointer;display:inline-block;vertical-align:middle;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;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.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}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.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-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: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-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{border:none;padding:0}.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-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--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--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='%23334AFF'/%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='%23334AFF'/%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-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.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{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;width:100%}.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:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.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-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-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;background-color:#334aff;padding:11px 20px;width:100%}.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-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;animation-name:a;animation-duration:2.24s;animation-iteration-count:infinite;animation-direction:normal;border-radius:50%}.tribe-common .tribe-common-c-loader__dot:not(:first-of-type){margin-left:8px}.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;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-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-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/postcss/README.md ADDED
@@ -0,0 +1,266 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Common PostCSS Styles
2
+
3
+ ## Why common styles?
4
+
5
+ Historically, CSS for Modern Tribe plugins have not held up to the highest standards for structuring CSS and naming CSS classes. These common styles help to build a foundation for standardizing class naming as well as following the Modern Tribe products design system.
6
+
7
+ ## Class naming consistency and BEM
8
+
9
+ A couple of issues we've had previously with templates for Modern Tribe plugins was inconsistent class naming and the class naming structure. To deal with this, we've adopted the use of [BEM](http://getbem.com/naming/) for class naming, combined with the use of `tribe-common-` as a block prefix.
10
+
11
+ First is the use of [BEM](http://getbem.com/naming/) for class naming (see link for more details). BEM stands for Block Element Modifier. We've used BEM as a guide to help us name classes and maintain consistency. This helps us structure the CSS around the HTML that we are styling without running into class naming chaos.
12
+
13
+ Secondly, we've added prefixes to our classes. The first prefix we've used is `tribe-common-`. This is mainly to avoid styles clashing with other theme styles. For example, if we used a class `h1`, a theme that the user may apply may also use a class `h1` and the theme styles may unintentionally affect the plugin styles. Instead, we use `tribe-common-h1`. The second prefix we've used is context-based prefixes. Some of these prefixes include `a11y-` for accessibility, `g-` for grid, `l-` for layout, and `c-` for component. These prefixes help determine the context of these reusable style classes. For example, the `tribe-common-a11y-hidden` can be applied to hide content from sighted users and screenreaders. The `tribe-common-c-btn` can be applied to a link or button to apply button styles.
14
+
15
+ ## View/block wrapper class
16
+
17
+ Aside from classes that apply styles to elements, we also apply resets and base styles. In order to not override theme styles and elements outside of Modern Tribe plugins, we've added a wrapper class `tribe-common` around all of Modern Tribe plugins blocks and views. For example, the markup for a specific view or block might look like the following:
18
+
19
+ ```
20
+ <div class="tribe-common">
21
+ ...
22
+ <button class="tribe-common-c-btn">Test Button</button>
23
+ ...
24
+ </div>
25
+ ```
26
+
27
+ Given this markup, the PostCSS will look like the following:
28
+
29
+ ```
30
+ .tribe-common {
31
+ ...
32
+
33
+ button {
34
+ /* base button styles here */
35
+ }
36
+
37
+ ...
38
+
39
+ .tribe-common-c-btn {
40
+ /* component button styles here */
41
+ }
42
+
43
+ ...
44
+ }
45
+ ```
46
+
47
+ This allows us to target only the buttons within the Modern Tribe plugin views.
48
+
49
+ ## CSS specificity
50
+
51
+ Given the above structure of using a wrapper class, we've increased the [CSS specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) needed for theme developers to override our styles. For resets and base styles, the minimum specificity required is 1 class and 1 element. For class-based styles, the minimum specificity required is 2 classes. With some modifiers, the minimum specificity required may be 3 classes. For example:
52
+
53
+ ```
54
+ .tribe-common {
55
+ ...
56
+
57
+ .tribe-common-form-control-toggle--vertical {
58
+
59
+ .tribe-common-form-control-toggle__label {
60
+ /* toggle label styles */
61
+ }
62
+ }
63
+
64
+ ...
65
+ }
66
+ ```
67
+
68
+ In this case, the label is an element of the toggle. However, the `--vertical` modifier is applied to the top level block. Given this structure, our minimum specificity becomes 3 classes.
69
+
70
+ For overriding styles, it is recommended to only use classes to keep overriding specificity consistent. All elements should have classes and should be targetted using those classes.
71
+
72
+ ## Modifiers, pseudo-classes, and media queries
73
+
74
+ As you get into building upon these styles and creating new styles, the order of modifiers, pseudo-classes, and media queries comes into question. The general rule is to apply them in the following order: media queries, pseudo-classes, modifiers. See the examples below:
75
+
76
+ ```
77
+ .tribe-common {
78
+ ...
79
+
80
+ .tribe-common-form-control-toggle {
81
+ /* toggle styles */
82
+
83
+ @media (--viewport-medium) {
84
+ /* viewport medium toggle styles */
85
+ }
86
+
87
+ &:after {
88
+ /* :after pseudo-class styles */
89
+
90
+ @media (--viewport-medium) {
91
+ /* viewport medium :after pseudo-class styles */
92
+ }
93
+ }
94
+ }
95
+
96
+ .tribe-common-form-control-toggle--vertical {
97
+ /* vertical toggle styles */
98
+
99
+ @media (--viewport-medium) {
100
+ /* viewport medium vertical toggle styles */
101
+ }
102
+
103
+ &:after {
104
+ /* :after pseudo-class styles */
105
+
106
+ @media (--viewport-medium) {
107
+ /* viewport medium :after pseudo-class styles */
108
+ }
109
+ }
110
+ }
111
+
112
+ ...
113
+ }
114
+ ```
115
+
116
+ In the case of an element, we might get the following scenario:
117
+
118
+ ```
119
+ .tribe-common {
120
+ ...
121
+
122
+ .tribe-common-form-control-toggle__input {
123
+ /* toggle input styles */
124
+
125
+ @media (--viewport-medium) {
126
+ /* viewport medium toggle input styles */
127
+ }
128
+
129
+ &:after {
130
+ /* :after pseudo-class styles */
131
+
132
+ @media (--viewport-medium) {
133
+ /* viewport medium :after pseudo-class styles */
134
+ }
135
+ }
136
+ }
137
+
138
+ .tribe-common-form-control-toggle--vertical {
139
+
140
+ .tribe-common-form-control-toggle__input {
141
+ /* vertical toggle input styles */
142
+
143
+ @media (--viewport-medium) {
144
+ /* viewport medium vertical toggle input styles */
145
+ }
146
+
147
+ &:after {
148
+ /* :after pseudo-class styles */
149
+
150
+ @media (--viewport-medium) {
151
+ /* viewport medium :after pseudo-class styles */
152
+ }
153
+ }
154
+ }
155
+ }
156
+
157
+ ...
158
+ }
159
+ ```
160
+
161
+ ## Structure of common styles
162
+
163
+ The common styles are comprised of 2 files: `reset.pcss` and `common.pcss`. The reset styles cover cross-browser style normalizations for Modern Tribe plugins and the common styles cover base styles and common components used throughout the plugins.
164
+
165
+ The common styles are broken into 5 main sections: reset, utilities, base, a11y, and components.
166
+
167
+ Reset styles and common styles both have a reset applied to them. This is due to The Events Calendar having 2 style options: skeleton and full. Skeleton is mainly layout-focused, while full is the application of the entire suite of styles from the design system.
168
+
169
+ ### Reset
170
+
171
+ The reset styles are meant to normalize cross-browser style differences. These are resets for only layout-focused styles.
172
+
173
+ ### Common reset
174
+
175
+ These reset styles are also meant to normalize cross-browser style differences. However, common reset styles are more style focused, such as color and font.
176
+
177
+ ### Utilities
178
+
179
+ The utilities are a set of common PostCSS variables, icons, and mixins used throughout the plugins. These come from the Tribe Common Styles repository. See Tribe Common Styles for more details.
180
+
181
+ ### Base
182
+
183
+ The base styles are base element styles, both on the element target (e.g. `button`) and class target (e.g. `.tribe-common-l-container`). These provide a base on which to build component and block/view styles.
184
+
185
+ A large portion of the base styles are forms, grid, and typography.
186
+
187
+ #### Forms
188
+
189
+ Base form styles are for things such as checkboxes, radios, text inputs, sliders, and toggles. These include a `form-control-` prefix (e.g. `.tribe-common-form-control-checkbox`). The combination of form styles and markup work to match the design system for form elements.
190
+
191
+ #### Grid
192
+
193
+ Base grid styles are for layout and grids provided by the design system. Prefixed by `g-` (e.g. `.tribe-common-g-row`), they are a combination of rows and columns to build a consistent grid structure.
194
+
195
+ #### Typography
196
+
197
+ Base typography styles are for anything typography-related. These include anchors, body text, call to actions, headings, and lists. For body text, we've used the classes `.tribe-common-b1` to `.tribe-common-b3`. These body text classes are used to mimic the design system body text styles. For headings, we've used the classes `.tribe-common-h1` to `.tribe-common-h8`. These heading classes are also used to mimic the design system heading styles.
198
+
199
+ There are also classes in body text and heading styles with the `--min-medium` modifier. Each body text and heading class has a style for mobile and desktop (`@media (--viewport-medium)`). However, the designs may not follow the styles exactly for each class upon reaching the `--viewport-medium` breakpoint, but instead use another class style. For this reason, we've added the `--min-medium` modifier for each body text and heading class to apply a different style upon reaching this breakpoint. See example below:
200
+
201
+ ```
202
+ <h2 class="tribe-common-h6 tribe-common-h5--min-medium">Test heading</h2>
203
+ ```
204
+
205
+ In this case, the heading will use the mobile `.tribe-common-h6` styles and desktop `.tribe-common-h5` styles.
206
+
207
+ ### A11y
208
+
209
+ Accessibility styles are utility classes for repeatable patterns regarding accessibility. The most common are those concerning visibility and screenreader access to content.
210
+
211
+ ### Components
212
+
213
+ Components are groups of reusable markup and styles. The component style structure is meant to mirror the markup structure.
214
+
215
+ ### Media queries
216
+
217
+ These styles use a mobile-first approach. Given this, there are only `min-width:` breakpoints, never `max-width:` breakpoints. This also lends to using the `--min-medium` modifier.
218
+
219
+ ## Theme overrides
220
+
221
+ Modern Tribe plugins support a handful of themes. Some themes provide stylesheets that have high specificity for elements and override the common styles. To counter this, we've included theme overrides to ensure our plugin styles display as expected with the supported themes.
222
+
223
+ The specificity to override the styles are matched to those applied to the theme. This means that if, for example, a theme applied an ID and 2 extra classes to a `button` style, we might see the following theme override:
224
+
225
+ ```
226
+ .tribe-common {
227
+
228
+ /* -------------------------------------------------------------------------
229
+ * Button: Theme Overrides
230
+ * ------------------------------------------------------------------------- */
231
+
232
+ #id-1 .class-1 .class-2 & {
233
+
234
+ button {
235
+ /* button theme override styles */
236
+ }
237
+ }
238
+ }
239
+ ```
240
+
241
+ ### Reset
242
+
243
+ The reset theme overrides are used to reapply the reset styles that have been overridden by theme styles. These are found in their own partials in the resets folder.
244
+
245
+ ### Common
246
+
247
+ Common theme overrides, mainly in base and components, are applied to the bottom of each affected file.
248
+
249
+ ## How to contribute
250
+
251
+ You want to contribute to these styles? Great! There are a couple things to consider when making changes:
252
+
253
+ 1. These styles are the base layer to a number of Modern Tribe plugins. Make changes with care.
254
+ 2. Consider whether these styles may be reuseable or not. If they are good candidates for a component for more than one plugin, then it's probably a good idea to put them into these styles.
255
+
256
+ ### Additions
257
+
258
+ Additions are generally safe, as long as the selectors do not conflict with existing selectors. Confirm that the styles you are adding are reuseable and are a consistent part of the design system before adding.
259
+
260
+ ### Alterations
261
+
262
+ Alterations should be done carefully, as they will affect all downstream styles using the selectors being altered. Multiple plugins use these styles and should be cross-checked before making the change.
263
+
264
+ ### Deletions
265
+
266
+ Deletions should also be done carefully, for the same reasons as **Alterations** above. Removing a style from a selector that is still being used will result in unintended styles.
common/src/resources/postcss/components/_all.pcss CHANGED
@@ -13,3 +13,5 @@
13
  @import "buttons/_solid.pcss";
14
 
15
  @import "_image.pcss";
 
 
13
  @import "buttons/_solid.pcss";
14
 
15
  @import "_image.pcss";
16
+
17
+ @import "_loader.pcss";
common/src/resources/postcss/components/_loader.pcss ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tribe-common {
2
+ /* -----------------------------------------------------------------------------
3
+ *
4
+ * Component: Loader
5
+ *
6
+ *
7
+ * Example:
8
+ * <div class="tribe-events-view-loader__dots tribe-common-c-loader">
9
+ * <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--first"></div>
10
+ * <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--second"></div>
11
+ * <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--third"></div>
12
+ * </div>
13
+ *
14
+ * ----------------------------------------------------------------------------- */
15
+
16
+ /*.tribe-common-c-loader {}*/
17
+
18
+ .tribe-common-c-loader {
19
+ display: flex;
20
+ padding-top: calc(var(--spacer-11) * 3);
21
+
22
+ @media (--viewport-medium) {
23
+ padding-top: calc(var(--spacer-13) * 3);
24
+ }
25
+ }
26
+
27
+ .tribe-common-c-loader__dot {
28
+ background-color: var(--color-accent-primary-background);
29
+ height: 15px;
30
+ width: 15px;
31
+ animation-name: tribe-common-c-loader-bounce;
32
+ animation-duration: 2.24s;
33
+ animation-iteration-count: infinite;
34
+ animation-direction: normal;
35
+ border-radius: 50%;
36
+
37
+ &:not(:first-of-type) {
38
+ margin-left: 8px;
39
+ }
40
+ }
41
+
42
+ .tribe-common-c-loader__dot--first {
43
+ animation-delay: 0.45s;
44
+ }
45
+
46
+ .tribe-common-c-loader__dot--second {
47
+ animation-delay: 1.05s;
48
+ }
49
+
50
+ .tribe-common-c-loader__dot--third {
51
+ animation-delay: 1.35s;
52
+ }
53
+
54
+ @keyframes tribe-common-c-loader-bounce {
55
+ 0% {}
56
+
57
+ 50% { background-color: var(--color-accent-primary); }
58
+
59
+ 100% {}
60
+ }
61
+ }
common/src/resources/postcss/utilities/variables/_borders.pcss CHANGED
@@ -5,4 +5,9 @@
5
 
6
  --border-radius-default: 4px;
7
 
 
 
 
 
 
8
  }
5
 
6
  --border-radius-default: 4px;
7
 
8
+ /* -----------------------------------------------------------------------------
9
+ * Borders - Width
10
+ * ----------------------------------------------------------------------------- */
11
+
12
+ --border-width-week-event: 2px;
13
  }
common/src/resources/postcss/utilities/variables/_box-shadows.pcss CHANGED
@@ -6,5 +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
  }
10
 
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
 
common/src/resources/postcss/utilities/variables/_colors.pcss CHANGED
@@ -47,6 +47,7 @@
47
  --color-background: #FFFFFF;
48
  --color-background-transparent: rgba(var(--color-background), 0.6);
49
  --color-background-secondary: #F7F6F6;
 
50
  --color-box-shadow: rgba(#000000, 0.14);
51
  --color-scroll-track: rgba(#000000, 0.25);
52
  --color-scroll-bar: rgba(#000000, 0.5);
47
  --color-background: #FFFFFF;
48
  --color-background-transparent: rgba(var(--color-background), 0.6);
49
  --color-background-secondary: #F7F6F6;
50
+ --color-background-secondary-hover: #F0EEEE;
51
  --color-box-shadow: rgba(#000000, 0.14);
52
  --color-scroll-track: rgba(#000000, 0.25);
53
  --color-scroll-bar: rgba(#000000, 0.5);
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit4b94f62468ed819f093c41971d2f5426::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInite6af54b42233bb8e66d384c182c53d8b::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 ComposerAutoloaderInit5b140ae31b99bae377f892d38b64eafb::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInitc0a26b948da224895df517f90a13ddb5::getLoader();
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit4b94f62468ed819f093c41971d2f5426
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit4b94f62468ed819f093c41971d2f5426
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit4b94f62468ed819f093c41971d2f5426', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit4b94f62468ed819f093c41971d2f5426', '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\ComposerStaticInit4b94f62468ed819f093c41971d2f5426::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 ComposerAutoloaderInite6af54b42233bb8e66d384c182c53d8b
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInite6af54b42233bb8e66d384c182c53d8b', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInite6af54b42233bb8e66d384c182c53d8b', '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\ComposerStaticInite6af54b42233bb8e66d384c182c53d8b::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 ComposerAutoloaderInit5b140ae31b99bae377f892d38b64eafb {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit5b140ae31b99bae377f892d38b64eafb {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit5b140ae31b99bae377f892d38b64eafb', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit5b140ae31b99bae377f892d38b64eafb', '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 ComposerAutoloaderInitc0a26b948da224895df517f90a13ddb5 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitc0a26b948da224895df517f90a13ddb5', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitc0a26b948da224895df517f90a13ddb5', '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 ComposerStaticInit4b94f62468ed819f093c41971d2f5426
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -198,10 +198,10 @@ class ComposerStaticInit4b94f62468ed819f093c41971d2f5426
198
  public static function getInitializer(ClassLoader $loader)
199
  {
200
  return \Closure::bind(function () use ($loader) {
201
- $loader->prefixLengthsPsr4 = ComposerStaticInit4b94f62468ed819f093c41971d2f5426::$prefixLengthsPsr4;
202
- $loader->prefixDirsPsr4 = ComposerStaticInit4b94f62468ed819f093c41971d2f5426::$prefixDirsPsr4;
203
- $loader->prefixesPsr0 = ComposerStaticInit4b94f62468ed819f093c41971d2f5426::$prefixesPsr0;
204
- $loader->classMap = ComposerStaticInit4b94f62468ed819f093c41971d2f5426::$classMap;
205
 
206
  }, null, ClassLoader::class);
207
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInite6af54b42233bb8e66d384c182c53d8b
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
198
  public static function getInitializer(ClassLoader $loader)
199
  {
200
  return \Closure::bind(function () use ($loader) {
201
+ $loader->prefixLengthsPsr4 = ComposerStaticInite6af54b42233bb8e66d384c182c53d8b::$prefixLengthsPsr4;
202
+ $loader->prefixDirsPsr4 = ComposerStaticInite6af54b42233bb8e66d384c182c53d8b::$prefixDirsPsr4;
203
+ $loader->prefixesPsr0 = ComposerStaticInite6af54b42233bb8e66d384c182c53d8b::$prefixesPsr0;
204
+ $loader->classMap = ComposerStaticInite6af54b42233bb8e66d384c182c53d8b::$classMap;
205
 
206
  }, null, ClassLoader::class);
207
  }
common/vendor/composer/installed.json CHANGED
@@ -49,17 +49,17 @@
49
  },
50
  {
51
  "name": "lucatume/di52",
52
- "version": "2.0.10",
53
- "version_normalized": "2.0.10.0",
54
  "source": {
55
  "type": "git",
56
  "url": "https://github.com/lucatume/di52.git",
57
- "reference": "1db42c08914ecc6c7d9ba86eeeb465f4eee7858c"
58
  },
59
  "dist": {
60
  "type": "zip",
61
- "url": "https://api.github.com/repos/lucatume/di52/zipball/1db42c08914ecc6c7d9ba86eeeb465f4eee7858c",
62
- "reference": "1db42c08914ecc6c7d9ba86eeeb465f4eee7858c",
63
  "shasum": ""
64
  },
65
  "require": {
@@ -70,7 +70,7 @@
70
  "phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52",
71
  "phpunit/phpunit-php52": "dev-3.6.12-php52"
72
  },
73
- "time": "2018-10-29T06:23:41+00:00",
74
  "type": "library",
75
  "installation-source": "dist",
76
  "autoload": {
49
  },
50
  {
51
  "name": "lucatume/di52",
52
+ "version": "2.0.12",
53
+ "version_normalized": "2.0.12.0",
54
  "source": {
55
  "type": "git",
56
  "url": "https://github.com/lucatume/di52.git",
57
+ "reference": "b5ae39274b03c697f20d8d620e534539d6d8d27e"
58
  },
59
  "dist": {
60
  "type": "zip",
61
+ "url": "https://api.github.com/repos/lucatume/di52/zipball/b5ae39274b03c697f20d8d620e534539d6d8d27e",
62
+ "reference": "b5ae39274b03c697f20d8d620e534539d6d8d27e",
63
  "shasum": ""
64
  },
65
  "require": {
70
  "phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52",
71
  "phpunit/phpunit-php52": "dev-3.6.12-php52"
72
  },
73
+ "time": "2019-10-14T08:27:38+00:00",
74
  "type": "library",
75
  "installation-source": "dist",
76
  "autoload": {
common/vendor/lucatume/di52/src/tad/DI52/Container.php CHANGED
@@ -313,6 +313,10 @@ class tad_DI52_Container implements ArrayAccess {
313
  try {
314
  $instance = $this->build($classOrInterface);
315
  } catch (Exception $e) {
 
 
 
 
316
  throw new RuntimeException("'{$classOrInterface}' is not a bound alias or an existing class.");
317
  }
318
  } else {
@@ -786,7 +790,7 @@ class tad_DI52_Container implements ArrayAccess {
786
 
787
  if (null === $class) {
788
  if (!$parameter->isDefaultValueAvailable()) {
789
- throw new RuntimeException("parameter '{$parameter->name}' of '{$this->resolving}::__construct' does not have a default value.");
790
  }
791
  return $parameter->getDefaultValue();
792
  }
@@ -795,7 +799,7 @@ class tad_DI52_Container implements ArrayAccess {
795
 
796
  if (!$this->isBound($parameterClass) && !$parameter->getClass()->isInstantiable()) {
797
  if (!$parameter->isDefaultValueAvailable()) {
798
- throw new RuntimeException("parameter '{$parameter->name}' of '{$this->resolving}::__construct' does not have a default value.");
799
  }
800
  return $parameter->getDefaultValue();
801
  }
313
  try {
314
  $instance = $this->build($classOrInterface);
315
  } catch (Exception $e) {
316
+ if ( $e instanceof ReflectionException ) {
317
+ throw $e;
318
+ }
319
+
320
  throw new RuntimeException("'{$classOrInterface}' is not a bound alias or an existing class.");
321
  }
322
  } else {
790
 
791
  if (null === $class) {
792
  if (!$parameter->isDefaultValueAvailable()) {
793
+ throw new ReflectionException("parameter '{$parameter->name}' of '{$this->resolving}::__construct' does not have a default value.");
794
  }
795
  return $parameter->getDefaultValue();
796
  }
799
 
800
  if (!$this->isBound($parameterClass) && !$parameter->getClass()->isInstantiable()) {
801
  if (!$parameter->isDefaultValueAvailable()) {
802
+ throw new ReflectionException("parameter '{$parameter->name}' of '{$this->resolving}::__construct' does not have a default value.");
803
  }
804
  return $parameter->getDefaultValue();
805
  }
lang/the-events-calendar-de_DE.mo CHANGED
Binary file
lang/the-events-calendar-el.mo CHANGED
Binary file
lang/the-events-calendar-es_VE.mo CHANGED
Binary file
lang/the-events-calendar-fr_FR.mo CHANGED
Binary file
lang/the-events-calendar-nb_NO.mo CHANGED
Binary file
lang/the-events-calendar-sv_SE.mo CHANGED
Binary file
lang/the-events-calendar-zh_CN.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.9\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
- "POT-Creation-Date: 2019-09-20 16:20:56+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-09-20 16:20\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
@@ -2254,8 +2254,8 @@ msgstr ""
2254
  msgid "Event Allow Trackbacks and Pingbacks"
2255
  msgstr ""
2256
 
2257
- #: src/Tribe/Importer/Column_Mapper.php:101 src/views/v2/day/event/venue.php:29
2258
- #: src/views/v2/list/event/venue.php:29
2259
  msgid "Venue Name"
2260
  msgstr ""
2261
 
@@ -2501,7 +2501,7 @@ msgstr ""
2501
  msgid "Upcoming Events"
2502
  msgstr ""
2503
 
2504
- #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 4.9.9) #-#-#-#-#
2505
  #. Plugin Name of the plugin/theme
2506
  #: src/Tribe/Main.php:905 src/Tribe/Main.php:1259 src/Tribe/Privacy.php:29
2507
  #: src/functions/template-tags/general.php:1358 the-events-calendar.php:56
@@ -2989,7 +2989,8 @@ msgstr ""
2989
  msgid "Search for %s by Keyword."
2990
  msgstr ""
2991
 
2992
- #: src/Tribe/Main.php:4171 src/views/v2/events-bar/search-button.php:25
 
2993
  msgid "Search"
2994
  msgstr ""
2995
 
@@ -4523,6 +4524,39 @@ msgstr ""
4523
  msgid "Unnamed Venue"
4524
  msgstr ""
4525
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4526
  #: src/Tribe/Views/V2/month-view-demo-template-tags.php:150
4527
  msgid "WordCamp Buenos Aires"
4528
  msgstr ""
@@ -6764,9 +6798,9 @@ msgstr ""
6764
 
6765
  #: src/deprecated/Tribe__Events__Asset__Bootstrap_Datepicker.php:28
6766
  #: src/functions/template-tags/day.php:104
6767
- #: src/views/v2/day/top-bar/today.php:23 src/views/v2/list/nav/today.php:31
6768
- #: src/views/v2/list/top-bar/today.php:23 src/views/v2/month/nav/today.php:31
6769
- #: src/views/v2/month/top-bar/today.php:23
6770
  msgid "Today"
6771
  msgstr ""
6772
 
@@ -6896,12 +6930,12 @@ msgid "The function needs to be passed an $event or used in the loop."
6896
  msgstr ""
6897
 
6898
  #: src/functions/template-tags/day.php:106
6899
- #: src/views/v2/day/nav/prev-disabled.php:20 src/views/v2/day/nav/prev.php:25
6900
  msgid "Previous Day"
6901
  msgstr ""
6902
 
6903
  #: src/functions/template-tags/day.php:108
6904
- #: src/views/v2/day/nav/next-disabled.php:20 src/views/v2/day/nav/next.php:25
6905
  msgid "Next Day"
6906
  msgstr ""
6907
 
@@ -6953,33 +6987,6 @@ msgstr ""
6953
  msgid "+ Google Map"
6954
  msgstr ""
6955
 
6956
- #: src/functions/template-tags/loop.php:177
6957
- msgctxt "featured events title"
6958
- msgid "Featured %s"
6959
- msgstr ""
6960
-
6961
- #: src/functions/template-tags/loop.php:187
6962
- msgid "Upcoming %s"
6963
- msgstr ""
6964
-
6965
- #: src/functions/template-tags/loop.php:202
6966
- msgid "%1$s for %2$s - %3$s"
6967
- msgstr ""
6968
-
6969
- #: src/functions/template-tags/loop.php:204
6970
- msgid "Past %s"
6971
- msgstr ""
6972
-
6973
- #: src/functions/template-tags/loop.php:209
6974
- msgctxt "month view"
6975
- msgid "%1$s for %2$s"
6976
- msgstr ""
6977
-
6978
- #: src/functions/template-tags/loop.php:218
6979
- msgctxt "day_view"
6980
- msgid "%1$s for %2$s"
6981
- msgstr ""
6982
-
6983
  #: src/functions/template-tags/options.php:20
6984
  msgid "Your current Events URL is %s"
6985
  msgstr ""
@@ -6990,13 +6997,13 @@ msgid ""
6990
  "plural, and this singular.%3$sYour single Event URL is like: %4$s"
6991
  msgstr ""
6992
 
6993
- #: src/functions/template-tags/venue.php:855
6994
  msgctxt "Address separator"
6995
  msgid ", "
6996
  msgstr ""
6997
 
6998
  #: src/views/blocks/event-datetime.php:80
6999
- #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:36
7000
  msgid "All day"
7001
  msgstr ""
7002
 
@@ -7023,7 +7030,7 @@ msgid "Find out more"
7023
  msgstr ""
7024
 
7025
  #: src/views/kitchen-sink/page.php:255
7026
- #: src/views/v2/events-bar/search/keyword.php:32
7027
  msgid "Search for events"
7028
  msgstr ""
7029
 
@@ -7043,7 +7050,7 @@ msgstr ""
7043
  msgid "Next %s"
7044
  msgstr ""
7045
 
7046
- #: src/views/modules/bar.php:38 src/views/v2/events-bar.php:21
7047
  msgid "%s Search and Views Navigation"
7048
  msgstr ""
7049
 
@@ -7063,11 +7070,12 @@ msgstr ""
7063
  msgid "Submit %s search"
7064
  msgstr ""
7065
 
7066
- #: src/views/modules/bar.php:74 src/views/v2/events-bar/search/submit.php:20
 
7067
  msgid "Find %s"
7068
  msgstr ""
7069
 
7070
- #: src/views/modules/bar.php:86 src/views/v2/events-bar/views.php:29
7071
  msgid "%s Views Navigation"
7072
  msgstr ""
7073
 
@@ -7080,7 +7088,7 @@ msgid "View As"
7080
  msgstr ""
7081
 
7082
  #: src/views/month/loop-grid.php:25 src/views/month/loop-grid.php:28
7083
- #: src/views/v2/month/calendar-header.php:20
7084
  msgid "Calendar of %s"
7085
  msgstr ""
7086
 
@@ -7116,6 +7124,14 @@ msgstr ""
7116
  msgid "see all"
7117
  msgstr ""
7118
 
 
 
 
 
 
 
 
 
7119
  #: src/views/v2/components/top-bar/nav/next-disabled.php:21
7120
  #: src/views/v2/components/top-bar/nav/next-disabled.php:22
7121
  #: src/views/v2/components/top-bar/nav/next.php:22
@@ -7133,48 +7149,43 @@ msgstr ""
7133
  msgid "Previous"
7134
  msgstr ""
7135
 
7136
- #: src/views/v2/day/event/date.php:28 src/views/v2/day/event/date.php:29
7137
- #: src/views/v2/day/event/date.php:33 src/views/v2/list/event/date.php:28
7138
- #: src/views/v2/list/event/date.php:29 src/views/v2/list/event/date.php:33
7139
  #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:24
7140
  #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:25
7141
  #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:81
7142
  #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:82
7143
- #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:26
7144
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:27
7145
- #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:31
 
7146
  msgid "Featured"
7147
  msgstr ""
7148
 
7149
- #: src/views/v2/day/top-bar/datepicker.php:38
7150
- #: src/views/v2/list/top-bar/datepicker.php:73
7151
- #: src/views/v2/month/top-bar/datepicker.php:33
7152
  msgid "Select date."
7153
  msgstr ""
7154
 
7155
- #: src/views/v2/events-bar/search/keyword.php:23
7156
- msgid "Enter Keyword. Search for %s by Keyword."
7157
  msgstr ""
7158
 
7159
  #. translators: %s: Event (plural or singular).
7160
- #: src/views/v2/list/nav/next-disabled.php:24 src/views/v2/list/nav/next.php:29
7161
  msgid "Next %1$s"
7162
  msgstr ""
7163
 
7164
  #. translators: %s: Event (plural or singular).
7165
- #: src/views/v2/list/nav/prev-disabled.php:24 src/views/v2/list/nav/prev.php:29
7166
  msgid "Previous %1$s"
7167
  msgstr ""
7168
 
7169
- #: src/views/v2/list/top-bar/datepicker.php:58
7170
  msgid "Now"
7171
  msgstr ""
7172
 
7173
- #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cta.php:33
7174
- #: src/views/v2/month/mobile-events/mobile-day/mobile-event/cta.php:30
7175
- msgid "Buy Now"
7176
- msgstr ""
7177
-
7178
  #: src/views/v2/month/calendar-body/day/more-events.php:35
7179
  msgid "+ %d More"
7180
  msgid_plural "+ %d More"
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.10\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
+ "POT-Creation-Date: 2019-10-15 06:31:59+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-10-15 06:31\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
2254
  msgid "Event Allow Trackbacks and Pingbacks"
2255
  msgstr ""
2256
 
2257
+ #: src/Tribe/Importer/Column_Mapper.php:101 src/views/v2/day/event/venue.php:28
2258
+ #: src/views/v2/list/event/venue.php:28
2259
  msgid "Venue Name"
2260
  msgstr ""
2261
 
2501
  msgid "Upcoming Events"
2502
  msgstr ""
2503
 
2504
+ #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 4.9.10) #-#-#-#-#
2505
  #. Plugin Name of the plugin/theme
2506
  #: src/Tribe/Main.php:905 src/Tribe/Main.php:1259 src/Tribe/Privacy.php:29
2507
  #: src/functions/template-tags/general.php:1358 the-events-calendar.php:56
2989
  msgid "Search for %s by Keyword."
2990
  msgstr ""
2991
 
2992
+ #: src/Tribe/Main.php:4171
2993
+ #: src/views/v2/components/events-bar/search-button.php:25
2994
  msgid "Search"
2995
  msgstr ""
2996
 
4524
  msgid "Unnamed Venue"
4525
  msgstr ""
4526
 
4527
+ #: src/Tribe/Views/V2/Template/Title.php:105
4528
+ #: src/functions/template-tags/loop.php:177
4529
+ msgctxt "featured events title"
4530
+ msgid "Featured %s"
4531
+ msgstr ""
4532
+
4533
+ #: src/Tribe/Views/V2/Template/Title.php:115
4534
+ #: src/functions/template-tags/loop.php:187
4535
+ msgid "Upcoming %s"
4536
+ msgstr ""
4537
+
4538
+ #: src/Tribe/Views/V2/Template/Title.php:125
4539
+ #: src/functions/template-tags/loop.php:204
4540
+ msgid "Past %s"
4541
+ msgstr ""
4542
+
4543
+ #: src/Tribe/Views/V2/Template/Title.php:208
4544
+ #: src/functions/template-tags/loop.php:202
4545
+ msgid "%1$s for %2$s - %3$s"
4546
+ msgstr ""
4547
+
4548
+ #: src/Tribe/Views/V2/Template/Title.php:309
4549
+ #: src/functions/template-tags/loop.php:209
4550
+ msgctxt "month view"
4551
+ msgid "%1$s for %2$s"
4552
+ msgstr ""
4553
+
4554
+ #: src/Tribe/Views/V2/Template/Title.php:336
4555
+ #: src/functions/template-tags/loop.php:218
4556
+ msgctxt "day_view"
4557
+ msgid "%1$s for %2$s"
4558
+ msgstr ""
4559
+
4560
  #: src/Tribe/Views/V2/month-view-demo-template-tags.php:150
4561
  msgid "WordCamp Buenos Aires"
4562
  msgstr ""
6798
 
6799
  #: src/deprecated/Tribe__Events__Asset__Bootstrap_Datepicker.php:28
6800
  #: src/functions/template-tags/day.php:104
6801
+ #: src/views/v2/components/top-bar/today.php:22
6802
+ #: src/views/v2/list/nav/today.php:24
6803
+ #: src/views/v2/month/mobile-events/nav/today.php:24
6804
  msgid "Today"
6805
  msgstr ""
6806
 
6930
  msgstr ""
6931
 
6932
  #: src/functions/template-tags/day.php:106
6933
+ #: src/views/v2/day/nav/prev-disabled.php:18 src/views/v2/day/nav/prev.php:25
6934
  msgid "Previous Day"
6935
  msgstr ""
6936
 
6937
  #: src/functions/template-tags/day.php:108
6938
+ #: src/views/v2/day/nav/next-disabled.php:18 src/views/v2/day/nav/next.php:25
6939
  msgid "Next Day"
6940
  msgstr ""
6941
 
6987
  msgid "+ Google Map"
6988
  msgstr ""
6989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6990
  #: src/functions/template-tags/options.php:20
6991
  msgid "Your current Events URL is %s"
6992
  msgstr ""
6997
  "plural, and this singular.%3$sYour single Event URL is like: %4$s"
6998
  msgstr ""
6999
 
7000
+ #: src/functions/template-tags/venue.php:852
7001
  msgctxt "Address separator"
7002
  msgid ", "
7003
  msgstr ""
7004
 
7005
  #: src/views/blocks/event-datetime.php:80
7006
+ #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:37
7007
  msgid "All day"
7008
  msgstr ""
7009
 
7030
  msgstr ""
7031
 
7032
  #: src/views/kitchen-sink/page.php:255
7033
+ #: src/views/v2/components/events-bar/search/keyword.php:32
7034
  msgid "Search for events"
7035
  msgstr ""
7036
 
7050
  msgid "Next %s"
7051
  msgstr ""
7052
 
7053
+ #: src/views/modules/bar.php:38 src/views/v2/components/events-bar.php:22
7054
  msgid "%s Search and Views Navigation"
7055
  msgstr ""
7056
 
7070
  msgid "Submit %s search"
7071
  msgstr ""
7072
 
7073
+ #: src/views/modules/bar.php:74
7074
+ #: src/views/v2/components/events-bar/search/submit.php:21
7075
  msgid "Find %s"
7076
  msgstr ""
7077
 
7078
+ #: src/views/modules/bar.php:86 src/views/v2/components/events-bar/views.php:29
7079
  msgid "%s Views Navigation"
7080
  msgstr ""
7081
 
7088
  msgstr ""
7089
 
7090
  #: src/views/month/loop-grid.php:25 src/views/month/loop-grid.php:28
7091
+ #: src/views/v2/month/calendar-header.php:21
7092
  msgid "Calendar of %s"
7093
  msgstr ""
7094
 
7124
  msgid "see all"
7125
  msgstr ""
7126
 
7127
+ #: src/views/v2/components/events-bar/search/keyword.php:23
7128
+ msgid "Enter Keyword. Search for %s by Keyword."
7129
+ msgstr ""
7130
+
7131
+ #: src/views/v2/components/read-more.php:21
7132
+ msgid "Continue Reading"
7133
+ msgstr ""
7134
+
7135
  #: src/views/v2/components/top-bar/nav/next-disabled.php:21
7136
  #: src/views/v2/components/top-bar/nav/next-disabled.php:22
7137
  #: src/views/v2/components/top-bar/nav/next.php:22
7149
  msgid "Previous"
7150
  msgstr ""
7151
 
7152
+ #: src/views/v2/day/event/date.php:27 src/views/v2/day/event/date.php:28
7153
+ #: src/views/v2/day/event/date.php:32 src/views/v2/list/event/date.php:27
7154
+ #: src/views/v2/list/event/date.php:28 src/views/v2/list/event/date.php:32
7155
  #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:24
7156
  #: src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php:25
7157
  #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:81
7158
  #: src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php:82
 
7159
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:27
7160
+ #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:28
7161
+ #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php:32
7162
  msgid "Featured"
7163
  msgstr ""
7164
 
7165
+ #: src/views/v2/day/top-bar/datepicker.php:41
7166
+ #: src/views/v2/list/top-bar/datepicker.php:93
7167
+ #: src/views/v2/month/top-bar/datepicker.php:36
7168
  msgid "Select date."
7169
  msgstr ""
7170
 
7171
+ #: src/views/v2/day.php:28 src/views/v2/list.php:30 src/views/v2/month.php:27
7172
+ msgid "Loading..."
7173
  msgstr ""
7174
 
7175
  #. translators: %s: Event (plural or singular).
7176
+ #: src/views/v2/list/nav/next-disabled.php:22 src/views/v2/list/nav/next.php:29
7177
  msgid "Next %1$s"
7178
  msgstr ""
7179
 
7180
  #. translators: %s: Event (plural or singular).
7181
+ #: src/views/v2/list/nav/prev-disabled.php:22 src/views/v2/list/nav/prev.php:29
7182
  msgid "Previous %1$s"
7183
  msgstr ""
7184
 
7185
+ #: src/views/v2/list/top-bar/datepicker.php:62
7186
  msgid "Now"
7187
  msgstr ""
7188
 
 
 
 
 
 
7189
  #: src/views/v2/month/calendar-body/day/more-events.php:35
7190
  msgid "+ %d More"
7191
  msgid_plural "+ %d More"
readme.txt CHANGED
@@ -4,8 +4,8 @@ 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.9
8
- Tested up to: 5.2.2
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -16,7 +16,7 @@ The Events Calendar is a carefully crafted, extensible plugin that lets you easi
16
 
17
  Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust.
18
 
19
- Packed with loads of useful features, The Events Calendar by Modern Tribe is ready to go right out of the box. It’s extensible, easy to use, and completely customizable.
20
 
21
  Just getting started? Read through the [New User Primer](http://m.tri.be/2d) to get set up.
22
 
@@ -215,6 +215,15 @@ Still not happy? Shoot us an email to support@theeventscalendar.com or tweet to
215
 
216
  == Changelog ==
217
 
 
 
 
 
 
 
 
 
 
218
  = [4.9.9] 2019-09-25 =
219
 
220
  * Fix - Set the start date with the current day for the "All" events page for recurring events. Thanks Andy, leapness and others for flagging this! [130350]
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.10
8
+ Tested up to: 5.2.4
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
16
 
17
  Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust.
18
 
19
+ Packed with loads of useful features, The Events Ca`lendar by Modern Tribe is ready to go right out of the box. It’s extensible, easy to use, and completely customizable.
20
 
21
  Just getting started? Read through the [New User Primer](http://m.tri.be/2d) to get set up.
22
 
215
 
216
  == Changelog ==
217
 
218
+ = [4.9.10] 2019-10-16 =
219
+
220
+ * Tweak - added the `tribe_sanitize_deep` function to sanitize and validate input values [134427]
221
+ * Tweak - use the `tribe_sanitize_deep` function to sanitize the values returned by the `tribe_get_request_var` function [134427]
222
+ * Tweak - Rename "Datepicker Date Format" to "Compact Date Format" [134526]
223
+ * Tweak - Adjust Promoter loading order to increase compatibility with plugins that use authentication early in the process [134862]
224
+ * Tweak - Add support for Authentication using a Header when using Promoter [133922]
225
+ * Language - 2 new strings added, 25 updated, 0 fuzzied, and 1 obsoleted
226
+
227
  = [4.9.9] 2019-09-25 =
228
 
229
  * Fix - Set the start date with the current day for the "All" events page for recurring events. Thanks Andy, leapness and others for flagging this! [130350]
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.9';
36
 
37
  /**
38
  * Min Pro Addon
32
  const VENUE_POST_TYPE = 'tribe_venue';
33
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
34
 
35
+ const VERSION = '4.9.10';
36
 
37
  /**
38
  * Min Pro Addon
src/Tribe/Models/Post_Types/Event.php CHANGED
@@ -150,6 +150,7 @@ class Event extends Base {
150
  'happens_this_week' => $happens_this_week,
151
  'featured' => $featured,
152
  'cost' => tribe_get_cost( $post_id, true ),
 
153
  'organizers' => ( new Lazy_Collection( $organizer_fetch ) )->on_resolve( $cache_this ),
154
  'venues' => ( new Lazy_Collection( $venue_fetch ) )->on_resolve( $cache_this ),
155
  'thumbnail' => ( new Post_Thumbnail( $post_id ) )->on_resolve( $cache_this ),
150
  'happens_this_week' => $happens_this_week,
151
  'featured' => $featured,
152
  'cost' => tribe_get_cost( $post_id, true ),
153
+ 'excerpt' => tribe_events_get_the_excerpt( $post_id, wp_kses_allowed_html( 'post' ) ),
154
  'organizers' => ( new Lazy_Collection( $organizer_fetch ) )->on_resolve( $cache_this ),
155
  'venues' => ( new Lazy_Collection( $venue_fetch ) )->on_resolve( $cache_this ),
156
  'thumbnail' => ( new Post_Thumbnail( $post_id ) )->on_resolve( $cache_this ),
src/Tribe/Organizer.php CHANGED
@@ -639,21 +639,14 @@ class Tribe__Events__Organizer extends Tribe__Events__Linked_Posts__Base {
639
  return $callback;
640
  }
641
 
642
- // This query is bound by `posts_per_page` and it's fine and reasonable; do not make it unbound.
643
  return static function () use ( $event ) {
644
- $organizer_ids = (array) get_post_meta( $event, '_EventOrganizerID' );
645
- if ( empty( $organizer_ids ) ) {
646
- return [];
647
- }
648
- $organizer_ids = (array) tribe_organizers()
649
- ->by( 'event', $event )
650
- ->order_by( 'post__in', $organizer_ids )
651
- ->get_ids();
652
  $organizers = ! empty( $organizer_ids )
653
  ? array_map( 'tribe_get_organizer', $organizer_ids )
654
  : [];
655
 
656
- return $organizers;
657
  };
658
  }
659
 
639
  return $callback;
640
  }
641
 
 
642
  return static function () use ( $event ) {
643
+ $organizer_ids = array_map( 'absint', (array) get_post_meta( $event, '_EventOrganizerID' ) );
644
+
 
 
 
 
 
 
645
  $organizers = ! empty( $organizer_ids )
646
  ? array_map( 'tribe_get_organizer', $organizer_ids )
647
  : [];
648
 
649
+ return array_filter( $organizers );
650
  };
651
  }
652
 
src/Tribe/Service_Providers/Context.php CHANGED
@@ -12,6 +12,8 @@ use Tribe\Events\Views\V2\Utils;
12
  use Tribe__Context;
13
  use Tribe__Date_Utils as Dates;
14
  use Tribe__Events__Main as TEC;
 
 
15
 
16
  class Context extends \tad_DI52_ServiceProvider {
17
 
@@ -218,6 +220,56 @@ class Context extends \tad_DI52_ServiceProvider {
218
  'read' => [ Tribe__Context::OPTION => 'start_of_week' ],
219
  'write' => [ Tribe__Context::OPTION => 'start_of_week' ],
220
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  ] );
222
 
223
  return $locations;
12
  use Tribe__Context;
13
  use Tribe__Date_Utils as Dates;
14
  use Tribe__Events__Main as TEC;
15
+ use Tribe__Events__Organizer as Organizer;
16
+ use Tribe__Events__Venue as Venue;
17
 
18
  class Context extends \tad_DI52_ServiceProvider {
19
 
220
  'read' => [ Tribe__Context::OPTION => 'start_of_week' ],
221
  'write' => [ Tribe__Context::OPTION => 'start_of_week' ],
222
  ],
223
+ 'tec_post_type' => [
224
+ 'read' => [
225
+ Tribe__Context::LOCATION_FUNC => [
226
+ 'post_type',
227
+ static function ( $post_type ) {
228
+ return count( array_intersect(
229
+ (array) $post_type,
230
+ [ TEC::POSTTYPE, Venue::POSTTYPE, Organizer::POSTTYPE ] )
231
+ );
232
+ }
233
+ ],
234
+ ],
235
+ ],
236
+ 'event_post_type' => [
237
+ 'read' => [
238
+ Tribe__Context::LOCATION_FUNC => [
239
+ 'post_type',
240
+ static function ( $post_type ) {
241
+ return (array) $post_type === [ TEC::POSTTYPE ];
242
+ }
243
+ ]
244
+ ]
245
+ ],
246
+ 'venue_post_type' => [
247
+ 'read' => [
248
+ Tribe__Context::LOCATION_FUNC => [
249
+ 'post_type',
250
+ static function ( $post_type ) {
251
+ return (array) $post_type === [ Venue::POSTTYPE ];
252
+ }
253
+ ]
254
+ ]
255
+ ],
256
+ 'organizer_post_type' => [
257
+ 'read' => [
258
+ Tribe__Context::LOCATION_FUNC => [
259
+ 'post_type',
260
+ static function ( $post_type ) {
261
+ return (array) $post_type === [ Organizer::POSTTYPE ];
262
+ }
263
+ ]
264
+ ]
265
+ ],
266
+ 'event_category' => [
267
+ 'read' => [
268
+ Tribe__Context::QUERY_PROP => [ TEC::TAXONOMY ],
269
+ Tribe__Context::QUERY_VAR => [ TEC::TAXONOMY ],
270
+ Tribe__Context::REQUEST_VAR => [ TEC::TAXONOMY ],
271
+ ],
272
+ ],
273
  ] );
274
 
275
  return $locations;
src/Tribe/Venue.php CHANGED
@@ -697,16 +697,14 @@ class Tribe__Events__Venue extends Tribe__Events__Linked_Posts__Base {
697
  return $callback;
698
  }
699
 
700
- // This query is bound by `posts_per_page` and it's fine and reasonable; do not make it unbound.
701
  return static function () use ( $event ) {
702
- $venue_ids = tribe_venues()->by( 'event', $event )->get_ids();
 
703
  $venues = ! empty( $venue_ids )
704
  ? array_map( 'tribe_get_venue_object', $venue_ids )
705
  : [];
706
 
707
- $venues = array_filter( $venues );
708
-
709
- return $venues;
710
  };
711
  }
712
  }
697
  return $callback;
698
  }
699
 
 
700
  return static function () use ( $event ) {
701
+ $venue_ids = array_map( 'absint', (array) get_post_meta( $event, '_EventVenueID' ) );
702
+
703
  $venues = ! empty( $venue_ids )
704
  ? array_map( 'tribe_get_venue_object', $venue_ids )
705
  : [];
706
 
707
+ return array_filter( $venues );
 
 
708
  };
709
  }
710
  }
src/Tribe/Views/V2/Assets.php CHANGED
@@ -44,7 +44,10 @@ class Assets extends \tad_DI52_ServiceProvider {
44
  $plugin,
45
  'tribe-events-views-v2-full',
46
  'views-full.css',
47
- [ 'tribe-common-style', 'tribe-tooltipster-css' ],
 
 
 
48
  'wp_enqueue_scripts',
49
  [
50
  'priority' => 10,
@@ -99,7 +102,10 @@ class Assets extends \tad_DI52_ServiceProvider {
99
  $plugin,
100
  'tribe-events-views-v2-viewport',
101
  'views/viewport.js',
102
- [ 'jquery', 'tribe-common' ],
 
 
 
103
  null,
104
  [
105
  'priority' => 10,
@@ -110,7 +116,10 @@ class Assets extends \tad_DI52_ServiceProvider {
110
  $plugin,
111
  'tribe-events-views-v2-accordion',
112
  'views/accordion.js',
113
- [ 'jquery', 'tribe-common' ],
 
 
 
114
  null,
115
  [
116
  'priority' => 10,
@@ -121,7 +130,12 @@ class Assets extends \tad_DI52_ServiceProvider {
121
  $plugin,
122
  'tribe-events-views-v2-view-selector',
123
  'views/view-selector.js',
124
- [ 'jquery', 'tribe-common', 'tribe-events-views-v2-viewport', 'tribe-events-views-v2-accordion', ],
 
 
 
 
 
125
  null,
126
  [
127
  'priority' => 10,
@@ -132,7 +146,10 @@ class Assets extends \tad_DI52_ServiceProvider {
132
  $plugin,
133
  'tribe-events-views-v2-navigation-scroll',
134
  'views/navigation-scroll.js',
135
- [ 'jquery', 'tribe-common' ],
 
 
 
136
  null,
137
  [
138
  'priority' => 15,
@@ -143,7 +160,10 @@ class Assets extends \tad_DI52_ServiceProvider {
143
  $plugin,
144
  'tribe-events-views-v2-multiday-events',
145
  'views/multiday-events.js',
146
- [ 'jquery', 'tribe-common' ],
 
 
 
147
  null,
148
  [
149
  'priority' => 10,
@@ -154,7 +174,12 @@ class Assets extends \tad_DI52_ServiceProvider {
154
  $plugin,
155
  'tribe-events-views-v2-month-mobile-events',
156
  'views/month-mobile-events.js',
157
- [ 'jquery', 'tribe-common', 'tribe-events-views-v2-viewport', 'tribe-events-views-v2-accordion' ],
 
 
 
 
 
158
  null,
159
  [
160
  'priority' => 10,
@@ -176,7 +201,11 @@ class Assets extends \tad_DI52_ServiceProvider {
176
  $plugin,
177
  'tribe-events-views-v2-tooltip',
178
  'views/tooltip.js',
179
- [ 'jquery', 'tribe-common', 'tribe-tooltipster' ],
 
 
 
 
180
  null,
181
  [
182
  'priority' => 10,
@@ -187,7 +216,11 @@ class Assets extends \tad_DI52_ServiceProvider {
187
  $plugin,
188
  'tribe-events-views-v2-events-bar',
189
  'views/events-bar.js',
190
- [ 'jquery', 'tribe-common', 'tribe-events-views-v2-accordion' ],
 
 
 
 
191
  null,
192
  [
193
  'priority' => 10,
@@ -198,7 +231,10 @@ class Assets extends \tad_DI52_ServiceProvider {
198
  $plugin,
199
  'tribe-events-views-v2-events-bar-inputs',
200
  'views/events-bar-inputs.js',
201
- [ 'jquery', 'tribe-common' ],
 
 
 
202
  null,
203
  [
204
  'priority' => 10,
@@ -209,7 +245,11 @@ class Assets extends \tad_DI52_ServiceProvider {
209
  $plugin,
210
  'tribe-events-views-v2-datepicker',
211
  'views/datepicker.js',
212
- [ 'jquery', 'tribe-common', 'tribe-events-views-v2-bootstrap-datepicker' ],
 
 
 
 
213
  null,
214
  [
215
  'priority' => 10,
@@ -231,6 +271,10 @@ class Assets extends \tad_DI52_ServiceProvider {
231
  */
232
  public function disable_v1() {
233
  wp_deregister_script( 'tribe-events-calendar-script' );
 
 
 
 
234
  }
235
 
236
  /**
44
  $plugin,
45
  'tribe-events-views-v2-full',
46
  'views-full.css',
47
+ [
48
+ 'tribe-common-style',
49
+ 'tribe-tooltipster-css',
50
+ ],
51
  'wp_enqueue_scripts',
52
  [
53
  'priority' => 10,
102
  $plugin,
103
  'tribe-events-views-v2-viewport',
104
  'views/viewport.js',
105
+ [
106
+ 'jquery',
107
+ 'tribe-common',
108
+ ],
109
  null,
110
  [
111
  'priority' => 10,
116
  $plugin,
117
  'tribe-events-views-v2-accordion',
118
  'views/accordion.js',
119
+ [
120
+ 'jquery',
121
+ 'tribe-common',
122
+ ],
123
  null,
124
  [
125
  'priority' => 10,
130
  $plugin,
131
  'tribe-events-views-v2-view-selector',
132
  'views/view-selector.js',
133
+ [
134
+ 'jquery',
135
+ 'tribe-common',
136
+ 'tribe-events-views-v2-viewport',
137
+ 'tribe-events-views-v2-accordion',
138
+ ],
139
  null,
140
  [
141
  'priority' => 10,
146
  $plugin,
147
  'tribe-events-views-v2-navigation-scroll',
148
  'views/navigation-scroll.js',
149
+ [
150
+ 'jquery',
151
+ 'tribe-common',
152
+ ],
153
  null,
154
  [
155
  'priority' => 15,
160
  $plugin,
161
  'tribe-events-views-v2-multiday-events',
162
  'views/multiday-events.js',
163
+ [
164
+ 'jquery',
165
+ 'tribe-common',
166
+ ],
167
  null,
168
  [
169
  'priority' => 10,
174
  $plugin,
175
  'tribe-events-views-v2-month-mobile-events',
176
  'views/month-mobile-events.js',
177
+ [
178
+ 'jquery',
179
+ 'tribe-common',
180
+ 'tribe-events-views-v2-viewport',
181
+ 'tribe-events-views-v2-accordion',
182
+ ],
183
  null,
184
  [
185
  'priority' => 10,
201
  $plugin,
202
  'tribe-events-views-v2-tooltip',
203
  'views/tooltip.js',
204
+ [
205
+ 'jquery',
206
+ 'tribe-common',
207
+ 'tribe-tooltipster',
208
+ ],
209
  null,
210
  [
211
  'priority' => 10,
216
  $plugin,
217
  'tribe-events-views-v2-events-bar',
218
  'views/events-bar.js',
219
+ [
220
+ 'jquery',
221
+ 'tribe-common',
222
+ 'tribe-events-views-v2-accordion',
223
+ ],
224
  null,
225
  [
226
  'priority' => 10,
231
  $plugin,
232
  'tribe-events-views-v2-events-bar-inputs',
233
  'views/events-bar-inputs.js',
234
+ [
235
+ 'jquery',
236
+ 'tribe-common',
237
+ ],
238
  null,
239
  [
240
  'priority' => 10,
245
  $plugin,
246
  'tribe-events-views-v2-datepicker',
247
  'views/datepicker.js',
248
+ [
249
+ 'jquery',
250
+ 'tribe-common',
251
+ 'tribe-events-views-v2-bootstrap-datepicker',
252
+ ],
253
  null,
254
  [
255
  'priority' => 10,
271
  */
272
  public function disable_v1() {
273
  wp_deregister_script( 'tribe-events-calendar-script' );
274
+ wp_deregister_script( 'tribe-events-bar' );
275
+ wp_deregister_script( 'the-events-calendar' );
276
+ wp_deregister_script( 'tribe-events-ajax-day' );
277
+ wp_deregister_script( 'tribe-events-list' );
278
  }
279
 
280
  /**
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__Main as TEC;
23
  use Tribe__Rewrite as Rewrite;
24
 
@@ -37,9 +39,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
37
  * @since 4.9.2
38
  */
39
  public function register() {
40
- $this->container->tag( [
41
- Event_Query_Controller::class,
42
- ], 'query_controllers' );
43
  $this->add_actions();
44
  $this->add_filters();
45
  }
@@ -52,8 +52,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
52
  protected function add_actions() {
53
  add_action( 'rest_api_init', [ $this, 'register_rest_endpoints' ] );
54
  add_action( 'tribe_common_loaded', [ $this, 'on_tribe_common_loaded' ], 1 );
55
- add_action( 'loop_start', [ $this, 'on_loop_start' ], PHP_INT_MAX );
56
- add_action( 'wp_head', [ $this, 'on_wp_head' ], PHP_INT_MAX );
57
  add_action( 'tribe_events_pre_rewrite', [ $this, 'on_tribe_events_pre_rewrite' ] );
58
  }
59
 
@@ -70,6 +69,13 @@ class Hooks extends \tad_DI52_ServiceProvider {
70
  add_filter( 'body_class', [ $this, 'filter_body_class' ] );
71
  add_filter( 'query_vars', [ $this, 'filter_query_vars' ], 15 );
72
  add_filter( 'tribe_rewrite_canonical_query_args', [ $this, 'filter_map_canonical_query_args' ], 15, 3 );
 
 
 
 
 
 
 
73
  }
74
 
75
  /**
@@ -82,16 +88,6 @@ class Hooks extends \tad_DI52_ServiceProvider {
82
  $this->container->make( Rest_Endpoint::class )->maybe_enable_ajax_fallback();
83
  }
84
 
85
- /**
86
- * Fires when the loop starts.
87
- *
88
- * @since 4.9.2
89
- *
90
- * @param \WP_Query $query
91
- */
92
- public function on_loop_start( \WP_Query $query ) {
93
- $this->container->make( Template\Page::class )->maybe_hijack_page_template( $query );
94
- }
95
 
96
  /**
97
  * Fires when WordPress head is printed.
@@ -206,4 +202,59 @@ class Hooks extends \tad_DI52_ServiceProvider {
206
  public function filter_body_class( $classes ) {
207
  return $this->container->make( Theme_Compatibility::class )->filter_add_body_classes( $classes );
208
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
209
  }
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\Views\V2\Template\Excerpt;
24
  use Tribe__Events__Main as TEC;
25
  use Tribe__Rewrite as Rewrite;
26
 
39
  * @since 4.9.2
40
  */
41
  public function register() {
42
+ $this->container->tag( [ Event_Query_Controller::class, ], 'query_controllers' );
 
 
43
  $this->add_actions();
44
  $this->add_filters();
45
  }
52
  protected function add_actions() {
53
  add_action( 'rest_api_init', [ $this, 'register_rest_endpoints' ] );
54
  add_action( 'tribe_common_loaded', [ $this, 'on_tribe_common_loaded' ], 1 );
55
+ add_action( 'wp_head', [ $this, 'on_wp_head' ], 1000 );
 
56
  add_action( 'tribe_events_pre_rewrite', [ $this, 'on_tribe_events_pre_rewrite' ] );
57
  }
58
 
69
  add_filter( 'body_class', [ $this, 'filter_body_class' ] );
70
  add_filter( 'query_vars', [ $this, 'filter_query_vars' ], 15 );
71
  add_filter( 'tribe_rewrite_canonical_query_args', [ $this, 'filter_map_canonical_query_args' ], 15, 3 );
72
+ add_filter( 'excerpt_length', [ $this, 'filter_excerpt_length' ] );
73
+ add_filter( 'excerpt_more', [ $this, 'filter_excerpt_more' ], 999 );
74
+
75
+ if ( tribe_context()->doing_php_initial_state() ) {
76
+ add_filter( 'wp_title', [ $this, 'filter_wp_title' ], 10, 2 );
77
+ add_filter( 'document_title_parts', [ $this, 'filter_document_title_parts' ] );
78
+ }
79
  }
80
 
81
  /**
88
  $this->container->make( Rest_Endpoint::class )->maybe_enable_ajax_fallback();
89
  }
90
 
 
 
 
 
 
 
 
 
 
 
91
 
92
  /**
93
  * Fires when WordPress head is printed.
202
  public function filter_body_class( $classes ) {
203
  return $this->container->make( Theme_Compatibility::class )->filter_add_body_classes( $classes );
204
  }
205
+
206
+ /**
207
+ * Filters the `wp_title` template tag.
208
+ *
209
+ * @since TBD
210
+ *
211
+ * @param string $title The current title value.
212
+ * @param string|null $sep The separator char, or sequence, to use to separate the page title from the blog one.
213
+ *
214
+ * @return string The modified page title, if required.
215
+ */
216
+ public function filter_wp_title( $title, $sep = null ) {
217
+ return $this->container->make( Title::class )->filter_wp_title( $title, $sep );
218
+ }
219
+
220
+ /**
221
+ * Filters the `wp_get_document_title` template tag.
222
+ *
223
+ * This is the template tag introduced in WP 4.4 to get the page title.
224
+ *
225
+ * @since TBD
226
+ *
227
+ * @param string $title The page title.
228
+ *
229
+ * @return string The modified page title, if required.
230
+ */
231
+ public function filter_document_title_parts( $title ) {
232
+ return $this->container->make( Title::class )->filter_document_title_parts( $title );
233
+ }
234
+
235
+ /**
236
+ * Filters the `excerpt_length`.
237
+ *
238
+ * @since TBD
239
+ *
240
+ * @param int $length The excerpt length.
241
+ *
242
+ * @return int The modified excerpt length, if required.
243
+ */
244
+ public function filter_excerpt_length( $length ) {
245
+ return $this->container->make( Template\Excerpt::class )->maybe_filter_excerpt_length( $length );
246
+ }
247
+
248
+ /**
249
+ * Filters the `excerpt_more`.
250
+ *
251
+ * @since TBD
252
+ *
253
+ * @param string $link The excerpt read more link.
254
+ *
255
+ * @return int The modified excerpt read more link, if required.
256
+ */
257
+ public function filter_excerpt_more( $link ) {
258
+ return $this->container->make( Template\Excerpt::class )->maybe_filter_excerpt_more( $link );
259
+ }
260
  }
src/Tribe/Views/V2/Query/Abstract_Query_Controller.php CHANGED
@@ -136,6 +136,9 @@ abstract class Abstract_Query_Controller {
136
  $query->max_num_pages = $query->post_count > 0
137
  ? ceil( $query->found_posts / $query->post_count )
138
  : 1;
 
 
 
139
 
140
  return $injected_posts;
141
  }
136
  $query->max_num_pages = $query->post_count > 0
137
  ? ceil( $query->found_posts / $query->post_count )
138
  : 1;
139
+ $query->is_single = false;
140
+ $query->is_singular = false;
141
+ $query->is_archive = true;
142
 
143
  return $injected_posts;
144
  }
src/Tribe/Views/V2/Template/Event.php CHANGED
@@ -10,8 +10,6 @@
10
  */
11
  namespace Tribe\Events\Views\V2\Template;
12
 
13
- use Tribe__Events__Main as TEC;
14
- use Tribe\Events\Views\V2\Index as Index;
15
  use Tribe\Events\Views\V2\View;
16
 
17
  class Event {
10
  */
11
  namespace Tribe\Events\Views\V2\Template;
12
 
 
 
13
  use Tribe\Events\Views\V2\View;
14
 
15
  class Event {
src/Tribe/Views/V2/Template/Excerpt.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Handles the manipulation of the excerpt.
4
+ *
5
+ * @since TBD
6
+ *
7
+ * @package Tribe\Events\Views\V2\Template
8
+ */
9
+
10
+ namespace Tribe\Events\Views\V2\Template;
11
+ use Tribe__Template as Base_Template;
12
+ use Tribe__Events__Main as Plugin;
13
+
14
+ /**
15
+ * Class Excerpt
16
+ *
17
+ * @since TBD
18
+ *
19
+ * @package Tribe\Events\Views\V2\Template
20
+ */
21
+ class Excerpt extends Base_Template {
22
+
23
+ /**
24
+ * Excerpt constructor.
25
+ *
26
+ * @since TBD
27
+ */
28
+ public function __construct() {
29
+ $this->set_template_origin( Plugin::instance() );
30
+ $this->set_template_folder( 'src/views/v2' );
31
+ $this->set_template_context_extract( true );
32
+ $this->set_template_folder_lookup( true );
33
+ }
34
+
35
+ /**
36
+ * Filters the excerpt length.
37
+ *
38
+ * Set the excerpt length for list and day view.
39
+ *
40
+ * @since TBD
41
+ *
42
+ * @param int $length The excerpt length.
43
+ *
44
+ * @return int The excerpt length modified, if necessary.
45
+ */
46
+ public function maybe_filter_excerpt_length( $length ) {
47
+ $context = tribe_context();
48
+ $view = $context->get( 'event_display_mode', 'list' );
49
+
50
+ return in_array( $view, [ 'list', 'day' ] ) ? 30 : $length;
51
+ }
52
+
53
+ /**
54
+ * Filters the excerpt more button.
55
+ *
56
+ * Set the excerpt more button styles for twentyseventeen.
57
+ *
58
+ * @since TBD
59
+ *
60
+ * @param string $link The excerpt read more link.
61
+ *
62
+ * @return string The excerpt read more link modified, if necessary.
63
+ */
64
+ public function maybe_filter_excerpt_more( $link ) {
65
+
66
+ if ( is_admin() ) {
67
+ return $link;
68
+ }
69
+
70
+ $template = strtolower( get_template() );
71
+
72
+ // Check if theme is twentyseventeen.
73
+ if ( ! $template || 'twentyseventeen' !== $template ) {
74
+ return $link;
75
+ }
76
+
77
+ return $this->template( 'components/read-more', [], false );
78
+ }
79
+
80
+ }
src/Tribe/Views/V2/Template/Page.php CHANGED
@@ -17,18 +17,18 @@ use Tribe__Utils__Array as Arr;
17
 
18
  class Page {
19
  /**
20
- * Determines the Path for the PHP file to be used as the main template
21
- * For Page base template setting it will select from theme or child theme
22
  *
23
  * @since 4.9.2
24
  *
25
  * @return string
26
  */
27
  public function get_path() {
28
- // Fetches the WP default path for Page
29
  $template = get_page_template();
30
 
31
- // If there wasn't any defined we fetch the Index
32
  if ( empty( $template ) ) {
33
  $template = get_index_template();
34
  }
@@ -36,6 +36,20 @@ class Page {
36
  return $template;
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  /**
40
  * When using Page template we need to specifically hijack the WordPress templating
41
  * system at a specific point after `loop_start`.
@@ -53,27 +67,27 @@ class Page {
53
 
54
  $mock_page = $this->get_mocked_page();
55
 
56
- // don't query the database for the spoofed post
57
  wp_cache_set( $mock_page->ID, $mock_page, 'posts' );
58
  wp_cache_set( $mock_page->ID, [ true ], 'post_meta' );
59
 
60
- // on loop start, unset the global post so that template tags don't work before the_content()
61
  add_action( 'the_post', [ $this, 'hijack_the_post' ], 25 );
62
 
63
- // Load our page Content
64
  add_filter( 'the_content', [ $this, 'filter_hijack_page_content' ], 25 );
65
 
66
- // Prevent edit link from showing
67
  add_filter( 'get_edit_post_link', [ $this, 'filter_prevent_edit_link' ], 25, 2 );
68
 
69
- // Makes sure Comments are not active
70
  add_filter( 'comments_template', [ $this, 'filter_remove_comments' ], 25 );
71
  }
72
 
73
  /**
74
- * Remove any possible comments template from Page that the theme might have
75
  *
76
- * @todo Take in consideration tribe_get_option( 'showComments', false ) values later on
77
  *
78
  * @since 4.9.2
79
  */
@@ -84,8 +98,8 @@ class Page {
84
  }
85
 
86
  /**
87
- * Prevents the Edit link to ever be displayed on any well designed theme
88
- * Ideally this method is here to return an empty string for the Mock Page
89
  *
90
  * @since 4.9.2
91
  *
@@ -155,6 +169,8 @@ class Page {
155
 
156
  // re-do counting
157
  $wp_query->rewind_posts();
 
 
158
  }
159
 
160
  /**
17
 
18
  class Page {
19
  /**
20
+ * Determines the Path for the PHP file to be used as the main template.
21
+ * For Page base template setting it will select from theme or child theme.
22
  *
23
  * @since 4.9.2
24
  *
25
  * @return string
26
  */
27
  public function get_path() {
28
+ // Fetches the WP default path for Page.
29
  $template = get_page_template();
30
 
31
+ // If there wasn't any defined we fetch the Index.
32
  if ( empty( $template ) ) {
33
  $template = get_index_template();
34
  }
36
  return $template;
37
  }
38
 
39
+ /**
40
+ * Fires when the loop starts, and tries to hijack the loop for post.
41
+ *
42
+ * @since TBD
43
+ *
44
+ * @param \WP_Query $query
45
+ */
46
+ public function hijack_on_loop_start( \WP_Query $query ) {
47
+ // After attaching itself it will prevent it from happening again.
48
+ remove_action( 'loop_start', [ $this, 'hijack_on_loop_start' ], 1000 );
49
+
50
+ $this->maybe_hijack_page_template( $query );
51
+ }
52
+
53
  /**
54
  * When using Page template we need to specifically hijack the WordPress templating
55
  * system at a specific point after `loop_start`.
67
 
68
  $mock_page = $this->get_mocked_page();
69
 
70
+ // don't query the database for the spoofed post.
71
  wp_cache_set( $mock_page->ID, $mock_page, 'posts' );
72
  wp_cache_set( $mock_page->ID, [ true ], 'post_meta' );
73
 
74
+ // on loop start, unset the global post so that template tags don't work before the_content().
75
  add_action( 'the_post', [ $this, 'hijack_the_post' ], 25 );
76
 
77
+ // Load our page Content.
78
  add_filter( 'the_content', [ $this, 'filter_hijack_page_content' ], 25 );
79
 
80
+ // Prevent edit link from showing.
81
  add_filter( 'get_edit_post_link', [ $this, 'filter_prevent_edit_link' ], 25, 2 );
82
 
83
+ // Makes sure Comments are not active.
84
  add_filter( 'comments_template', [ $this, 'filter_remove_comments' ], 25 );
85
  }
86
 
87
  /**
88
+ * Remove any possible comments template from Page that the theme might have.
89
  *
90
+ * @todo Take in consideration tribe_get_option( 'showComments', false ) values later on.
91
  *
92
  * @since 4.9.2
93
  */
98
  }
99
 
100
  /**
101
+ * Prevents the Edit link to ever be displayed on any well designed theme.
102
+ * Ideally this method is here to return an empty string for the Mock Page.
103
  *
104
  * @since 4.9.2
105
  *
169
 
170
  // re-do counting
171
  $wp_query->rewind_posts();
172
+
173
+ add_action( 'loop_start', [ $this, 'hijack_on_loop_start' ], 1000 );
174
  }
175
 
176
  /**
src/Tribe/Views/V2/Template/Title.php ADDED
@@ -0,0 +1,378 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Handles the manipulation of the template title to correctly render it in the context of a Views v2 request.
4
+ *
5
+ * @since TBD
6
+ *
7
+ * @package Tribe\Events\Views\V2\Template
8
+ */
9
+
10
+ namespace Tribe\Events\Views\V2\Template;
11
+
12
+ use Tribe__Context as Context;
13
+ use Tribe__Date_Utils as Dates;
14
+ use Tribe__Events__Main as TEC;
15
+
16
+ /**
17
+ * Class Title
18
+ *
19
+ * @since TBD
20
+ *
21
+ * @package Tribe\Events\Views\V2\Template
22
+ */
23
+ class Title {
24
+
25
+ /**
26
+ * The instance of the Context object that will be used to build the title, the global one otherwise.
27
+ *
28
+ * @since TBD
29
+ *
30
+ * @var Context
31
+ */
32
+ protected $context;
33
+ /**
34
+ * An array of the events matching the query the title should be built for.
35
+ *
36
+ * @since TBD
37
+ *
38
+ * @var array
39
+ */
40
+ protected $posts;
41
+
42
+ /**
43
+ * The plural Events label.
44
+ *
45
+ * @since TBD
46
+ *
47
+ * @var string
48
+ */
49
+ protected $events_label_plural;
50
+
51
+ /**
52
+ * Title constructor.
53
+ *
54
+ * @since TBD
55
+ */
56
+ public function __construct() {
57
+ $this->events_label_plural = tribe_get_event_label_plural();
58
+ }
59
+
60
+ /**
61
+ * Builds and returns the page title, to be used to filter the `wp_title` tag.
62
+ *
63
+ * @since TBD
64
+ *
65
+ * @param string $title The page title built so far.
66
+ * @param null|string $sep The separator sequence to separate the title components..
67
+ *
68
+ * @return string the filtered page title.
69
+ */
70
+ public function filter_wp_title( $title, $sep = null ) {
71
+ $new_title = $this->build_title( false );
72
+
73
+ /**
74
+ * Filters the page title built for event single or archive pages.
75
+ *
76
+ * @since TBD
77
+ *
78
+ * @param string $new_title The new title built for the page.
79
+ * @param string $title The original title.
80
+ * @param null|string $sep The separator sequence to separate the title components.
81
+ */
82
+ $the_title = apply_filters( 'tribe_events_title_tag', $new_title, $title, $sep );
83
+
84
+ return $the_title;
85
+ }
86
+
87
+ /**
88
+ * Builds the page title from a context.
89
+ *
90
+ * This method is a rewrite of the `tribe_get_events_title` function to make it leverage the local context,
91
+ * injectable and controllable, in place of the global one.
92
+ *
93
+ * @since TBD
94
+ *
95
+ * @param bool $depth Whether to use depth to build the taxonomy archive title, or not.
96
+ *
97
+ * @return string The page title.
98
+ */
99
+ public function build_title( $depth = true ) {
100
+ $context = $this->context ?: tribe_context();
101
+ $posts = $this->get_posts();
102
+
103
+ if ( $context->is( 'featured' ) ) {
104
+ $this->events_label_plural = sprintf(
105
+ _x( 'Featured %s', 'featured events title', 'the-events-calendar' ),
106
+ $this->events_label_plural
107
+ );
108
+ }
109
+
110
+ if ( $context->is( 'single' ) && $context->is( 'event_post_type' ) ) {
111
+ // For single events, the event title itself is required
112
+ $title = get_the_title( $context->get( 'post_id' ) );
113
+ } else {
114
+ // For all other cases, start with 'upcoming events'
115
+ $title = sprintf( esc_html__( 'Upcoming %s', 'the-events-calendar' ), $this->events_label_plural );
116
+ }
117
+
118
+ // If there's a date selected in the tribe bar, show the date range of the currently showing events
119
+ $event_date = $context->get( 'event_date', false );
120
+
121
+ $event_display_mode = $context->get( 'event_display_mode' );
122
+ if ( $event_date && count( $posts ) ) {
123
+ $title = $this->build_post_range_title( $context, $event_date );
124
+ } elseif ( 'past' === $event_display_mode ) {
125
+ $title = sprintf( esc_html__( 'Past %s', 'the-events-calendar' ), $this->events_label_plural );
126
+ }
127
+
128
+ if ( 'month' === $event_display_mode ) {
129
+ $title = $this->build_month_title( $event_date );
130
+ }
131
+
132
+ if ( 'day' === $event_display_mode ) {
133
+ $title = $this->build_day_title( $event_date );
134
+ }
135
+
136
+ $term = $context->get( TEC::TAXONOMY, false );
137
+ if ( false !== $term && $depth ) {
138
+ $cat = get_term_by( 'slug', $term, TEC::TAXONOMY );
139
+
140
+ if ( $cat instanceof \WP_Term ) {
141
+ $title = $this->build_category_title( $title, $cat );
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Allows for customization of the "Events" page title.
147
+ *
148
+ * This is the same filter used in the `tribe_get_events_title` function.
149
+ * This is by design, to allow the same filtering to apply. Since this method built the value using the context
150
+ * that is passed to filtering functions as a third parameter.
151
+ *
152
+ * @since TBD
153
+ *
154
+ * @param string $title The "Events" page title as it's been generated thus far.
155
+ * @param bool $depth Whether to include the linked title or not.
156
+ * @param Context $context The context used to build the title, it could be the global one, or one externally
157
+ * set.
158
+ */
159
+ $title = apply_filters( 'tribe_get_events_title', $title, $depth, $context );
160
+
161
+ /**
162
+ * Filters the view title, specific to Views V2.
163
+ *
164
+ * While the `tribe_get_events_title` is called above this one for back-compatibility purposes, this filter
165
+ * is exclusive to the Views V2 implementation.
166
+ *
167
+ * @since TBD
168
+ *
169
+ * @param string $title The "Events" page title as it's been generated thus far.
170
+ * @param bool $depth Whether to include the linked title or not.
171
+ * @param Context $context The context used to build the title, it could be the global one, or one externally
172
+ * set.
173
+ * @param array $posts An array of posts fetched by the View.
174
+ */
175
+ return apply_filters( 'tribe_events_v2_view_title', $title, $depth, $context, $posts );
176
+ }
177
+
178
+ /**
179
+ * Builds the title for a range of posts.
180
+ *
181
+ * @since TBD
182
+ *
183
+ * @param Context $context The context to use to build the title.
184
+ * @param mixed $event_date The event date object, string or timestamp.
185
+ *
186
+ * @return array The built post range title.
187
+ */
188
+ public function build_post_range_title( Context $context, $event_date ) {
189
+ $event_date = Dates::build_date_object( $event_date )->format( Dates::DBDATEFORMAT );
190
+ $posts = $this->get_posts();
191
+
192
+ $first = reset( $posts );
193
+ $last = end( $posts );
194
+
195
+ $first_returned_date = tribe_get_start_date( $first, false, Dates::DBDATEFORMAT );
196
+ $first_event_date = tribe_get_start_date( $first, false );
197
+ $last_event_date = tribe_get_end_date( $last, false );
198
+
199
+ /*
200
+ * If we are on page 1 then we may wish to use the *selected* start date in place of the
201
+ * first returned event date.
202
+ */
203
+ $page = $context->get( 'paged', 1 );
204
+ if ( 1 == $page && $event_date < $first_returned_date ) {
205
+ $first_event_date = tribe_format_date( $event_date, false );
206
+ }
207
+
208
+ $title = sprintf( __( '%1$s for %2$s - %3$s', 'the-events-calendar' ), $this->events_label_plural, $first_event_date, $last_event_date );
209
+
210
+ return $title;
211
+ }
212
+
213
+ /**
214
+ * Filters and returns the `title` part of the array produced by the `wp_get_document_title` function.
215
+ *
216
+ * @since TBD
217
+ *
218
+ * @param array $title The document title parts.
219
+ *
220
+ * @return array The filtered document title parts.
221
+ */
222
+ public function filter_document_title_parts( array $title = [] ) {
223
+ $sep = apply_filters( 'document_title_separator', '-' );
224
+ $the_title = $title['title'];
225
+
226
+ $new_title = $this->build_title( false );
227
+
228
+ /**
229
+ * Filters the page title built for event single or archive pages.
230
+ *
231
+ * @since TBD
232
+ *
233
+ * @param string $new_title The new title built for the page.
234
+ * @param string $title The original title.
235
+ * @param null|string $sep The separator sequence to separate the title components.
236
+ */
237
+ $the_title = apply_filters( 'tribe_events_title_tag', $new_title, $the_title, $sep );
238
+
239
+ $title['title'] = $the_title;
240
+
241
+ return $title;
242
+ }
243
+
244
+ /**
245
+ * Sets the context this title object should use to build the title.
246
+ *
247
+ * @since TBD
248
+ *
249
+ * @param Context|null $context The context to use, `null` values will unset it causing the object ot use the
250
+ * global context.
251
+ *
252
+ * @return $this For chaining.
253
+ */
254
+ public function set_context( Context $context = null ) {
255
+ $this->context = $context;
256
+
257
+ return $this;
258
+ }
259
+
260
+ /**
261
+ * Sets the posts this object should reference to build the title.
262
+ *
263
+ * We build some title components with notion of what events we found for a View. Here we set them.
264
+ *
265
+ * @since TBD
266
+ *
267
+ * @param array|null $posts An array of posts matching the context query, `null` will unset it causing the object
268
+ * to use the posts found by the global `$wp_query` object.
269
+ *
270
+ * @return $this For chaining.
271
+ */
272
+ public function set_posts( array $posts = null ) {
273
+ $this->posts = $posts;
274
+
275
+ return $this;
276
+ }
277
+
278
+ /**
279
+ * Returns the post the title should use to build some title fragments.
280
+ *
281
+ * @since TBD
282
+ *
283
+ * @return array An array of injected posts, or the globally found posts.
284
+ */
285
+ protected function get_posts() {
286
+ $posts = $this->posts;
287
+
288
+ if ( null === $this->posts ) {
289
+ global $wp_query;
290
+ $posts = $wp_query->get_posts();
291
+ }
292
+
293
+ return $posts;
294
+ }
295
+
296
+ /**
297
+ * Builds the Month view title.
298
+ *
299
+ * @since TBD
300
+ *
301
+ * @param mixed $event_date The date to use to build the title.
302
+ *
303
+ * @return string The Month view title.
304
+ */
305
+ public function build_month_title( $event_date ) {
306
+ $event_date = Dates::build_date_object( $event_date )->format( Dates::DBDATEFORMAT );
307
+
308
+ $title = sprintf(
309
+ esc_html_x( '%1$s for %2$s', 'month view', 'the-events-calendar' ),
310
+ $this->events_label_plural,
311
+ date_i18n( tribe_get_date_option( 'monthAndYearFormat', 'F Y' ), strtotime( $event_date ) )
312
+ );
313
+
314
+ /**
315
+ * Filters the Month view title.
316
+ *
317
+ * @since TBD
318
+ *
319
+ * @param string $title The Month view title.
320
+ * @param string The date to use to build the title, in the `Y-m-d` format.
321
+ */
322
+ return apply_filters( 'tribe_events_views_v2_month_title', $title, $event_date );
323
+ }
324
+
325
+ /**
326
+ * Builds the Day view title.
327
+ *
328
+ * @since TBD
329
+ *
330
+ * @param mixed $event_date The date to use to build the title.
331
+ *
332
+ * @return string The Day view title.
333
+ */
334
+ protected function build_day_title( $event_date ) {
335
+ $title = sprintf(
336
+ esc_html_x( '%1$s for %2$s', 'day_view', 'the-events-calendar' ),
337
+ $this->events_label_plural,
338
+ date_i18n( tribe_get_date_format( true ), strtotime( $event_date ) )
339
+ );
340
+
341
+ /**
342
+ * Filters the Day view title.
343
+ *
344
+ * @since TBD
345
+ *
346
+ * @param string $title The Day view title.
347
+ * @param string The date to use to build the title, in the `Y-m-d` format.
348
+ */
349
+ return apply_filters( 'tribe_events_views_v2_day_title', $title, $event_date );
350
+ }
351
+
352
+ /**
353
+ * Builds, wrapping the current title, the Event Category archive title.
354
+ *
355
+ * @since TBD
356
+ *
357
+ * @param string $title The input title.
358
+ * @param \WP_Term $cat The category term to use to build the title.
359
+ *
360
+ * @return string The built category archive title.
361
+ */
362
+ protected function build_category_title( $title, $cat ) {
363
+ $new_title = '<a href="' . esc_url( tribe_get_events_link() ) . '">' . $title . '</a>';
364
+ $new_title .= ' &#8250; ' . $cat->name;
365
+
366
+ /**
367
+ * Filters the Event Category Archive title.
368
+ *
369
+ * @since TBD
370
+ *
371
+ *
372
+ * @param string $new_title The Event Category archive title.
373
+ * @param string $title The original title.
374
+ * @param \WP_Term The Event Category term used to build the title.
375
+ */
376
+ return apply_filters( 'tribe_events_views_v2_category_title', $new_title, $title, $cat );
377
+ }
378
+ }
src/Tribe/Views/V2/Url.php CHANGED
@@ -259,11 +259,60 @@ class Url {
259
  $request_aliases = (array) Arr::get( $context->get_locations(), [ $var, 'read', Context::REQUEST_VAR ], [] );
260
  $context_aliases = array_unique( array_merge( $query_aliases, $request_aliases ) );
261
 
262
- $aliases = array_intersect_key(
263
- array_merge( $query_args, tribe_get_request_vars() ),
264
- array_merge( $aliases, array_combine( $context_aliases, $context_aliases ) )
265
  );
266
 
267
- return array_keys( $aliases );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  }
269
  }
259
  $request_aliases = (array) Arr::get( $context->get_locations(), [ $var, 'read', Context::REQUEST_VAR ], [] );
260
  $context_aliases = array_unique( array_merge( $query_aliases, $request_aliases ) );
261
 
262
+ $matches = array_intersect(
263
+ array_unique( array_merge( $context_aliases, [ $var ] ) ),
264
+ array_keys( array_merge( $query_args, tribe_get_request_vars() ) )
265
  );
266
 
267
+ return $matches;
268
+ }
269
+
270
+ /**
271
+ * Builds and returns an instance of the object taking care to parse additional parameters to use the correct URL.
272
+ *
273
+ * @since TBD
274
+ *
275
+ * @param string $url The URL address to build the object on.
276
+ * @param array $params An array of additional parameters to parse; these parameters might be more up to date in
277
+ * respect to the `$url` argument and will be used to build an instance of the class on the
278
+ * correct URL. Passing an empty array here is, in fact, the same as calling
279
+ * `new Url( $url )`;
280
+ *
281
+ * @return static The built instance of this class.
282
+ */
283
+ public static function from_url_and_params( $url = null, array $params = [] ) {
284
+ if ( empty( $url ) ) {
285
+ $url = home_url( add_query_arg( [] ) );
286
+ }
287
+
288
+ if ( isset( $params['view_data'] ) ) {
289
+ // If we have it, then use the up-to-date View data to "correct" the URL.
290
+ $bar_params = array_intersect_key(
291
+ $params['view_data'],
292
+ array_filter( $params['view_data'], static function ( $value, $key ) {
293
+ return 0 === strpos( $key, 'tribe-bar-' );
294
+ }, ARRAY_FILTER_USE_BOTH )
295
+ );
296
+ $empty_bar_params = array_filter( $bar_params, static function ( $value ) {
297
+ return $value === '';
298
+ } );
299
+ $non_empty_bar_params = array_diff_key( $bar_params, $empty_bar_params );
300
+
301
+ /*
302
+ * Here we add and remove tribe-bar parameters that might have been set in the View data, but
303
+ * not yet reflected in the URL.
304
+ */
305
+ if ( count( $bar_params ) ) {
306
+ $url = add_query_arg(
307
+ $non_empty_bar_params,
308
+ remove_query_arg(
309
+ array_keys( $empty_bar_params ),
310
+ $url
311
+ )
312
+ );
313
+ }
314
+ }
315
+
316
+ return new static( $url );
317
  }
318
  }
src/Tribe/Views/V2/View.php CHANGED
@@ -8,6 +8,7 @@
8
 
9
  namespace Tribe\Events\Views\V2;
10
 
 
11
  use Tribe__Container as Container;
12
  use Tribe__Context as Context;
13
  use Tribe__Date_Utils as Dates;
@@ -87,6 +88,24 @@ class View implements View_Interface {
87
  */
88
  protected $url;
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  /**
91
  * An associative array of global variables backed up by the view before replacing the global loop.
92
  *
@@ -144,11 +163,16 @@ class View implements View_Interface {
144
  */
145
  public static function make_for_rest( \WP_REST_Request $request ) {
146
  // Try to read the slug from the REST request.
147
- $params = $request->get_params();
148
- $slug = Arr::get( $params, 'view', false );
149
- $url = Arr::get( $params, 'url' );
150
- $url_object = new Url( $url );
151
- $params = array_merge( $params, $url_object->get_query_args() );
 
 
 
 
 
152
 
153
  // Let View data override any other data.
154
  if ( isset( $params['view_data'] ) && is_array( $params['view_data'] ) ) {
@@ -391,6 +415,12 @@ class View implements View_Interface {
391
 
392
  $repository_args = $this->filter_repository_args( $this->setup_repository_args() );
393
 
 
 
 
 
 
 
394
  $this->setup_the_loop( $repository_args );
395
 
396
  $template_vars = $this->filter_template_vars( $this->setup_template_vars() );
@@ -492,8 +522,22 @@ class View implements View_Interface {
492
  'tribe-bar-search' => $this->context->get( 'keyword', '' ),
493
  ];
494
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
  if ( ! empty( $query_args['tribe-bar-date'] ) ) {
496
- // If the Events Bar date is the same ad today's date, then drop it.
497
  $today = $this->context->get( 'today', 'today' );
498
  $today_date = Dates::build_date_object( $today )->format( Dates::DBDATEFORMAT );
499
  $tribe_bar_date = Dates::build_date_object( $query_args['tribe-bar-date'] )->format( Dates::DBDATEFORMAT );
@@ -530,6 +574,10 @@ class View implements View_Interface {
530
  * {@inheritDoc}
531
  */
532
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
 
 
 
 
533
  $next_page = $this->repository->next();
534
 
535
  $url = $next_page->count() > 0 ?
@@ -552,11 +600,14 @@ class View implements View_Interface {
552
  $canonical_url = add_query_arg( $passthru_vars, $canonical_url );
553
  }
554
 
 
555
  $url = $canonical_url;
556
  }
557
 
558
  $url = $this->filter_next_url( $canonical, $url );
559
 
 
 
560
  return $url;
561
  }
562
 
@@ -564,6 +615,10 @@ class View implements View_Interface {
564
  * {@inheritDoc}
565
  */
566
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
 
 
 
 
567
  $prev_page = $this->repository->prev();
568
  $paged = $this->url->get_current_page() - 1;
569
  $query_args = $paged > 1
@@ -599,6 +654,8 @@ class View implements View_Interface {
599
 
600
  $url = $this->filter_prev_url( $canonical, $url );
601
 
 
 
602
  return $url;
603
  }
604
 
@@ -853,7 +910,7 @@ class View implements View_Interface {
853
 
854
  return [
855
  'posts_per_page' => $context_arr['events_per_page'],
856
- 'paged' => max( Arr::get_first_set( $context_arr, [ 'paged', 'page' ], 1 ), 1 ),
857
  'search' => $context->get( 'keyword', '' ),
858
  ];
859
  }
@@ -916,9 +973,16 @@ class View implements View_Interface {
916
  * @return array An array of Template variables for the View Template.
917
  */
918
  protected function setup_template_vars() {
 
 
 
 
 
 
 
919
  $template_vars = [
920
- 'title' => wp_title( null, false ),
921
- 'events' => $this->repository->all(),
922
  'url' => $this->get_url( true ),
923
  'prev_url' => $this->prev_url( true ),
924
  'next_url' => $this->next_url( true ),
@@ -934,6 +998,10 @@ class View implements View_Interface {
934
  'today_url' => $this->get_today_url( true ),
935
  'prev_label' => $this->get_link_label( $this->prev_url( false ) ),
936
  'next_label' => $this->get_link_label( $this->next_url( false ) ),
 
 
 
 
937
  ];
938
 
939
  return $template_vars;
@@ -1034,7 +1102,7 @@ class View implements View_Interface {
1034
  * {@inheritDoc}
1035
  */
1036
  public function get_today_url( $canonical = false ) {
1037
- $remove = [ 'tribe-bar-date', 'paged', 'page', 'eventDate' ];
1038
 
1039
  // While we want to remove the date query vars, we want to keep any other query var.
1040
  $query_args = $this->url->get_query_args();
@@ -1043,7 +1111,7 @@ class View implements View_Interface {
1043
  $query_args['eventDisplay'] = $this->slug;
1044
 
1045
  $ugly_url = add_query_arg( $query_args, $this->get_url( false ) );
1046
- $ugly_url = remove_query_arg( $remove, $ugly_url );
1047
 
1048
  if ( ! $canonical ) {
1049
  return $ugly_url;
@@ -1119,4 +1187,57 @@ class View implements View_Interface {
1119
  protected function get_label_format() {
1120
  return 'Y-m-d';
1121
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1122
  }
8
 
9
  namespace Tribe\Events\Views\V2;
10
 
11
+ use Tribe\Events\Views\V2\Template\Title;
12
  use Tribe__Container as Container;
13
  use Tribe__Context as Context;
14
  use Tribe__Date_Utils as Dates;
88
  */
89
  protected $url;
90
 
91
+ /**
92
+ * Cache property for the next URL value to avoid running queries twice.
93
+ *
94
+ * @since TBD
95
+ *
96
+ * @var string
97
+ */
98
+ protected $next_url;
99
+
100
+ /**
101
+ * Cache property for the previous URL value to avoid running queries twice.
102
+ *
103
+ * @since TBD
104
+ *
105
+ * @var string
106
+ */
107
+ protected $prev_url;
108
+
109
  /**
110
  * An associative array of global variables backed up by the view before replacing the global loop.
111
  *
163
  */
164
  public static function make_for_rest( \WP_REST_Request $request ) {
165
  // Try to read the slug from the REST request.
166
+ $params = $request->get_params();
167
+ $slug = Arr::get( $params, 'view', false );
168
+ $url_object = Url::from_url_and_params( Arr::get( $params, 'url' ), $params );
169
+
170
+ $url = $url_object->__toString();
171
+ $params['url'] = $url;
172
+ if ( isset( $params['view_data'] ) ) {
173
+ $params['view_data']['url'] = $url;
174
+ }
175
+ $params = array_merge( $params, $url_object->get_query_args() );
176
 
177
  // Let View data override any other data.
178
  if ( isset( $params['view_data'] ) && is_array( $params['view_data'] ) ) {
415
 
416
  $repository_args = $this->filter_repository_args( $this->setup_repository_args() );
417
 
418
+ /*
419
+ * Some Views might need to access this out of this method, let's make the filtered repository arguments
420
+ * available.
421
+ */
422
+ $this->repository_args = $repository_args;
423
+
424
  $this->setup_the_loop( $repository_args );
425
 
426
  $template_vars = $this->filter_template_vars( $this->setup_template_vars() );
522
  'tribe-bar-search' => $this->context->get( 'keyword', '' ),
523
  ];
524
 
525
+
526
+ //@todo lucatume check geoloc!
527
+
528
+ /**
529
+ * Filters the query arguments that will be used to build a View URL.
530
+ *
531
+ * @since TBD
532
+ *
533
+ * @param array $query_args An array of query args that will be used to build the URL for the View.
534
+ * @param View_Interface $this This View instance.
535
+ * @param bool $canonical Whether the URL should be the canonical one or not.
536
+ */
537
+ $query_args = apply_filters( 'tribe_events_views_v2_url_query_args', $query_args, $this, $canonical );
538
+
539
  if ( ! empty( $query_args['tribe-bar-date'] ) ) {
540
+ // If the Events Bar date is the same as today's date, then drop it.
541
  $today = $this->context->get( 'today', 'today' );
542
  $today_date = Dates::build_date_object( $today )->format( Dates::DBDATEFORMAT );
543
  $tribe_bar_date = Dates::build_date_object( $query_args['tribe-bar-date'] )->format( Dates::DBDATEFORMAT );
574
  * {@inheritDoc}
575
  */
576
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
577
+ if ( isset( $this->next_url ) ) {
578
+ return $this->next_url;
579
+ }
580
+
581
  $next_page = $this->repository->next();
582
 
583
  $url = $next_page->count() > 0 ?
600
  $canonical_url = add_query_arg( $passthru_vars, $canonical_url );
601
  }
602
 
603
+
604
  $url = $canonical_url;
605
  }
606
 
607
  $url = $this->filter_next_url( $canonical, $url );
608
 
609
+ $this->next_url = $url;
610
+
611
  return $url;
612
  }
613
 
615
  * {@inheritDoc}
616
  */
617
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
618
+ if ( isset( $this->prev_url ) ) {
619
+ return $this->prev_url;
620
+ }
621
+
622
  $prev_page = $this->repository->prev();
623
  $paged = $this->url->get_current_page() - 1;
624
  $query_args = $paged > 1
654
 
655
  $url = $this->filter_prev_url( $canonical, $url );
656
 
657
+ $this->prev_url = $url;
658
+
659
  return $url;
660
  }
661
 
910
 
911
  return [
912
  'posts_per_page' => $context_arr['events_per_page'],
913
+ 'paged' => max( Arr::get_first_set( array_filter( $context_arr ), [ 'paged', 'page' ], 1 ), 1 ),
914
  'search' => $context->get( 'keyword', '' ),
915
  ];
916
  }
973
  * @return array An array of Template variables for the View Template.
974
  */
975
  protected function setup_template_vars() {
976
+ if ( empty( $this->repository_args ) ) {
977
+ $this->repository_args = $this->filter_repository_args( $this->setup_repository_args() );
978
+ $this->repository->by_args( $this->repository_args );
979
+ }
980
+
981
+ $events = $this->repository->all();
982
+
983
  $template_vars = [
984
+ 'title' => $this->get_title( $events ),
985
+ 'events' => $events,
986
  'url' => $this->get_url( true ),
987
  'prev_url' => $this->prev_url( true ),
988
  'next_url' => $this->next_url( true ),
998
  'today_url' => $this->get_today_url( true ),
999
  'prev_label' => $this->get_link_label( $this->prev_url( false ) ),
1000
  'next_label' => $this->get_link_label( $this->next_url( false ) ),
1001
+ 'date_formats' => (object) [
1002
+ 'compact' => Dates::datepicker_formats( tribe_get_option( 'datepickerFormat' ) ),
1003
+ 'month_and_year' => tribe_get_date_option( 'monthAndYearFormat', 'F Y' ),
1004
+ ]
1005
  ];
1006
 
1007
  return $template_vars;
1102
  * {@inheritDoc}
1103
  */
1104
  public function get_today_url( $canonical = false ) {
1105
+ $to_remove = [ 'tribe-bar-date', 'paged', 'page', 'eventDate' ];
1106
 
1107
  // While we want to remove the date query vars, we want to keep any other query var.
1108
  $query_args = $this->url->get_query_args();
1111
  $query_args['eventDisplay'] = $this->slug;
1112
 
1113
  $ugly_url = add_query_arg( $query_args, $this->get_url( false ) );
1114
+ $ugly_url = remove_query_arg( $to_remove, $ugly_url );
1115
 
1116
  if ( ! $canonical ) {
1117
  return $ugly_url;
1187
  protected function get_label_format() {
1188
  return 'Y-m-d';
1189
  }
1190
+
1191
+ /**
1192
+ * Gets this View title, the one that will be set in the `title` tag of the page.
1193
+ *
1194
+ * @since TBD
1195
+ *
1196
+ * @param array $events An array of events to generate the title for.
1197
+ *
1198
+ * @return string The filtered view title.
1199
+ */
1200
+ public function get_title( array $events = [] ) {
1201
+ if ( ! $this->context->doing_php_initial_state() ) {
1202
+ /** @var Title $title_filter */
1203
+ $title_filter = static::$container->make( Title::class )
1204
+ ->set_context( $this->context )
1205
+ ->set_posts( $events );
1206
+
1207
+ add_filter( 'document_title_parts', [ $title_filter, 'filter_document_title_parts' ] );
1208
+ // We disable the filter to avoid the double encoding that would come from our preparation of the data.
1209
+ add_filter( 'run_wptexturize', '__return_false' );
1210
+ }
1211
+
1212
+ $title = wp_get_document_title();
1213
+
1214
+ if ( isset( $title_filter ) ) {
1215
+ remove_filter( 'run_wptexturize', '__return_false' );
1216
+ remove_filter( 'document_title_parts', [ $title_filter, 'filter_document_title_parts' ] );
1217
+ }
1218
+
1219
+ $slug = $this->get_slug();
1220
+
1221
+ /**
1222
+ * Filters the title for all views.
1223
+ *
1224
+ * @since TBD
1225
+ *
1226
+ * @param string $title This view filtered title.
1227
+ * @param View $this This view object.
1228
+ */
1229
+ $title = apply_filters( "tribe_events_views_v2_title", $title, $this );
1230
+
1231
+ /**
1232
+ * Filters the title for this view.
1233
+ *
1234
+ * @since TBD
1235
+ *
1236
+ * @param string $title This view filtered title.
1237
+ * @param View $this This view object.
1238
+ */
1239
+ $title = apply_filters( "tribe_events_views_v2_{$slug}_title", $title, $this );
1240
+
1241
+ return htmlspecialchars_decode($title);
1242
+ }
1243
  }
src/Tribe/Views/V2/Views/By_Day_View.php CHANGED
@@ -106,7 +106,10 @@ abstract class By_Day_View extends View{
106
  }
107
 
108
  if ( empty( $this->repository_args ) ) {
109
- $this->setup_repository_args();
 
 
 
110
  }
111
 
112
  $repository_args = $this->repository_args;
106
  }
107
 
108
  if ( empty( $this->repository_args ) ) {
109
+ /**
110
+ * If repository arguments have not ben set up yet, let's do it now.
111
+ */
112
+ $this->repository_args = $this->filter_repository_args( $this->setup_repository_args() );
113
  }
114
 
115
  $repository_args = $this->repository_args;
src/Tribe/Views/V2/Views/Day_View.php CHANGED
@@ -8,11 +8,10 @@
8
 
9
  namespace Tribe\Events\Views\V2\Views;
10
 
 
11
  use Tribe\Events\Views\V2\View;
12
- use Tribe__Events__Main as TEC;
13
- use Tribe__Events__Rewrite as Rewrite;
14
- use Tribe__Utils__Array as Arr;
15
  use Tribe__Date_Utils as Dates;
 
16
 
17
  class Day_View extends View {
18
  /**
@@ -37,119 +36,94 @@ class Day_View extends View {
37
  * {@inheritDoc}
38
  */
39
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
40
- // Get the current repository arguments.
41
- $current_args = $this->setup_repository_args();
42
-
43
- // Remove any date related arguments.
44
- unset( $current_args['date_overlaps'] );
45
-
46
- // Use the updated repository arguments.
47
- $current_repository = tribe_events()->by_args( $current_args );
48
-
49
- $default_date = 'today';
50
- $date = $this->context->get( 'event_date', $default_date );
51
- $event_date_var = $default_date === $date ? '' : $date;
52
-
53
- $one_day = new \DateInterval( 'P1D' );
54
- $previous_date = Dates::build_date_object( $date )->sub( $one_day )->format( Dates::DBDATEFORMAT );
55
-
56
- $prev = clone $current_repository;
57
- $start = tribe_beginning_of_day( $previous_date );
58
- $end = tribe_end_of_day( $previous_date );
59
- $prev->where( 'date_overlaps', $start, $end )->order( 'DESC' )->per_page( 1 );
60
-
61
- $prev_event = $prev->first();
62
- $has_prev = $prev->found();
63
-
64
- if ( ! $has_prev ) {
65
- $prev = clone $current_repository;
66
- $prev->where( 'starts_before', tribe_beginning_of_day( $date ) )
67
- ->order( 'DESC' )
68
- ->per_page( 1 );
69
-
70
- $prev_event = $prev->first();
71
- $has_prev = $prev->found();
72
-
73
- if ( ! $has_prev ) {
74
- return '';
75
- }
76
-
77
- $previous_date = tribe_get_start_date( $prev_event, false, Dates::DBDATEFORMAT );
78
  }
79
 
80
- $query_args = [ 'eventDate' => $previous_date ];
81
- $url = remove_query_arg( [ 'tribe-bar-date' ], $this->get_url() );
82
- $url = add_query_arg( $query_args, $url );
83
 
84
- if ( ! empty( $url ) && $canonical ) {
85
- $input_url = $url;
86
-
87
- if ( ! empty( $passthru_vars ) ) {
88
- $input_url = remove_query_arg( array_keys( $passthru_vars ), $url );
89
- }
90
 
91
- // Make sure the view slug is always set to correctly match rewrites.
92
- $input_url = add_query_arg( [ 'eventDisplay' => $this->slug ], $input_url );
93
-
94
- $canonical_url = tribe( 'events.rewrite' )->get_clean_url( $input_url );
95
-
96
- if ( ! empty( $passthru_vars ) ) {
97
- $canonical_url = add_query_arg( $passthru_vars, $canonical_url );
98
- }
99
-
100
- $url = $canonical_url;
101
  }
102
 
103
- $url = $this->filter_prev_url( $canonical, $url );
104
 
105
- return $url;
106
  }
107
 
108
  /**
109
  * {@inheritDoc}
110
  */
111
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
112
- // Get the current repository arguments.
113
- $current_args = $this->setup_repository_args();
 
 
114
 
115
- // Remove any date related arguments.
116
- unset( $current_args['date_overlaps'] );
 
 
117
 
118
- // Use the updated repository arguments.
119
- $current_repository = tribe_events()->by_args( $current_args );
 
 
 
120
 
121
- $default_date = 'today';
122
- $date = $this->context->get( 'event_date', $default_date );
123
- $event_date_var = $default_date === $date ? '' : $date;
124
 
125
- $one_day = new \DateInterval( 'P1D' );
126
- $next_date = Dates::build_date_object( $date )->add( $one_day )->format( Dates::DBDATEFORMAT );
127
 
128
- $next = clone $current_repository;
129
- $start = tribe_beginning_of_day( $next_date );
130
- $end = tribe_end_of_day( $next_date );
131
- $next->where( 'date_overlaps', $start, $end )->order( 'DESC' )->per_page( 1 );
 
132
 
133
- $next_event = $next->first();
134
- $has_next = $next->found();
135
 
136
- if ( ! $has_next ) {
137
- $next = clone $current_repository;
138
- $next->where( 'starts_after', tribe_end_of_day( $date ) )->order( 'DESC' )->per_page( 1 );
139
 
140
- $next_event = $next->first();
141
- $has_next = $next->found();
142
 
143
- if ( ! $has_next ) {
144
- return '';
145
- }
146
 
147
- $next_date = tribe_get_start_date( $next_event, false, Dates::DBDATEFORMAT );
148
- }
149
 
150
- $query_args = [ 'eventDate' => $next_date ];
151
- $url = remove_query_arg( [ 'tribe-bar-date' ], $this->get_url() );
152
- $url = add_query_arg( $query_args, $url );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
 
154
  if ( ! empty( $url ) && $canonical ) {
155
  $input_url = $url;
@@ -170,26 +144,6 @@ class Day_View extends View {
170
  $url = $canonical_url;
171
  }
172
 
173
- $url = $this->filter_next_url( $canonical, $url );
174
-
175
  return $url;
176
  }
177
-
178
- /**
179
- * {@inheritDoc}
180
- */
181
- protected function setup_repository_args( \Tribe__Context $context = null ) {
182
- $context = null !== $context ? $context : $this->context;
183
-
184
- $args = parent::setup_repository_args( $context );
185
-
186
- $context_arr = $context->to_array();
187
-
188
- $date = Arr::get( $context_arr, 'event_date', 'now' );
189
- $event_display = Arr::get( $context_arr, 'event_display_mode', Arr::get( $context_arr, 'event_display' ), 'current' );
190
-
191
- $args['date_overlaps'] = [ tribe_beginning_of_day( $date ), tribe_end_of_day( $date ) ];
192
-
193
- return $args;
194
- }
195
  }
8
 
9
  namespace Tribe\Events\Views\V2\Views;
10
 
11
+ use Tribe\Events\Views\V2\Url;
12
  use Tribe\Events\Views\V2\View;
 
 
 
13
  use Tribe__Date_Utils as Dates;
14
+ use Tribe__Utils__Array as Arr;
15
 
16
  class Day_View extends View {
17
  /**
36
  * {@inheritDoc}
37
  */
38
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
39
+ if ( isset( $this->prev_url ) ) {
40
+ return $this->prev_url;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
42
 
43
+ $date = $this->context->get( 'event_date', $this->context->get( 'today', 'today' ) );
 
 
44
 
45
+ $one_day = new \DateInterval( 'P1D' );
46
+ $url_date = Dates::build_date_object( $date )->sub( $one_day );
47
+ $earliest = tribe_get_option( 'earliest_date', $url_date );
48
+ $earliest_date = Dates::build_date_object( $earliest )->setTime( 0, 0, 0 );
 
 
49
 
50
+ if ( $url_date < $earliest_date ) {
51
+ $url = '';
52
+ } else {
53
+ $url = $this->build_url_for_date( $url_date, $canonical, $passthru_vars );
 
 
 
 
 
 
54
  }
55
 
56
+ $this->prev_url = $url;
57
 
58
+ return $this->filter_prev_url( $canonical, $url );
59
  }
60
 
61
  /**
62
  * {@inheritDoc}
63
  */
64
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
65
+ if ( isset( $this->next_url ) ) {
66
+ return $this->next_url;
67
+ }
68
+ $date = $this->context->get( 'event_date', $this->context->get( 'today', 'today' ) );
69
 
70
+ $one_day = new \DateInterval( 'P1D' );
71
+ $url_date = Dates::build_date_object( $date )->add( $one_day );
72
+ $latest = tribe_get_option( 'latest_date', $url_date );
73
+ $latest_date = Dates::build_date_object( $latest )->setTime( 0, 0, 0 );
74
 
75
+ if ( $url_date > $latest_date ) {
76
+ $url = '';
77
+ } else {
78
+ $url = $this->build_url_for_date( $url_date, $canonical, $passthru_vars );
79
+ }
80
 
81
+ $this->next_url = $url;
 
 
82
 
83
+ return $this->filter_next_url( $canonical, $url );
84
+ }
85
 
86
+ /**
87
+ * {@inheritDoc}
88
+ */
89
+ protected function setup_repository_args( \Tribe__Context $context = null ) {
90
+ $context = null !== $context ? $context : $this->context;
91
 
92
+ $args = parent::setup_repository_args( $context );
 
93
 
94
+ $context_arr = $context->to_array();
 
 
95
 
96
+ $date = Arr::get( $context_arr, 'event_date', 'now' );
97
+ $event_display = Arr::get( $context_arr, 'event_display_mode', Arr::get( $context_arr, 'event_display' ), 'current' );
98
 
99
+ $args['date_overlaps'] = [ tribe_beginning_of_day( $date ), tribe_end_of_day( $date ) ];
 
 
100
 
101
+ return $args;
102
+ }
103
 
104
+ /**
105
+ * Builds the Day View URL for a specific date.
106
+ *
107
+ * This is the method underlying the construction of the previous and next URLs.
108
+ *
109
+ * @since TBD
110
+ *
111
+ * @param mixed $url_date The date to build the URL for, a \DateTime object, a string or a timestamp.
112
+ * @param bool $canonical Whether to return the canonical (pretty) version of the URL or not.
113
+ * @param array $passthru_vars An optional array of query variables that should pass thru the method untouched
114
+ * in key in value.
115
+ *
116
+ * @return string The Day View URL for the date.
117
+ */
118
+ protected function build_url_for_date( $url_date, $canonical, array $passthru_vars = [] ) {
119
+ $url_date = Dates::build_date_object( $url_date );
120
+ $url = new Url( $this->get_url() );
121
+ $date_query_args = (array) $url->get_query_args_aliases_of( 'event_date', $this->context );
122
+
123
+ $url = add_query_arg(
124
+ [ 'eventDate' => $url_date->format( Dates::DBDATEFORMAT ) ],
125
+ remove_query_arg( $date_query_args, $this->get_url() )
126
+ );
127
 
128
  if ( ! empty( $url ) && $canonical ) {
129
  $input_url = $url;
144
  $url = $canonical_url;
145
  }
146
 
 
 
147
  return $url;
148
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  }
src/Tribe/Views/V2/Views/List_View.php CHANGED
@@ -36,11 +36,19 @@ class List_View extends View {
36
  * {@inheritDoc}
37
  */
38
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
 
 
 
 
39
  $current_page = (int) $this->context->get( 'page', 1 );
40
  $display = $this->context->get( 'event_display_mode', 'list' );
41
 
42
  if ( 'past' === $display ) {
 
 
43
  $url = parent::next_url( $canonical, [ 'eventDisplay' => 'past' ] );
 
 
44
  } else if ( $current_page > 1 ) {
45
  $url = parent::prev_url( $canonical );
46
  } else {
@@ -49,6 +57,8 @@ class List_View extends View {
49
 
50
  $url = $this->filter_prev_url( $canonical, $url );
51
 
 
 
52
  return $url;
53
  }
54
 
@@ -56,19 +66,29 @@ class List_View extends View {
56
  * {@inheritDoc}
57
  */
58
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
 
 
 
 
59
  $current_page = (int) $this->context->get( 'page', 1 );
60
  $display = $this->context->get( 'event_display_mode', 'list' );
61
 
62
  if ( $this->slug === $display || 'default' === $display ) {
63
  $url = parent::next_url( $canonical );
64
  } else if ( $current_page > 1 ) {
 
 
65
  $url = parent::prev_url( $canonical, [ 'eventDisplay' => 'past' ] );
 
 
66
  } else {
67
  $url = $this->get_upcoming_url( $canonical );
68
  }
69
 
70
  $url = $this->filter_next_url( $canonical, $url );
71
 
 
 
72
  return $url;
73
  }
74
 
@@ -146,6 +166,7 @@ class List_View extends View {
146
  $default_date = 'now';
147
  $date = $this->context->get( 'event_date', $default_date );
148
  $event_date_var = $default_date === $date ? '' : $date;
 
149
 
150
  $upcoming = tribe_events()->by_args( $this->setup_repository_args( $this->context->alter( [
151
  'eventDisplay' => 'list',
@@ -179,11 +200,9 @@ class List_View extends View {
179
  ) ) {
180
  $url = add_query_arg( [ 'eventDate' => $event_date_var ], $url );
181
  }
182
-
183
- return $url;
184
  }
185
 
186
- return '';
187
  }
188
 
189
  /**
36
  * {@inheritDoc}
37
  */
38
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
39
+ if ( isset( $this->prev_url ) ) {
40
+ return $this->prev_url;
41
+ }
42
+
43
  $current_page = (int) $this->context->get( 'page', 1 );
44
  $display = $this->context->get( 'event_display_mode', 'list' );
45
 
46
  if ( 'past' === $display ) {
47
+ // Ensure we start fresh.
48
+ unset( $this->next_url );
49
  $url = parent::next_url( $canonical, [ 'eventDisplay' => 'past' ] );
50
+ // Avoid messing up the caching since we're using the prev URL in the next URL function.
51
+ unset( $this->next_url );
52
  } else if ( $current_page > 1 ) {
53
  $url = parent::prev_url( $canonical );
54
  } else {
57
 
58
  $url = $this->filter_prev_url( $canonical, $url );
59
 
60
+ $this->prev_url = $url;
61
+
62
  return $url;
63
  }
64
 
66
  * {@inheritDoc}
67
  */
68
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
69
+ if ( isset( $this->next_url ) ) {
70
+ return $this->next_url;
71
+ }
72
+
73
  $current_page = (int) $this->context->get( 'page', 1 );
74
  $display = $this->context->get( 'event_display_mode', 'list' );
75
 
76
  if ( $this->slug === $display || 'default' === $display ) {
77
  $url = parent::next_url( $canonical );
78
  } else if ( $current_page > 1 ) {
79
+ // Ensure we start fresh.
80
+ unset( $this->prev_url );
81
  $url = parent::prev_url( $canonical, [ 'eventDisplay' => 'past' ] );
82
+ // Avoid messing up the caching since we're using the prev URL in the next URL function.
83
+ unset( $this->prev_url );
84
  } else {
85
  $url = $this->get_upcoming_url( $canonical );
86
  }
87
 
88
  $url = $this->filter_next_url( $canonical, $url );
89
 
90
+ $this->next_url = $url;
91
+
92
  return $url;
93
  }
94
 
166
  $default_date = 'now';
167
  $date = $this->context->get( 'event_date', $default_date );
168
  $event_date_var = $default_date === $date ? '' : $date;
169
+ $url = '';
170
 
171
  $upcoming = tribe_events()->by_args( $this->setup_repository_args( $this->context->alter( [
172
  'eventDisplay' => 'list',
200
  ) ) {
201
  $url = add_query_arg( [ 'eventDate' => $event_date_var ], $url );
202
  }
 
 
203
  }
204
 
205
+ return $url ?: $this->get_today_url( $canonical );
206
  }
207
 
208
  /**
src/Tribe/Views/V2/Views/Month_View.php CHANGED
@@ -8,7 +8,6 @@
8
 
9
  namespace Tribe\Events\Views\V2\Views;
10
 
11
- use Tribe\Events\Views\V2\Utils\Stack;
12
  use Tribe__Context as Context;
13
  use Tribe__Date_Utils as Dates;
14
  use Tribe__Events__Template__Month as Month;
@@ -47,6 +46,10 @@ class Month_View extends By_Day_View {
47
  * {@inheritDoc}
48
  */
49
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
 
 
 
 
50
  // Setup the Default date for the month view here.
51
  $default_date = 'today';
52
  $date = $this->context->get( 'event_date', $default_date );
@@ -80,6 +83,8 @@ class Month_View extends By_Day_View {
80
 
81
  $url = $this->build_url_for_date( $prev_date, $canonical, $passthru_vars );
82
 
 
 
83
  return $this->filter_prev_url( $canonical, $url );
84
  }
85
 
@@ -87,6 +92,10 @@ class Month_View extends By_Day_View {
87
  * {@inheritDoc}
88
  */
89
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
 
 
 
 
90
  // Setup the Default date for the month view here.
91
  $default_date = 'today';
92
  $date = $this->context->get( 'event_date', $default_date );
@@ -120,6 +129,8 @@ class Month_View extends By_Day_View {
120
 
121
  $url = $this->build_url_for_date( $next_date, $canonical, $passthru_vars );
122
 
 
 
123
  return $this->filter_next_url( $canonical, $url );
124
  }
125
 
@@ -146,12 +157,6 @@ class Month_View extends By_Day_View {
146
  $args['order_by'] = 'event_date';
147
  $args['order'] = 'ASC';
148
 
149
- /*
150
- * The event fetching will happen day-by-day so we set here the repository args we'll re-use fetching each
151
- * day events.
152
- */
153
- $this->repository_args = $args;
154
-
155
  return $args;
156
  }
157
 
@@ -308,7 +313,7 @@ class Month_View extends By_Day_View {
308
  'is_start_of_week' => $start_of_week === $date_object->format( 'N' ),
309
  'year_number' => $date_object->format( 'Y' ),
310
  'month_number' => $date_object->format( 'm' ),
311
- 'day_number' => $date_object->format( 'd' ),
312
  'events' => $the_day_events,
313
  'featured_events' => $featured_events,
314
  'multiday_events' => $day_stack,
8
 
9
  namespace Tribe\Events\Views\V2\Views;
10
 
 
11
  use Tribe__Context as Context;
12
  use Tribe__Date_Utils as Dates;
13
  use Tribe__Events__Template__Month as Month;
46
  * {@inheritDoc}
47
  */
48
  public function prev_url( $canonical = false, array $passthru_vars = [] ) {
49
+ if ( isset( $this->prev_url ) ) {
50
+ return $this->prev_url;
51
+ }
52
+
53
  // Setup the Default date for the month view here.
54
  $default_date = 'today';
55
  $date = $this->context->get( 'event_date', $default_date );
83
 
84
  $url = $this->build_url_for_date( $prev_date, $canonical, $passthru_vars );
85
 
86
+ $this->prev_url = $url;
87
+
88
  return $this->filter_prev_url( $canonical, $url );
89
  }
90
 
92
  * {@inheritDoc}
93
  */
94
  public function next_url( $canonical = false, array $passthru_vars = [] ) {
95
+ if ( isset( $this->next_url ) ) {
96
+ return $this->next_url;
97
+ }
98
+
99
  // Setup the Default date for the month view here.
100
  $default_date = 'today';
101
  $date = $this->context->get( 'event_date', $default_date );
129
 
130
  $url = $this->build_url_for_date( $next_date, $canonical, $passthru_vars );
131
 
132
+ $this->next_url = $url;
133
+
134
  return $this->filter_next_url( $canonical, $url );
135
  }
136
 
157
  $args['order_by'] = 'event_date';
158
  $args['order'] = 'ASC';
159
 
 
 
 
 
 
 
160
  return $args;
161
  }
162
 
313
  'is_start_of_week' => $start_of_week === $date_object->format( 'N' ),
314
  'year_number' => $date_object->format( 'Y' ),
315
  'month_number' => $date_object->format( 'm' ),
316
+ 'day_number' => $date_object->format( 'j' ),
317
  'events' => $the_day_events,
318
  'featured_events' => $featured_events,
319
  'multiday_events' => $day_stack,
src/admin-views/aggregator/settings.php CHANGED
@@ -5,7 +5,7 @@
5
  */
6
  $internal = array();
7
  $use_global_settings_phrase = esc_html__( 'Use global import settings', 'the-events-calendar' );
8
- $post_statuses = get_post_statuses( array() );
9
  $category_dropdown = wp_dropdown_categories( [
10
  'echo' => false,
11
  'hide_empty' => false,
5
  */
6
  $internal = array();
7
  $use_global_settings_phrase = esc_html__( 'Use global import settings', 'the-events-calendar' );
8
+ $post_statuses = get_post_statuses();
9
  $category_dropdown = wp_dropdown_categories( [
10
  'echo' => false,
11
  'hide_empty' => false,
src/resources/css/views-full.css CHANGED
@@ -33,6 +33,9 @@
33
  * Borders - Radius
34
  * ----------------------------------------------------------------------------- */
35
 
 
 
 
36
  }
37
 
38
  :root {
@@ -900,6 +903,16 @@
900
  *
901
  * ----------------------------------------------------------------------------- */
902
 
 
 
 
 
 
 
 
 
 
 
903
  .tribe-events .tribe-events-c-events-bar {
904
  background-color: #FFFFFF;
905
  display: -webkit-box;
@@ -1062,6 +1075,43 @@
1062
  width: 16px;
1063
  }
1064
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1065
  /* Navigation */
1066
 
1067
  /* -----------------------------------------------------------------------------
@@ -1228,6 +1278,10 @@
1228
  margin-left: 0;
1229
  }
1230
 
 
 
 
 
1231
  .tribe-events .tribe-events-c-small-cta__link {
1232
  cursor: pointer;
1233
  }
@@ -1374,11 +1428,6 @@
1374
  *
1375
  * ----------------------------------------------------------------------------- */
1376
 
1377
- .tribe-events .tribe-events-calendar-month__calendar-event-tooltip {
1378
- position: absolute;
1379
- visibility: hidden; /* A11y purposes */
1380
- }
1381
-
1382
  /* Defining our tooltipster theme. */
1383
 
1384
  .tooltipster-base.tribe-events-tooltip-theme {
@@ -1718,28 +1767,6 @@
1718
  *
1719
  * ----------------------------------------------------------------------------- */
1720
 
1721
- /* Loader for the Views Container */
1722
-
1723
- .tribe-events .tribe-events-view-loader {
1724
- -webkit-box-align: center;
1725
- align-items: center;
1726
- -webkit-box-pack: center;
1727
- justify-content: center;
1728
- display: -webkit-box;
1729
- display: flex;
1730
- position: absolute;
1731
- top: 0;
1732
- right: 0;
1733
- bottom: 0;
1734
- left: 0;
1735
- z-index: 100;
1736
- background: rgba(255,255,255, 0.6);
1737
- }
1738
-
1739
- .tribe-events .tribe-events-view-loader .tribe-events-view-loader__spinner {
1740
- /* placeholder for when spinner is added */
1741
- }
1742
-
1743
  /* Header */
1744
 
1745
  /**
@@ -2489,11 +2516,7 @@
2489
  * Nav
2490
  * ----------------------------------------------------------------------------- */
2491
 
2492
- .tribe-events .tribe-events-calendar-month-nav--calendar {
2493
- padding-top: 16px;
2494
- }
2495
-
2496
- .tribe-events .tribe-events-calendar-month-nav--mobile {
2497
  padding-top: 20px;
2498
  }
2499
 
@@ -2771,6 +2794,10 @@
2771
  width: 9px
2772
  }
2773
 
 
 
 
 
2774
  .tribe-events .tribe-events-c-search {
2775
  display: -webkit-box;
2776
  display: flex;
@@ -2833,7 +2860,7 @@
2833
  -webkit-box-direction: normal;
2834
  flex-direction: row;
2835
  flex-wrap: wrap;
2836
- margin-bottom: 16px;
2837
  width: 100%
2838
  }
2839
 
@@ -2862,6 +2889,16 @@
2862
  padding: 0
2863
  }
2864
 
 
 
 
 
 
 
 
 
 
 
2865
  .tribe-events .tribe-events-c-top-bar__datepicker-button:after {
2866
  height: 7px;
2867
  width: 12px
@@ -3121,6 +3158,16 @@
3121
  text-align: left
3122
  }
3123
 
 
 
 
 
 
 
 
 
 
 
3124
  .tribe-events .tribe-events-calendar-month__day {
3125
  border-color: #E4E4E4;
3126
  border-radius: 0;
33
  * Borders - Radius
34
  * ----------------------------------------------------------------------------- */
35
 
36
+ /* -----------------------------------------------------------------------------
37
+ * Borders - Width
38
+ * ----------------------------------------------------------------------------- */
39
  }
40
 
41
  :root {
903
  *
904
  * ----------------------------------------------------------------------------- */
905
 
906
+ .tribe-events {
907
+
908
+ /* -----------------------------------------------------------------------------
909
+ *
910
+ * Events Bar: Theme Overrides
911
+ *
912
+ * ----------------------------------------------------------------------------- */
913
+
914
+ }
915
+
916
  .tribe-events .tribe-events-c-events-bar {
917
  background-color: #FFFFFF;
918
  display: -webkit-box;
1075
  width: 16px;
1076
  }
1077
 
1078
+ /* -----------------------------------------------------------------------------
1079
+ * Theme Overrides - Twenty Seventeen
1080
+ * ----------------------------------------------------------------------------- */
1081
+
1082
+ .tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active {
1083
+ background-color: #F7F6F6;
1084
+ }
1085
+
1086
+ .tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active:hover,
1087
+ .tribe-theme-twentyseventeen .tribe-events .tribe-events-c-events-bar__tab--active:focus {
1088
+ background-color: #F7F6F6;
1089
+ }
1090
+
1091
+ /* Loader */
1092
+
1093
+ /* -----------------------------------------------------------------------------
1094
+ *
1095
+ * Loader
1096
+ *
1097
+ * ----------------------------------------------------------------------------- */
1098
+
1099
+ .tribe-events .tribe-events-view-loader {
1100
+ -webkit-box-align: start;
1101
+ align-items: flex-start;
1102
+ -webkit-box-pack: center;
1103
+ justify-content: center;
1104
+ display: -webkit-box;
1105
+ display: flex;
1106
+ position: absolute;
1107
+ top: 0;
1108
+ right: 0;
1109
+ bottom: 0;
1110
+ left: 0;
1111
+ z-index: 100;
1112
+ background: rgba(255,255,255, 0.6);
1113
+ }
1114
+
1115
  /* Navigation */
1116
 
1117
  /* -----------------------------------------------------------------------------
1278
  margin-left: 0;
1279
  }
1280
 
1281
+ .tribe-events .tribe-events-c-small-cta--readmore {
1282
+ margin-top: 12px;
1283
+ }
1284
+
1285
  .tribe-events .tribe-events-c-small-cta__link {
1286
  cursor: pointer;
1287
  }
1428
  *
1429
  * ----------------------------------------------------------------------------- */
1430
 
 
 
 
 
 
1431
  /* Defining our tooltipster theme. */
1432
 
1433
  .tooltipster-base.tribe-events-tooltip-theme {
1767
  *
1768
  * ----------------------------------------------------------------------------- */
1769
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1770
  /* Header */
1771
 
1772
  /**
2516
  * Nav
2517
  * ----------------------------------------------------------------------------- */
2518
 
2519
+ .tribe-events .tribe-events-calendar-month-nav {
 
 
 
 
2520
  padding-top: 20px;
2521
  }
2522
 
2794
  width: 9px
2795
  }
2796
 
2797
+ .tribe-events .tribe-events-c-small-cta--readmore {
2798
+ margin-top: 16px
2799
+ }
2800
+
2801
  .tribe-events .tribe-events-c-search {
2802
  display: -webkit-box;
2803
  display: flex;
2860
  -webkit-box-direction: normal;
2861
  flex-direction: row;
2862
  flex-wrap: wrap;
2863
+ margin-bottom: 32px;
2864
  width: 100%
2865
  }
2866
 
2889
  padding: 0
2890
  }
2891
 
2892
+ .tribe-events .tribe-events-c-top-bar__datepicker-mobile {
2893
+ display: none !important;
2894
+ visibility: hidden
2895
+ }
2896
+
2897
+ .tribe-events .tribe-events-c-top-bar__datepicker-desktop {
2898
+ display: block !important;
2899
+ visibility: visible
2900
+ }
2901
+
2902
  .tribe-events .tribe-events-c-top-bar__datepicker-button:after {
2903
  height: 7px;
2904
  width: 12px
3158
  text-align: left
3159
  }
3160
 
3161
+ .tribe-events .tribe-events-calendar-month__header-column-title-mobile {
3162
+ display: none !important;
3163
+ visibility: hidden
3164
+ }
3165
+
3166
+ .tribe-events .tribe-events-calendar-month__header-column-title-desktop {
3167
+ display: block !important;
3168
+ visibility: visible
3169
+ }
3170
+
3171
  .tribe-events .tribe-events-calendar-month__day {
3172
  border-color: #E4E4E4;
3173
  border-radius: 0;
src/resources/css/views-full.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 .datepicker{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);margin-top:8px;padding:0 16px 16px}.tribe-events .datepicker:after,.tribe-events .datepicker:before{content:none}.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 .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 .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{font-size:11px;line-height:1.5;padding:0;width:14.285%}.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;padding:11px 0;width:48px}.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;height:auto;margin:0;padding:15px 0;width:25%}.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{position:relative}.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{color:#141827;cursor:pointer}.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 .day.old,.tribe-events.tribe-events-view--week .datepicker .day.old.focused,.tribe-events.tribe-events-view--week .datepicker .day.old:focus,.tribe-events.tribe-events-view--week .datepicker .day.old:hover{color:#d5d5d5}.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-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{border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);min-width:0;padding:0 16px 16px}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{color:#141827!important;cursor:pointer!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;padding:0 16px 16px}.tribe-theme-avada .tribe-events .datepicker tbody td{border:0}.tribe-theme-avada .tribe-events .datepicker .datepicker-months td{padding: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{align-items:center;display:flex}.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-day-marker__date{flex:none}.tribe-events .tribe-events-c-events-bar{background-color:#fff;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: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__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;border-radius:4px;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-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-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-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-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-nav{border-top:1px solid #d5d5d5;padding-top:20px}.tribe-events .tribe-events-c-nav__list{display:flex;list-style:none;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;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,.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-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>*{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{color:#727272;margin-left:4px}.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")}.tribe-events .tribe-events-c-search__button{margin-top:24px}#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")}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip{position:absolute;visibility:hidden}.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);height:auto!important;padding:24px;max-width:254px}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none;margin:0}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{color:#141827;overflow:inherit;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-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;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-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;text-align:left;width:100%}.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__button-icon{display:block;height:21px;width:21px}.tribe-events .tribe-events-c-view-selector__button-text{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__content{display:none;background-color:#fff;border:1px solid #e4e4e4;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);padding:12px 6px;position:absolute;right:0;top:100%;transform:translateY(16px);z-index:30}.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{align-items:center;border-radius:4px;display:flex;padding:8px 24px 8px 12px}.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-icon{flex:none;height:18px;margin-right:12px;width:18px}.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;flex:auto}.tribe-events .tribe-events-view-loader{align-items:center;justify-content:center;display:flex;position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;background:hsla(0,0%,100%,.6)}.tribe-events .tribe-events-header{align-items:center;background-color:#fff;display:flex;flex-direction:row-reverse;justify-content:space-between;margin:0 -21px;padding:0 21px 16px;position:relative}.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{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-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{background:#334aff;content:"";height:100%;right:calc(100% - 3px);position:absolute;width:3px}.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{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;margin-bottom:-4px;text-transform:uppercase}.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;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-featured-image{padding-bottom:56.25%}.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:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-list__month-separator-text{flex:none}.tribe-events .tribe-events-calendar-list-nav{border-top:1px solid #d5d5d5;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__day--past .tribe-events-calendar-month__calendar-event{opacity:.5}.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;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-featured-image{padding-bottom:56.25%}.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-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event--featured:before{background:#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{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{margin-left:4px}.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;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-featured-image{padding-bottom:56.25%}.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{text-transform:uppercase;width:14.285%;padding-bottom:16px}.tribe-events .tribe-events-calendar-month__header-column-title{color:#727272;text-align:center}.tribe-events .tribe-events-calendar-month__day{border-radius:4px;height:48px;overflow:hidden;position:relative;width:14.285%}.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{height:100%;width:100%}.tribe-events .tribe-events-calendar-month__day-cell--mobile{align-items:center;border-bottom:2px solid transparent;display:flex;flex-direction:column;text-align:center;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}.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;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='%23334AFF'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;height:10px;width:8px}.tribe-events .tribe-events-calendar-month__events{flex:auto}.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-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-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{border-bottom:1px solid #d5d5d5;padding:12px 0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event:last-child{border: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-featured-image{padding-bottom:56.25%}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{color:#727272;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,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon{display:inline-block}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-icon{margin-right:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon{margin-left:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{color:#334aff;font-weight:700;margin-right:8px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-cost{margin-top:8px}.tribe-events .tribe-events-calendar-month__more-events{border-top:1px solid #e4e4e4;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__day--past .tribe-events-calendar-month__more-events-link{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event{background-color:#fff;overflow:hidden;position:relative;width:100%;z-index:5}.tribe-events .tribe-events-calendar-month__multiday-event--width-2{width:calc(200% + 1px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-3{width:calc(300% + 2px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-4{width:calc(400% + 3px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-5{width:calc(500% + 4px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-6{width:calc(600% + 5px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-7{width:calc(700% + 6px)}.tribe-events .tribe-events-calendar-month__multiday-event--hidden{opacity:0}.tribe-events .tribe-events-calendar-month__multiday-event--start{border-top-left-radius:9.5px;border-bottom-left-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event--end{border-top-right-radius:9.5px;border-bottom-right-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event-inner{align-items:center;background-color:rgba(51,74,255,.24);cursor:pointer;display:flex;flex-wrap:nowrap;padding:1px 16px;transition:background-color .2s ease}.tribe-events .tribe-events-calendar-month__multiday-event-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event-inner:hover{background-color:rgba(51,74,255,.34)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner:hover{background-color:#f7f6f6}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-featured-icon,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-title{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event-featured-icon{flex:none;margin-right:5px}.tribe-events .tribe-events-calendar-month__multiday-event-title{flex:auto;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tribe-events .tribe-events-calendar-month-nav--calendar{padding-top:16px}.tribe-events .tribe-events-calendar-month-nav--mobile{padding-top:20px}.tribe-events .tribe-events-calendar-day__event{display:flex;flex-direction:column;margin-bottom:24px;margin-top:32px;padding-left:42px}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:40px}.tribe-events .tribe-events-calendar-day__event--featured{position:relative}.tribe-events .tribe-events-calendar-day__event--featured:before{background:#334aff;content:"";height:100%;left:21px;position:absolute;width:3px}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event{margin-top:20px}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{flex:none;margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-featured-image-link{display:block;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-featured-image{padding-bottom:56.25%}.tribe-events .tribe-events-calendar-day__event-details{flex:none;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-events .tribe-events-calendar-day-nav{border-top:1px solid #d5d5d5;padding-top:24px}.tribe-events .tribe-events-calendar-day__time-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-day__time-separator:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-day__time-separator-text{flex:none}@media (min-width:768px){.tribe-events .tribe-events-l-container{padding-bottom:160px;padding-top:96px}.admin-bar .tribe-events .datepicker,.tribe-events .datepicker{margin-top:16px}.tribe-events .tribe-events-c-events-bar{border:1px solid #e4e4e4;flex-direction:row;margin-bottom:32px}.tribe-events .tribe-events-c-events-bar__search-filters-container{align-items:center;display:flex;flex:auto;padding:0;position:static}.tribe-events .tribe-events-c-events-bar__search{display:flex;flex:auto}.tribe-events .tribe-events-c-events-bar__filters{border-right:1px solid #e4e4e4;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-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-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{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{border-right:1px solid #e4e4e4;flex:auto;margin:12px 0}.tribe-events .tribe-events-c-search__input-control:last-child{border-right:0}.tribe-events .tribe-events-c-search__input{margin:-12px 0}.tribe-events .tribe-events-c-search__input--icon{background-position:16px}.tribe-events .tribe-events-c-search__button{flex:none;margin-top:0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input{margin:-12px 0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input--icon{background-position:16px}.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;margin-bottom:16px;width:100%}.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-button:after{height:7px;width:12px}.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,.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{border:0;border-radius:0;box-shadow:none;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--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--tabs .tribe-events-c-view-selector__list-item-link{height:100%;padding:20px 0;position:relative}.tribe-events .tribe-events-c-view-selector__button{height:100%;padding:20px 24px}.tribe-events .tribe-events-c-view-selector__button:before{content:none}.tribe-events .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__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__button-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector__button-text{clip:auto;width:auto;height:auto;margin:0;position:static;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;flex:auto}.tribe-events .tribe-events-c-view-selector__content{box-shadow:0 2px 5px 0 rgba(0,0,0,.14);left:0;padding:8px;right:auto;transform:translateY(8px);width:auto}.tribe-events .tribe-events-c-view-selector__list-item-link{padding:4px 32px 4px 16px}.tribe-events .tribe-events-c-view-selector__list-item-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-header{background-color:transparent;flex-direction:row;flex-wrap:wrap;margin:0;padding:0}.tribe-events .tribe-events-header__events-bar{width:100%}.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-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-list__event-date-tag{margin-right:0;width:11.111%}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:none;width: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;color:#334aff;font-weight:700;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{text-align:left}.tribe-events .tribe-events-calendar-month__day{border-color:#e4e4e4;border-radius:0;border-style:solid;border-width:0 1px 1px 0;height:auto;min-height:168px;overflow:visible}.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-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{flex-direction:row-reverse;justify-content:flex-end;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--featured:before{left:calc(11.111% - 24px);width:4px}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event{margin-top:40px}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{margin-bottom:0;width:33.333%}.tribe-events .tribe-events-calendar-day__event-details{margin-left:11.111%;width:55.555%}.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;color:#334aff;font-weight:700;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-events .tribe-events-calendar-day-nav{padding-top:32px}}@media (min-width:960px){.tribe-events .tribe-events-calendar-list__event-date-tag-datetime{margin-left:28%}}
1
+ .tribe-events-view{position:relative}.tribe-events .tribe-events-l-container{padding-bottom:80px;padding-top:64px}.tribe-events .datepicker{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);margin-top:8px;padding:0 16px 16px}.tribe-events .datepicker:after,.tribe-events .datepicker:before{content:none}.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 .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 .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{font-size:11px;line-height:1.5;padding:0;width:14.285%}.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;padding:11px 0;width:48px}.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;height:auto;margin:0;padding:15px 0;width:25%}.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{position:relative}.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{color:#141827;cursor:pointer}.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 .day.old,.tribe-events.tribe-events-view--week .datepicker .day.old.focused,.tribe-events.tribe-events-view--week .datepicker .day.old:focus,.tribe-events.tribe-events-view--week .datepicker .day.old:hover{color:#d5d5d5}.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-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{border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);min-width:0;padding:0 16px 16px}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{color:#141827!important;cursor:pointer!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;padding:0 16px 16px}.tribe-theme-avada .tribe-events .datepicker tbody td{border:0}.tribe-theme-avada .tribe-events .datepicker .datepicker-months td{padding: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{align-items:center;display:flex}.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-day-marker__date{flex:none}.tribe-events .tribe-events-c-events-bar{background-color:#fff;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: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__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;border-radius:4px;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-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-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-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-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-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-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:hsla(0,0%,100%,.6)}.tribe-events .tribe-events-c-nav{border-top:1px solid #d5d5d5;padding-top:20px}.tribe-events .tribe-events-c-nav__list{display:flex;list-style:none;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;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,.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-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>*{margin-left:8px}.tribe-events .tribe-events-c-small-cta>:first-child{margin-left:0}.tribe-events .tribe-events-c-small-cta--readmore{margin-top:12px}.tribe-events .tribe-events-c-small-cta__link{cursor:pointer}.tribe-events .tribe-events-c-small-cta__stock{color:#727272;margin-left:4px}.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")}.tribe-events .tribe-events-c-search__button{margin-top:24px}#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);height:auto!important;padding:24px;max-width:254px}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none;margin:0}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{color:#141827;overflow:inherit;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-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;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-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;text-align:left;width:100%}.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__button-icon{display:block;height:21px;width:21px}.tribe-events .tribe-events-c-view-selector__button-text{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__content{display:none;background-color:#fff;border:1px solid #e4e4e4;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);padding:12px 6px;position:absolute;right:0;top:100%;transform:translateY(16px);z-index:30}.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{align-items:center;border-radius:4px;display:flex;padding:8px 24px 8px 12px}.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-icon{flex:none;height:18px;margin-right:12px;width:18px}.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;flex:auto}.tribe-events .tribe-events-header{align-items:center;background-color:#fff;display:flex;flex-direction:row-reverse;justify-content:space-between;margin:0 -21px;padding:0 21px 16px;position:relative}.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{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-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{background:#334aff;content:"";height:100%;right:calc(100% - 3px);position:absolute;width:3px}.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{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;margin-bottom:-4px;text-transform:uppercase}.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;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-featured-image{padding-bottom:56.25%}.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:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-list__month-separator-text{flex:none}.tribe-events .tribe-events-calendar-list-nav{border-top:1px solid #d5d5d5;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__day--past .tribe-events-calendar-month__calendar-event{opacity:.5}.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;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-featured-image{padding-bottom:56.25%}.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-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event--featured:before{background:#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{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{margin-left:4px}.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;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-featured-image{padding-bottom:56.25%}.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{text-transform:uppercase;width:14.285%;padding-bottom:16px}.tribe-events .tribe-events-calendar-month__header-column-title{color:#727272;text-align:center}.tribe-events .tribe-events-calendar-month__day{border-radius:4px;height:48px;overflow:hidden;position:relative;width:14.285%}.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{height:100%;width:100%}.tribe-events .tribe-events-calendar-month__day-cell--mobile{align-items:center;border-bottom:2px solid transparent;display:flex;flex-direction:column;text-align:center;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}.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;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='%23334AFF'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;height:10px;width:8px}.tribe-events .tribe-events-calendar-month__events{flex:auto}.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-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-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{border-bottom:1px solid #d5d5d5;padding:12px 0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event:last-child{border: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-featured-image{padding-bottom:56.25%}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{color:#727272;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,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon{display:inline-block}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-icon{margin-right:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon{margin-left:4px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{color:#334aff;font-weight:700;margin-right:8px}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-cost{margin-top:8px}.tribe-events .tribe-events-calendar-month__more-events{border-top:1px solid #e4e4e4;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__day--past .tribe-events-calendar-month__more-events-link{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event{background-color:#fff;overflow:hidden;position:relative;width:100%;z-index:5}.tribe-events .tribe-events-calendar-month__multiday-event--width-2{width:calc(200% + 1px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-3{width:calc(300% + 2px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-4{width:calc(400% + 3px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-5{width:calc(500% + 4px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-6{width:calc(600% + 5px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-7{width:calc(700% + 6px)}.tribe-events .tribe-events-calendar-month__multiday-event--hidden{opacity:0}.tribe-events .tribe-events-calendar-month__multiday-event--start{border-top-left-radius:9.5px;border-bottom-left-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event--end{border-top-right-radius:9.5px;border-bottom-right-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event-inner{align-items:center;background-color:rgba(51,74,255,.24);cursor:pointer;display:flex;flex-wrap:nowrap;padding:1px 16px;transition:background-color .2s ease}.tribe-events .tribe-events-calendar-month__multiday-event-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event-inner:hover{background-color:rgba(51,74,255,.34)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-inner:hover{background-color:#f7f6f6}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-featured-icon,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-title{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event-featured-icon{flex:none;margin-right:5px}.tribe-events .tribe-events-calendar-month__multiday-event-title{flex:auto;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tribe-events .tribe-events-calendar-month-nav{padding-top:20px}.tribe-events .tribe-events-calendar-day__event{display:flex;flex-direction:column;margin-bottom:24px;margin-top:32px;padding-left:42px}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:40px}.tribe-events .tribe-events-calendar-day__event--featured{position:relative}.tribe-events .tribe-events-calendar-day__event--featured:before{background:#334aff;content:"";height:100%;left:21px;position:absolute;width:3px}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event{margin-top:20px}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{flex:none;margin-bottom:16px}.tribe-events .tribe-events-calendar-day__event-featured-image-link{display:block;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-featured-image{padding-bottom:56.25%}.tribe-events .tribe-events-calendar-day__event-details{flex:none;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-events .tribe-events-calendar-day-nav{border-top:1px solid #d5d5d5;padding-top:24px}.tribe-events .tribe-events-calendar-day__time-separator{display:flex;align-items:center}.tribe-events .tribe-events-calendar-day__time-separator:after{background-color:#d5d5d5;content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-day__time-separator-text{flex:none}@media (min-width:768px){.tribe-events .tribe-events-l-container{padding-bottom:160px;padding-top:96px}.admin-bar .tribe-events .datepicker,.tribe-events .datepicker{margin-top:16px}.tribe-events .tribe-events-c-events-bar{border:1px solid #e4e4e4;flex-direction:row;margin-bottom:32px}.tribe-events .tribe-events-c-events-bar__search-filters-container{align-items:center;display:flex;flex:auto;padding:0;position:static}.tribe-events .tribe-events-c-events-bar__search{display:flex;flex:auto}.tribe-events .tribe-events-c-events-bar__filters{border-right:1px solid #e4e4e4;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-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-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-small-cta--readmore{margin-top:16px}.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{border-right:1px solid #e4e4e4;flex:auto;margin:12px 0}.tribe-events .tribe-events-c-search__input-control:last-child{border-right:0}.tribe-events .tribe-events-c-search__input{margin:-12px 0}.tribe-events .tribe-events-c-search__input--icon{background-position:16px}.tribe-events .tribe-events-c-search__button{flex:none;margin-top:0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input{margin:-12px 0}#top.tribe-theme-enfold .tribe-events .tribe-events-c-search__input--icon{background-position:16px}.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;margin-bottom:32px;width:100%}.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-mobile{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-top-bar__datepicker-desktop{display:block!important;visibility:visible}.tribe-events .tribe-events-c-top-bar__datepicker-button:after{height:7px;width:12px}.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,.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{border:0;border-radius:0;box-shadow:none;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--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--tabs .tribe-events-c-view-selector__list-item-link{height:100%;padding:20px 0;position:relative}.tribe-events .tribe-events-c-view-selector__button{height:100%;padding:20px 24px}.tribe-events .tribe-events-c-view-selector__button:before{content:none}.tribe-events .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__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__button-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-view-selector__button-text{clip:auto;width:auto;height:auto;margin:0;position:static;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;flex:auto}.tribe-events .tribe-events-c-view-selector__content{box-shadow:0 2px 5px 0 rgba(0,0,0,.14);left:0;padding:8px;right:auto;transform:translateY(8px);width:auto}.tribe-events .tribe-events-c-view-selector__list-item-link{padding:4px 32px 4px 16px}.tribe-events .tribe-events-c-view-selector__list-item-icon{display:none!important;visibility:hidden}.tribe-events .tribe-events-header{background-color:transparent;flex-direction:row;flex-wrap:wrap;margin:0;padding:0}.tribe-events .tribe-events-header__events-bar{width:100%}.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-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-list__event-date-tag{margin-right:0;width:11.111%}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:none;width: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;color:#334aff;font-weight:700;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{text-align:left}.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-radius:0;border-style:solid;border-width:0 1px 1px 0;height:auto;min-height:168px;overflow:visible}.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-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{flex-direction:row-reverse;justify-content:flex-end;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--featured:before{left:calc(11.111% - 24px);width:4px}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event{margin-top:40px}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{margin-bottom:0;width:33.333%}.tribe-events .tribe-events-calendar-day__event-details{margin-left:11.111%;width:55.555%}.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;color:#334aff;font-weight:700;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-events .tribe-events-calendar-day-nav{padding-top:32px}}@media (min-width:960px){.tribe-events .tribe-events-calendar-list__event-date-tag-datetime{margin-left:28%}}
src/resources/js/views/accordion.js CHANGED
@@ -201,7 +201,8 @@ tribe.events.views.accordion = {};
201
  };
202
 
203
  /**
204
- * Initializes accordion
 
205
  *
206
  * @since 4.9.4
207
  *
@@ -210,6 +211,16 @@ tribe.events.views.accordion = {};
210
  * @return {function} function to add event listener to header
211
  */
212
  obj.initAccordion = function( $container ) {
 
 
 
 
 
 
 
 
 
 
213
  return function( index, header ) {
214
  $( header ).on( 'click', { target: header, container: $container }, obj.toggleAccordion );
215
  };
201
  };
202
 
203
  /**
204
+ * Curry function to initialize accordion
205
+ * Used to pass in `$container`
206
  *
207
  * @since 4.9.4
208
  *
211
  * @return {function} function to add event listener to header
212
  */
213
  obj.initAccordion = function( $container ) {
214
+ /**
215
+ * Initializes accordion
216
+ *
217
+ * @since 4.9.4
218
+ *
219
+ * @param {integer} index jQuery.each index param
220
+ * @param {HTMLElement} header header element from which to remove event
221
+ *
222
+ * @return {void}
223
+ */
224
  return function( index, header ) {
225
  $( header ).on( 'click', { target: header, container: $container }, obj.toggleAccordion );
226
  };
src/resources/js/views/datepicker.js CHANGED
@@ -40,18 +40,10 @@ tribe.events.views.datepicker = {};
40
  */
41
  obj.selectors = {
42
  datepickerContainer: '[data-js="tribe-events-top-bar-datepicker-container"]',
43
- datepickerDays: '.datepicker-days',
44
  datepickerDaysBody: '.datepicker-days tbody',
45
- datepickerDaysRow: '.datepicker-days tbody tr',
46
- datepickerDay: '.day',
47
- datepickerDayNotDisabled: '.day:not(.disabled)',
48
  input: '[data-js="tribe-events-top-bar-date"]',
49
  button: '[data-js="tribe-events-top-bar-datepicker-button"]',
50
  buttonOpenClass: '.tribe-events-c-top-bar__datepicker-button--open',
51
- activeClass: '.active',
52
- disabledClass: '.disabled',
53
- focusedClass: '.focused',
54
- hoveredClass: '.hovered',
55
  };
56
 
57
  /**
@@ -65,6 +57,39 @@ tribe.events.views.datepicker = {};
65
  initialized: false,
66
  };
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  /**
69
  * Pads number with extra 0 if needed to make it double digit
70
  *
@@ -119,7 +144,7 @@ tribe.events.views.datepicker = {};
119
  var paddedMonth = obj.padNumber( month );
120
 
121
  /**
122
- * @todo: use format from BE. Paul.
123
  */
124
  var viewData = {
125
  [ 'tribe-bar-date' ]: [ year, paddedMonth, paddedDate ].join( '-' ),
@@ -145,7 +170,7 @@ tribe.events.views.datepicker = {};
145
  var paddedMonth = obj.padNumber( month );
146
 
147
  /**
148
- * @todo: use format from BE. Paul.
149
  */
150
  var viewData = {
151
  [ 'tribe-bar-date' ]: [ year, paddedMonth ].join( '-' ),
@@ -177,80 +202,6 @@ tribe.events.views.datepicker = {};
177
  event.data.datepickerButton.removeClass( obj.selectors.buttonOpenClass.className() );
178
  };
179
 
180
- /**
181
- * Toggle hover class
182
- *
183
- * @since 4.9.7
184
- *
185
- * @param {Event} event event object for 'mouseenter' and 'mouseleave' events
186
- *
187
- * @return {void}
188
- */
189
- obj.toggleHoverClass = function( event ) {
190
- event.data.row.toggleClass( obj.selectors.hoveredClass.className() );
191
- };
192
-
193
- /**
194
- * Handle disabled day click event
195
- *
196
- * @since 4.9.7
197
- *
198
- * @param {Event} event event object for 'click' event
199
- *
200
- * @return {void}
201
- */
202
- obj.handleDisabledDayClick = function( event ) {
203
- event.data.row.find( obj.selectors.datepickerDayNotDisabled ).click();
204
- };
205
-
206
- /**
207
- * Bind datepicker row events
208
- *
209
- * @since 4.9.7
210
- *
211
- * @param {Event} event event object for 'show' event
212
- *
213
- * @return {void}
214
- */
215
- obj.bindRowEvents = function( event ) {
216
- var $datepickerDays = event.data.container.find( obj.selectors.datepickerDays );
217
- var config = { attributes: true, childList: true, subtree: true };
218
-
219
- var $container = event.data.container;
220
- var $rows = $container.find( obj.selectors.datepickerDaysRow );
221
-
222
- // for each row, add mouseenter and mouseleave event listeners to toggle hover class
223
- $rows.each( function( index, row ) {
224
- var $row = $( row );
225
- $row
226
- .off( 'mouseenter mouseleave', obj.toggleHoverClass )
227
- .on( 'mouseenter mouseleave', { row: $row }, obj.toggleHoverClass )
228
- .find( obj.selectors.datepickerDay )
229
- .each( function( index, day ) {
230
- var $day = $( day );
231
-
232
- // if day has disabled class, allow clicking day to select first day of the week
233
- if ( $day.hasClass( obj.selectors.disabledClass.className() ) ) {
234
- $day
235
- .off( 'click', obj.handleDisabledDayClick )
236
- .on( 'click', { row: $row }, obj.handleDisabledDayClick );
237
- }
238
-
239
- // if day has focused class, add focused class to row
240
- if ( $day.hasClass( obj.selectors.focusedClass.className() ) ) {
241
- $row.addClass( obj.selectors.focusedClass.className() );
242
- }
243
-
244
- // if day has active class, add active class to row
245
- if ( $day.hasClass( obj.selectors.activeClass.className() ) ) {
246
- $row.addClass( obj.selectors.activeClass.className() );
247
- }
248
- } );
249
- } );
250
-
251
- event.data.observer.observe( $datepickerDays[ 0 ], config );
252
- };
253
-
254
  /**
255
  * Handle datepicker button mousedown
256
  *
@@ -293,24 +244,37 @@ tribe.events.views.datepicker = {};
293
  };
294
 
295
  /**
296
- * Handle mutations from mutation observer
 
297
  *
298
  * @since 4.9.7
299
  *
300
  * @param {PlainObject} data data object to be passed for use in handler
301
  *
302
- * @return {void}
303
  */
304
  obj.handleMutation = function( data ) {
305
  var $container = data.container;
 
 
 
 
 
 
 
 
 
 
 
306
  return function( mutationsList, observer ) {
307
  for ( var mutation of mutationsList ) {
 
308
  if (
309
  'childList' === mutation.type &&
310
  $container.find( obj.selectors.datepickerDaysBody ).is( mutation.target ) &&
311
  mutation.addedNodes.length
312
  ) {
313
- obj.bindRowEvents( { data: { container: $container, observer: observer } } );
314
  }
315
  }
316
  };
@@ -329,11 +293,12 @@ tribe.events.views.datepicker = {};
329
  */
330
  obj.deinit = function( event, jqXHR, settings ) {
331
  var $container = event.data.container;
 
 
 
332
  var $input = $container.find( obj.selectors.input );
333
  var $datepickerButton = $container.find( obj.selectors.button );
334
- var viewSlug = event.data.viewSlug;
335
- var isMonthView = 'month' === viewSlug;
336
- var isWeekView = 'week' === viewSlug;
337
  var changeEvent = isMonthView ? 'changeMonth' : 'changeDate';
338
  var changeHandler = isMonthView ? obj.handleChangeMonth : obj.handleChangeDate;
339
 
@@ -345,9 +310,7 @@ tribe.events.views.datepicker = {};
345
  .off( 'mousedown', obj.handleMousedown )
346
  .off( 'click', obj.handleClick );
347
 
348
- if ( isWeekView ) {
349
- $input.off( 'show', obj.bindRowEvents );
350
- }
351
  };
352
 
353
  /**
@@ -363,61 +326,49 @@ tribe.events.views.datepicker = {};
363
  * @return {void}
364
  */
365
  obj.init = function( event, index, $container, data ) {
 
 
366
  var $input = $container.find( obj.selectors.input );
367
  var $datepickerButton = $container.find( obj.selectors.button );
368
  var viewSlug = data.slug;
369
  var isMonthView = 'month' === viewSlug;
370
- var isWeekView = 'week' === viewSlug;
371
- var minViewMode = isMonthView ? 'year' : 'month';
372
- /**
373
- * @todo: use format from BE. Paul.
374
- */
375
- var daysOfWeekDisabled = isWeekView ? [ 1, 2, 3, 4, 5, 6 ] : [];
376
  var changeEvent = isMonthView ? 'changeMonth' : 'changeDate';
377
  var changeHandler = isMonthView ? obj.handleChangeMonth : obj.handleChangeDate;
378
 
379
- var tribeL10nDatatables = window.tribe_l10n_datatables || {};
380
- var datepickerI18n = tribeL10nDatatables.datepicker || {};
381
- var nextText = datepickerI18n.nextText || 'Next';
382
- var prevText = datepickerI18n.prevText || 'Prev';
383
-
384
  var state = {
385
  isTarget: false,
386
  };
387
 
388
- var observer = new MutationObserver( obj.handleMutation( { container: $container } ) );
 
 
 
 
 
 
 
 
 
 
 
389
 
390
  $input
391
- .bootstrapDatepicker( {
392
- container: $container.find( obj.selectors.datepickerContainer ),
393
- daysOfWeekDisabled: daysOfWeekDisabled,
394
- /**
395
- * @todo: use format from BE. Paul.
396
- */
397
- format: 'yyyy-mm-dd',
398
- maxViewMode: 'decade',
399
- minViewMode: minViewMode,
400
- orientation: 'bottom left',
401
- showOnFocus: false,
402
- templates: {
403
- leftArrow: '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + prevText + '</span>',
404
- rightArrow: '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + nextText + '</span>',
405
- },
406
- } )
407
  .on( changeEvent, { container: $container }, changeHandler )
408
- .on( 'hide', { datepickerButton: $datepickerButton, input: $input, observer: observer }, obj.handleHide );
409
 
410
  $datepickerButton
411
  .on( 'mousedown touchstart', { target: $datepickerButton }, obj.handleMousedown )
412
  .on( 'click', { target: $datepickerButton, input: $input }, obj.handleClick )
413
  .data( 'tribeEventsState', state );
414
 
415
- if ( isWeekView ) {
416
- $input.on( 'show', { container: $container, observer: observer }, obj.bindRowEvents );
417
- }
418
-
419
  // deinit datepicker and event handlers before success
420
  $container.on( 'beforeAjaxSuccess.tribeEvents', { container: $container, viewSlug: viewSlug }, obj.deinit );
 
 
421
  };
422
 
423
  /**
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"]',
45
  button: '[data-js="tribe-events-top-bar-datepicker-button"]',
46
  buttonOpenClass: '.tribe-events-c-top-bar__datepicker-button--open',
 
 
 
 
47
  };
48
 
49
  /**
57
  initialized: false,
58
  };
59
 
60
+ /**
61
+ * Object of datepicker options
62
+ *
63
+ * @since TBD
64
+ *
65
+ * @type {PlainObject}
66
+ */
67
+ obj.options = {
68
+ container: null,
69
+ daysOfWeekDisabled: [],
70
+ /**
71
+ * @todo: @paulmskim use format from BE.
72
+ */
73
+ format: 'yyyy-mm-dd',
74
+ maxViewMode: 'decade',
75
+ minViewMode: 'month',
76
+ orientation: 'bottom left',
77
+ showOnFocus: false,
78
+ templates: {
79
+ leftArrow: '',
80
+ rightArrow: '',
81
+ },
82
+ };
83
+
84
+ /**
85
+ * Mutation observer to watch for mutations
86
+ *
87
+ * @since TBD
88
+ *
89
+ * @type {MutationObserver}
90
+ */
91
+ obj.observer = null;
92
+
93
  /**
94
  * Pads number with extra 0 if needed to make it double digit
95
  *
144
  var paddedMonth = obj.padNumber( month );
145
 
146
  /**
147
+ * @todo: @paulmskim use format from BE.
148
  */
149
  var viewData = {
150
  [ 'tribe-bar-date' ]: [ year, paddedMonth, paddedDate ].join( '-' ),
170
  var paddedMonth = obj.padNumber( month );
171
 
172
  /**
173
+ * @todo: @paulmskim use format from BE.
174
  */
175
  var viewData = {
176
  [ 'tribe-bar-date' ]: [ year, paddedMonth ].join( '-' ),
202
  event.data.datepickerButton.removeClass( obj.selectors.buttonOpenClass.className() );
203
  };
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  /**
206
  * Handle datepicker button mousedown
207
  *
244
  };
245
 
246
  /**
247
+ * Curry function to handle mutations
248
+ * Used to pass in `data`
249
  *
250
  * @since 4.9.7
251
  *
252
  * @param {PlainObject} data data object to be passed for use in handler
253
  *
254
+ * @return {function}
255
  */
256
  obj.handleMutation = function( data ) {
257
  var $container = data.container;
258
+
259
+ /**
260
+ * Handle mutations from mutation observer
261
+ *
262
+ * @since 4.9.7
263
+ *
264
+ * @param {array} mutationsList list of mutations that have occurred
265
+ * @param {MutationObserver} observer mutation observer instance
266
+ *
267
+ * @return {void}
268
+ */
269
  return function( mutationsList, observer ) {
270
  for ( var mutation of mutationsList ) {
271
+ // if datepicker switches months via prev/next arrows or by selecting a month on month picker
272
  if (
273
  'childList' === mutation.type &&
274
  $container.find( obj.selectors.datepickerDaysBody ).is( mutation.target ) &&
275
  mutation.addedNodes.length
276
  ) {
277
+ $container.trigger( 'handleMutationMonthChange.tribeEvents' );
278
  }
279
  }
280
  };
293
  */
294
  obj.deinit = function( event, jqXHR, settings ) {
295
  var $container = event.data.container;
296
+
297
+ $container.trigger( 'beforeDatepickerDeinit.tribeEvents', [ jqXHR, settings ] );
298
+
299
  var $input = $container.find( obj.selectors.input );
300
  var $datepickerButton = $container.find( obj.selectors.button );
301
+ var isMonthView = 'month' === event.data.viewSlug;
 
 
302
  var changeEvent = isMonthView ? 'changeMonth' : 'changeDate';
303
  var changeHandler = isMonthView ? obj.handleChangeMonth : obj.handleChangeDate;
304
 
310
  .off( 'mousedown', obj.handleMousedown )
311
  .off( 'click', obj.handleClick );
312
 
313
+ $container.trigger( 'afterDatepickerDeinit.tribeEvents', [ jqXHR, settings ] );
 
 
314
  };
315
 
316
  /**
326
  * @return {void}
327
  */
328
  obj.init = function( event, index, $container, data ) {
329
+ $container.trigger( 'beforeDatepickerInit.tribeEvents', [ index, $container, data ] );
330
+
331
  var $input = $container.find( obj.selectors.input );
332
  var $datepickerButton = $container.find( obj.selectors.button );
333
  var viewSlug = data.slug;
334
  var isMonthView = 'month' === viewSlug;
335
+
336
+ // set up datepicker change event and handler
 
 
 
 
337
  var changeEvent = isMonthView ? 'changeMonth' : 'changeDate';
338
  var changeHandler = isMonthView ? obj.handleChangeMonth : obj.handleChangeDate;
339
 
340
+ // set up datepicker button state
 
 
 
 
341
  var state = {
342
  isTarget: false,
343
  };
344
 
345
+ // set up mutation observer
346
+ obj.observer = new MutationObserver( obj.handleMutation( { container: $container } ) );
347
+
348
+ // set options for datepicker
349
+ obj.options.container = $container.find( obj.selectors.datepickerContainer );
350
+ obj.options.minViewMode = isMonthView ? 'year' : 'month';
351
+ var tribeL10nDatatables = window.tribe_l10n_datatables || {};
352
+ var datepickerI18n = tribeL10nDatatables.datepicker || {};
353
+ var nextText = datepickerI18n.nextText || 'Next';
354
+ var prevText = datepickerI18n.prevText || 'Prev';
355
+ obj.options.templates.leftArrow = '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + prevText + '</span>',
356
+ obj.options.templates.rightArrow = '<span class="tribe-common-svgicon"></span><span class="tribe-common-a11y-visual-hide">' + nextText + '</span>',
357
 
358
  $input
359
+ .bootstrapDatepicker( obj.options )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  .on( changeEvent, { container: $container }, changeHandler )
361
+ .on( 'hide', { datepickerButton: $datepickerButton, input: $input, observer: obj.observer }, obj.handleHide );
362
 
363
  $datepickerButton
364
  .on( 'mousedown touchstart', { target: $datepickerButton }, obj.handleMousedown )
365
  .on( 'click', { target: $datepickerButton, input: $input }, obj.handleClick )
366
  .data( 'tribeEventsState', state );
367
 
 
 
 
 
368
  // deinit datepicker and event handlers before success
369
  $container.on( 'beforeAjaxSuccess.tribeEvents', { container: $container, viewSlug: viewSlug }, obj.deinit );
370
+
371
+ $container.trigger( 'afterDatepickerInit.tribeEvents', [ index, $container, data ] );
372
  };
373
 
374
  /**
src/resources/js/views/events-bar-inputs.js CHANGED
@@ -149,7 +149,9 @@ tribe.events.views.eventsBarInputs = {};
149
  obj.bindEvents = function( event, index, $container, data ) {
150
  var $inputWrapper = $container.find( obj.selectors.inputWrapper );
151
 
152
- if ( ! $inputWrapper.length ) return;
 
 
153
 
154
  obj.bindInputEvents( $container );
155
  $container.on( 'beforeAjaxSuccess.tribeEvents', { container: $container }, obj.unbindEvents );
149
  obj.bindEvents = function( event, index, $container, data ) {
150
  var $inputWrapper = $container.find( obj.selectors.inputWrapper );
151
 
152
+ if ( ! $inputWrapper.length ) {
153
+ return;
154
+ }
155
 
156
  obj.bindInputEvents( $container );
157
  $container.on( 'beforeAjaxSuccess.tribeEvents', { container: $container }, obj.unbindEvents );
src/resources/js/views/events-bar.js CHANGED
@@ -570,7 +570,9 @@ tribe.events.views.eventsBar = {};
570
  obj.init = function( event, index, $container, data ) {
571
  var $eventsBar = $container.find( obj.selectors.eventsBar );
572
 
573
- if ( ! $eventsBar.length ) return;
 
 
574
 
575
  obj.initState( $container );
576
  obj.initEventsBar( $container );
570
  obj.init = function( event, index, $container, data ) {
571
  var $eventsBar = $container.find( obj.selectors.eventsBar );
572
 
573
+ if ( ! $eventsBar.length ) {
574
+ return;
575
+ }
576
 
577
  obj.initState( $container );
578
  obj.initEventsBar( $container );
src/resources/js/views/manager.js CHANGED
@@ -202,10 +202,12 @@ tribe.events.views.manager = {};
202
  * @return {boolean}
203
  */
204
  obj.onLinkClick = function( event ) {
 
 
 
205
  event.preventDefault();
206
 
207
  var $link = $( this );
208
- var $container = obj.getContainer( this );
209
  var url = $link.attr( 'href' );
210
  var nonce = $link.data( 'view-rest-nonce' );
211
  var shouldManageUrl = obj.shouldManageUrl( $container );
@@ -223,6 +225,8 @@ tribe.events.views.manager = {};
223
 
224
  obj.request( data, $container );
225
 
 
 
226
  return false;
227
  };
228
 
@@ -238,11 +242,13 @@ tribe.events.views.manager = {};
238
  * @return {boolean}
239
  */
240
  obj.onSubmit = function( event ) {
 
 
 
241
  event.preventDefault();
242
 
243
  // The submit event is triggered on the form, not the container.
244
  var $form = $( this );
245
- var $container = $form.closest( obj.selectors.container );
246
  var nonce = $container.data( 'view-rest-nonce' );
247
 
248
  var formData = Qs.parse( $form.serialize() );
@@ -256,6 +262,8 @@ tribe.events.views.manager = {};
256
  // Pass the data to the request reading it from `tribe-events-views`.
257
  obj.request( data, $container );
258
 
 
 
259
  return false;
260
  };
261
 
202
  * @return {boolean}
203
  */
204
  obj.onLinkClick = function( event ) {
205
+ var $container = obj.getContainer( this );
206
+ $container.trigger( 'beforeOnLinkClick.tribeEvents', event );
207
+
208
  event.preventDefault();
209
 
210
  var $link = $( this );
 
211
  var url = $link.attr( 'href' );
212
  var nonce = $link.data( 'view-rest-nonce' );
213
  var shouldManageUrl = obj.shouldManageUrl( $container );
225
 
226
  obj.request( data, $container );
227
 
228
+ $container.trigger( 'afterOnLinkClick.tribeEvents', event );
229
+
230
  return false;
231
  };
232
 
242
  * @return {boolean}
243
  */
244
  obj.onSubmit = function( event ) {
245
+ var $container = obj.getContainer( this );
246
+ $container.trigger( 'beforeOnSubmit.tribeEvents', event );
247
+
248
  event.preventDefault();
249
 
250
  // The submit event is triggered on the form, not the container.
251
  var $form = $( this );
 
252
  var nonce = $container.data( 'view-rest-nonce' );
253
 
254
  var formData = Qs.parse( $form.serialize() );
262
  // Pass the data to the request reading it from `tribe-events-views`.
263
  obj.request( data, $container );
264
 
265
+ $container.trigger( 'afterOnSubmit.tribeEvents', event );
266
+
267
  return false;
268
  };
269
 
src/resources/js/views/month-grid.js CHANGED
@@ -382,7 +382,9 @@ tribe.events.views.monthGrid = {};
382
  obj.init = function( event, index, $container, data ) {
383
  var $grid = $container.find( obj.selectors.grid );
384
 
385
- if ( ! $grid.length ) return;
 
 
386
 
387
  obj.initState( $grid );
388
  obj.setupGrid( $grid );
382
  obj.init = function( event, index, $container, data ) {
383
  var $grid = $container.find( obj.selectors.grid );
384
 
385
+ if ( ! $grid.length ) {
386
+ return;
387
+ }
388
 
389
  obj.initState( $grid );
390
  obj.setupGrid( $grid );
src/resources/js/views/month-mobile-events.js CHANGED
@@ -261,7 +261,9 @@ tribe.events.views.monthMobileEvents = {};
261
  obj.init = function( event, index, $container, data ) {
262
  var $mobileEvents = $container.find( obj.selectors.mobileEvents );
263
 
264
- if ( ! $mobileEvents.length ) return;
 
 
265
 
266
  obj.initState( $container );
267
  obj.bindCalendarEvents( $container );
261
  obj.init = function( event, index, $container, data ) {
262
  var $mobileEvents = $container.find( obj.selectors.mobileEvents );
263
 
264
+ if ( ! $mobileEvents.length ) {
265
+ return;
266
+ }
267
 
268
  obj.initState( $container );
269
  obj.bindCalendarEvents( $container );
src/resources/js/views/multiday-events.js CHANGED
@@ -219,7 +219,9 @@ tribe.events.views.multidayEvents = {};
219
  var viewSlug = data.slug;
220
  var allowedViews = $container.data( 'tribeEventsMultidayEventsAllowedViews' );
221
 
222
- if ( -1 === allowedViews.indexOf( viewSlug ) ) return;
 
 
223
 
224
  obj.initSelectors( viewSlug );
225
  obj.bindMultidayEvents( $container );
219
  var viewSlug = data.slug;
220
  var allowedViews = $container.data( 'tribeEventsMultidayEventsAllowedViews' );
221
 
222
+ if ( -1 === allowedViews.indexOf( viewSlug ) ) {
223
+ return;
224
+ }
225
 
226
  obj.initSelectors( viewSlug );
227
  obj.bindMultidayEvents( $container );
src/resources/js/views/tooltip.js CHANGED
@@ -31,43 +31,56 @@ tribe.events.views.tooltip = {};
31
  'use strict';
32
  var $document = $( document );
33
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  /**
35
  * Selectors used for configuration and setup
36
  *
37
- * @since 4.9.4
38
  *
39
  * @type {PlainObject}
40
  */
41
  obj.selectors = {
42
- tooltip: '[data-js="tribe-events-tooltip"]',
43
- tooltipContent: '[data-js="tribe-events-tooltip-content"]',
44
  tribeEventsTooltipThemeClass: '.tribe-events-tooltip-theme',
 
45
  tribeCommonClass: '.tribe-common',
46
  tribeEventsClass: '.tribe-events',
47
  };
48
 
49
  /**
50
- * Override of the `functionInit` tooltipster method.
51
- * A custom function to be fired only once at instantiation.
52
  *
53
- * @since 4.9.4
54
  *
55
- * @param {Tooltipster} instance instance of Tooltipster
56
- * @param {PlainObject} helper helper object with tooltip origin
57
  *
58
  * @return {void}
59
  */
60
- obj.onFunctionInit = function( instance, helper ) {
61
- var $origin = $( helper.origin );
62
- var content = $origin.find( obj.selectors.tooltipContent ).html();
63
- instance.content( content );
64
- $origin
65
- .on( 'focus', { target: $origin }, obj.handleOriginFocus )
66
- .on( 'blur', { target: $origin }, obj.handleOriginBlur );
 
 
67
  };
68
 
69
  /**
70
- * Handle tooltip focus event
71
  *
72
  * @since 4.9.4
73
  *
@@ -75,57 +88,145 @@ tribe.events.views.tooltip = {};
75
  *
76
  * @return {void}
77
  */
78
- obj.handleOriginFocus = function( event ) {
79
- event.data.target.tooltipster( 'open' );
80
  };
81
 
82
  /**
83
- * Handle tooltip blur event
84
  *
85
- * @since 4.9.4
86
  *
87
  * @param {Event} event event object
88
  *
89
  * @return {void}
90
  */
91
- obj.handleOriginBlur = function( event ) {
92
- event.data.target.tooltipster( 'close' );
93
  };
94
 
95
  /**
96
- * Override of the `functionReady` tooltipster method.
97
- * A custom function to be fired when the tooltip and its contents have been added to the DOM.
98
  *
99
- * @since 4.9.4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  *
101
  * @param {Tooltipster} instance instance of Tooltipster
102
  * @param {PlainObject} helper helper object with tooltip origin
103
  *
104
  * @return {void}
105
  */
106
- obj.onFunctionReady = function( instance, helper ) {
107
- $( helper.origin ).find( obj.selectors.tooltipContent ).attr( 'aria-hidden', 'false' );
 
 
 
 
 
 
 
 
108
  };
109
 
110
  /**
111
- * Override of the `functionAfter` tooltipster method.
112
- * A custom function to be fired once the tooltip has been closed and removed from the DOM.
113
  *
114
- * @since 4.9.4
115
  *
116
  * @param {Tooltipster} instance instance of Tooltipster
117
  * @param {PlainObject} helper helper object with tooltip origin
118
  *
119
  * @return {void}
120
  */
121
- obj.onFunctionAfter = function( instance, helper ) {
122
- $( helper.origin ).find( obj.selectors.tooltipContent ).attr( 'aria-hidden', 'true' );
 
 
 
123
  };
124
 
125
  /**
126
  * Deinitialize accessible tooltips via tooltipster
127
  *
128
- * @since 4.9.5
129
  *
130
  * @param {jQuery} $container jQuery object of view container.
131
  *
@@ -133,18 +234,23 @@ tribe.events.views.tooltip = {};
133
  */
134
  obj.deinitTooltips = function( $container ) {
135
  $container
136
- .find( obj.selectors.tooltip )
137
- .each( function( index, tooltip ) {
138
- $( tooltip )
139
  .off( 'focus', obj.handleOriginFocus )
140
- .off( 'blur', obj.handleOriginBlur );
 
 
 
 
 
141
  } );
142
  };
143
 
144
  /**
145
  * Initialize accessible tooltips via tooltipster
146
  *
147
- * @since 4.9.4
148
  *
149
  * @param {jQuery} $container jQuery object of view container.
150
  *
@@ -154,14 +260,15 @@ tribe.events.views.tooltip = {};
154
  var theme = $container.data( 'tribeEventsTooltipTheme' );
155
 
156
  $container
157
- .find( obj.selectors.tooltip )
158
- .each( function( index, tooltip ) {
159
- $( tooltip ).tooltipster( {
160
  interactive: true,
 
 
161
  theme: theme,
162
  functionInit: obj.onFunctionInit,
163
  functionReady: obj.onFunctionReady,
164
- functionAfter: obj.onFunctionAfter,
165
  } );
166
  } );
167
  };
@@ -169,7 +276,7 @@ tribe.events.views.tooltip = {};
169
  /**
170
  * Initialize tooltip theme
171
  *
172
- * @since 4.9.9
173
  *
174
  * @param {jQuery} $container jQuery object of view container.
175
  *
31
  'use strict';
32
  var $document = $( document );
33
 
34
+ /**
35
+ * Config used for tooltip setup
36
+ *
37
+ * @since TBD
38
+ *
39
+ * @type {PlainObject}
40
+ */
41
+ obj.config = {
42
+ delayHoverIn: 600,
43
+ delayHoverOut: 300,
44
+ };
45
+
46
  /**
47
  * Selectors used for configuration and setup
48
  *
49
+ * @since TBD
50
  *
51
  * @type {PlainObject}
52
  */
53
  obj.selectors = {
54
+ tooltipTrigger: '[data-js~="tribe-events-tooltip"]',
55
+ tribeEventsTooltipTriggerHoverClass: '.tribe-events-tooltip-trigger--hover',
56
  tribeEventsTooltipThemeClass: '.tribe-events-tooltip-theme',
57
+ tribeEventsTooltipThemeHoverClass: '.tribe-events-tooltip-theme--hover',
58
  tribeCommonClass: '.tribe-common',
59
  tribeEventsClass: '.tribe-events',
60
  };
61
 
62
  /**
63
+ * Handle tooltip focus event
 
64
  *
65
+ * @since TBD
66
  *
67
+ * @param {Event} event event object
 
68
  *
69
  * @return {void}
70
  */
71
+ obj.handleOriginFocus = function( event ) {
72
+ setTimeout( function() {
73
+ if (
74
+ event.data.target.is( ':focus' ) ||
75
+ event.data.target.hasClass( obj.selectors.tribeEventsTooltipTriggerHoverClass.className() )
76
+ ) {
77
+ event.data.target.tooltipster( 'open' );
78
+ }
79
+ }, obj.config.delayHoverIn );
80
  };
81
 
82
  /**
83
+ * Handle tooltip blur event
84
  *
85
  * @since 4.9.4
86
  *
88
  *
89
  * @return {void}
90
  */
91
+ obj.handleOriginBlur = function( event ) {
92
+ event.data.target.tooltipster( 'close' );
93
  };
94
 
95
  /**
96
+ * Handle origin mouseenter and touchstart events
97
  *
98
+ * @since TBD
99
  *
100
  * @param {Event} event event object
101
  *
102
  * @return {void}
103
  */
104
+ obj.handleOriginHoverIn = function( event ) {
105
+ event.data.target.addClass( obj.selectors.tribeEventsTooltipTriggerHoverClass.className() );
106
  };
107
 
108
  /**
109
+ * Handle origin mouseleave and touchleave events
 
110
  *
111
+ * @since TBD
112
+ *
113
+ * @param {Event} event event object
114
+ *
115
+ * @return {void}
116
+ */
117
+ obj.handleOriginHoverOut = function( event ) {
118
+ event.data.target.removeClass( obj.selectors.tribeEventsTooltipTriggerHoverClass.className() );
119
+ };
120
+
121
+ /**
122
+ * Handle tooltip mouseenter and touchstart event
123
+ *
124
+ * @since TBD
125
+ *
126
+ * @param {Event} event event object
127
+ *
128
+ * @return {void}
129
+ */
130
+ obj.handleTooltipHoverIn = function( event ) {
131
+ event.data.target.addClass( obj.selectors.tribeEventsTooltipThemeHoverClass.className() );
132
+ };
133
+
134
+ /**
135
+ * Handle tooltip mouseleave and touchleave events
136
+ *
137
+ * @since TBD
138
+ *
139
+ * @param {Event} event event object
140
+ *
141
+ * @return {void}
142
+ */
143
+ obj.handleTooltipHoverOut = function( event ) {
144
+ event.data.target.removeClass( obj.selectors.tribeEventsTooltipThemeHoverClass.className() );
145
+ };
146
+
147
+ /**
148
+ * Handle tooltip instance closing event
149
+ *
150
+ * @since TBD
151
+ *
152
+ * @param {Event} event event object
153
+ *
154
+ * @return {void}
155
+ */
156
+ obj.handleInstanceClose = function( event ) {
157
+ var $origin = event.data.origin;
158
+ var $tooltip = $( event.tooltip );
159
+
160
+ // if trigger is focused, hovered, or tooltip is hovered, do not close tooltip
161
+ if (
162
+ $origin.is( ':focus' ) ||
163
+ $origin.hasClass( obj.selectors.tribeEventsTooltipTriggerHoverClass.className() ) ||
164
+ $tooltip.hasClass( obj.selectors.tribeEventsTooltipThemeHoverClass.className() )
165
+ ) {
166
+ event.stop();
167
+ }
168
+ };
169
+
170
+ /**
171
+ * Handle tooltip instance close event
172
+ *
173
+ * @since TBD
174
+ *
175
+ * @param {Event} event event object
176
+ *
177
+ * @return {void}
178
+ */
179
+ obj.handleInstanceClosing = function( event ) {
180
+ $( event.tooltip )
181
+ .off( 'mouseenter touchstart', obj.handleTooltipHoverIn )
182
+ .off( 'mouseleave touchleave', obj.handleTooltipHoverOut );
183
+ };
184
+
185
+ /**
186
+ * Override of the `functionInit` tooltipster method.
187
+ * A custom function to be fired only once at instantiation.
188
+ *
189
+ * @since TBD
190
  *
191
  * @param {Tooltipster} instance instance of Tooltipster
192
  * @param {PlainObject} helper helper object with tooltip origin
193
  *
194
  * @return {void}
195
  */
196
+ obj.onFunctionInit = function( instance, helper ) {
197
+ var $origin = $( helper.origin );
198
+ $origin
199
+ .on( 'focus', { target: $origin }, obj.handleOriginFocus )
200
+ .on( 'blur', { target: $origin }, obj.handleOriginBlur )
201
+ .on( 'mouseenter touchstart', { target: $origin }, obj.handleOriginHoverIn )
202
+ .on( 'mouseleave touchleave', { target: $origin }, obj.handleOriginHoverOut );
203
+ instance
204
+ .on( 'close', { origin: $origin }, obj.handleInstanceClose )
205
+ .on( 'closing', { origin: $origin }, obj.handleInstanceClosing );
206
  };
207
 
208
  /**
209
+ * Override of the `functionReady` tooltipster method.
210
+ * A custom function to be fired when the tooltip and its contents have been added to the DOM.
211
  *
212
+ * @since TBD
213
  *
214
  * @param {Tooltipster} instance instance of Tooltipster
215
  * @param {PlainObject} helper helper object with tooltip origin
216
  *
217
  * @return {void}
218
  */
219
+ obj.onFunctionReady = function( instance, helper ) {
220
+ var $tooltip = $( helper.tooltip );
221
+ $tooltip
222
+ .on( 'mouseenter touchstart', { target: $tooltip }, obj.handleTooltipHoverIn )
223
+ .on( 'mouseleave touchleave', { target: $tooltip }, obj.handleTooltipHoverOut );
224
  };
225
 
226
  /**
227
  * Deinitialize accessible tooltips via tooltipster
228
  *
229
+ * @since TBD
230
  *
231
  * @param {jQuery} $container jQuery object of view container.
232
  *
234
  */
235
  obj.deinitTooltips = function( $container ) {
236
  $container
237
+ .find( obj.selectors.tooltipTrigger )
238
+ .each( function( index, trigger ) {
239
+ $( trigger )
240
  .off( 'focus', obj.handleOriginFocus )
241
+ .off( 'blur', obj.handleOriginBlur )
242
+ .off( 'mouseenter touchstart', obj.handleOriginHoverIn )
243
+ .off( 'mouseleave touchleave', obj.handleOriginHoverOut )
244
+ .tooltipster( 'instance' )
245
+ .off( 'close', obj.handleInstanceClose )
246
+ .off( 'closing', obj.handleInstanceClosing );
247
  } );
248
  };
249
 
250
  /**
251
  * Initialize accessible tooltips via tooltipster
252
  *
253
+ * @since TBD
254
  *
255
  * @param {jQuery} $container jQuery object of view container.
256
  *
260
  var theme = $container.data( 'tribeEventsTooltipTheme' );
261
 
262
  $container
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 ],
269
  theme: theme,
270
  functionInit: obj.onFunctionInit,
271
  functionReady: obj.onFunctionReady,
 
272
  } );
273
  } );
274
  };
276
  /**
277
  * Initialize tooltip theme
278
  *
279
+ * @since TBD
280
  *
281
  * @param {jQuery} $container jQuery object of view container.
282
  *
src/resources/js/views/view-selector.js CHANGED
@@ -306,7 +306,9 @@ tribe.events.views.viewSelector = {};
306
  obj.init = function( event, index, $container, data ) {
307
  var $viewSelector = $container.find( obj.selectors.viewSelector );
308
 
309
- if ( ! $viewSelector.length ) return;
 
 
310
 
311
  obj.initState( $container );
312
  obj.initViewSelector( $container );
306
  obj.init = function( event, index, $container, data ) {
307
  var $viewSelector = $container.find( obj.selectors.viewSelector );
308
 
309
+ if ( ! $viewSelector.length ) {
310
+ return;
311
+ }
312
 
313
  obj.initState( $container );
314
  obj.initViewSelector( $container );
src/resources/postcss/README.md ADDED
@@ -0,0 +1,215 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # The Events Calendar PostCSS Styles
2
+
3
+ ## Class naming consistency and BEM
4
+
5
+ A couple of issues we've had previously with templates for Modern Tribe plugins was inconsistent class naming and the class naming structure. To deal with this, we've adopted the use of [BEM](http://getbem.com/naming/) for class naming, combined with the use of `tribe-events-` as a block prefix.
6
+
7
+ First is the use of [BEM](http://getbem.com/naming/) for class naming (see link for more details). BEM stands for Block Element Modifier. We've used BEM as a guide to help us name classes and maintain consistency. This helps us structure the CSS around the HTML that we are styling without running into class naming chaos.
8
+
9
+ Secondly, we've added prefixes to our classes. The first prefix we've used is `tribe-events-`. This is mainly to avoid styles clashing with other theme styles. For example, if we used a class `header`, a theme that the user may apply may also use a class `header` and the theme styles may unintentionally affect the plugin styles. Instead, we use `tribe-events-header`. The second prefix we've used is context-based prefixes. Within The Events Calendar, we mainly use `l-` for layout and `c-` for component. Modern Tribe's Common plugin uses more context-based prefixes. These prefixes help determine the context of these reusable style classes. For example, the class `tribe-events-c-search` can be applied, along with the element classes, to a search component to apply search component styles.
10
+
11
+ ## View/block wrapper class
12
+
13
+ In order to not override theme styles and elements outside of Modern Tribe plugins, we've added a wrapper class `tribe-events` around all of Modern Tribe plugins blocks and views. For example, the markup for a specific view or block might look like the following:
14
+
15
+ ```
16
+ <div class="tribe-events">
17
+ ...
18
+ <div class="tribe-events-c-search">
19
+ ...
20
+ </div>
21
+ ...
22
+ </div>
23
+ ```
24
+
25
+ Given this markup, the PostCSS will look like the following:
26
+
27
+ ```
28
+ .tribe-events {
29
+ ...
30
+
31
+ .tribe-events-c-search {
32
+ /* search component styles here */
33
+ }
34
+
35
+ ...
36
+ }
37
+ ```
38
+
39
+ We need the `tribe-events` wrapper class in order to override Common resets and styles, as they use the `tribe-common` wrapper class. This also allows us to target only the elements we intend to target within the Modern Tribe plugin views while reducing the probability of clashing styles with themes.
40
+
41
+ ## CSS specificity
42
+
43
+ Given the above structure of using a wrapper class, we've increased the [CSS specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) needed for theme developers to override our styles. For class-based styles, the minimum specificity required is 2 classes. With some modifiers, the minimum specificity required may be 3 classes. For example:
44
+
45
+ ```
46
+ .tribe-events {
47
+ ...
48
+
49
+ .tribe-events-calendar-month__day--current {
50
+
51
+ .tribe-events-calendar-month__day-date {
52
+ /* month day date styles */
53
+ }
54
+ }
55
+
56
+ ...
57
+ }
58
+ ```
59
+
60
+ In this case, the day date is an element of the month day. However, the `--current` modifier is applied to the top level element day. Given this structure, our minimum specificity becomes 3 classes.
61
+
62
+ For overriding styles, it is recommended to only use classes to keep overriding specificity consistent. All elements should have classes and should be targetted using those classes.
63
+
64
+ ## Modifiers, pseudo-classes, and media queries
65
+
66
+ As you get into building upon these styles and creating new styles, the order of modifiers, pseudo-classes, and media queries comes into question. The general rule is to apply them in the following order: media queries, pseudo-classes, modifiers. See the examples below:
67
+
68
+ ```
69
+ .tribe-events {
70
+ ...
71
+
72
+ .tribe-events-c-view-selector__button {
73
+ /* view selector button styles */
74
+
75
+ @media (--viewport-medium) {
76
+ /* viewport medium view selector button styles */
77
+ }
78
+
79
+ &:before {
80
+ /* :before pseudo-class styles */
81
+
82
+ @media (--viewport-medium) {
83
+ /* viewport medium :before pseudo-class styles */
84
+ }
85
+ }
86
+ }
87
+
88
+ .tribe-events-c-view-selector__button--active {
89
+ /* active view selector button styles */
90
+
91
+ @media (--viewport-medium) {
92
+ /* viewport medium active view selector button styles */
93
+ }
94
+
95
+ &:before {
96
+ /* :before pseudo-class styles */
97
+
98
+ @media (--viewport-medium) {
99
+ /* viewport medium :before pseudo-class styles */
100
+ }
101
+ }
102
+ }
103
+
104
+ ...
105
+ }
106
+ ```
107
+
108
+ In the case of an element, we might get the following scenario:
109
+
110
+ ```
111
+ .tribe-common {
112
+ ...
113
+
114
+ .tribe-events-c-view-selector__button {
115
+ /* view selector button styles */
116
+
117
+ @media (--viewport-medium) {
118
+ /* viewport medium view selector button styles */
119
+ }
120
+
121
+ &:before {
122
+ /* :before pseudo-class styles */
123
+
124
+ @media (--viewport-medium) {
125
+ /* viewport medium :before pseudo-class styles */
126
+ }
127
+ }
128
+ }
129
+
130
+ .tribe-events-c-view-selector--tabs {
131
+
132
+ .tribe-events-c-view-selector__button {
133
+ /* tabs view selector button styles */
134
+
135
+ @media (--viewport-medium) {
136
+ /* viewport medium tabs view selector button styles */
137
+ }
138
+
139
+ &:before {
140
+ /* :before pseudo-class styles */
141
+
142
+ @media (--viewport-medium) {
143
+ /* viewport medium :before pseudo-class styles */
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ ...
150
+ }
151
+ ```
152
+
153
+ ## Structure of The Events Calendar styles
154
+
155
+ The Events Calendar styles are comprised of 2 files: `views-skeleton.pcss` and `views-full.pcss`. The views skeleton styles cover basic layout styles for the views and components. The views full styles, combined with the skeleton styles, make up the full suite of styles for The Events Calendar plugin views.
156
+
157
+ The Events Calendar styles are broken into 4 main sections: utilities, base, components, and views.
158
+
159
+ ### Utilities
160
+
161
+ The utilities are a set of common PostCSS variables, icons, and mixins used throughout the plugins. These come from the Tribe Common Styles repository. See [Tribe Common Styles](https://github.com/moderntribe/tribe-common-styles) for more details.
162
+
163
+ ### Base
164
+
165
+ The base styles are very general styles that can be applied to all views. The two main partials are layouts and views. These cover styles for the general layout and view containers.
166
+
167
+ ### Components
168
+
169
+ Components are groups of reusable markup and styles. The component style structure is meant to mirror the markup structure.
170
+
171
+ ### Views
172
+
173
+ The views styles are styles that are specific to each view and the sub-elements of each view. These are generally more layout-focused after applying common styles, though some elements, such as in the month view, require more custom styles.
174
+
175
+ ### Media queries
176
+
177
+ These styles use a mobile-first approach. Given this, there are only `min-width:` breakpoints, never `max-width:` breakpoints. This also lends to using the `--min-medium` modifier.
178
+
179
+ ## Theme overrides
180
+
181
+ Modern Tribe plugins support a handful of themes. Some themes provide stylesheets that have high specificity for elements and override the plugin styles. To counter this, we've included theme overrides to ensure our plugin styles display as expected with the supported themes.
182
+
183
+ The specificity to override the styles are matched to those applied to the theme. This means that if, for example, a theme applied an ID and 2 extra classes to a `button` style, we might see the following theme override:
184
+
185
+ ```
186
+ .tribe-events {
187
+
188
+ /* -------------------------------------------------------------------------
189
+ * Datepicker: Theme Overrides
190
+ * ------------------------------------------------------------------------- */
191
+
192
+ #id-1 .class-1 .class-2 & {
193
+
194
+ .datepicker {
195
+ /* datepicker theme override styles */
196
+ }
197
+ }
198
+ }
199
+ ```
200
+
201
+ ## How to contribute
202
+
203
+ You want to [contribute](https://github.com/moderntribe/the-events-calendar/blob/master/CONTRIBUTING.md) to these styles? Great! There are a few things to consider when making changes:
204
+
205
+ ### Additions
206
+
207
+ Additions are generally safe, as long as the selectors do not conflict with existing selectors.
208
+
209
+ ### Alterations
210
+
211
+ Alterations should be done carefully, as they will affect all element styles using the selectors being altered.
212
+
213
+ ### Deletions
214
+
215
+ Deletions should also be done carefully, for the same reasons as **Alterations** above. Removing a style from a selector that is still being used will result in unintended styles.
src/resources/postcss/components/_all.pcss CHANGED
@@ -16,6 +16,9 @@
16
  /* Events bar */
17
  @import "_events-bar.pcss";
18
 
 
 
 
19
  /* Navigation */
20
  @import "_navigation.pcss";
21
 
16
  /* Events bar */
17
  @import "_events-bar.pcss";
18
 
19
+ /* Loader */
20
+ @import "_loader.pcss";
21
+
22
  /* Navigation */
23
  @import "_navigation.pcss";
24
 
src/resources/postcss/components/_events-bar.pcss CHANGED
@@ -235,4 +235,27 @@
235
  margin-bottom: var(--spacer-0);
236
  width: 16px;
237
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  }
235
  margin-bottom: var(--spacer-0);
236
  width: 16px;
237
  }
238
+
239
+ /* -----------------------------------------------------------------------------
240
+ *
241
+ * Events Bar: Theme Overrides
242
+ *
243
+ * ----------------------------------------------------------------------------- */
244
+
245
+ /* -----------------------------------------------------------------------------
246
+ * Theme Overrides - Twenty Seventeen
247
+ * ----------------------------------------------------------------------------- */
248
+
249
+ .tribe-theme-twentyseventeen & {
250
+
251
+ .tribe-events-c-events-bar__tab--active {
252
+ background-color: var(--color-background-secondary);
253
+
254
+ &:hover,
255
+ &:focus {
256
+ background-color: var(--color-background-secondary);
257
+ }
258
+ }
259
+ }
260
+
261
  }
src/resources/postcss/{views → components}/_loader.pcss RENAMED
@@ -1,7 +1,13 @@
 
 
 
 
 
 
1
  .tribe-events {
2
 
3
  .tribe-events-view-loader {
4
- align-items: center;
5
  justify-content: center;
6
  display: flex;
7
  position: absolute;
@@ -11,9 +17,5 @@
11
  left: 0;
12
  z-index: var(--z-index-spinner-container);
13
  background: var(--color-background-transparent);
14
-
15
- .tribe-events-view-loader__spinner {
16
- /* placeholder for when spinner is added */
17
- }
18
  }
19
  }
1
+ /* -----------------------------------------------------------------------------
2
+ *
3
+ * Loader
4
+ *
5
+ * ----------------------------------------------------------------------------- */
6
+
7
  .tribe-events {
8
 
9
  .tribe-events-view-loader {
10
+ align-items: flex-start;
11
  justify-content: center;
12
  display: flex;
13
  position: absolute;
17
  left: 0;
18
  z-index: var(--z-index-spinner-container);
19
  background: var(--color-background-transparent);
 
 
 
 
20
  }
21
  }
src/resources/postcss/components/_small-cta.pcss CHANGED
@@ -17,6 +17,14 @@
17
  }
18
  }
19
 
 
 
 
 
 
 
 
 
20
  .tribe-events-c-small-cta__link {
21
  cursor: pointer;
22
  }
17
  }
18
  }
19
 
20
+ .tribe-events-c-small-cta--readmore {
21
+ margin-top: var(--spacer-2);
22
+
23
+ @media (--viewport-medium) {
24
+ margin-top: var(--spacer-3);
25
+ }
26
+ }
27
+
28
  .tribe-events-c-small-cta__link {
29
  cursor: pointer;
30
  }
src/resources/postcss/components/_tooltip.pcss CHANGED
@@ -4,14 +4,6 @@
4
  *
5
  * ----------------------------------------------------------------------------- */
6
 
7
- .tribe-events {
8
-
9
- .tribe-events-calendar-month__calendar-event-tooltip {
10
- position: absolute;
11
- visibility: hidden; /* A11y purposes */
12
- }
13
- }
14
-
15
  /* Defining our tooltipster theme. */
16
  .tooltipster-base.tribe-events-tooltip-theme {
17
  background-color: var(--color-background);
4
  *
5
  * ----------------------------------------------------------------------------- */
6
 
 
 
 
 
 
 
 
 
7
  /* Defining our tooltipster theme. */
8
  .tooltipster-base.tribe-events-tooltip-theme {
9
  background-color: var(--color-background);
src/resources/postcss/components/_top-bar.pcss CHANGED
@@ -12,7 +12,7 @@
12
  display: flex;
13
  flex-direction: row;
14
  flex-wrap: wrap;
15
- margin-bottom: var(--spacer-3);
16
  width: 100%;
17
  }
18
  }
@@ -67,6 +67,19 @@
67
  }
68
  }
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  .tribe-events-c-top-bar__datepicker-button {
71
  align-items: center;
72
  display: flex;
12
  display: flex;
13
  flex-direction: row;
14
  flex-wrap: wrap;
15
+ margin-bottom: var(--spacer-7);
16
  width: 100%;
17
  }
18
  }
67
  }
68
  }
69
 
70
+ .tribe-events-c-top-bar__datepicker-mobile {
71
+ @media (--viewport-medium) {
72
+ @mixin hidden;
73
+ }
74
+ }
75
+
76
+ .tribe-events-c-top-bar__datepicker-desktop {
77
+ @media (--viewport-medium) {
78
+ display: block !important;
79
+ visibility: visible
80
+ }
81
+ }
82
+
83
  .tribe-events-c-top-bar__datepicker-button {
84
  align-items: center;
85
  display: flex;
src/resources/postcss/utilities/variables/_borders.pcss CHANGED
@@ -5,4 +5,9 @@
5
 
6
  --border-radius-default: 4px;
7
 
 
 
 
 
 
8
  }
5
 
6
  --border-radius-default: 4px;
7
 
8
+ /* -----------------------------------------------------------------------------
9
+ * Borders - Width
10
+ * ----------------------------------------------------------------------------- */
11
+
12
+ --border-width-week-event: 2px;
13
  }
src/resources/postcss/utilities/variables/_box-shadows.pcss CHANGED
@@ -6,5 +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
  }
10
 
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
 
src/resources/postcss/utilities/variables/_colors.pcss CHANGED
@@ -47,6 +47,7 @@
47
  --color-background: #FFFFFF;
48
  --color-background-transparent: rgba(var(--color-background), 0.6);
49
  --color-background-secondary: #F7F6F6;
 
50
  --color-box-shadow: rgba(#000000, 0.14);
51
  --color-scroll-track: rgba(#000000, 0.25);
52
  --color-scroll-bar: rgba(#000000, 0.5);
47
  --color-background: #FFFFFF;
48
  --color-background-transparent: rgba(var(--color-background), 0.6);
49
  --color-background-secondary: #F7F6F6;
50
+ --color-background-secondary-hover: #F0EEEE;
51
  --color-box-shadow: rgba(#000000, 0.14);
52
  --color-scroll-track: rgba(#000000, 0.25);
53
  --color-scroll-bar: rgba(#000000, 0.5);
src/resources/postcss/views/_all.pcss CHANGED
@@ -7,9 +7,6 @@
7
  *
8
  * ----------------------------------------------------------------------------- */
9
 
10
- /* Loader for the Views Container */
11
- @import "_loader.pcss";
12
-
13
  /* Header */
14
  @import "_header.pcss";
15
 
7
  *
8
  * ----------------------------------------------------------------------------- */
9
 
 
 
 
10
  /* Header */
11
  @import "_header.pcss";
12
 
src/resources/postcss/views/month/_calendar-header.pcss CHANGED
@@ -22,4 +22,18 @@
22
  text-align: left;
23
  }
24
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  }
22
  text-align: left;
23
  }
24
  }
25
+
26
+ .tribe-events-calendar-month__header-column-title-mobile {
27
+ @media (--viewport-medium) {
28
+ @mixin hidden;
29
+ }
30
+ }
31
+
32
+ .tribe-events-calendar-month__header-column-title-desktop {
33
+
34
+ @media (--viewport-medium) {
35
+ display: block !important;
36
+ visibility: visible
37
+ }
38
+ }
39
  }
src/resources/postcss/views/month/_nav.pcss CHANGED
@@ -5,17 +5,10 @@
5
  * ----------------------------------------------------------------------------- */
6
 
7
  .tribe-events-calendar-month-nav {
 
8
 
9
  @media (--viewport-medium) {
10
  @mixin hidden;
11
  }
12
  }
13
-
14
- .tribe-events-calendar-month-nav--calendar {
15
- padding-top: var(--spacer-3);
16
- }
17
-
18
- .tribe-events-calendar-month-nav--mobile {
19
- padding-top: var(--spacer-4);
20
- }
21
  }
5
  * ----------------------------------------------------------------------------- */
6
 
7
  .tribe-events-calendar-month-nav {
8
+ padding-top: var(--spacer-4);
9
 
10
  @media (--viewport-medium) {
11
  @mixin hidden;
12
  }
13
  }
 
 
 
 
 
 
 
 
14
  }
src/views/blocks/event-organizer.php CHANGED
@@ -3,7 +3,7 @@
3
  * Block: Event Organizer
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/events/blocks/event-tags.php
7
  *
8
  * See more documentation about our Blocks Editor templating system.
9
  *
3
  * Block: Event Organizer
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/blocks/event-organizer.php
7
  *
8
  * See more documentation about our Blocks Editor templating system.
9
  *
src/views/v2/{data.php → components/data.php} RENAMED
@@ -1,16 +1,16 @@
1
  <?php
2
  /**
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/data.php
7
- *
8
- * See more documentation about our views templating system.
9
- *
10
- * @link {INSERT_ARTCILE_LINK_HERE}
11
- *
12
- * @version 4.9.4
13
- */
14
 
15
  /**
16
  * Filters the data that will be printed for the View.
@@ -26,4 +26,6 @@ $data = apply_filters( 'tribe_events_views_v2_view_data', $this->get_values(), $
26
  <script
27
  data-js="tribe-events-view-data"
28
  type="application/json"
29
- ><?php echo json_encode( $data ); ?></script>
 
 
1
  <?php
2
  /**
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
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version TBD
13
+ */
14
 
15
  /**
16
  * Filters the data that will be printed for the View.
26
  <script
27
  data-js="tribe-events-view-data"
28
  type="application/json"
29
+ >
30
+ <?php echo json_encode( $data ); ?>
31
+ </script>
src/views/v2/components/events-bar.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
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
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version TBD
13
+ *
14
+ */
15
+ ?>
16
+ <div
17
+ class="tribe-events-header__events-bar tribe-events-c-events-bar"
18
+ data-js="tribe-events-events-bar"
19
+ >
20
+
21
+ <h2 class="tribe-common-a11y-visual-hide">
22
+ <?php printf( esc_html__( '%s Search and Views Navigation', 'the-events-calendar' ), tribe_get_event_label_plural() ); ?>
23
+ </h2>
24
+
25
+ <?php $this->template( 'components/events-bar/search-button' ); ?>
26
+
27
+ <div
28
+ class="tribe-events-c-events-bar__search-filters-container"
29
+ id="tribe-events-search-filters-container"
30
+ data-js="tribe-events-search-filters-container"
31
+ >
32
+ <?php $this->template( 'components/events-bar/tabs' ); ?>
33
+
34
+ <?php $this->template( 'components/events-bar/search' ); ?>
35
+
36
+ <?php $this->template( 'components/events-bar/filters' ); ?>
37
+ </div>
38
+
39
+ <?php $this->template( 'components/events-bar/views' ); ?>
40
+
41
+ </div>
src/views/v2/{events-bar → components/events-bar}/filters.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/filters.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
  ?>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
src/views/v2/{events-bar → components/events-bar}/search-button.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/search-button.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.8
13
  *
14
  */
15
  ?>
@@ -20,7 +20,7 @@
20
  aria-selected="false"
21
  data-js="tribe-events-search-button"
22
  >
23
- <?php $this->template( 'events-bar/search-button/icon' ); ?>
24
  <span class="tribe-events-c-events-bar__search-button-text tribe-common-a11y-visual-hide">
25
  <?php esc_html_e( 'Search', 'the-events-calendar' ); ?>
26
  </span>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
20
  aria-selected="false"
21
  data-js="tribe-events-search-button"
22
  >
23
+ <?php $this->template( 'components/events-bar/search-button/icon' ); ?>
24
  <span class="tribe-events-c-events-bar__search-button-text tribe-common-a11y-visual-hide">
25
  <?php esc_html_e( 'Search', 'the-events-calendar' ); ?>
26
  </span>
src/views/v2/{events-bar → components/events-bar}/search-button/icon.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/search-button/icon.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.8
13
  *
14
  */
15
  ?>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
src/views/v2/{events-bar → components/events-bar}/search.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/search.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.5
13
  *
14
  */
15
  ?>
@@ -28,9 +28,9 @@
28
  <input type="hidden" name="tribe-events-views[url]" value="<?php echo esc_url( $this->get( 'url' ) ); ?>" />
29
 
30
  <div class="tribe-events-c-search__input-group">
31
- <?php $this->template( 'events-bar/search/keyword' ); ?>
32
  </div>
33
 
34
- <?php $this->template( 'events-bar/search/submit' ); ?>
35
  </form>
36
  </div>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
28
  <input type="hidden" name="tribe-events-views[url]" value="<?php echo esc_url( $this->get( 'url' ) ); ?>" />
29
 
30
  <div class="tribe-events-c-search__input-group">
31
+ <?php $this->template( 'components/events-bar/search/keyword' ); ?>
32
  </div>
33
 
34
+ <?php $this->template( 'components/events-bar/search/submit' ); ?>
35
  </form>
36
  </div>
src/views/v2/{events-bar → components/events-bar}/search/keyword.php RENAMED
@@ -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/events-bar/search/keyword.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,7 +11,7 @@
11
  *
12
  * @var array $bar The search bar contents.
13
  *
14
- * @version 4.9.4
15
  *
16
  */
17
  ?>
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
  *
11
  *
12
  * @var array $bar The search bar contents.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
src/views/v2/{events-bar → components/events-bar}/search/submit.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/search/submit.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
  ?>
@@ -17,4 +17,6 @@
17
  class="tribe-common-c-btn tribe-events-c-search__button"
18
  type="submit"
19
  name="submit-bar"
20
- ><?php printf( esc_html__( 'Find %s', 'the-events-calendar' ), tribe_get_event_label_plural() ); ?></button>
 
 
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
17
  class="tribe-common-c-btn tribe-events-c-search__button"
18
  type="submit"
19
  name="submit-bar"
20
+ >
21
+ <?php printf( esc_html__( 'Find %s', 'the-events-calendar' ), tribe_get_event_label_plural() ); ?>
22
+ </button>
src/views/v2/{events-bar → components/events-bar}/tabs.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/tabs.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
  ?>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
src/views/v2/{events-bar → components/events-bar}/views.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/views.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.7
13
  *
14
  */
15
  use Tribe\Events\Views\V2\Manager;
@@ -38,6 +38,6 @@ $view_selector_classes = [
38
  <?php echo esc_html( $view_label ); ?>
39
  </span>
40
  </button>
41
- <?php $this->template( 'events-bar/views/list', [ 'views' => $public_views ] ); ?>
42
  </div>
43
  </div>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  use Tribe\Events\Views\V2\Manager;
38
  <?php echo esc_html( $view_label ); ?>
39
  </span>
40
  </button>
41
+ <?php $this->template( 'components/events-bar/views/list', [ 'views' => $public_views ] ); ?>
42
  </div>
43
  </div>
src/views/v2/{events-bar → components/events-bar}/views/list.php RENAMED
@@ -3,13 +3,13 @@
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/events-bar/views/list.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.7
13
  *
14
  */
15
  ?>
@@ -20,7 +20,7 @@
20
  >
21
  <ul class="tribe-events-c-view-selector__list">
22
  <?php foreach ( $this->get( 'views' ) as $view => $view_class_name ) : ?>
23
- <?php $this->template( 'events-bar/views/list/item', [ 'view_class_name' => $view_class_name ] ); ?>
24
  <?php endforeach; ?>
25
  </ul>
26
  </div>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
20
  >
21
  <ul class="tribe-events-c-view-selector__list">
22
  <?php foreach ( $this->get( 'views' ) as $view => $view_class_name ) : ?>
23
+ <?php $this->template( 'components/events-bar/views/list/item', [ 'view_class_name' => $view_class_name ] ); ?>
24
  <?php endforeach; ?>
25
  </ul>
26
  </div>
src/views/v2/{events-bar → components/events-bar}/views/list/item.php RENAMED
@@ -3,13 +3,13 @@
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/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.4
13
  */
14
  use Tribe\Events\Views\V2\View;
15
 
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 TBD
13
  */
14
  use Tribe\Events\Views\V2\View;
15
 
src/views/v2/components/filter-bar.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
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
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version TBD
13
+ *
14
+ */
15
+ ?>
src/views/v2/components/loader.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
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
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version TBD
13
+ *
14
+ */
15
+ ?>
16
+ <div
17
+ class="tribe-events-view-loader tribe-common-a11y-hidden"
18
+ role="alert"
19
+ aria-live="assertive"
20
+ >
21
+ <div class="tribe-events-view-loader__dots tribe-common-c-loader">
22
+ <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--first"></div>
23
+ <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--second"></div>
24
+ <div class="tribe-common-c-loader__dot tribe-common-c-loader__dot--third"></div>
25
+ </div>
26
+ </div>
src/views/v2/components/read-more.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
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
+ *
10
+ * @link {INSERT_ARTCILE_LINK_HERE}
11
+ *
12
+ * @version TBD
13
+ *
14
+ */
15
+ ?>
16
+ <div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-c-small-cta--readmore">
17
+ <a
18
+ href="<?php echo esc_url( get_permalink( get_the_ID() ) ) ?>"
19
+ class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
20
+ >
21
+ <?php esc_html_e( 'Continue Reading' , 'the-events-calendar' ); ?>
22
+ </a>
23
+ </div>
src/views/v2/components/top-bar/actions.php CHANGED
@@ -3,13 +3,13 @@
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/top-bar/actions.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
  ?>
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
src/views/v2/components/top-bar/actions/content.php CHANGED
@@ -3,12 +3,12 @@
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/top-bar/actions/content.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
src/views/v2/components/top-bar/nav.php CHANGED
@@ -3,13 +3,13 @@
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/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.4
13
  *
14
  */
15
  ?>
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 TBD
13
  *
14
  */
15
  ?>
src/views/v2/components/top-bar/nav/next-disabled.php CHANGED
@@ -3,7 +3,7 @@
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/top-bar/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,7 +11,7 @@
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
- * @version 4.9.4
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/views/v2/components/top-bar/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
src/views/v2/components/top-bar/nav/next.php CHANGED
@@ -3,7 +3,7 @@
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/top-bar/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,7 +11,7 @@
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
- * @version 4.9.4
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/views/v2/components/top-bar/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
src/views/v2/components/top-bar/nav/prev-disabled.php CHANGED
@@ -3,7 +3,7 @@
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/top-bar/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,7 +11,7 @@
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
- * @version 4.9.4
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/views/v2/components/top-bar/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
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/top-bar/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,7 +11,7 @@
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
- * @version 4.9.4
15
  *
16
  */
17
  ?>
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
  *
11
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
src/views/v2/{day → components}/top-bar/today.php RENAMED
@@ -3,17 +3,16 @@
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/day/top-bar/today.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.8
13
  *
14
- * @var string $today_url The URL to the today, current, version of the View.
15
  */
16
-
17
  ?>
18
  <a
19
  href="<?php echo esc_url( $today_url ); ?>"
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $today_url The URL to the today page.
13
  *
14
+ * @version TBD
15
  */
 
16
  ?>
17
  <a
18
  href="<?php echo esc_url( $today_url ); ?>"
src/views/v2/day.php CHANGED
@@ -25,16 +25,18 @@
25
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
26
  >
27
  <div class="tribe-common-l-container tribe-events-l-container">
28
- <?php $this->template( 'loader', [ 'text' => 'Loading...' ] ); ?>
29
 
30
- <?php $this->template( 'data' ); ?>
31
 
32
  <header class="tribe-events-header">
33
- <?php $this->template( 'events-bar' ); ?>
34
 
35
  <?php $this->template( 'day/top-bar' ); ?>
36
  </header>
37
 
 
 
38
  <div class="tribe-events-calendar-day">
39
 
40
  <?php foreach ( $events as $event ) : ?>
25
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
26
  >
27
  <div class="tribe-common-l-container tribe-events-l-container">
28
+ <?php $this->template( 'components/loader', [ 'text' => __( 'Loading...', 'the-events-calendar' ) ] ); ?>
29
 
30
+ <?php $this->template( 'components/data' ); ?>
31
 
32
  <header class="tribe-events-header">
33
+ <?php $this->template( 'components/events-bar' ); ?>
34
 
35
  <?php $this->template( 'day/top-bar' ); ?>
36
  </header>
37
 
38
+ <?php $this->template( 'components/filter-bar' ); ?>
39
+
40
  <div class="tribe-events-calendar-day">
41
 
42
  <?php foreach ( $events as $event ) : ?>
src/views/v2/day/event.php CHANGED
@@ -14,7 +14,6 @@
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
  $classes = get_post_class( [ 'tribe-common-g-row', 'tribe-common-g-row--gutters', 'tribe-events-calendar-day__event' ], $event->ID );
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 = get_post_class( [ 'tribe-common-g-row', 'tribe-common-g-row--gutters', 'tribe-events-calendar-day__event' ], $event->ID );
src/views/v2/day/event/date.php CHANGED
@@ -14,7 +14,6 @@
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
 
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
  use Tribe__Date_Utils as Dates;
19
 
src/views/v2/day/event/date/meta.php CHANGED
@@ -14,5 +14,4 @@
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
  */
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/day/event/description.php CHANGED
@@ -9,14 +9,17 @@
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
  ?>
20
  <div class="tribe-events-calendar-day__event-description tribe-common-b2">
21
- <?php echo tribe_events_get_the_excerpt( $event, wp_kses_allowed_html( 'post' ) ); ?>
22
  </div>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
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
+ 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>
src/views/v2/day/event/featured-image.php CHANGED
@@ -14,7 +14,6 @@
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
  if ( ! $event->thumbnail->exists ) {
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
  if ( ! $event->thumbnail->exists ) {
src/views/v2/day/event/title.php CHANGED
@@ -14,7 +14,6 @@
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-day__event-title tribe-common-h6 tribe-common-h5--min-medium">
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
  <h3 class="tribe-events-calendar-day__event-title tribe-common-h6 tribe-common-h5--min-medium">
src/views/v2/day/event/venue.php CHANGED
@@ -14,7 +14,6 @@
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
  // Setup an array of venue details for use later in the template
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
  // Setup an array of venue details for use later in the template
src/views/v2/day/nav/next-disabled.php CHANGED
@@ -9,9 +9,7 @@
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.5
15
  *
16
  */
17
  ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
 
 
13
  *
14
  */
15
  ?>
src/views/v2/day/nav/next.php CHANGED
@@ -9,9 +9,9 @@
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.5
15
  *
16
  */
17
  ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $link The URL to the next page.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
src/views/v2/day/nav/prev-disabled.php CHANGED
@@ -9,9 +9,7 @@
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.5
15
  *
16
  */
17
  ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
 
 
13
  *
14
  */
15
  ?>
src/views/v2/day/nav/prev.php CHANGED
@@ -9,9 +9,9 @@
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.5
15
  *
16
  */
17
  ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $link The URL to the previous page.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
src/views/v2/day/top-bar.php CHANGED
@@ -9,7 +9,7 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
  ?>
@@ -17,7 +17,7 @@
17
 
18
  <?php $this->template( 'components/top-bar/nav' ); ?>
19
 
20
- <?php $this->template( 'day/top-bar/today' ); ?>
21
 
22
  <?php $this->template( 'day/top-bar/datepicker' ); ?>
23
 
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
17
 
18
  <?php $this->template( 'components/top-bar/nav' ); ?>
19
 
20
+ <?php $this->template( 'components/top-bar/today' ); ?>
21
 
22
  <?php $this->template( 'day/top-bar/datepicker' ); ?>
23
 
src/views/v2/day/top-bar/datepicker.php CHANGED
@@ -9,7 +9,7 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.7
13
  *
14
  */
15
 
@@ -24,10 +24,13 @@ $selected_date_label = date_i18n( tribe_get_date_format( true ), $selected_datet
24
  ?>
25
  <div class="tribe-events-c-top-bar__datepicker">
26
  <button
27
- class="tribe-common-h2 tribe-common-h3--min-medium tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
28
  data-js="tribe-events-top-bar-datepicker-button"
29
  >
30
- <time datetime="<?php echo esc_attr( date( 'Y-m-d', $selected_datetime ) ); ?>">
 
 
 
31
  <?php echo esc_html( $selected_date_label ); ?>
32
  </time>
33
  </button>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
 
24
  ?>
25
  <div class="tribe-events-c-top-bar__datepicker">
26
  <button
27
+ class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
28
  data-js="tribe-events-top-bar-datepicker-button"
29
  >
30
+ <time
31
+ datetime="<?php echo esc_attr( date( 'Y-m-d', $selected_datetime ) ); ?>"
32
+ class="tribe-events-c-top-bar__datepicker-time"
33
+ >
34
  <?php echo esc_html( $selected_date_label ); ?>
35
  </time>
36
  </button>
src/views/v2/events-bar.php DELETED
@@ -1,39 +0,0 @@
1
- <?php
2
- /**
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/events-bar.php
7
- *
8
- * See more documentation about our views templating system.
9
- *
10
- * @link {INSERT_ARTCILE_LINK_HERE}
11
- *
12
- * @version 4.9.4
13
- *
14
- */
15
- ?>
16
- <div
17
- class="tribe-events-header__events-bar tribe-events-c-events-bar"
18
- data-js="tribe-events-events-bar"
19
- >
20
-
21
- <h2 class="tribe-common-a11y-visual-hide"><?php printf( esc_html__( '%s Search and Views Navigation', 'the-events-calendar' ), tribe_get_event_label_plural() ); ?></h2>
22
-
23
- <?php $this->template( 'events-bar/search-button' ); ?>
24
-
25
- <div
26
- class="tribe-events-c-events-bar__search-filters-container"
27
- id="tribe-events-search-filters-container"
28
- data-js="tribe-events-search-filters-container"
29
- >
30
- <?php $this->template( 'events-bar/tabs' ); ?>
31
-
32
- <?php $this->template( 'events-bar/search' ); ?>
33
-
34
- <?php $this->template( 'events-bar/filters' ); ?>
35
- </div>
36
-
37
- <?php $this->template( 'events-bar/views' ); ?>
38
-
39
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/views/v2/list.php CHANGED
@@ -27,16 +27,18 @@
27
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
28
  >
29
  <div class="tribe-common-l-container tribe-events-l-container">
30
- <?php $this->template( 'loader', [ 'text' => 'Loading...' ] ); ?>
31
 
32
- <?php $this->template( 'data' ); ?>
33
 
34
  <header class="tribe-events-header">
35
- <?php $this->template( 'events-bar' ); ?>
36
 
37
  <?php $this->template( 'list/top-bar' ); ?>
38
  </header>
39
 
 
 
40
  <div class="tribe-events-calendar-list">
41
 
42
  <?php foreach ( $events as $event ) : ?>
27
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
28
  >
29
  <div class="tribe-common-l-container tribe-events-l-container">
30
+ <?php $this->template( 'components/loader', [ 'text' => __( 'Loading...', 'the-events-calendar' ) ] ); ?>
31
 
32
+ <?php $this->template( 'components/data' ); ?>
33
 
34
  <header class="tribe-events-header">
35
+ <?php $this->template( 'components/events-bar' ); ?>
36
 
37
  <?php $this->template( 'list/top-bar' ); ?>
38
  </header>
39
 
40
+ <?php $this->template( 'components/filter-bar' ); ?>
41
+
42
  <div class="tribe-events-calendar-list">
43
 
44
  <?php foreach ( $events as $event ) : ?>
src/views/v2/list/event.php CHANGED
@@ -14,7 +14,6 @@
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
  $container_classes = [ 'tribe-common-g-row', 'tribe-events-calendar-list__event-row' ];
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
  $container_classes = [ 'tribe-common-g-row', 'tribe-events-calendar-list__event-row' ];
src/views/v2/list/event/date.php CHANGED
@@ -14,7 +14,6 @@
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
 
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
  use Tribe__Date_Utils as Dates;
19
 
src/views/v2/list/event/date/meta.php CHANGED
@@ -14,5 +14,4 @@
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
  */
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/list/event/description.php CHANGED
@@ -9,14 +9,17 @@
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
  ?>
20
  <div class="tribe-events-calendar-list__event-description tribe-common-b2">
21
- <?php echo tribe_events_get_the_excerpt( $event, wp_kses_allowed_html( 'post' ) ); ?>
22
  </div>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
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
+ 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>
src/views/v2/list/event/featured-image.php CHANGED
@@ -14,7 +14,6 @@
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
  if ( ! $event->thumbnail->exists ) {
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
  if ( ! $event->thumbnail->exists ) {
src/views/v2/list/event/title.php CHANGED
@@ -14,7 +14,6 @@
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-list__event-title tribe-common-h6 tribe-common-h5--min-medium">
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
  <h3 class="tribe-events-calendar-list__event-title tribe-common-h6 tribe-common-h5--min-medium">
src/views/v2/list/event/venue.php CHANGED
@@ -14,7 +14,6 @@
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
  // Setup an array of venue details for use later in the template
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
  // Setup an array of venue details for use later in the template
src/views/v2/list/month-separator.php CHANGED
@@ -10,6 +10,10 @@
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
  * @version 4.9.9
 
 
 
 
13
  */
14
 
15
  use Tribe\Events\Views\V2\Utils;
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;
src/views/v2/list/nav.php CHANGED
@@ -13,7 +13,7 @@
13
  * @var string $next_url The URL to the next page, if any, or an empty string.
14
  * @var string $today_url The URL to the today page, if any, or an empty string.
15
  *
16
- * @version 4.9.4
17
  *
18
  */
19
  ?>
@@ -27,7 +27,7 @@
27
  }
28
  ?>
29
 
30
- <?php $this->template( 'list/nav/today', [ 'link' => '#' ] ); ?>
31
 
32
  <?php
33
  if ( ! empty( $next_url ) ) {
13
  * @var string $next_url The URL to the next page, if any, or an empty string.
14
  * @var string $today_url The URL to the today page, if any, or an empty string.
15
  *
16
+ * @version TBD
17
  *
18
  */
19
  ?>
27
  }
28
  ?>
29
 
30
+ <?php $this->template( 'list/nav/today' ); ?>
31
 
32
  <?php
33
  if ( ! empty( $next_url ) ) {
src/views/v2/list/nav/next-disabled.php CHANGED
@@ -9,9 +9,7 @@
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.8
15
  *
16
  */
17
  ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
 
 
13
  *
14
  */
15
  ?>
src/views/v2/list/nav/next.php CHANGED
@@ -9,7 +9,7 @@
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.8
15
  *
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $link The URL to the next page.
13
  *
14
  * @version 4.9.8
15
  *
src/views/v2/list/nav/prev-disabled.php CHANGED
@@ -9,9 +9,7 @@
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.8
15
  *
16
  */
17
  ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
 
 
13
  *
14
  */
15
  ?>
src/views/v2/list/nav/prev.php CHANGED
@@ -9,7 +9,7 @@
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.8
15
  *
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $link The URL to the previous page.
13
  *
14
  * @version 4.9.8
15
  *
src/views/v2/list/nav/today.php CHANGED
@@ -9,22 +9,15 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @var string $link The URL to the today page, if any, or an empty string.
13
  *
14
- * @version 4.9.4
15
  *
16
  */
17
-
18
- // If we didn't have a view setup we cannot print today's link
19
- if ( ! $this->get( 'view' ) ) {
20
- return false;
21
- }
22
-
23
- $today_url = tribe_events_get_url( [ 'paged' => 1 ], $this->get( 'view' )->get_url() );
24
  ?>
25
  <li class="tribe-events-c-nav__list-item tribe-events-c-nav__list-item--today">
26
  <a
27
- href="<?php echo esc_url( $link ); ?>"
28
  class="tribe-events-c-nav__today tribe-common-b2"
29
  data-js="tribe-events-view-link"
30
  >
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $today_url The URL to the today page.
13
  *
14
+ * @version TBD
15
  *
16
  */
 
 
 
 
 
 
 
17
  ?>
18
  <li class="tribe-events-c-nav__list-item tribe-events-c-nav__list-item--today">
19
  <a
20
+ href="<?php echo esc_url( $today_url ); ?>"
21
  class="tribe-events-c-nav__today tribe-common-b2"
22
  data-js="tribe-events-view-link"
23
  >
src/views/v2/list/top-bar.php CHANGED
@@ -9,7 +9,7 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
  ?>
@@ -17,7 +17,7 @@
17
 
18
  <?php $this->template( 'components/top-bar/nav' ); ?>
19
 
20
- <?php $this->template( 'list/top-bar/today' ); ?>
21
 
22
  <?php $this->template( 'list/top-bar/datepicker' ); ?>
23
 
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
17
 
18
  <?php $this->template( 'components/top-bar/nav' ); ?>
19
 
20
+ <?php $this->template( 'components/top-bar/today' ); ?>
21
 
22
  <?php $this->template( 'list/top-bar/datepicker' ); ?>
23
 
src/views/v2/list/top-bar/datepicker.php CHANGED
@@ -9,9 +9,10 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.7
13
  *
14
  * @var string $today Today date in the `Y-m-d` format.
 
15
  *
16
  */
17
  use Tribe__Date_Utils as Dates;
@@ -21,6 +22,7 @@ use Tribe__Date_Utils as Dates;
21
  */
22
  $default_start_date = 'now';
23
  $selected_start_date_value = $this->get( [ 'bar', 'date' ], $default_start_date );
 
24
  if ( empty( $selected_start_date_value ) ) {
25
  $first_event = $this->get( 'view' )->get_repository()->first();
26
 
@@ -48,22 +50,40 @@ $selected_end_date_label_format = tribe_get_date_format( date( 'Y' ) !== date( '
48
  $selected_start_date_label = date_i18n( $selected_start_date_label_format, $selected_start_datetime );
49
  $selected_end_date_label = date_i18n( $selected_end_date_label_format, $selected_end_datetime );
50
 
 
 
51
  ?>
52
  <div class="tribe-events-c-top-bar__datepicker">
53
  <button
54
- class="tribe-common-h2 tribe-common-h3--min-medium tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
55
  data-js="tribe-events-top-bar-datepicker-button"
56
  >
57
  <?php if ( $is_now ) : ?>
58
  <?php esc_html_e( 'Now', 'the-events-calendar' ); ?>
59
  <?php else: ?>
60
- <time datetime="<?php echo esc_attr( date_i18n( 'Y-m-d', $selected_start_datetime ) ); ?>">
61
- <?php echo esc_html( $selected_start_date_label ); ?>
 
 
 
 
 
 
 
 
62
  </time>
63
  <?php endif; ?>
64
- &mdash;
65
- <time datetime="<?php echo esc_attr( date_i18n( 'Y-m-d', $selected_end_datetime ) ); ?>">
66
- <?php echo esc_html( $selected_end_date_label ); ?>
 
 
 
 
 
 
 
 
67
  </time>
68
  </button>
69
  <label
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  * @var string $today Today date in the `Y-m-d` format.
15
+ * @var obj $date_formats Object containing the date formats.
16
  *
17
  */
18
  use Tribe__Date_Utils as Dates;
22
  */
23
  $default_start_date = 'now';
24
  $selected_start_date_value = $this->get( [ 'bar', 'date' ], $default_start_date );
25
+
26
  if ( empty( $selected_start_date_value ) ) {
27
  $first_event = $this->get( 'view' )->get_repository()->first();
28
 
50
  $selected_start_date_label = date_i18n( $selected_start_date_label_format, $selected_start_datetime );
51
  $selected_end_date_label = date_i18n( $selected_end_date_label_format, $selected_end_datetime );
52
 
53
+ $selected_start_date_mobile = Dates::build_date_object( $selected_start_datetime )->format( $date_formats->compact );
54
+ $selected_end_date_mobile = Dates::build_date_object( $selected_end_datetime )->format( $date_formats->compact );
55
  ?>
56
  <div class="tribe-events-c-top-bar__datepicker">
57
  <button
58
+ class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
59
  data-js="tribe-events-top-bar-datepicker-button"
60
  >
61
  <?php if ( $is_now ) : ?>
62
  <?php esc_html_e( 'Now', 'the-events-calendar' ); ?>
63
  <?php else: ?>
64
+ <time
65
+ datetime="<?php echo esc_attr( date_i18n( 'Y-m-d', $selected_start_datetime ) ); ?>"
66
+ class="tribe-events-c-top-bar__datepicker-time"
67
+ >
68
+ <span class="tribe-events-c-top-bar__datepicker-mobile">
69
+ <?php echo esc_html( $selected_start_date_mobile ); ?>
70
+ </span>
71
+ <span class="tribe-events-c-top-bar__datepicker-desktop tribe-common-a11y-hidden">
72
+ <?php echo esc_html( $selected_start_date_label ); ?>
73
+ </span>
74
  </time>
75
  <?php endif; ?>
76
+ <span class="tribe-events-c-top-bar__datepicker-separator">&mdash;</span>
77
+ <time
78
+ datetime="<?php echo esc_attr( date_i18n( 'Y-m-d', $selected_end_datetime ) ); ?>"
79
+ class="tribe-events-c-top-bar__datepicker-time"
80
+ >
81
+ <span class="tribe-events-c-top-bar__datepicker-mobile">
82
+ <?php echo esc_html( $selected_end_date_mobile ); ?>
83
+ </span>
84
+ <span class="tribe-events-c-top-bar__datepicker-desktop tribe-common-a11y-hidden">
85
+ <?php echo esc_html( $selected_end_date_label ); ?>
86
+ </span>
87
  </time>
88
  </button>
89
  <label
src/views/v2/list/top-bar/today.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /**
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/list/top-bar/today.php
7
- *
8
- * See more documentation about our views templating system.
9
- *
10
- * @link {INSERT_ARTCILE_LINK_HERE}
11
- *
12
- * @version 4.9.8
13
- *
14
- * @var string $today_url The URL to the today, current, version of the View.
15
- */
16
-
17
- ?>
18
- <a
19
- href="<?php echo esc_url( $today_url ); ?>"
20
- class="tribe-common-c-btn-border tribe-events-c-top-bar__today-button"
21
- data-js="tribe-events-view-link"
22
- >
23
- <?php esc_html_e( 'Today', 'the-events-calendar' ); ?>
24
- </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/views/v2/loader.php DELETED
@@ -1,9 +0,0 @@
1
- <div
2
- class="tribe-events-view-loader tribe-common-a11y-hidden"
3
- role="alert"
4
- aria-live="assertive"
5
- >
6
- <div class="tribe-events-view-loader__spinner">
7
- <?php echo esc_html( $text ); ?>
8
- </div>
9
- </div>
 
 
 
 
 
 
 
 
 
src/views/v2/month.php CHANGED
@@ -9,7 +9,7 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.8
13
  *
14
  * @var string $rest_url The REST URL.
15
  * @var string $rest_nonce The REST nonce.
@@ -24,16 +24,18 @@
24
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
25
  >
26
  <div class="tribe-common-l-container tribe-events-l-container">
27
- <?php $this->template( 'loader', [ 'text' => 'Loading...' ] ); ?>
28
 
29
- <?php $this->template( 'data' ); ?>
30
 
31
  <header class="tribe-events-header">
32
- <?php $this->template( 'events-bar' ); ?>
33
 
34
  <?php $this->template( 'month/top-bar' ); ?>
35
  </header>
36
 
 
 
37
  <div
38
  class="tribe-events-calendar-month"
39
  role="grid"
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  * @var string $rest_url The REST URL.
15
  * @var string $rest_nonce The REST nonce.
24
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
25
  >
26
  <div class="tribe-common-l-container tribe-events-l-container">
27
+ <?php $this->template( 'components/loader', [ 'text' => __( 'Loading...', 'the-events-calendar' ) ] ); ?>
28
 
29
+ <?php $this->template( 'components/data' ); ?>
30
 
31
  <header class="tribe-events-header">
32
+ <?php $this->template( 'components/events-bar' ); ?>
33
 
34
  <?php $this->template( 'month/top-bar' ); ?>
35
  </header>
36
 
37
+ <?php $this->template( 'components/filter-bar' ); ?>
38
+
39
  <div
40
  class="tribe-events-calendar-month"
41
  role="grid"
src/views/v2/month/calendar-body/day.php CHANGED
@@ -18,7 +18,7 @@
18
  * @type bool $is_start_of_week Whether the current day is the first day of the week or not.
19
  * @type string $year_number The day year number, e.g. `2019`.
20
  * @type string $month_number The day year number, e.g. `6` for June.
21
- * @type string $day_number The day number in the month, e.g. `11` for June 11th.
22
  * @type string $day_url The day url, e.g. `http://yoursite.com/events/2019-06-11/`.
23
  * @type int $found_events The total number of events in the day including the ones not fetched due to the per
24
  * page limit, including the multi-day ones.
18
  * @type bool $is_start_of_week Whether the current day is the first day of the week or not.
19
  * @type string $year_number The day year number, e.g. `2019`.
20
  * @type string $month_number The day year number, e.g. `6` for June.
21
+ * @type string $day_number The day number in the month with leading 0, e.g. `11` for June 11th.
22
  * @type string $day_url The day url, e.g. `http://yoursite.com/events/2019-06-11/`.
23
  * @type int $found_events The total number of events in the day including the ones not fetched due to the per
24
  * page limit, including the multi-day ones.
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date/meta.php CHANGED
@@ -10,4 +10,8 @@
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
  * @version 4.9.9
 
 
 
 
13
  */
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
  */
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/title.php CHANGED
@@ -9,13 +9,13 @@
9
  *
10
  * @link {INSERT_ARTICLE_LINK_HERE}
11
  *
12
- * @version 4.9.8
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
- $event_id = $event->ID;
19
  ?>
20
  <h3 class="tribe-events-calendar-month__calendar-event-title tribe-common-h8 tribe-common-h--alt">
21
  <a
@@ -23,17 +23,12 @@ $event_id = $event->ID;
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
27
- /**
28
- * @todo @be @bordoni
29
- * only show data and aria attributes below if tooltip is shown
30
- * (if one of featured image, description, or cost exists)
31
- */
32
- ?>
33
- data-js="tribe-events-tooltip"
34
- data-tooltip-content="#tribe-events-tooltip-content-<?php echo esc_attr( $event_id ); ?>"
35
- aria-describedby="tribe-events-tooltip-content-<?php echo esc_attr( $event_id ); ?>"
36
  >
37
- <?php echo get_the_title( $event_id ); ?>
38
  </a>
39
  </h3>
9
  *
10
  * @link {INSERT_ARTICLE_LINK_HERE}
11
  *
12
+ * @version TBD
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
  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 get_the_title( $event->ID ); ?>
33
  </a>
34
  </h3>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip.php CHANGED
@@ -9,24 +9,24 @@
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
- /**
20
- * @todo @be @bordoni
21
- * only show tooltip if at least one of featured image, description, or cost exists
22
- */
23
  ?>
24
- <div
25
- class="tribe-events-calendar-month__calendar-event-tooltip"
26
- data-js="tribe-events-tooltip-content"
27
- role="tooltip"
28
- >
29
- <div id="tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>">
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 ] ); ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
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
26
+ class="tribe-events-calendar-month__calendar-event-tooltip"
27
+ id="tribe-events-tooltip-content-<?php echo esc_attr( $event->ID ); ?>"
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 ] ); ?>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description.php CHANGED
@@ -9,15 +9,17 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.8
13
  *
 
 
 
14
  */
15
 
16
- /**
17
- * @todo: @be @bordoni
18
- * do not output html if excerpt is empty
19
- */
20
  ?>
21
  <div class="tribe-events-calendar-month__calendar-event-tooltip-description tribe-common-b3">
22
- <?php echo tribe_events_get_the_excerpt( $event->ID, wp_kses_allowed_html( 'post' ) ); ?>
23
  </div>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
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
+ 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>
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image.php CHANGED
@@ -11,6 +11,9 @@
11
  *
12
  * @version 4.9.9
13
  *
 
 
 
14
  */
15
 
16
  if ( ! $event->thumbnail->exists ) {
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
  if ( ! $event->thumbnail->exists ) {
src/views/v2/month/calendar-header.php CHANGED
@@ -9,7 +9,7 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
 
@@ -17,7 +17,9 @@ global $wp_locale;
17
  ?>
18
  <header class="tribe-events-calendar-month__header" role="rowgroup">
19
 
20
- <h2 class="tribe-common-a11y-visual-hide" id="tribe-events-calendar-header"><?php printf( esc_html__( 'Calendar of %s', 'the-events-calendar' ), tribe_get_event_label_plural() ); ?></h2>
 
 
21
 
22
  <div role="row" class="tribe-events-calendar-month__header-row">
23
  <?php foreach ( tribe_events_get_days_of_week() as $day ) : ?>
@@ -27,7 +29,12 @@ global $wp_locale;
27
  aria-label="<?php echo esc_attr( $day ); ?>"
28
  >
29
  <h3 class="tribe-events-calendar-month__header-column-title tribe-common-b3">
30
- <?php echo esc_html( $wp_locale->get_weekday_abbrev( $day ) ); ?>
 
 
 
 
 
31
  </h3>
32
  </div>
33
  <?php endforeach; ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
 
17
  ?>
18
  <header class="tribe-events-calendar-month__header" role="rowgroup">
19
 
20
+ <h2 class="tribe-common-a11y-visual-hide" id="tribe-events-calendar-header">
21
+ <?php printf( esc_html__( 'Calendar of %s', 'the-events-calendar' ), tribe_get_event_label_plural() ); ?>
22
+ </h2>
23
 
24
  <div role="row" class="tribe-events-calendar-month__header-row">
25
  <?php foreach ( tribe_events_get_days_of_week() as $day ) : ?>
29
  aria-label="<?php echo esc_attr( $day ); ?>"
30
  >
31
  <h3 class="tribe-events-calendar-month__header-column-title tribe-common-b3">
32
+ <span class="tribe-events-calendar-month__header-column-title-mobile">
33
+ <?php echo esc_html( $wp_locale->get_weekday_initial( $day ) ); ?>
34
+ </span>
35
+ <span class="tribe-events-calendar-month__header-column-title-desktop tribe-common-a11y-hidden">
36
+ <?php echo esc_html( $wp_locale->get_weekday_abbrev( $day ) ); ?>
37
+ </span>
38
  </h3>
39
  </div>
40
  <?php endforeach; ?>
src/views/v2/month/mobile-events.php CHANGED
@@ -28,6 +28,6 @@
28
 
29
  <?php endforeach; ?>
30
 
31
- <?php $this->template( 'month/nav', [ 'location' => 'mobile' ] ); ?>
32
 
33
  </section>
28
 
29
  <?php endforeach; ?>
30
 
31
+ <?php $this->template( 'month/mobile-events/nav' ); ?>
32
 
33
  </section>
src/views/v2/month/mobile-events/mobile-day.php CHANGED
@@ -9,8 +9,30 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  */
15
 
16
  $events = $day['events'];
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
+ * @var string $today_date Today's date in the `Y-m-d` format.
15
+ * @var string $day_date The current day date, in the `Y-m-d` format.
16
+ * @var array $day The current day data.{
17
+ * @type string $date The day date, in the `Y-m-d` format.
18
+ * @type bool $is_start_of_week Whether the current day is the first day of the week or not.
19
+ * @type string $year_number The day year number, e.g. `2019`.
20
+ * @type string $month_number The day year number, e.g. `6` for June.
21
+ * @type string $day_number The day number in the month, e.g. `11` for June 11th.
22
+ * @type string $day_number_no_pad The day number in the month without leading 0, e.g. `8` for June 8th.
23
+ * @type string $day_url The day url, e.g. `http://yoursite.com/events/2019-06-11/`.
24
+ * @type int $found_events The total number of events in the day including the ones not fetched due to the per
25
+ * page limit, including the multi-day ones.
26
+ * @type int $more_events The number of events not showing in the day.
27
+ * @type array $events The non multi-day events on this day. The format of each event is the one returned by
28
+ * the `tribe_get_event` function.
29
+ * @type array $featured_events The featured events on this day. The format of each event is the one returned
30
+ * by the `tribe_get_event` function.
31
+ * @type array $multiday_events The stack of multi-day events on this day. The stack is a mix of event post
32
+ * objects, the format is the one returned from the `tribe_get_event` function, and
33
+ * spacers. Spacers are falsy values indicating an empty space in the multi-day stack for
34
+ * the day
35
+ * }
36
  */
37
 
38
  $events = $day['events'];
src/views/v2/month/mobile-events/mobile-day/mobile-event.php CHANGED
@@ -14,7 +14,6 @@
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 = get_post_class( [ 'tribe-events-calendar-month-mobile-events__mobile-event' ], $event->ID );
20
  $classes['tribe-events-calendar-month-mobile-events__mobile-event--featured'] = $event->featured;
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
  $classes = get_post_class( [ 'tribe-events-calendar-month-mobile-events__mobile-event' ], $event->ID );
19
  $classes['tribe-events-calendar-month-mobile-events__mobile-event--featured'] = $event->featured;
src/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php CHANGED
@@ -14,10 +14,9 @@
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
- if ( ! $event->featured ) {
21
  return;
22
  }
23
 
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
+ if ( empty( $event->featured ) ) {
20
  return;
21
  }
22
 
src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php CHANGED
@@ -9,7 +9,7 @@
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
  *
@@ -18,6 +18,7 @@
18
  use Tribe__Date_Utils as Dates;
19
 
20
  $time_format = tribe_get_time_format();
 
21
  ?>
22
  <div class="tribe-events-calendar-month-mobile-events__mobile-event-datetime tribe-common-b2">
23
  <?php if ( ! empty( $event->featured ) ) : ?>
@@ -35,15 +36,9 @@ $time_format = tribe_get_time_format();
35
  <time datetime="<?php echo esc_attr( $event->dates->start->format( Dates::DBDATEFORMAT ) ) ?>">
36
  <?php esc_html_e( 'All day', 'the-events-calendar' ); ?>
37
  </time>
38
- <?php else: ?>
39
- <time datetime="<?php echo esc_attr( $event->dates->start->format( 'H:i' ) ) ?>">
40
- <?php echo esc_html( $event->dates->start->format( $time_format ) ) ?>
41
- </time>
42
- <span class="tribe-events-calendar-month-mobile-events__mobile-event-datetime-separator">
43
- <?php echo esc_html( tribe_get_option( 'timeRangeSeparator', ' - ' ) ); ?>
44
- </span>
45
- <time datetime="<?php echo esc_attr( $event->dates->end->format( 'H:i' ) ) ?>">
46
- <?php echo esc_html( $event->dates->end->format( $time_format ) ) ?>
47
  </time>
48
  <?php endif; ?>
49
  <?php $this->template( 'month/mobile-events/mobile-day/mobile-event/date/meta', [ 'event' => $event ] ); ?>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
  *
18
  use Tribe__Date_Utils as Dates;
19
 
20
  $time_format = tribe_get_time_format();
21
+ $event_date_attr = $event->dates->start->format( Dates::DBDATEFORMAT );
22
  ?>
23
  <div class="tribe-events-calendar-month-mobile-events__mobile-event-datetime tribe-common-b2">
24
  <?php if ( ! empty( $event->featured ) ) : ?>
36
  <time datetime="<?php echo esc_attr( $event->dates->start->format( Dates::DBDATEFORMAT ) ) ?>">
37
  <?php esc_html_e( 'All day', 'the-events-calendar' ); ?>
38
  </time>
39
+ <?php else : ?>
40
+ <time datetime="<?php echo esc_attr( $event_date_attr ); ?>">
41
+ <?php echo $event->schedule_details->value(); ?>
 
 
 
 
 
 
42
  </time>
43
  <?php endif; ?>
44
  <?php $this->template( 'month/mobile-events/mobile-day/mobile-event/date/meta', [ 'event' => $event ] ); ?>
src/views/v2/month/mobile-events/mobile-day/mobile-event/featured-image.php CHANGED
@@ -14,7 +14,6 @@
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
  if ( ! $event->featured || ! $event->thumbnail->exists ) {
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
  if ( ! $event->featured || ! $event->thumbnail->exists ) {
src/views/v2/month/mobile-events/mobile-day/mobile-event/title.php CHANGED
@@ -11,9 +11,9 @@
11
  *
12
  * @version 4.9.9
13
  *
14
- * @var WP_Post $event The event post object, decorated with custom properties from the `tribe_get_event` function.
15
  *
16
- * @see tribe_get_event()
17
  */
18
 
19
  $classes = [ 'tribe-events-calendar-month-mobile-events__mobile-event-title', 'tribe-common-h8' ];
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
  $classes = [ 'tribe-events-calendar-month-mobile-events__mobile-event-title', 'tribe-common-h8' ];
src/views/v2/month/{nav.php → mobile-events/nav.php} RENAMED
@@ -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/nav.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -14,29 +14,28 @@
14
  * @var string $next_url The URL to the next page, if any, or an empty string.
15
  * @var string $next_label The label for the next link.
16
  * @var string $today_url The URL to the today page, if any, or an empty string.
17
- * @var string $location The location of the nav.
18
  *
19
- * @version 4.9.4
20
  *
21
  */
22
  ?>
23
- <nav class="tribe-events-calendar-month-nav tribe-events-calendar-month-nav--<?php echo esc_attr( $location ); ?> tribe-events-c-nav">
24
  <ul class="tribe-events-c-nav__list">
25
  <?php
26
  if ( ! empty( $prev_url ) ) {
27
- $this->template( 'month/nav/prev', [ 'label' => esc_html( $prev_label ), 'link' => $prev_url ] );
28
  } else {
29
- $this->template( 'month/nav/prev-disabled', [ 'label' => esc_html( $prev_label ) ] );
30
  }
31
  ?>
32
 
33
- <?php $this->template( 'month/nav/today', [ 'link' => tribe_events_get_url( [ 'eventDisplay' => 'month' ] ) ] ) ?>
34
 
35
  <?php
36
  if ( ! empty( $next_url ) ) {
37
- $this->template( 'month/nav/next', [ 'label' => esc_html( $next_label ), 'link' => $next_url ] );
38
  } else {
39
- $this->template( 'month/nav/next-disabled', [ 'label' => esc_html( $next_label ) ] );
40
  }
41
  ?>
42
  </ul>
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
  *
14
  * @var string $next_url The URL to the next page, if any, or an empty string.
15
  * @var string $next_label The label for the next link.
16
  * @var string $today_url The URL to the today page, if any, or an empty string.
 
17
  *
18
+ * @version TBD
19
  *
20
  */
21
  ?>
22
+ <nav class="tribe-events-calendar-month-nav tribe-events-c-nav">
23
  <ul class="tribe-events-c-nav__list">
24
  <?php
25
  if ( ! empty( $prev_url ) ) {
26
+ $this->template( 'month/mobile-events/nav/prev', [ 'label' => $prev_label, 'link' => $prev_url ] );
27
  } else {
28
+ $this->template( 'month/mobile-events/nav/prev-disabled', [ 'label' => $prev_label ] );
29
  }
30
  ?>
31
 
32
+ <?php $this->template( 'month/mobile-events/nav/today' ) ?>
33
 
34
  <?php
35
  if ( ! empty( $next_url ) ) {
36
+ $this->template( 'month/mobile-events/nav/next', [ 'label' => $next_label, 'link' => $next_url ] );
37
  } else {
38
+ $this->template( 'month/mobile-events/nav/next-disabled', [ 'label' => $next_label ] );
39
  }
40
  ?>
41
  </ul>
src/views/v2/month/{nav → mobile-events/nav}/next-disabled.php RENAMED
@@ -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/nav/next-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -12,7 +12,7 @@
12
  * @var string $link The URL to the next page, if any, or an empty string.
13
  * @var string $label The label for the next link.
14
  *
15
- * @version 4.9.4
16
  *
17
  */
18
  ?>
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
  *
12
  * @var string $link The URL to the next page, if any, or an empty string.
13
  * @var string $label The label for the next link.
14
  *
15
+ * @version TBD
16
  *
17
  */
18
  ?>
src/views/v2/month/{nav → mobile-events/nav}/next.php RENAMED
@@ -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/nav/next.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -12,7 +12,7 @@
12
  * @var string $link The URL to the next page, if any, or an empty string.
13
  * @var string $label The label for the next link.
14
  *
15
- * @version 4.9.4
16
  *
17
  */
18
  ?>
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
  *
12
  * @var string $link The URL to the next page, if any, or an empty string.
13
  * @var string $label The label for the next link.
14
  *
15
+ * @version TBD
16
  *
17
  */
18
  ?>
src/views/v2/month/{nav → mobile-events/nav}/prev-disabled.php RENAMED
@@ -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/nav/prev-disabled.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,7 +11,7 @@
11
  *
12
  * @var string $label The label for the previous link.
13
  *
14
- * @version 4.9.4
15
  *
16
  */
17
  ?>
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
  *
11
  *
12
  * @var string $label The label for the previous link.
13
  *
14
+ * @version TBD
15
  *
16
  */
17
  ?>
src/views/v2/month/{nav → mobile-events/nav}/prev.php RENAMED
@@ -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/nav/prev.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -12,7 +12,7 @@
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  * @var string $label The label for the previous link.
14
  *
15
- * @version 4.9.4
16
  *
17
  */
18
  ?>
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
  *
12
  * @var string $link The URL to the previous page, if any, or an empty string.
13
  * @var string $label The label for the previous link.
14
  *
15
+ * @version TBD
16
  *
17
  */
18
  ?>
src/views/v2/month/{nav → mobile-events/nav}/today.php RENAMED
@@ -3,28 +3,21 @@
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/nav/today.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 today page, if any, or an empty string.
13
  *
14
- * @version 4.9.4
15
  *
16
  */
17
-
18
- // If we didn't have a view setup we cannot print today's link
19
- if ( ! $this->get( 'view' ) ) {
20
- return false;
21
- }
22
-
23
- $today_url = tribe_events_get_url( [ 'paged' => 1 ], $this->get( 'view' )->get_url() );
24
  ?>
25
  <li class="tribe-events-c-nav__list-item tribe-events-c-nav__list-item--today">
26
  <a
27
- href="<?php echo esc_url( $link ); ?>"
28
  class="tribe-events-c-nav__today tribe-common-b2"
29
  data-js="tribe-events-view-link"
30
  >
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
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @var string $today_url The URL to the today page.
13
  *
14
+ * @version TBD
15
  *
16
  */
 
 
 
 
 
 
 
17
  ?>
18
  <li class="tribe-events-c-nav__list-item tribe-events-c-nav__list-item--today">
19
  <a
20
+ href="<?php echo esc_url( $today_url ); ?>"
21
  class="tribe-events-c-nav__today tribe-common-b2"
22
  data-js="tribe-events-view-link"
23
  >
src/views/v2/month/top-bar.php CHANGED
@@ -9,7 +9,7 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.4
13
  *
14
  */
15
  ?>
@@ -17,7 +17,7 @@
17
 
18
  <?php $this->template( 'components/top-bar/nav' ); ?>
19
 
20
- <?php $this->template( 'month/top-bar/today' ); ?>
21
 
22
  <?php $this->template( 'month/top-bar/datepicker' ); ?>
23
 
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  */
15
  ?>
17
 
18
  <?php $this->template( 'components/top-bar/nav' ); ?>
19
 
20
+ <?php $this->template( 'components/top-bar/today' ); ?>
21
 
22
  <?php $this->template( 'month/top-bar/datepicker' ); ?>
23
 
src/views/v2/month/top-bar/datepicker.php CHANGED
@@ -9,7 +9,7 @@
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
- * @version 4.9.8
13
  *
14
  * @var string $grid_date The current calendar grid date in the `Y-m-d` format.
15
  * @var string $formatted_grid_date The current calendar grid date in the format specified by the "Month and year
@@ -18,11 +18,14 @@
18
  ?>
19
  <div class="tribe-events-c-top-bar__datepicker">
20
  <button
21
- class="tribe-common-h2 tribe-common-h3--min-medium tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
22
  data-js="tribe-events-top-bar-datepicker-button"
23
  >
24
  <?php // @todo @fe the datepicker width seems to depend on the width of the grid title, it should not. ?>
25
- <time datetime="<?php echo esc_attr( $grid_date ); ?>">
 
 
 
26
  <?php echo esc_html( $formatted_grid_date ); ?>
27
  </time>
28
  </button>
9
  *
10
  * @link {INSERT_ARTCILE_LINK_HERE}
11
  *
12
+ * @version TBD
13
  *
14
  * @var string $grid_date The current calendar grid date in the `Y-m-d` format.
15
  * @var string $formatted_grid_date The current calendar grid date in the format specified by the "Month and year
18
  ?>
19
  <div class="tribe-events-c-top-bar__datepicker">
20
  <button
21
+ class="tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button"
22
  data-js="tribe-events-top-bar-datepicker-button"
23
  >
24
  <?php // @todo @fe the datepicker width seems to depend on the width of the grid title, it should not. ?>
25
+ <time
26
+ datetime="<?php echo esc_attr( $grid_date ); ?>"
27
+ class="tribe-events-c-top-bar__datepicker-time"
28
+ >
29
  <?php echo esc_html( $formatted_grid_date ); ?>
30
  </time>
31
  </button>
src/views/v2/month/top-bar/today.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /**
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/month/top-bar/today.php
7
- *
8
- * See more documentation about our views templating system.
9
- *
10
- * @link {INSERT_ARTCILE_LINK_HERE}
11
- *
12
- * @version 4.9.8
13
- *
14
- * @var string $today_url The URL to the today, current, version of the View.
15
- */
16
-
17
- ?>
18
- <a
19
- href="<?php echo esc_url( $today_url ); ?>"
20
- class="tribe-common-c-btn-border tribe-events-c-top-bar__today-button"
21
- data-js="tribe-events-view-link"
22
- >
23
- <?php esc_html_e( 'Today', 'the-events-calendar' ); ?>
24
- </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.9
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
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.10
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit835d80f4d186972c9641651e9239eb92::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit705bcb5bc44ed67c895551401d28c1f0::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -20,41 +20,96 @@ return array(
20
  'Tribe\\Events\\Views\\V2\\Kitchen_Sink' => $baseDir . '/src/Tribe/Views/V2/Kitchen_Sink.php',
21
  'Tribe\\Events\\Views\\V2\\Manager' => $baseDir . '/src/Tribe/Views/V2/Manager.php',
22
  'Tribe\\Events\\Views\\V2\\ManagerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/ManagerTest.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/CostTest.php',
 
 
 
 
 
 
24
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/NavTest.php',
25
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\NextTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/NextTest.php',
26
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Next_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Next_DisabledTest.php',
27
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\PrevTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/PrevTest.php',
28
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Prev_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Prev_DisabledTest.php',
 
 
 
29
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/CostTest.php',
 
 
 
 
 
 
 
 
30
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/NavTest.php',
31
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\NextTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/NextTest.php',
32
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Next_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Next_DisabledTest.php',
33
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\PrevTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/PrevTest.php',
34
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Prev_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Prev_DisabledTest.php',
 
 
 
35
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_BodyTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_BodyTest.php',
36
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\DayTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/DayTest.php',
37
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_EventsTest.php',
38
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_EventTest.php',
39
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\DateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/DateTest.php',
 
40
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Featured_ImageTest.php',
41
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TitleTest.php',
42
  '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',
43
  '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',
 
44
  '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',
45
  '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',
46
  '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',
47
  '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',
 
 
48
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_HeaderTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_HeaderTest.php',
49
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_EventsTest.php',
50
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_DayTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_DayTest.php',
51
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Day_MarkerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Day_MarkerTest.php',
52
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_EventTest.php',
53
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/CostTest.php',
 
54
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\DateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/DateTest.php',
 
55
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/Featured_ImageTest.php',
56
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/TitleTest.php',
57
- 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/NavTest.php',
 
 
 
 
 
 
 
58
  'Tribe\\Events\\Views\\V2\\Query\\Abstract_Query_Controller' => $baseDir . '/src/Tribe/Views/V2/Query/Abstract_Query_Controller.php',
59
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
60
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => $baseDir . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
@@ -67,8 +122,11 @@ return array(
67
  'Tribe\\Events\\Views\\V2\\TemplateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/TemplateTest.php',
68
  'Tribe\\Events\\Views\\V2\\Template\\Event' => $baseDir . '/src/Tribe/Views/V2/Template/Event.php',
69
  'Tribe\\Events\\Views\\V2\\Template\\EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Template/EventTest.php',
 
70
  'Tribe\\Events\\Views\\V2\\Template\\Page' => $baseDir . '/src/Tribe/Views/V2/Template/Page.php',
71
  'Tribe\\Events\\Views\\V2\\Template\\PageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Template/PageTest.php',
 
 
72
  'Tribe\\Events\\Views\\V2\\Template_Bootstrap' => $baseDir . '/src/Tribe/Views/V2/Template_Bootstrap.php',
73
  'Tribe\\Events\\Views\\V2\\TestCaseTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/TestCaseTest.php',
74
  'Tribe\\Events\\Views\\V2\\ThemeCompatibilityTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/ThemeCompatibilityTest.php',
20
  'Tribe\\Events\\Views\\V2\\Kitchen_Sink' => $baseDir . '/src/Tribe/Views/V2/Kitchen_Sink.php',
21
  'Tribe\\Events\\Views\\V2\\Manager' => $baseDir . '/src/Tribe/Views/V2/Manager.php',
22
  'Tribe\\Events\\Views\\V2\\ManagerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/ManagerTest.php',
23
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\DataTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/DataTest.php',
24
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_BarTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_BarTest.php',
25
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\FiltersTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/FiltersTest.php',
26
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\SearchTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/SearchTest.php',
27
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search\\KeywordTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search/KeywordTest.php',
28
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search\\SubmitTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search/SubmitTest.php',
29
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search_ButtonTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search_ButtonTest.php',
30
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search_Button\\IconTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search_Button/IconTest.php',
31
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\TabsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/TabsTest.php',
32
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\ViewsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/ViewsTest.php',
33
+ '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',
34
+ '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',
35
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\LoaderTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/LoaderTest.php',
36
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ActionsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/ActionsTest.php',
37
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ContentTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Actions/ContentTest.php',
38
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/NavTest.php',
39
+ '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',
40
+ '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',
41
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\PrevTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/PrevTest.php',
42
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\Prev_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/Prev_DisabledTest.php',
43
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\TodayTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/TodayTest.php',
44
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/EventTest.php',
45
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/CostTest.php',
46
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\DateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/DateTest.php',
47
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\DescriptionTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/DescriptionTest.php',
48
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/Featured_ImageTest.php',
49
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\Time_SeparatorTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Time_SeparatorTest.php',
50
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/TitleTest.php',
51
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\VenueTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/VenueTest.php',
52
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/NavTest.php',
53
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\NextTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/NextTest.php',
54
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Next_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Next_DisabledTest.php',
55
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\PrevTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/PrevTest.php',
56
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Prev_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Prev_DisabledTest.php',
57
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Top_BarTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Top_BarTest.php',
58
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Top_Bar\\DatepickerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Top_Bar/DatepickerTest.php',
59
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/EventTest.php',
60
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/CostTest.php',
61
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\DateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/DateTest.php',
62
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Date\\MetaTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/Date/MetaTest.php',
63
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Date_TagTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/Date_TagTest.php',
64
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\DescriptionTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/DescriptionTest.php',
65
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/Featured_ImageTest.php',
66
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Month_SeparatorTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Month_SeparatorTest.php',
67
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/TitleTest.php',
68
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\VenueTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/VenueTest.php',
69
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/NavTest.php',
70
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\NextTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/NextTest.php',
71
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Next_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Next_DisabledTest.php',
72
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\PrevTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/PrevTest.php',
73
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Prev_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Prev_DisabledTest.php',
74
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\TodayTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/TodayTest.php',
75
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Top_BarTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Top_BarTest.php',
76
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Top_Bar\\DatepickerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Top_Bar/DatepickerTest.php',
77
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_BodyTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_BodyTest.php',
78
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\DayTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/DayTest.php',
79
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_EventsTest.php',
80
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_EventTest.php',
81
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\DateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/DateTest.php',
82
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Date\\MetaTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Date/MetaTest.php',
83
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Featured_ImageTest.php',
84
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TitleTest.php',
85
  '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',
86
  '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',
87
+ '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',
88
  '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',
89
  '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',
90
  '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',
91
  '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',
92
+ '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',
93
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_Events\\Multiday_Event_SpacerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_Events/Multiday_Event_SpacerTest.php',
94
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_HeaderTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_HeaderTest.php',
95
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_EventsTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_EventsTest.php',
96
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_DayTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_DayTest.php',
97
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Day_MarkerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Day_MarkerTest.php',
98
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_EventTest.php',
99
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/CostTest.php',
100
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\CtaTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/CtaTest.php',
101
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\DateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/DateTest.php',
102
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\Date\\MetaTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/Date/MetaTest.php',
103
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\Featured_ImageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/Featured_ImageTest.php',
104
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/TitleTest.php',
105
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\NavTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/NavTest.php',
106
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\NextTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/NextTest.php',
107
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\Next_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/Next_DisabledTest.php',
108
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\PrevTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/PrevTest.php',
109
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\Prev_DisabledTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/Prev_DisabledTest.php',
110
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\TodayTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/TodayTest.php',
111
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Top_BarTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Top_BarTest.php',
112
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Top_Bar\\DatepickerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Top_Bar/DatepickerTest.php',
113
  'Tribe\\Events\\Views\\V2\\Query\\Abstract_Query_Controller' => $baseDir . '/src/Tribe/Views/V2/Query/Abstract_Query_Controller.php',
114
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
115
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => $baseDir . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
122
  'Tribe\\Events\\Views\\V2\\TemplateTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/TemplateTest.php',
123
  'Tribe\\Events\\Views\\V2\\Template\\Event' => $baseDir . '/src/Tribe/Views/V2/Template/Event.php',
124
  'Tribe\\Events\\Views\\V2\\Template\\EventTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Template/EventTest.php',
125
+ 'Tribe\\Events\\Views\\V2\\Template\\Excerpt' => $baseDir . '/src/Tribe/Views/V2/Template/Excerpt.php',
126
  'Tribe\\Events\\Views\\V2\\Template\\Page' => $baseDir . '/src/Tribe/Views/V2/Template/Page.php',
127
  'Tribe\\Events\\Views\\V2\\Template\\PageTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Template/PageTest.php',
128
+ 'Tribe\\Events\\Views\\V2\\Template\\Title' => $baseDir . '/src/Tribe/Views/V2/Template/Title.php',
129
+ 'Tribe\\Events\\Views\\V2\\Template\\TitleTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/Template/TitleTest.php',
130
  'Tribe\\Events\\Views\\V2\\Template_Bootstrap' => $baseDir . '/src/Tribe/Views/V2/Template_Bootstrap.php',
131
  'Tribe\\Events\\Views\\V2\\TestCaseTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/TestCaseTest.php',
132
  'Tribe\\Events\\Views\\V2\\ThemeCompatibilityTest' => $baseDir . '/tests/views_integration/Tribe/Events/Views/V2/ThemeCompatibilityTest.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit835d80f4d186972c9641651e9239eb92
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit835d80f4d186972c9641651e9239eb92
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit835d80f4d186972c9641651e9239eb92', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit835d80f4d186972c9641651e9239eb92', '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\ComposerStaticInit835d80f4d186972c9641651e9239eb92::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 ComposerAutoloaderInit705bcb5bc44ed67c895551401d28c1f0
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit705bcb5bc44ed67c895551401d28c1f0', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit705bcb5bc44ed67c895551401d28c1f0', '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\ComposerStaticInit705bcb5bc44ed67c895551401d28c1f0::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 ComposerStaticInit835d80f4d186972c9641651e9239eb92
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -45,41 +45,96 @@ class ComposerStaticInit835d80f4d186972c9641651e9239eb92
45
  'Tribe\\Events\\Views\\V2\\Kitchen_Sink' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Kitchen_Sink.php',
46
  'Tribe\\Events\\Views\\V2\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Manager.php',
47
  'Tribe\\Events\\Views\\V2\\ManagerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/ManagerTest.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/CostTest.php',
 
 
 
 
 
 
49
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/NavTest.php',
50
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\NextTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/NextTest.php',
51
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Next_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Next_DisabledTest.php',
52
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\PrevTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/PrevTest.php',
53
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Prev_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Prev_DisabledTest.php',
 
 
 
54
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/CostTest.php',
 
 
 
 
 
 
 
 
55
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/NavTest.php',
56
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\NextTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/NextTest.php',
57
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Next_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Next_DisabledTest.php',
58
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\PrevTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/PrevTest.php',
59
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Prev_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Prev_DisabledTest.php',
 
 
 
60
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_BodyTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_BodyTest.php',
61
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\DayTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/DayTest.php',
62
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_EventsTest.php',
63
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_EventTest.php',
64
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\DateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/DateTest.php',
 
65
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Featured_ImageTest.php',
66
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TitleTest.php',
67
  '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',
68
  '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',
 
69
  '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',
70
  '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',
71
  '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',
72
  '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',
 
 
73
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_HeaderTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_HeaderTest.php',
74
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_EventsTest.php',
75
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_DayTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_DayTest.php',
76
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Day_MarkerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Day_MarkerTest.php',
77
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_EventTest.php',
78
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/CostTest.php',
 
79
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\DateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/DateTest.php',
 
80
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/Featured_ImageTest.php',
81
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/TitleTest.php',
82
- 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/NavTest.php',
 
 
 
 
 
 
 
83
  'Tribe\\Events\\Views\\V2\\Query\\Abstract_Query_Controller' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Query/Abstract_Query_Controller.php',
84
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
85
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
@@ -92,8 +147,11 @@ class ComposerStaticInit835d80f4d186972c9641651e9239eb92
92
  'Tribe\\Events\\Views\\V2\\TemplateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/TemplateTest.php',
93
  'Tribe\\Events\\Views\\V2\\Template\\Event' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template/Event.php',
94
  'Tribe\\Events\\Views\\V2\\Template\\EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Template/EventTest.php',
 
95
  'Tribe\\Events\\Views\\V2\\Template\\Page' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template/Page.php',
96
  'Tribe\\Events\\Views\\V2\\Template\\PageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Template/PageTest.php',
 
 
97
  'Tribe\\Events\\Views\\V2\\Template_Bootstrap' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template_Bootstrap.php',
98
  'Tribe\\Events\\Views\\V2\\TestCaseTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/TestCaseTest.php',
99
  'Tribe\\Events\\Views\\V2\\ThemeCompatibilityTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/ThemeCompatibilityTest.php',
@@ -142,9 +200,9 @@ class ComposerStaticInit835d80f4d186972c9641651e9239eb92
142
  public static function getInitializer(ClassLoader $loader)
143
  {
144
  return \Closure::bind(function () use ($loader) {
145
- $loader->prefixLengthsPsr4 = ComposerStaticInit835d80f4d186972c9641651e9239eb92::$prefixLengthsPsr4;
146
- $loader->prefixDirsPsr4 = ComposerStaticInit835d80f4d186972c9641651e9239eb92::$prefixDirsPsr4;
147
- $loader->classMap = ComposerStaticInit835d80f4d186972c9641651e9239eb92::$classMap;
148
 
149
  }, null, ClassLoader::class);
150
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit705bcb5bc44ed67c895551401d28c1f0
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
45
  'Tribe\\Events\\Views\\V2\\Kitchen_Sink' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Kitchen_Sink.php',
46
  'Tribe\\Events\\Views\\V2\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Manager.php',
47
  'Tribe\\Events\\Views\\V2\\ManagerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/ManagerTest.php',
48
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\DataTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/DataTest.php',
49
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_BarTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_BarTest.php',
50
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\FiltersTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/FiltersTest.php',
51
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\SearchTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/SearchTest.php',
52
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search\\KeywordTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search/KeywordTest.php',
53
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search\\SubmitTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search/SubmitTest.php',
54
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search_ButtonTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search_ButtonTest.php',
55
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\Search_Button\\IconTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/Search_Button/IconTest.php',
56
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\TabsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/TabsTest.php',
57
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Events_Bar\\ViewsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Events_Bar/ViewsTest.php',
58
+ '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',
59
+ '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',
60
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\LoaderTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/LoaderTest.php',
61
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ActionsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/ActionsTest.php',
62
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\ContentTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Actions/ContentTest.php',
63
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/NavTest.php',
64
+ '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',
65
+ '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',
66
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\PrevTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/PrevTest.php',
67
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\Nav\\Prev_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/Nav/Prev_DisabledTest.php',
68
+ 'Tribe\\Events\\Views\\V2\\Partials\\Components\\Top_Bar\\TodayTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Components/Top_Bar/TodayTest.php',
69
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/EventTest.php',
70
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/CostTest.php',
71
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\DateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/DateTest.php',
72
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\DescriptionTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/DescriptionTest.php',
73
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/Featured_ImageTest.php',
74
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\Time_SeparatorTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Time_SeparatorTest.php',
75
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/TitleTest.php',
76
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Event\\VenueTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Event/VenueTest.php',
77
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/NavTest.php',
78
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\NextTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/NextTest.php',
79
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Next_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Next_DisabledTest.php',
80
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\PrevTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/PrevTest.php',
81
  'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Nav\\Prev_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Nav/Prev_DisabledTest.php',
82
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Top_BarTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Top_BarTest.php',
83
+ 'Tribe\\Events\\Views\\V2\\Partials\\Day_View\\Top_Bar\\DatepickerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Day_View/Top_Bar/DatepickerTest.php',
84
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/EventTest.php',
85
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/CostTest.php',
86
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\DateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/DateTest.php',
87
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Date\\MetaTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/Date/MetaTest.php',
88
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Date_TagTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/Date_TagTest.php',
89
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\DescriptionTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/DescriptionTest.php',
90
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/Featured_ImageTest.php',
91
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\Month_SeparatorTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Month_SeparatorTest.php',
92
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/TitleTest.php',
93
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Event\\VenueTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Event/VenueTest.php',
94
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/NavTest.php',
95
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\NextTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/NextTest.php',
96
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Next_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Next_DisabledTest.php',
97
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\PrevTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/PrevTest.php',
98
  'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\Prev_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/Prev_DisabledTest.php',
99
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Nav\\TodayTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Nav/TodayTest.php',
100
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Top_BarTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Top_BarTest.php',
101
+ 'Tribe\\Events\\Views\\V2\\Partials\\List_View\\Top_Bar\\DatepickerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/List_View/Top_Bar/DatepickerTest.php',
102
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_BodyTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_BodyTest.php',
103
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\DayTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/DayTest.php',
104
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_EventsTest.php',
105
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_EventTest.php',
106
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\DateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/DateTest.php',
107
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Date\\MetaTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Date/MetaTest.php',
108
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/Featured_ImageTest.php',
109
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Calendar_Events\\Calendar_Event\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Calendar_Events/Calendar_Event/TitleTest.php',
110
  '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',
111
  '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',
112
+ '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',
113
  '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',
114
  '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',
115
  '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',
116
  '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',
117
+ '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',
118
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_Body\\Day\\Multiday_Events\\Multiday_Event_SpacerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_Body/Day/Multiday_Events/Multiday_Event_SpacerTest.php',
119
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Calendar_HeaderTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Calendar_HeaderTest.php',
120
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_EventsTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_EventsTest.php',
121
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_DayTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_DayTest.php',
122
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Day_MarkerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Day_MarkerTest.php',
123
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_EventTest.php',
124
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/CostTest.php',
125
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\CtaTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/CtaTest.php',
126
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\DateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/DateTest.php',
127
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\Date\\MetaTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/Date/MetaTest.php',
128
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\Featured_ImageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/Featured_ImageTest.php',
129
  'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Mobile_Day\\Mobile_Event\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Mobile_Day/Mobile_Event/TitleTest.php',
130
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\NavTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/NavTest.php',
131
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\NextTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/NextTest.php',
132
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\Next_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/Next_DisabledTest.php',
133
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\PrevTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/PrevTest.php',
134
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\Prev_DisabledTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/Prev_DisabledTest.php',
135
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Mobile_Events\\Nav\\TodayTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Mobile_Events/Nav/TodayTest.php',
136
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Top_BarTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Top_BarTest.php',
137
+ 'Tribe\\Events\\Views\\V2\\Partials\\Month_View\\Top_Bar\\DatepickerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Partials/Month_View/Top_Bar/DatepickerTest.php',
138
  'Tribe\\Events\\Views\\V2\\Query\\Abstract_Query_Controller' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Query/Abstract_Query_Controller.php',
139
  'Tribe\\Events\\Views\\V2\\Query\\ControllerTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Query/ControllerTest.php',
140
  'Tribe\\Events\\Views\\V2\\Query\\Event_Query_Controller' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Query/Event_Query_Controller.php',
147
  'Tribe\\Events\\Views\\V2\\TemplateTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/TemplateTest.php',
148
  'Tribe\\Events\\Views\\V2\\Template\\Event' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template/Event.php',
149
  'Tribe\\Events\\Views\\V2\\Template\\EventTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Template/EventTest.php',
150
+ 'Tribe\\Events\\Views\\V2\\Template\\Excerpt' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template/Excerpt.php',
151
  'Tribe\\Events\\Views\\V2\\Template\\Page' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template/Page.php',
152
  'Tribe\\Events\\Views\\V2\\Template\\PageTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Template/PageTest.php',
153
+ 'Tribe\\Events\\Views\\V2\\Template\\Title' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template/Title.php',
154
+ 'Tribe\\Events\\Views\\V2\\Template\\TitleTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/Template/TitleTest.php',
155
  'Tribe\\Events\\Views\\V2\\Template_Bootstrap' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Template_Bootstrap.php',
156
  'Tribe\\Events\\Views\\V2\\TestCaseTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/TestCaseTest.php',
157
  'Tribe\\Events\\Views\\V2\\ThemeCompatibilityTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Views/V2/ThemeCompatibilityTest.php',
200
  public static function getInitializer(ClassLoader $loader)
201
  {
202
  return \Closure::bind(function () use ($loader) {
203
+ $loader->prefixLengthsPsr4 = ComposerStaticInit705bcb5bc44ed67c895551401d28c1f0::$prefixLengthsPsr4;
204
+ $loader->prefixDirsPsr4 = ComposerStaticInit705bcb5bc44ed67c895551401d28c1f0::$prefixDirsPsr4;
205
+ $loader->classMap = ComposerStaticInit705bcb5bc44ed67c895551401d28c1f0::$classMap;
206
 
207
  }, null, ClassLoader::class);
208
  }