-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add the initial version of the Block Patterns API and UI as a sidebar…
… plugin (#20354)
- Loading branch information
1 parent
961ff38
commit 287498f
Showing
9 changed files
with
206 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"__file": "wp_block", | ||
"title": "Teams", | ||
"content": "<!-- wp:columns {\"className\":\"has-1-columns dsgn__basic-711220\"} -->\n<div class=\"wp-block-columns has-1-columns dsgn__basic-711220\"><!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:columns {\"className\":\"has-3-columns\"} -->\n<div class=\"wp-block-columns has-3-columns\"><!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:image {\"align\":\"center\",\"id\":1137001,\"width\":140,\"height\":140} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img src=\"https://wpdesignhub.com/designs/basic/711220/team-member-1.png\" alt=\"CC0 by coffeebeanworks \nhttps://pixabay.com/en/users/coffeebeanworks-558718/?tab=about\" class=\"wp-image-1137001\" width=\"140\" height=\"140\"/></figure></div>\n<!-- /wp:image -->\n\n<!-- wp:heading {\"align\":\"center\",\"level\":3,\"className\":\"clear-both\"} -->\n<h3 class=\"has-text-align-center clear-both\">Eliza Jason</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph {\"align\":\"center\",\"fontSize\":\"small\"} -->\n<p class=\"has-text-align-center has-small-font-size\">SEO & SMM</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:button {\"align\":\"center\"} -->\n<div class=\"wp-block-button aligncenter\"><a class=\"wp-block-button__link\" href=\"https://wpdesignhub.com?ref=demo-basicdesign\">Contact</a></div>\n<!-- /wp:button --></div>\n<!-- /wp:column -->\n\n<!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:image {\"align\":\"center\",\"id\":1137002,\"width\":140,\"height\":140} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img src=\"https://wpdesignhub.com/designs/basic/711220/team-member-2.png\" alt=\"CC0 by coffeebeanworks \n\thttps://pixabay.com/en/users/coffeebeanworks-558718/?tab=about\" class=\"wp-image-1137002\" width=\"140\" height=\"140\"/></figure></div>\n<!-- /wp:image -->\n\n<!-- wp:heading {\"align\":\"center\",\"level\":3,\"className\":\"clear-both\"} -->\n<h3 class=\"has-text-align-center clear-both\">Bryant Van</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph {\"align\":\"center\",\"fontSize\":\"small\"} -->\n<p class=\"has-text-align-center has-small-font-size\">Web-Developer</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:button {\"align\":\"center\"} -->\n<div class=\"wp-block-button aligncenter\"><a class=\"wp-block-button__link\" href=\"https://wpdesignhub.com?ref=demo-basicdesign\">Contact</a></div>\n<!-- /wp:button --></div>\n<!-- /wp:column -->\n\n<!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:image {\"align\":\"center\",\"id\":1137001,\"width\":140,\"height\":140} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img src=\"https://wpdesignhub.com/designs/basic/711220/team-member-3.png\" alt=\"CC0 by coffeebeanworks \n\thttps://pixabay.com/en/users/coffeebeanworks-558718/?tab=about\" class=\"wp-image-1137001\" width=\"140\" height=\"140\"/></figure></div>\n<!-- /wp:image -->\n\n<!-- wp:heading {\"align\":\"center\",\"level\":3,\"className\":\"clear-both\"} -->\n<h3 class=\"has-text-align-center clear-both\">Anna Caris</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph {\"align\":\"center\",\"fontSize\":\"small\"} -->\n<p class=\"has-text-align-center has-small-font-size\">Web-Designer</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:button {\"align\":\"center\"} -->\n<div class=\"wp-block-button aligncenter\"><a class=\"wp-block-button__link\" href=\"https://wpdesignhub.com?ref=demo-basicdesign\">Contact</a></div>\n<!-- /wp:button --></div>\n<!-- /wp:column --></div>\n<!-- /wp:columns --></div>\n<!-- /wp:column --></div>\n<!-- /wp:columns -->" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"__file": "wp_block", | ||
"title": "Testimonial", | ||
"content": "<!-- wp:image {\"align\":\"center\",\"id\":1137,\"width\":113,\"height\":113,\"linkDestination\":\"custom\"} -->\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><a href=\"https://pixabay.com/en/idea-icon-light-business-design-1873540/\"><img src=\"https://wpdesignhub.com/designs/basic/055854/team-member-1.png\" alt=\"CC0 by Coffee Bean \nhttps://pixabay.com/en/users/coffeebeanworks-558718/?tab=about\" class=\"wp-image-1137\" width=\"113\" height=\"113\"/></a></figure></div>\n<!-- /wp:image -->\n\n<!-- wp:paragraph {\"align\":\"center\",\"customFontSize\":21} -->\n<p style=\"font-size:21px\" class=\"has-text-align-center\">“These guys are amazing! A very professional team that delivers excellent results every time we come for help. I highly recommend this company for your projects!”</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"center\",\"fontSize\":\"small\"} -->\n<p class=\"has-text-align-center has-small-font-size\"><strong>ANNA JANISON</strong><br><em>director at CYKO</em></p>\n<!-- /wp:paragraph -->" | ||
} |
79 changes: 79 additions & 0 deletions
79
packages/block-editor/src/components/block-patterns/index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/** | ||
* External dependencies | ||
*/ | ||
import { map } from 'lodash'; | ||
|
||
/** | ||
* WordPress dependencies | ||
*/ | ||
import { useMemo, useCallback } from '@wordpress/element'; | ||
import { parse, cloneBlock } from '@wordpress/blocks'; | ||
import { useSelect, useDispatch } from '@wordpress/data'; | ||
import { ENTER, SPACE } from '@wordpress/keycodes'; | ||
import { __, sprintf } from '@wordpress/i18n'; | ||
|
||
/** | ||
* Internal dependencies | ||
*/ | ||
import BlockPreview from '../block-preview'; | ||
|
||
function BlockPattern( { pattern, onClick } ) { | ||
const { title, content } = pattern; | ||
const blocks = useMemo( () => parse( content ), [ content ] ); | ||
|
||
return ( | ||
<div | ||
className="block-editor-patterns__item" | ||
role="button" | ||
onClick={ () => onClick( pattern, blocks ) } | ||
onKeyDown={ ( event ) => { | ||
if ( ENTER === event.keyCode || SPACE === event.keyCode ) { | ||
onClick( blocks ); | ||
} | ||
} } | ||
tabIndex={ 0 } | ||
> | ||
<div className="block-editor-patterns__item-preview"> | ||
<BlockPreview blocks={ blocks } /> | ||
</div> | ||
<div className="block-editor-patterns__item-title">{ title }</div> | ||
</div> | ||
); | ||
} | ||
|
||
function BlockPatterns( { patterns } ) { | ||
const getBlockInsertionPoint = useSelect( ( select ) => { | ||
return select( 'core/block-editor' ).getBlockInsertionPoint; | ||
} ); | ||
const { insertBlocks } = useDispatch( 'core/block-editor' ); | ||
const { createSuccessNotice } = useDispatch( 'core/notices' ); | ||
const onClickPattern = useCallback( ( pattern, blocks ) => { | ||
const { index, rootClientId } = getBlockInsertionPoint(); | ||
insertBlocks( | ||
map( blocks, ( block ) => cloneBlock( block ) ), | ||
index, | ||
rootClientId, | ||
false | ||
); | ||
createSuccessNotice( | ||
sprintf( __( 'Pattern "%s" inserted' ), pattern.title ), | ||
{ | ||
type: 'snackbar', | ||
} | ||
); | ||
}, [] ); | ||
|
||
return ( | ||
<div className="block-editor-patterns"> | ||
{ patterns.map( ( pattern, index ) => ( | ||
<BlockPattern | ||
key={ index } | ||
pattern={ pattern } | ||
onClick={ onClickPattern } | ||
/> | ||
) ) } | ||
</div> | ||
); | ||
} | ||
|
||
export default BlockPatterns; |
40 changes: 40 additions & 0 deletions
40
packages/block-editor/src/components/block-patterns/style.scss
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
.block-editor-patterns { | ||
padding: 16px; | ||
} | ||
|
||
.block-editor-patterns__item { | ||
border-radius: 2px; | ||
cursor: pointer; | ||
margin-bottom: 16px; | ||
border: 1px solid $light-gray-500; | ||
transition: all 0.05s ease-in-out; | ||
position: relative; | ||
|
||
&:hover { | ||
background: $white; | ||
box-shadow: 0 0 0 1px $white, 0 0 0 3px $dark-gray-500; | ||
} | ||
|
||
&:focus { | ||
@include block-style__focus(); | ||
} | ||
} | ||
|
||
.block-editor-patterns__item-preview { | ||
overflow: hidden; | ||
height: 200px; | ||
|
||
.block-editor-block-preview__container { | ||
height: 100%; | ||
} | ||
|
||
.block-editor-block-preview__content { | ||
display: flex; | ||
justify-content: center; | ||
} | ||
} | ||
|
||
.block-editor-patterns__item-title { | ||
text-align: center; | ||
padding: 10px 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/** | ||
* WordPress dependencies | ||
*/ | ||
import { layout } from '@wordpress/icons'; | ||
import { __ } from '@wordpress/i18n'; | ||
import { __experimentalBlockPatterns as BlockPatternsList } from '@wordpress/block-editor'; | ||
import { useSelect } from '@wordpress/data'; | ||
|
||
/** | ||
* Internal dependencies | ||
*/ | ||
import PluginSidebar from '../../components/sidebar/plugin-sidebar'; | ||
import PluginSidebarMoreMenuItem from '../../components/header/plugin-sidebar-more-menu-item'; | ||
|
||
function BlockPatterns() { | ||
const { __experimentalBlockPatterns: blockPatterns = [] } = useSelect( | ||
( select ) => { | ||
return select( 'core/editor' ).getEditorSettings(); | ||
}, | ||
[] | ||
); | ||
|
||
return ( | ||
<> | ||
<PluginSidebar | ||
icon={ layout } | ||
name="block-patterns-sidebar" | ||
title={ __( 'Block Patterns' ) } | ||
> | ||
<BlockPatternsList patterns={ blockPatterns } /> | ||
</PluginSidebar> | ||
<PluginSidebarMoreMenuItem | ||
icon={ layout } | ||
target="block-patterns-sidebar" | ||
> | ||
{ __( 'Block Patterns' ) } | ||
</PluginSidebarMoreMenuItem> | ||
</> | ||
); | ||
} | ||
|
||
export default BlockPatterns; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters