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
SelectQueryParameter.jsx
34 lines
| 1 | import AdvancedSelect from '@components/advanced-select'; |
| 2 | import { __ } from '@wordpress/i18n'; |
| 3 | |
| 4 | function groupBy( arr, key, common ) { |
| 5 | const currentGroups = {}; |
| 6 | return arr.reduce( ( grouped, obj ) => { |
| 7 | const groupKey = obj[ key ] || common; |
| 8 | |
| 9 | if ( ! Object.keys( currentGroups ).includes( groupKey ) ) { |
| 10 | const length = grouped.push( { label: groupKey, options: [ obj ] } ); |
| 11 | currentGroups[ groupKey ] = length - 1; |
| 12 | } else { |
| 13 | grouped[ currentGroups[ groupKey ] ].options.push( obj ); |
| 14 | } |
| 15 | |
| 16 | return grouped; |
| 17 | }, [] ); |
| 18 | } |
| 19 | |
| 20 | export function SelectQueryParameter( props ) { |
| 21 | return ( |
| 22 | <AdvancedSelect |
| 23 | id={ 'gblocks-select-query-parameters' } |
| 24 | label={ __( 'Select query parameter', 'generateblocks' ) } |
| 25 | placeholder={ __( 'Select query parameter', 'generateblocks' ) } |
| 26 | isSearchable |
| 27 | pageSize={ 20 } |
| 28 | { ...props } |
| 29 | menuPlacement={ 'top' } |
| 30 | options={ groupBy( props.options, 'group', 'Other' ) } |
| 31 | /> |
| 32 | ); |
| 33 | } |
| 34 |