| 1 |
import { __ } from '@wordpress/i18n'; |
| 2 |
import { registerBlockType } from '@wordpress/blocks'; |
| 3 |
import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; |
| 4 |
import { CheckboxControl, PanelBody, SelectControl } from '@wordpress/components'; |
| 5 |
import ServerSideRender from '@wordpress/server-side-render'; |
| 6 |
|
| 7 |
registerBlockType( 'friends/friends-list', { |
| 8 |
edit: function( { attributes, setAttributes } ) { |
| 9 |
const blockProps = useBlockProps(); |
| 10 |
|
| 11 |
// Build folder options from localized data. |
| 12 |
var folderOptions = [ |
| 13 |
{ label: __( '— None —', 'friends' ), value: 0 }, |
| 14 |
]; |
| 15 |
if ( window.friendsFolders && window.friendsFolders.length ) { |
| 16 |
window.friendsFolders.forEach( function( folder ) { |
| 17 |
folderOptions.push( { |
| 18 |
label: folder.name, |
| 19 |
value: folder.term_id, |
| 20 |
} ); |
| 21 |
} ); |
| 22 |
} |
| 23 |
|
| 24 |
return ( |
| 25 |
<> |
| 26 |
<InspectorControls> |
| 27 |
<PanelBody> |
| 28 |
<CheckboxControl |
| 29 |
label={ __( 'Display Users inline', 'friends' ) } |
| 30 |
checked={ attributes.users_inline } |
| 31 |
onChange={ users_inline => setAttributes( { users_inline } ) } |
| 32 |
/> |
| 33 |
<SelectControl |
| 34 |
label={ __( 'User Types', 'friends' ) } |
| 35 |
onChange={ user_types => setAttributes( { user_types, folder: 0 } ) } |
| 36 |
value={ attributes.user_types } |
| 37 |
options={ [ |
| 38 |
{ |
| 39 |
label: __( 'Following', 'friends' ), |
| 40 |
value: 'subscriptions', |
| 41 |
}, |
| 42 |
{ |
| 43 |
label: __( 'Starred', 'friends' ), |
| 44 |
value: 'starred', |
| 45 |
}, |
| 46 |
{ |
| 47 |
label: __( 'Grouped by Folder', 'friends' ), |
| 48 |
value: 'folders', |
| 49 |
}, |
| 50 |
] } |
| 51 |
/> |
| 52 |
{ folderOptions.length > 1 && ( |
| 53 |
<SelectControl |
| 54 |
label={ __( 'Folder', 'friends' ) } |
| 55 |
onChange={ folder => setAttributes( { folder: parseInt( folder, 10 ), user_types: folder ? 'folder' : 'subscriptions' } ) } |
| 56 |
value={ attributes.folder } |
| 57 |
options={ folderOptions } |
| 58 |
/> |
| 59 |
) } |
| 60 |
</PanelBody> |
| 61 |
</InspectorControls> |
| 62 |
<div {...blockProps}> |
| 63 |
<ServerSideRender |
| 64 |
block="friends/friends-list" |
| 65 |
attributes={ attributes } |
| 66 |
/> |
| 67 |
</div> |
| 68 |
</> |
| 69 |
); |
| 70 |
}, |
| 71 |
|
| 72 |
save() { |
| 73 |
return null; |
| 74 |
}, |
| 75 |
} ); |
| 76 |
|