diff --git a/assets/src/block-variations/index.js b/assets/src/block-variations/index.js new file mode 100644 index 0000000000..6dd8597d6a --- /dev/null +++ b/assets/src/block-variations/index.js @@ -0,0 +1,22 @@ +const {registerBlockVariation} = wp.blocks; +const {__} = wp.i18n; + +/* + This file will register general block variations. In case of register a very + specific block variation, such as PostsList or ActionsList ,you can create an isolated file. +*/ + +export const registerBlockVariations = () => { + // Group Stretched Link variation + registerBlockVariation('core/group', { + name: 'group-stretched-link', + title: __('Stretched Link', 'planet4-blocks-backend'), + description: __('Make the entire block contents clickable, using the first link inside.', 'planet4-blocks-backend'), + attributes: {className: 'group-stretched-link'}, + scope: ['inserter', 'transform'], + isActive: blockAttributes => { + return blockAttributes.className === 'group-stretched-link'; + }, + icon: 'admin-links', + }); +}; diff --git a/assets/src/editorIndex.js b/assets/src/editorIndex.js index 43f77ffc80..1a4c5a705b 100644 --- a/assets/src/editorIndex.js +++ b/assets/src/editorIndex.js @@ -10,6 +10,7 @@ import {registerMediaBlock} from './blocks/Media/MediaBlock'; import {registerBlockTemplates} from './block-templates/register'; import {registerTimelineBlock} from './blocks/Timeline/TimelineBlock'; import {registerColumnsBlock} from './blocks/Columns/ColumnsBlock'; +import {registerBlockVariations} from './block-variations'; wp.domReady(() => { // Make sure to unregister the posts-list native variation before registering planet4-blocks/posts-list @@ -30,6 +31,9 @@ wp.domReady(() => { // Beta blocks registerActionsListBlock(); registerPostsListBlock(); + + // Block variations + registerBlockVariations(); }); setupCustomSidebar(); diff --git a/assets/src/scss/editorStyle.scss b/assets/src/scss/editorStyle.scss index 911ff6820b..292592b936 100644 --- a/assets/src/scss/editorStyle.scss +++ b/assets/src/scss/editorStyle.scss @@ -42,3 +42,6 @@ @import "blocks/Submenu/SubmenuEditorStyle"; @import "blocks/TakeActionBoxout/TakeActionBoxoutEditorStyle"; @import "blocks/Timeline/TimelineEditorStyle"; + +// Variations +@import "variations/stretched-link/edit"; diff --git a/assets/src/scss/style.scss b/assets/src/scss/style.scss index c7b99853c8..766ff35ff2 100644 --- a/assets/src/scss/style.scss +++ b/assets/src/scss/style.scss @@ -85,6 +85,9 @@ Text Domain: planet4-master-theme @import "layout/query-loop-overrides"; +// Variations +@import "variations/stretched-link"; + // Hide WPML footer language switcher. .wpml-ls-statics-footer { display: none; diff --git a/assets/src/scss/variations/stretched-link/edit.scss b/assets/src/scss/variations/stretched-link/edit.scss new file mode 100644 index 0000000000..25181184f9 --- /dev/null +++ b/assets/src/scss/variations/stretched-link/edit.scss @@ -0,0 +1,4 @@ +.group-stretched-link { + outline: 1px dashed grey; + outline-offset: 2px; +} diff --git a/assets/src/scss/variations/stretched-link/index.scss b/assets/src/scss/variations/stretched-link/index.scss new file mode 100644 index 0000000000..a163e21399 --- /dev/null +++ b/assets/src/scss/variations/stretched-link/index.scss @@ -0,0 +1,35 @@ +.group-stretched-link { + position: relative; + + [class*="is-style-rounded-"].force-no-caption { + overflow: hidden; + border-radius: 50%; + transform: translateZ(0); // This is needed for Safari, otherwise the animation looks off. + + img { + transition: transform .2s ease-in-out; + } + } + + &:hover { + [class*="is-style-rounded-"] img { + transform: scale(1.3); + } + } + + // Ensure it's only applying to the first link. + a:first-of-type { + &:before { + content: ""; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + } + + &:after { + display: none; + } + } +}