'default',
'events_bar_background_color' => '#FFFFFF',
'events_bar_border_color_choice' => 'default',
'events_bar_border_color' => '#e4e4e4',
'events_bar_icon_color_choice' => 'default',
'events_bar_icon_color' => '#5d5d5d',
'events_bar_text_color' => '#141827',
'find_events_button_color_choice' => 'default',
'find_events_button_color' => '#334aff',
'find_events_button_text_color' => '#FFFFFF',
];
}
/**
* {@inheritdoc}
*/
public function setup_arguments() {
return [
'priority' => 63,
'capability' => 'edit_theme_options',
'title' => esc_html__( 'Events Bar', 'the-events-calendar' ),
'description' => _x(
'These settings control the search and options bar that appears above calendar views.',
'Note about what these settings control.',
'the-events-calendar'
),
];
}
/**
* {@inheritdoc}
*/
public function setup_content_settings() {
return [
'events_bar_background_color_choice' => [
'sanitize_callback' => 'sanitize_key',
'sanitize_js_callback' => 'sanitize_key',
],
'events_bar_background_color' => [
'sanitize_callback' => 'sanitize_hex_color',
'sanitize_js_callback' => 'maybe_hash_hex_color',
],
'events_bar_border_color_choice' => [
'sanitize_callback' => 'sanitize_key',
'sanitize_js_callback' => 'sanitize_key',
],
'events_bar_border_color' => [
'sanitize_callback' => 'sanitize_hex_color',
'sanitize_js_callback' => 'maybe_hash_hex_color',
],
'events_bar_icon_color_choice' => [
'sanitize_callback' => 'sanitize_key',
'sanitize_js_callback' => 'sanitize_key',
],
'events_bar_icon_color' => [
'sanitize_callback' => 'sanitize_hex_color',
'sanitize_js_callback' => 'maybe_hash_hex_color',
],
'events_bar_text_color' => [
'sanitize_callback' => 'sanitize_hex_color',
'sanitize_js_callback' => 'maybe_hash_hex_color',
],
'find_events_button_color_choice' => [
'sanitize_callback' => 'sanitize_key',
'sanitize_js_callback' => 'sanitize_key',
],
'find_events_button_color' => [
'sanitize_callback' => 'sanitize_hex_color',
'sanitize_js_callback' => 'maybe_hash_hex_color',
],
'find_events_button_text_color' => [
'sanitize_callback' => 'sanitize_hex_color',
'sanitize_js_callback' => 'maybe_hash_hex_color',
],
];
}
/**
* {@inheritdoc}
*/
public function setup_content_headings() {
return [
'events_bar_font_colors' => [
'priority' => 0,
'type' => 'heading',
'label' => esc_html_x(
'Set Font Colors',
'The header for the font color control section.',
'the-events-calendar'
),
],
'events_bar_view_separator-10' => [
'priority' => 10,
'type' => 'separator',
],
'events_bar_appearance' => [
'priority' => 11, // Should come just after above separator.
'type' => 'heading',
'label' => esc_html_x(
'Adjust Appearance',
'The header for the color control section.',
'the-events-calendar'
),
],
];
}
/**
* {@inheritdoc}
*/
public function setup_content_controls() {
$customizer = tribe( 'customizer' );
return [
'events_bar_text_color' => [
'priority' => 3,
'type' => 'color',
'label' => esc_html_x(
'Text Color',
'The events bar text color setting label.',
'the-events-calendar'
),
],
'find_events_button_text_color' => [
'priority' => 5,
'type' => 'color',
'transport' => 'postMessage',
'label' => esc_html_x(
'Find Events Button Text',
'The "Find Events" button text color setting label.',
'the-events-calendar'
),
],
'events_bar_icon_color_choice' => [
'priority' => 15,
'type' => 'radio',
'label' => esc_html_x(
'Icons',
'The Events Bar icon color setting label.',
'the-events-calendar'
),
'choices' => [
'default' => esc_html_x(
'Default',
'Label for the default option.',
'the-events-calendar'
),
'accent' => sprintf(
/* translators: 1: Customizer url. */
_x(
'Use the Accent Color',
'Label for option to use the accent color. Links to the accent color setting.',
'the-events-calendar'
),
$customizer->get_setting_url(
'global_elements',
'accent_color'
)
),
'custom' => esc_html_x(
'Custom',
'Label for option to set a custom color.',
'the-events-calendar'
),
],
],
'events_bar_icon_color' => [
'priority' => 16, // Immediately after events_bar_icon_color_choice.
'type' => 'color',
'active_callback' => function( $control ) use ( $customizer ) {
$setting_name = $customizer->get_setting_name( 'events_bar_icon_color_choice', $control->section );
$value = $control->manager->get_setting( $setting_name )->value();
return 'custom' === $value;
},
],
'find_events_button_color_choice' => [
'priority' => 20,
'type' => 'radio',
'label' => esc_html_x(
'Find Events Button Color',
'The "Find Events" button color setting label.',
'the-events-calendar'
),
'choices' => [
'default' => sprintf(
/* translators: 1: Customizer url. */
_x(
'Use the Accent Color',
'Label for option to use the accent color (default). Links to the accent color setting.',
'the-events-calendar'
),
$customizer->get_setting_url(
'global_elements',
'accent_color'
)
),
'custom' => esc_html_x(
'Custom',
'Label for option to set a custom color.',
'the-events-calendar'
),
],
],
'find_events_button_color' => [
'priority' => 21, // Immediately after find_events_button_color_choice.
'type' => 'color',
'active_callback' => function( $control ) use ( $customizer ) {
$setting_name = $customizer->get_setting_name( 'find_events_button_color_choice', $control->section );
$value = $control->manager->get_setting( $setting_name )->value();
return $this->defaults['find_events_button_color_choice'] !== $value;
},
],
'events_bar_background_color_choice' => [
'priority' => 25,
'type' => 'radio',
'label' => esc_html_x(
'Background Color',
'The Events Bar background color setting label.',
'the-events-calendar'
),
'choices' => [
'default' => esc_html_x(
'Default',
'Label for the default option.',
'the-events-calendar'
),
'global_background' => sprintf(
/* translators: 1: Customizer url. */
_x(
'Use the Calendar Background Color',
'Label for option to use the events background color. Links to the background color setting.',
'the-events-calendar'
),
$customizer->get_setting_url(
'global_elements',
'background_color_choice'
)
),
'custom' => esc_html_x(
'Custom',
'Label for option to set a custom color.',
'the-events-calendar'
),
]
],
'events_bar_background_color' => [
'priority' => 26, // Immediately after events_bar_background_color_choice.
'type' => 'color',
'active_callback' => function( $control ) use ( $customizer ) {
$setting_name = $customizer->get_setting_name( 'events_bar_background_color_choice', $control->section );
$value = $control->manager->get_setting( $setting_name )->value();
return 'custom' === $value;
},
],
'events_bar_border_color_choice' => [
'priority' => 30,
'type' => 'radio',
'label' => esc_html_x(
'Border Color',
'The Events Bar border color setting label.',
'the-events-calendar'
),
'choices' => [
'default' => esc_html_x(
'Default',
'Label for the default option.',
'the-events-calendar'
),
'custom' => esc_html_x(
'Custom',
'Label for option to set a custom color.',
'the-events-calendar'
),
]
],
'events_bar_border_color' => [
'priority' => 31, // Immediately after events_bar_border_color_choice.
'type' => 'color',
'active_callback' => function( $control ) use ( $customizer ) {
$setting_name = $customizer->get_setting_name( 'events_bar_border_color_choice', $control->section );
$value = $control->manager->get_setting( $setting_name )->value();
return $this->defaults['events_bar_border_color_choice'] !== $value;
},
],
];
}
/**
* Grab the CSS rules template
*
* @param string $css_template The Customizer CSS string/template.
*
* @return string The Customizer CSS string/template, with v2 Month View styles added.
*/
public function get_css_template( $css_template ) {
if ( ! tribe_events_views_v2_is_enabled() ) {
return $css_template;
}
// These allow us to continue to _not_ target the shortcode.
$apply_to_shortcode = apply_filters( 'tribe_customizer_should_print_shortcode_customizer_styles', false );
$tribe_events = $apply_to_shortcode ? '.tribe-events' : '.tribe-events:not( .tribe-events-view--shortcode )';
$tribe_common = $apply_to_shortcode ? '.tribe-common' : '.tribe-common:not( .tribe-events-view--shortcode )';
if ( $this->should_include_setting_css( 'events_bar_text_color' ) ) {
$text_color_obj = new \Tribe__Utils__Color( $this->get_option( 'events_bar_text_color' ) );
$text_color = $text_color_obj->getRgb();
$text_color_rgb = $text_color['R'] . ',' . $text_color['G'] . ',' . $text_color['B'];
$text_color_hover = 'rgba(' . $text_color_rgb . ',0.12)';
// Text color.
$css_template .= "
.tribe-common--breakpoint-medium{$tribe_common} .tribe-events-header__events-bar .tribe-common-form-control-text__input {
color: <%= tec_events_bar.events_bar_text_color %>;
}
";
$css_template .= "
.tribe-common--breakpoint-medium{$tribe_common} .tribe-events-header__events-bar .tribe-common-form-control-text__input::placeholder {
color: <%= tec_events_bar.events_bar_text_color %>;
opacity: .6;
}
";
$css_template .= "
{$tribe_events} .tribe-events-c-view-selector__list-item-text {
color: <%= tec_events_bar.events_bar_text_color %>;
}
";
$css_template .= "
{$tribe_events} .tribe-events-c-view-selector__list-item:hover,
{$tribe_events} .tribe-events-c-view-selector__list-item:focus {
background-color: $text_color_hover;
}
{$tribe_events} .tribe-events-c-view-selector__list-item:focus-within,
{$tribe_events} .tribe-events-c-view-selector__list-item-link:hover,
{$tribe_events} .tribe-events-c-view-selector__list-item-link:focus {
background-color: transparent;
}
";
}
if ( $this->should_include_setting_css( 'find_events_button_text_color' ) ) {
$button_color_obj = new \Tribe__Utils__Color( $this->get_option( 'find_events_button_text_color' ) );
$button_color = $button_color_obj->getRgb();
$button_color_rgb = $button_color['R'] . ',' . $button_color['G'] . ',' . $button_color['B'];
$button_color_hover = 'rgba(' . $button_color_rgb . ',0.5)';
$button_color_active = 'rgba(' . $button_color_rgb . ',0.6)';
$css_template .= "
{$tribe_common} .tribe-events-c-search__button {
color: rgb({$button_color_rgb});
}
{$tribe_common} .tribe-events-c-search__button:active {
color: {$button_color_active};
}
{$tribe_common} .tribe-events-c-search__button:hover,
{$tribe_common} .tribe-events-c-search__button:focus {
color: {$button_color_hover};
}
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:not(:hover):not(:active) {
color: rgb({$button_color_rgb});
}
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:active {
color: {$button_color_active};
}
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:hover,
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:focus {
color: {$button_color_hover};
}
";
}
if ( $this->should_include_setting_css( 'events_bar_icon_color_choice' ) ) {
if ( 'custom' === $this->get_option( 'events_bar_icon_color_choice' ) ) {
$icon_color_obj = new \Tribe__Utils__Color( $this->get_option( 'events_bar_icon_color' ) );
} elseif (
'accent' === $this->get_option( 'events_bar_icon_color_choice' )
&& $this->should_include_setting_css( 'accent_color', 'global_elements' )
) {
$option = tribe( 'customizer' )->get_option( [ 'global_elements', 'accent_color' ], false );
$icon_color_obj = new \Tribe__Utils__Color( $option );
}
if ( ! empty( $icon_color_obj ) ) {
$icon_color_arr = $icon_color_obj->getRgb();
$icon_color_hex = '#' . $icon_color_obj->getHex();
$icon_color_rgb = $icon_color_arr['R'] . ',' . $icon_color_arr['G'] . ',' . $icon_color_arr['B'];
$icon_color_focus = 'rgba(' . $icon_color_rgb . ',0.75)';
$css_template .= "
{$tribe_events} .tribe-events-c-search__input-control-icon-svg path,
{$tribe_events} .tribe-events-c-events-bar__search-button-icon-svg path,
{$tribe_events} .tribe-events-c-view-selector__button-icon-svg path,
{$tribe_events} .tribe-events-c-view-selector__list-item-icon-svg:not(.tribe-common-c-svgicon__svg-stroke) path {
fill: {$icon_color_focus};
}
{$tribe_events} .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input:focus ~ .tribe-events-c-search__input-control-icon-svg path,
{$tribe_events} .tribe-events-c-search__input-control--location .tribe-events-c-search__input:focus ~ .tribe-events-c-search__input-control-icon-svg path {
fill: {$icon_color_hex};
}
{$tribe_events} .tribe-events-c-events-bar .tribe-events-c-view-selector__button::before {
background-color: {$icon_color_hex};
}
{$tribe_events} .tribe-events-c-events-bar .tribe-events-c-view-selector__list-item-icon-svg.tribe-common-c-svgicon__svg-stroke path {
stroke: {$icon_color_hex};
}
";
}
}
if ( $this->should_include_setting_css( 'find_events_button_color_choice' ) ) {
$button_text_color_obj = new \Tribe__Utils__Color( $this->get_option( 'find_events_button_color' ) );
$button_text_color = $button_text_color_obj->getRgb();
$button_text_color_rgb = $button_text_color['R'] . ',' . $button_text_color['G'] . ',' . $button_text_color['B'];
$button_text_color_hover = 'rgba(' . $button_text_color_rgb . ',0.8)';
$button_text_color_active = 'rgba(' . $button_text_color_rgb . ',0.9)';
$css_template .= "
{$tribe_common} .tribe-events-c-search__button {
background-color: <%= tec_events_bar.find_events_button_color %>;
}
{$tribe_common} .tribe-events-c-search__button:active {
background-color: {$button_text_color_active};
}
{$tribe_common} .tribe-events-c-search__button:focus,
{$tribe_common} .tribe-events-c-search__button:hover {
background-color: {$button_text_color_hover};
}
.tribe-theme-twentytwenty {$tribe_common}:not(.tribe-events-view--shortcode) .tribe-common-c-btn.tribe-events-c-search__button {
background-color: <%= tec_events_bar.find_events_button_color %>;
}
.tribe-theme-twentytwenty {$tribe_common}:not(.tribe-events-view--shortcode) .tribe-common-c-btn.tribe-events-c-search__button:active {
background-color: {$button_text_color_active};
}
.tribe-theme-twentytwenty {$tribe_common}:not(.tribe-events-view--shortcode) .tribe-common-c-btn.tribe-events-c-search__button:hover,
.tribe-theme-twentytwenty {$tribe_common}:not(.tribe-events-view--shortcode) .tribe-common-c-btn.tribe-events-c-search__button:focus {
background-color: {$button_text_color_hover};
}
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:not(:hover):not(:active) {
background-color: <%= tec_events_bar.find_events_button_color %>;
}
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:not(:hover):active {
background-color: {$button_text_color_active};
}
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:focus,
.tribe-theme-twentytwentyone {$tribe_common} .tribe-common-c-btn.tribe-events-c-search__button:hover {
background-color: {$button_text_color_hover};
}
";
}
if ( $this->should_include_setting_css( 'events_bar_border_color_choice' ) ) {
$css_template .= "
.tribe-common--breakpoint-medium{$tribe_events} .tribe-events-header .tribe-events-header__events-bar,
.tribe-common--breakpoint-medium{$tribe_events} .tribe-events-c-search__input-control {
border-color: <%= tec_events_bar.events_bar_border_color %>;
}
";
}
if ( $this->should_include_setting_css( 'events_bar_background_color_choice' ) ) {
if ( 'custom' == $this->get_option( 'events_bar_background_color_choice' ) ) {
$background_color = "tec_events_bar.events_bar_background_color";
} elseif (
'global_background' == $this->get_option( 'events_bar_background_color_choice' )
&& $this->should_include_setting_css( 'background_color_choice', 'global_elements' )
) {
$background_color = "global_elements.background_color";
}
if ( ! empty( $background_color ) ) {
$css_template .= "
.tribe-common--breakpoint-medium{$tribe_events} .tribe-events-header__events-bar,
.tribe-common--breakpoint-medium{$tribe_events} .tribe-events-header__events-bar .tribe-common-form-control-text__input,
.tribe-common--breakpoint-medium{$tribe_events} .tribe-events-header__events-bar .tribe-events-c-events-bar__search-container {
background-color: <%= {$background_color} %>;
}
{$tribe_events} .tribe-events-c-view-selector__content {
background-color: <%= {$background_color} %>;
}
";
}
}
return $css_template;
}
}