PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.6.0
GenerateBlocks v1.6.0
trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.3.0
generateblocks / src / blocks / query-loop / components / inspector-controls / parameter-list / ParameterControl.js
generateblocks / src / blocks / query-loop / components / inspector-controls / parameter-list Last commit date
ControlBuilder.js 3 years ago ParameterControl.js 4 years ago RemoveButton.js 4 years ago index.js 4 years ago
ParameterControl.js
78 lines
1 import ControlBuilder from './ControlBuilder';
2
3 const attributeValueNormalizer = ( attribute, value ) => {
4 switch ( attribute ) {
5 case 'post_type':
6 case 'order':
7 case 'orderby':
8 case 'stickyPosts':
9 return value.value;
10
11 case 'status':
12 case 'author':
13 case 'author_exclude':
14 case 'include':
15 case 'exclude':
16 case 'parent':
17 case 'parent_exclude':
18 return value.reduce( ( result, option ) => {
19 result.push( option.value );
20
21 return result;
22 }, [] );
23
24 default:
25 return value;
26 }
27 };
28
29 export default ( { parameter, query, setParameter, removeParameter } ) => {
30 const { dependencies = {} } = parameter;
31 const parameterValue = query[ parameter.id ];
32
33 function onChangeControl( newValue ) {
34 setParameter( parameter.id, attributeValueNormalizer( parameter.id, newValue ) );
35 }
36
37 const dependenciesValues = Object.keys( dependencies ).reduce( ( dependenciesProps, dependencyKey ) => {
38 dependenciesProps[ dependencyKey ] = query[ dependencies[ dependencyKey ] ] || dependencies[ dependencyKey ];
39
40 return dependenciesProps;
41 }, {} );
42
43 function ParameterControl( value, onChange, onClickRemove ) {
44 return (
45 <ControlBuilder
46 { ...parameter }
47 value={ value }
48 onChange={ onChange }
49 onClickRemove={ onClickRemove }
50 dependencies={ dependenciesValues }
51 />
52 );
53 }
54
55 if ( ! parameter.isRepeatable ) {
56 return ParameterControl( parameterValue, onChangeControl, removeParameter );
57 }
58
59 return (
60 <>
61 { Array.isArray( parameterValue ) && parameterValue.map( ( value, idx ) => (
62 ParameterControl( value, ( newValue ) => {
63 parameterValue[ idx ] = newValue;
64 setParameter( parameter.id, [ ...parameterValue ] );
65 }, ( id ) => {
66 parameterValue.splice( idx, 1 );
67
68 if ( parameterValue.length === 0 ) {
69 removeParameter( id );
70 } else {
71 setParameter( parameter.id, [ ...parameterValue ] );
72 }
73 } )
74 ) ) }
75 </>
76 );
77 };
78