Skip to content

Commit f73d2ff

Browse files
committed
fix generated css when there are no color schemes
1 parent 253db07 commit f73d2ff

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

src/plugins/global-settings/color-schemes/color-scheme-picker.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,19 @@ const ColorSchemePicker = props => {
137137
// Get the custom color schemes
138138
const customColorSchemes = applyFilters( 'stackable.global-settings.global-color-schemes.custom-color-schemes', [] )
139139

140+
// Checks if there are any color schemes with set values
141+
const hasNoColorSchemes = currentColorSchemes => {
142+
return ! currentColorSchemes.some( item => schemeHasValue( item.colorScheme ) )
143+
}
144+
140145
const saveColorSchemeSettings = updatedColorSchemes => {
141146
clearTimeout( saveTimeout )
142147
saveTimeout = setTimeout( () => {
143148
const settings = new models.Settings( {
144-
stackable_global_color_schemes: updatedColorSchemes, // eslint-disable-line camelcase
149+
// Store an empty array if all color schemes have no values,
150+
// which optimizes the frontend by skipping unnecessary color scheme calculations.
151+
// Otherwise, save the provided updatedColorSchemes array.
152+
stackable_global_color_schemes: hasNoColorSchemes( updatedColorSchemes ) ? [] : updatedColorSchemes, // eslint-disable-line camelcase
145153
// Clear the cached CSS when the color scheme is updated
146154
stackable_global_color_scheme_generated_css: '', // eslint-disable-line camelcase
147155
} )

src/plugins/global-settings/color-schemes/editor-loader.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export const renderGlobalColorSchemeStyles = (
7575
// Add default container scheme if background scheme has value
7676
( backgroundModeColorScheme in colorSchemes && schemeHasValue( colorSchemes[ backgroundModeColorScheme ] ) ) ||
7777
// Add default container scheme if there are color schemes other than the default scheme and background scheme
78-
( colorSchemesArray.length !== 2 )
78+
( colorSchemesArray.length > 2 )
7979
)
8080

8181
if ( containerModeColorScheme in colorSchemes && schemeHasValue( colorSchemes[ containerModeColorScheme ] ) ) {

src/plugins/global-settings/color-schemes/index.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,15 @@ public function add_global_color_schemes_styles( $current_css ) {
341341
}
342342

343343
// This fixes the issue wherein if there is a background scheme and no container/base scheme, the container inherits the background scheme which may cause the text to be unreadable
344-
if ( isset( $this->color_schemes[ $container_default ] ) && $this::is_scheme_empty( $this->color_schemes[ $container_default ] ) ) {
345-
$styles = $this->getDefaultContainerColors( $styles, $default_color_schemes[ 2 ] );
344+
$add_default_container_colors = isset( $this->color_schemes[ $container_default ] ) && $this::is_scheme_empty( $this->color_schemes[ $container_default ] ) && (
345+
// Add default container scheme if background scheme has value
346+
( isset( $this->color_schemes[ $background_default ] ) && ! $this::is_scheme_empty( $this->color_schemes[ $background_default ] ) ) ||
347+
// Add default container scheme if there are color schemes other than the default scheme and background scheme
348+
count( $this->color_schemes ) > 2
349+
);
350+
351+
if ( $add_default_container_colors ) {
352+
$styles = $this->get_default_container_colors( $styles, $default_color_schemes[ 2 ] );
346353
}
347354

348355
$color_scheme_css = '';
@@ -508,7 +515,7 @@ public function is_gradient( $scheme, $property, $state ) {
508515
}
509516

510517
// These colors are used when there are color schemes but the default container scheme is empty
511-
public function getDefaultContainerColors( $styles, $scheme ) {
518+
public function get_default_container_colors( $styles, $scheme ) {
512519
$selectors = $scheme[ 'selectors' ];
513520

514521
$default_styles = array();

0 commit comments

Comments
 (0)