Skip to content

Commit e818545

Browse files
committed
fix block color scheme selector
1 parent 89affc9 commit e818545

File tree

5 files changed

+59
-33
lines changed

5 files changed

+59
-33
lines changed

src/block-components/block-div/edit.js

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
} from '~stackable/components'
2020
import {
2121
useBlockAttributesContext,
22+
useBlockColorSchemes,
2223
useBlockLayoutDefaults,
2324
useBlockSetAttributesContext,
2425
} from '~stackable/hooks'
@@ -28,7 +29,6 @@ import {
2829
*/
2930
import { __ } from '@wordpress/i18n'
3031
import { memo } from '@wordpress/element'
31-
import { useSelect } from '@wordpress/data'
3232

3333
export const Edit = memo( props => {
3434
const {
@@ -37,17 +37,9 @@ export const Edit = memo( props => {
3737
backgroundMediaAllowVideo,
3838
} = props
3939

40-
const { COLOR_SCHEME_OPTIONS, backgroundModeColorScheme } = useSelect( select => {
41-
const { colorSchemes, backgroundModeColorScheme } = select( 'stackable/global-color-schemes' ).getSettings()
42-
const COLOR_SCHEME_OPTIONS = colorSchemes?.map( scheme => ( {
43-
label: scheme.name,
44-
value: scheme.key,
45-
} ) )
46-
return {
47-
COLOR_SCHEME_OPTIONS,
48-
backgroundModeColorScheme,
49-
}
50-
} )
40+
const {
41+
COLOR_SCHEME_OPTIONS, getScheme, backgroundModeColorScheme,
42+
} = useBlockColorSchemes()
5143

5244
const backgroundColorScheme = useBlockAttributesContext( attributes => attributes.backgroundColorScheme )
5345
const hasBackground = useBlockAttributesContext( attributes => attributes.hasBackground )
@@ -93,9 +85,9 @@ export const Edit = memo( props => {
9385
>
9486
<AdvancedSelectControl
9587
label={ __( 'Color Scheme', i18n ) }
96-
value={ backgroundColorScheme || backgroundModeColorScheme }
88+
value={ getScheme( backgroundColorScheme, 'background' ) || backgroundModeColorScheme }
9789
options={ COLOR_SCHEME_OPTIONS }
98-
onChange={ backgroundColorScheme => ( { backgroundColorScheme } ) }
90+
onChange={ backgroundColorScheme => setAttributes( { backgroundColorScheme: backgroundColorScheme === backgroundModeColorScheme ? '' : backgroundColorScheme } ) }
9991
default={ backgroundModeColorScheme }
10092
/>
10193
<BackgroundControls

src/block-components/container-div/edit.js

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
} from '~stackable/components'
2121
import {
2222
useBlockAttributesContext,
23+
useBlockColorSchemes,
2324
useBlockLayoutDefaults,
2425
useBlockSetAttributesContext,
2526
} from '~stackable/hooks'
@@ -28,25 +29,15 @@ import {
2829
* WordPress dependencies
2930
*/
3031
import { __ } from '@wordpress/i18n'
31-
import { useSelect } from '@wordpress/data'
3232

3333
export const Edit = props => {
3434
const {
3535
hasContentVerticalAlign = false,
3636
} = props
3737

38-
const { COLOR_SCHEME_OPTIONS, containerModeColorScheme } = useSelect( select => {
39-
const { colorSchemes, containerModeColorScheme } = select( 'stackable/global-color-schemes' ).getSettings()
40-
const COLOR_SCHEME_OPTIONS = colorSchemes?.map( scheme => ( {
41-
label: scheme.name,
42-
value: scheme.key,
43-
} ) )
44-
45-
return {
46-
COLOR_SCHEME_OPTIONS,
47-
containerModeColorScheme,
48-
}
49-
} )
38+
const {
39+
COLOR_SCHEME_OPTIONS, getScheme, containerModeColorScheme,
40+
} = useBlockColorSchemes()
5041

5142
const hasContainer = useBlockAttributesContext( attributes => attributes.hasContainer )
5243
const containerColorScheme = useBlockAttributesContext( attributes => attributes.containerColorScheme )
@@ -65,10 +56,9 @@ export const Edit = props => {
6556
>
6657
<AdvancedSelectControl
6758
label={ __( 'Color Scheme', i18n ) }
68-
value={ containerColorScheme || containerModeColorScheme }
69-
// TODO: get options from color schemes
59+
value={ getScheme( containerColorScheme ) || containerModeColorScheme }
7060
options={ COLOR_SCHEME_OPTIONS }
71-
onChange={ containerColorScheme => ( { containerColorScheme } ) }
61+
onChange={ containerColorScheme => setAttributes( { containerColorScheme: containerColorScheme === containerModeColorScheme ? '' : containerColorScheme } ) }
7262
default={ containerModeColorScheme }
7363
/>
7464
<SizeControls.Layout

src/hooks/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ export * from './use-raf-state'
1919
export * from './use-raf-memo'
2020
export * from './use-raf-effect'
2121
export * from './use-global-block-layout-defaults'
22+
export * from './use-block-color-schemes'
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { useSelect } from '@wordpress/data'
2+
import { applyFilters } from '@wordpress/hooks'
3+
4+
export const useBlockColorSchemes = () => {
5+
const {
6+
colorSchemes,
7+
_baseColorScheme,
8+
_backgroundModeColorScheme,
9+
_containerModeColorScheme,
10+
} = useSelect( select => {
11+
const {
12+
colorSchemes, baseColorScheme: _baseColorScheme, backgroundModeColorScheme: _backgroundModeColorScheme, containerModeColorScheme: _containerModeColorScheme,
13+
} = select( 'stackable/global-color-schemes' ).getSettings()
14+
15+
return {
16+
colorSchemes,
17+
_baseColorScheme,
18+
_backgroundModeColorScheme,
19+
_containerModeColorScheme,
20+
}
21+
} )
22+
23+
const allColorSchemes = applyFilters( 'stackable.global-settings.global-color-schemes.custom-color-schemes', colorSchemes, true )
24+
25+
const COLOR_SCHEME_OPTIONS = allColorSchemes?.map( scheme => ( {
26+
label: scheme.name,
27+
value: scheme.key,
28+
} ) )
29+
30+
const getScheme = ( key, mode = 'base' ) => {
31+
const fallback = mode === 'background' ? 'scheme-default-2' : 'scheme-default-1'
32+
33+
return COLOR_SCHEME_OPTIONS.find( scheme => scheme.value === key )?.value || fallback
34+
}
35+
36+
return {
37+
COLOR_SCHEME_OPTIONS,
38+
getScheme,
39+
baseColorScheme: getScheme( _baseColorScheme ),
40+
backgroundModeColorScheme: getScheme( _backgroundModeColorScheme, 'background' ),
41+
containerModeColorScheme: getScheme( _containerModeColorScheme ),
42+
}
43+
}

src/plugins/global-settings/color-schemes/store.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ const STORE_ACTIONS = {
3333
const STORE_SELECTORS = {
3434
getSettings: state => ( {
3535
...state,
36-
baseColorScheme: state.colorSchemes.find( schemes => schemes.key === state.baseColorScheme )?.key || 'scheme-default-1',
37-
backgroundModeColorScheme: state.colorSchemes.find( schemes => schemes.key === state.backgroundModeColorScheme )?.key || 'scheme-default-2',
38-
containerModeColorScheme: state.colorSchemes.find( schemes => schemes.key === state.containerModeColorScheme )?.key || 'scheme-default-1',
36+
baseColorScheme: state.baseColorScheme || 'scheme-default-1',
37+
backgroundModeColorScheme: state.backgroundModeColorScheme || 'scheme-default-2',
38+
containerModeColorScheme: state.containerModeColorScheme || 'scheme-default-1',
3939
} ),
4040
}
4141

0 commit comments

Comments
 (0)