PluginProbe ʕ •ᴥ•ʔ
Starter Sites & Templates by Neve / trunk
Starter Sites & Templates by Neve vtrunk
1.4.0 1.3.0 1.2.29 1.2.28 1.2.6 1.2.7 1.2.8 1.2.9 trunk 1.0.10 1.0.11 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.27 1.1.28 1.1.29 1.1.3 1.1.30 1.1.31 1.1.32 1.1.33 1.1.34 1.1.35 1.1.36 1.1.37 1.1.38 1.1.39 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.3 1.2.4 1.2.5
templates-patterns-collection / onboarding / src / Components / CustomizeControls / PaletteControl.js
templates-patterns-collection / onboarding / src / Components / CustomizeControls Last commit date
FeaturesControl.js 1 year ago ImportOptionsControl.js 1 year ago LogoControl.js 1 year ago PaletteControl.js 1 year ago SiteNameControl.js 1 year ago TypographyControl.js 2 months ago
PaletteControl.js
109 lines
1 import { __ } from '@wordpress/i18n';
2 import { compose } from '@wordpress/compose';
3 import { withDispatch, withSelect } from '@wordpress/data';
4 import { Button } from '@wordpress/components';
5 import classnames from 'classnames';
6 import SVG from '../../utils/svg';
7
8 const PaletteControl = ( { importData, siteStyle, handlePaletteClick } ) => {
9 const themeMods = importData?.theme_mods;
10 const allPalettes = themeMods?.neve_global_colors?.palettes;
11 const { palette } = siteStyle;
12
13 const renderColorDivs = ( currentPalette ) => {
14 if ( ! currentPalette.colors ) {
15 return null;
16 }
17
18 const colorKeys = Object.keys( currentPalette.colors );
19 const excludedColorKeys = colorKeys.slice( 0, colorKeys.length - 2 );
20
21 return (
22 <>
23 { excludedColorKeys.map( ( colorKey ) => (
24 <div
25 className="color"
26 key={ colorKey }
27 style={ {
28 backgroundColor: currentPalette.colors[ colorKey ],
29 } }
30 ></div>
31 ) ) }
32 </>
33 );
34 };
35
36 return (
37 allPalettes && (
38 <div className="ob-ctrl">
39 <div className="ob-ctrl-head small-gap">
40 <h3>
41 { __(
42 'Color Palette',
43 'templates-patterns-collection'
44 ) }
45 </h3>
46 <Button
47 icon={ SVG.redo }
48 onClick={ () => handlePaletteClick( 'base' ) }
49 />
50 </div>
51 <div className="ob-ctrl-wrap palette">
52 { allPalettes &&
53 Object.keys( allPalettes ).map( ( paletteKey ) => (
54 <button
55 className={ classnames( [
56 'ob-palette',
57 { 'ob-active': paletteKey === palette },
58 ] ) }
59 title={ allPalettes[ paletteKey ].name }
60 data-slug={ paletteKey }
61 key={ paletteKey }
62 onClick={ () =>
63 handlePaletteClick( paletteKey )
64 }
65 >
66 { renderColorDivs( allPalettes[ paletteKey ] ) }
67 </button>
68 ) ) }
69 </div>
70 </div>
71 )
72 );
73 };
74
75 export default compose(
76 withSelect( ( select ) => {
77 const { getImportData } = select( 'ti-onboarding' );
78 return {
79 importData: getImportData(),
80 };
81 } ),
82 withDispatch( ( dispatch, { importData, siteStyle, setSiteStyle } ) => {
83 const { setImportData, setRefresh } = dispatch( 'ti-onboarding' );
84
85 return {
86 handlePaletteClick: ( paletteKey ) => {
87 const newStyle = {
88 ...siteStyle,
89 palette: paletteKey,
90 };
91 setSiteStyle( newStyle );
92
93 const newImportData = {
94 ...importData,
95 theme_mods: {
96 ...importData.theme_mods,
97 neve_global_colors: {
98 ...importData.theme_mods.neve_global_colors,
99 activePalette: paletteKey,
100 },
101 },
102 };
103 setImportData( newImportData );
104 setRefresh( true );
105 },
106 };
107 } )
108 )( PaletteControl );
109