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) => (
-