diff --git a/.plugin-data b/.plugin-data index af27360..467792b 100644 --- a/.plugin-data +++ b/.plugin-data @@ -1,4 +1,4 @@ { - "version": "1.0.4", + "version": "1.0.5", "slug": "blockparty-modal" } diff --git a/README.md b/README.md index 41bcc26..3a5134c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Blockparty — Modal [](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/beapi/blockparty-modal/refs/heads/main/blueprint.json) + [](https://www.gnu.org/licenses/gpl-2.0) [](https://wordpress.org/) [](https://php.net/) @@ -271,6 +272,10 @@ This plugin is distributed under the GPL-2.0-or-later license. See the [LICENSE] See [readme.txt](readme.txt) for the full version history. Recent highlights: +- **1.0.5** + - Add `blueprint.json` to test the plugin on WordPress Playground. + - Add `screen-reader-text` class to close button element when display icon only is selected. + - **1.0.4** - Filter `blockparty_modal_inner_allowed_blocks` to control allowed blocks in the modal. diff --git a/blockparty-modal.php b/blockparty-modal.php index 05873fe..f6a0b06 100644 --- a/blockparty-modal.php +++ b/blockparty-modal.php @@ -2,7 +2,7 @@ /** * Plugin Name: Blockparty Modal * Description: Modal block for WordPress editor. - * Version: 1.0.4 + * Version: 1.0.5 * Requires at least: 6.8 * Requires PHP: 8.1 * Author: Be API Technical Team @@ -19,7 +19,7 @@ exit; // Exit if accessed directly. } -define( 'BLOCKPARTY_MODAL_VERSION', '1.0.4' ); +define( 'BLOCKPARTY_MODAL_VERSION', '1.0.5' ); define( 'BLOCKPARTY_MODAL_URL', plugin_dir_url( __FILE__ ) ); define( 'BLOCKPARTY_MODAL_DIR', plugin_dir_path( __FILE__ ) ); diff --git a/blueprint.json b/blueprint.json index 35831f6..1ae7783 100644 --- a/blueprint.json +++ b/blueprint.json @@ -1,6 +1,6 @@ { "$schema": "https://playground.wordpress.net/blueprint-schema.json", - "landingPage": "/wp-admin/post-new.php", + "landingPage": "/wp-admin/post.php?post=4&action=edit", "preferredVersions": { "php": "8.1", "wp": "latest" @@ -16,13 +16,17 @@ "pluginData": { "resource": "git:directory", "url": "https://github.com/BeAPI/blockparty-modal", - "ref": "1.0.4", + "ref": "1.0.5", "refType": "tag" }, "options": { "activate": true, "targetFolderName": "blockparty-modal" } + }, + { + "step": "runPHP", + "code": "\n
\n\n\n\n\n'; $page_id = wp_insert_post(array('post_title' => 'Blockparty Modal', 'post_content' => $page_content, 'post_status' => 'publish', 'post_type' => 'page')); echo 'Page created with ID: ' . $page_id; ?>'; $page_id = wp_insert_post(array('post_title' => 'Blockparty Modal', 'post_content' => $page_content, 'post_status' => 'publish', 'post_type' => 'page')); echo 'Page created with ID: ' . $page_id; ?>" } ] } diff --git a/package.json b/package.json index 08e2eb4..fbb2ec2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "blockparty-modal", - "version": "1.0.4", + "version": "1.0.5", "description": "Add a modal block to the WordPress editor.", "author": "Be API", "license": "GPL-2.0-or-later", diff --git a/readme.txt b/readme.txt index 4085afc..20cf8bf 100644 --- a/readme.txt +++ b/readme.txt @@ -45,6 +45,10 @@ directory take precedence. For example, `/assets/screenshot-1.png` would win ove == Changelog == += 1.0.5 = +* Add `blueprint.json` to test the plugin on WordPress Playground. +* Add `screen-reader-text` class to close button element when display icon only is selected. + = 1.0.4 = * Filter `blockparty_modal_inner_allowed_blocks` to control allowed blocks in the modal. diff --git a/src/blockparty-modal/block.json b/src/blockparty-modal/block.json index 8f1ddfc..9b0b3a8 100644 --- a/src/blockparty-modal/block.json +++ b/src/blockparty-modal/block.json @@ -2,27 +2,55 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 3, "name": "blockparty/modal", - "version": "1.0.4", + "version": "1.0.5", "title": "Modal", "category": "widgets", "description": "Insert a modal dialog that opens on trigger. Configure content and behaviour in the editor; the modal is displayed on the frontend when activated.", "attributes": { - "headingLevel": { "type": "number", "default": 2 }, - "title": { "type": "string", "default": "" }, - "content": { "type": "string", "default": "" }, - "modalId": { "type": "string", "default": "" }, + "headingLevel": { + "type": "number", + "default": 2 + }, + "title": { + "type": "string", + "default": "" + }, + "content": { + "type": "string", + "default": "" + }, + "modalId": { + "type": "string", + "default": "" + }, "closedBy": { "type": "string", "default": "any", - "enum": [ "any", "closerequest", "none" ] + "enum": [ + "any", + "closerequest", + "none" + ] + }, + "enableCloseButton": { + "type": "boolean", + "default": true }, - "enableCloseButton": { "type": "boolean", "default": true }, - "displayIconOnly": { "type": "boolean", "default": false }, - "preventScroll": { "type": "boolean", "default": false } + "displayIconOnly": { + "type": "boolean", + "default": false + }, + "preventScroll": { + "type": "boolean", + "default": false + } }, "example": {}, "supports": { - "align": [ "wide", "full" ], + "align": [ + "wide", + "full" + ], "dimensions": { "height": true, "minHeight": true @@ -31,7 +59,10 @@ "background": true, "text": true }, - "spacing": { "padding": true, "blockGap": true }, + "spacing": { + "padding": true, + "blockGap": true + }, "html": false }, "textdomain": "blockparty-modal", diff --git a/src/blockparty-modal/deprecated.js b/src/blockparty-modal/deprecated.js new file mode 100644 index 0000000..a44d79d --- /dev/null +++ b/src/blockparty-modal/deprecated.js @@ -0,0 +1,74 @@ +/** + * Prior save output for validation of existing post content. + * + * @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-deprecation/ + */ +import { __ } from '@wordpress/i18n'; +import { useBlockProps, InnerBlocks, RichText } from '@wordpress/block-editor'; +import { Icon, close } from '@wordpress/icons'; + +const MODAL_ID_PREFIX = 'modal-'; + +/** + * Save markup before `screen-reader-text` was added to the close label span (v1.0.4+). + * + * @param {Object} props Block props. + * @param {Object} props.attributes Block attributes. + * @return {JSX.Element} Element to render. + */ +function saveV1CloseLabelSrOnly( { attributes } ) { + const { + closedBy, + displayIconOnly, + enableCloseButton, + headingLevel: HeadingTag, + modalId, + preventScroll, + title, + } = attributes; + + const dialogId = modalId ? MODAL_ID_PREFIX + modalId : undefined; + const customProps = {}; + + if ( preventScroll ) { + customProps.className = 'wp-block-blockparty-modal--prevent-scroll'; + } + + return ( + + ); +} + +export default [ + { + save: saveV1CloseLabelSrOnly, + }, +]; diff --git a/src/blockparty-modal/edit.js b/src/blockparty-modal/edit.js index 90c72e5..aab2bf6 100644 --- a/src/blockparty-modal/edit.js +++ b/src/blockparty-modal/edit.js @@ -209,7 +209,13 @@ export default function Edit( { clientId, attributes, setAttributes } ) { type="button" className="wp-block-blockparty-modal__close-button" > - + { __( 'Close this dialog window', 'blockparty-modal' diff --git a/src/blockparty-modal/index.js b/src/blockparty-modal/index.js index d17d1a6..691889d 100644 --- a/src/blockparty-modal/index.js +++ b/src/blockparty-modal/index.js @@ -18,6 +18,7 @@ import './style.scss'; import Edit from './edit'; import save from './save'; +import deprecated from './deprecated'; import metadata from './block.json'; import { @@ -31,6 +32,7 @@ registerBlockType( metadata.name, { icon: modal, edit: Edit, save, + deprecated, } ); /** diff --git a/src/blockparty-modal/save.js b/src/blockparty-modal/save.js index aba72eb..326fc1f 100644 --- a/src/blockparty-modal/save.js +++ b/src/blockparty-modal/save.js @@ -68,7 +68,11 @@ export default function save( { attributes } ) { type="button" className="wp-block-blockparty-modal__close-button" > - + { __( 'Close this dialog window', 'blockparty-modal' ) }