PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 2.0.0
GenerateBlocks v2.0.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 / components / ParameterControl.jsx
generateblocks / src / blocks / query / components Last commit date
AddQueryParameterButton.jsx 1 year ago BlockSettings.jsx 1 year ago ControlBuilder.jsx 1 year ago DateQueryControl.jsx 1 year ago DateTimeControl.jsx 1 year ago ParameterControl.jsx 1 year ago ParameterList.jsx 1 year ago QueryInspectorControls.jsx 1 year ago SelectQueryParameter.jsx 1 year ago TaxonomyParameterControl.jsx 1 year ago editor.scss 1 year ago
ParameterControl.jsx
60 lines
1 import { useCallback } from '@wordpress/element';
2
3 import { ControlBuilder } from './ControlBuilder';
4
5 export function ParameterControl( { parameter, query, setParameter, removeParameter, queryClient } ) {
6 const { dependencies = {} } = parameter;
7 const parameterValue = query[ parameter.id ];
8 const postType = query?.post_type ?? [ 'post' ];
9
10 const onChangeControl = useCallback( function onChangeControl( newValue ) {
11 setParameter( parameter.id, newValue );
12 }, [ setParameter, parameter.id ] );
13
14 const dependenciesValues = Object.keys( dependencies ).reduce( ( dependenciesProps, dependencyKey ) => {
15 dependenciesProps[ dependencyKey ] = query[ dependencies[ dependencyKey ] ] || dependencies[ dependencyKey ];
16
17 return dependenciesProps;
18 }, {} );
19
20 if ( ! parameter.isRepeatable ) {
21 return (
22 <ControlBuilder
23 { ...parameter }
24 queryClient={ queryClient }
25 postType={ postType }
26 value={ parameterValue }
27 onChange={ onChangeControl }
28 onClickRemove={ removeParameter }
29 dependencies={ dependenciesValues }
30 />
31 );
32 }
33
34 return (
35 Array.isArray( parameterValue ) && parameterValue.map( ( value, i ) => (
36 <ControlBuilder
37 { ...parameter }
38 queryClient={ queryClient }
39 key={ `${ parameter.id }-${ i }` }
40 postType={ postType }
41 value={ value }
42 onClickRemove={ ( id ) => {
43 parameterValue.splice( i, 1 );
44
45 if ( parameterValue.length === 0 ) {
46 removeParameter( id );
47 } else {
48 setParameter( parameter.id, [ ...parameterValue ] );
49 }
50 } }
51 onChange={ ( newValue ) => {
52 parameterValue[ i ] = newValue;
53 setParameter( parameter.id, [ ...parameterValue ] );
54 } }
55 dependencies={ dependenciesValues }
56 />
57 ) )
58 );
59 }
60