diff --git a/.circleci/config.yml b/.circleci/config.yml index f58f032f58..12936b2256 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -197,10 +197,10 @@ jobs: - run: name: Download additional WP Plugins for tests command: | - ./do download:woo-commerce-zip 9.8.2 + ./do download:woo-commerce-zip 9.8.3 ./do download:woo-commerce-subscriptions-zip 7.4.0 ./do download:woo-commerce-memberships-zip - ./do download:automate-woo-zip 6.1.10 + ./do download:automate-woo-zip 6.1.11 - run: name: Dump tests ENV variables for acceptance tests command: | diff --git a/mailpoet/assets/css/src/components-plugin/_listing.scss b/mailpoet/assets/css/src/components-plugin/_listing.scss index f3615550e0..78ea3b9695 100644 --- a/mailpoet/assets/css/src/components-plugin/_listing.scss +++ b/mailpoet/assets/css/src/components-plugin/_listing.scss @@ -195,8 +195,8 @@ div.mailpoet-listing-bulk-actions-container { border-bottom: 1px solid $color-tertiary-light; box-shadow: none; max-width: 30vw; - padding: $grid-gap-medium $grid-gap-half; - vertical-align: middle; + padding: 12px $grid-gap-half; + vertical-align: top; @include respond-to(small-screen) { max-width: none; @@ -310,13 +310,10 @@ a.mailpoet-listing-title { .mailpoet-listing-actions { align-items: center; - display: none; + display: flex; flex-wrap: wrap; - left: 0; line-height: 15px; - position: absolute; - top: 0; - width: 100%; + visibility: hidden; a { color: $color-text-light; @@ -340,7 +337,7 @@ a.mailpoet-listing-title { } tr:hover & { - display: flex; + visibility: visible; } @include respond-to(small-screen) { diff --git a/mailpoet/assets/js/src/form-editor/blocks/format-custom-field-block-name.jsx b/mailpoet/assets/js/src/form-editor/blocks/format-custom-field-block-name.jsx index 70897a9dd7..618343a797 100644 --- a/mailpoet/assets/js/src/form-editor/blocks/format-custom-field-block-name.jsx +++ b/mailpoet/assets/js/src/form-editor/blocks/format-custom-field-block-name.jsx @@ -1,8 +1,15 @@ import slugify from 'slugify'; export function formatCustomFieldBlockName(blockName, customField) { - const name = slugify(customField.name, { lower: true }) + let name = slugify(customField.name, { lower: true }) .replace(/[^a-z0-9]+/g, '') .replace(/-$/, ''); + + // Ensure unique block names by appending ID if the slug is empty or too short + // (which can happen with certain character sets) + if (!name || name.length < 2) { + name = `field${customField.id}`; + } + return `${blockName}-${name}`; } diff --git a/mailpoet/assets/js/src/marketing-optin-block/block.json b/mailpoet/assets/js/src/marketing-optin-block/block.json index 05b260a6b9..77b6edcd20 100644 --- a/mailpoet/assets/js/src/marketing-optin-block/block.json +++ b/mailpoet/assets/js/src/marketing-optin-block/block.json @@ -1,5 +1,5 @@ { - "apiVersion": 2, + "apiVersion": 3, "name": "mailpoet/marketing-optin-block", "version": "0.1.0", "title": "MailPoet Marketing Opt-in", diff --git a/mailpoet/assets/js/src/marketing-optin-block/edit.tsx b/mailpoet/assets/js/src/marketing-optin-block/edit.tsx index d34c0c77df..5db809cb98 100644 --- a/mailpoet/assets/js/src/marketing-optin-block/edit.tsx +++ b/mailpoet/assets/js/src/marketing-optin-block/edit.tsx @@ -18,6 +18,7 @@ const adminUrl = getSetting('adminUrl'); const { optinEnabled, defaultText } = getSetting('mailpoet_data'); function EmptyState(): JSX.Element { + const adminUrlToEnableOptIn = `${adminUrl}admin.php?page=mailpoet-settings#/woocommerce`; return ( } @@ -32,10 +33,10 @@ function EmptyState(): JSX.Element { diff --git a/mailpoet/assets/js/src/post-editor-block/subscription-form/edit.jsx b/mailpoet/assets/js/src/post-editor-block/subscription-form/edit.jsx index eafc51b0ab..e71c110764 100644 --- a/mailpoet/assets/js/src/post-editor-block/subscription-form/edit.jsx +++ b/mailpoet/assets/js/src/post-editor-block/subscription-form/edit.jsx @@ -4,12 +4,13 @@ import { Icon } from './icon.jsx'; const wp = window.wp; const { Placeholder, PanelBody } = wp.components; -const { BlockIcon, InspectorControls } = wp.blockEditor; +const { BlockIcon, InspectorControls, useBlockProps } = wp.blockEditor; const ServerSideRender = wp.serverSideRender; const allForms = window.mailpoet_forms; function Edit({ attributes, setAttributes }) { + const blockProps = useBlockProps(); function displayFormsSelect() { if (!Array.isArray(allForms)) return null; if (allForms.length === 0) return null; @@ -27,7 +28,7 @@ function Edit({ attributes, setAttributes }) { {window.locale.selectForm} {allForms.map((form) => ( -