Package Exports
- @vermilion/post-selector
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@vermilion/post-selector) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Gutenberg PostSelector
REQUIRES WordPress 5.0+
This is a React component built for Gutenberg that allows you to attach pages and posts like AddBySearch in the WP 5.0+ editor.
Installation
cd to your custom block plugin directory.
npm install @vermilion/post-selector
Usage
block.js
/**
* BLOCK: Block Name
*/
// Import CSS.
import './style.scss';
import PostSelector from '@vermilion/post-selector';
const { registerBlockType } = wp.blocks;
const { Fragment, RawHTML } = wp.element;
const { InspectorControls } = wp.editor;
const { PanelBody } = wp.components;
registerBlockType('vermilion/post-selector', {
title: 'Post Selector',
category: 'widgets',
keywords: [''],
attributes: {
posts: {
type: 'array',
default: []
},
},
edit({ attributes, setAttributes }) {
return (
<Fragment>
<InspectorControls>
<PanelBody title="Post Selector">
<PostSelector
onPostSelect={post => {
attributes.posts.push(post);
setAttributes({ posts: [...attributes.posts] });
}}
posts={attributes.posts}
onChange={newValue => {
setAttributes({ posts: [...newValue] });
}}
postType={'page'}
limit="3"
/>
</PanelBody>
</InspectorControls>
<div>
{attributes.posts.map(post => (
<div>
#{post.id}
<h2>{post.title}</h2>
<RawHTML>{post.excerpt}</RawHTML>
</div>
))}
</div>
</Fragment>
);
},
save({ attributes }) {
return(
<div>
{attributes.posts.map(post => (
<div>
#{post.id}
<h2>{post.title}</h2>
<RawHTML>{post.excerpt}</RawHTML>
</div>
))}
</div>
)
}
});
Props
posts : <Post>[]
posts should refer to an attribute in your block that is of type: 'array'. this is used internally by the component to update, re-order, and control deletion of posts from the selction.
postType : <String> (optional)
pass the singular name of a custom or built-in post type to limit results to that type (optional).
data <String>[] (optional)
the data prop allows you to define an array of strings that map to object keys from the REST API. (does not support nesting right now).
onPostSelect : function => <Post>[]
onPostSelect runs when a user selects a new post from the suggestion list upon typing. It returns a new array of all selected posts and should replace the data in your posts attribute.
onChange: function => <Post>[]
onChange runs when the user reorders the array of posts or removes a post from the array. it returns a new array that should replace your posts attribute.
limit: <Number> (optional)
Limit the number of posts a user is allowed to select.