Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
7976363
update: add `wcpay_express_checkout_js_params` filter (#10824)
frosso Jun 10, 2025
d91086e
Fix layout shift (#10835)
rtio Jun 10, 2025
2c77b50
Fix spacing on disputes expandable block (#10836)
rtio Jun 10, 2025
ac116f5
Preselected Payment Methods ignored during account creation via KYC s…
mordeth Jun 10, 2025
5f5aeb7
Update reviewers for dependabot (#10839)
htdat Jun 11, 2025
444b1fe
Ensure the submitted state is working as expected (#10838)
rtio Jun 11, 2025
59d3ffd
Fix padding on the recommended document section (#10837)
rtio Jun 11, 2025
4262f95
Merge trunk v9.5.0 into develop
botwoo Jun 11, 2025
9f30719
Update outdated npm packages (#10840)
htdat Jun 12, 2025
e318d86
Revert @woocommerce/onboarding version (#10844)
htdat Jun 13, 2025
c7dba38
Prevent fatal errors upon missing orders (#10851)
RadoslavGeorgiev Jun 13, 2025
be01047
Allow optional block sections in the checkout button class name for E…
dmvrtx Jun 13, 2025
fa19ee1
Add missing arrow icons for Back and Next buttons (#10848)
rtio Jun 13, 2025
bd66e79
Fix: Use wc_maybe_reduce_stock_levels to avoid potential double stock…
jackalcock Jun 13, 2025
00621ad
Add NO VAT description for Norway in tax descriptions (#10852)
mgascam Jun 16, 2025
e641631
Evidence submission - Product Not Received (#10841)
rtio Jun 16, 2025
0358ca7
Remove CTA in the toast confirming that evidence was saved (#10857)
dmvrtx Jun 16, 2025
7cd76d8
fix: GB postcode matching w/ GooglePay/ApplePay (#10847)
frosso Jun 17, 2025
4bd3cf0
Fix the browser print preview page on the payouts page. (#10861)
rtio Jun 17, 2025
4736ba5
Evidence submission Cover Letter, Recommended documents and Copy - Pr…
rtio Jun 18, 2025
9714fb9
Evidence submission - clicking on the Next button should scroll the p…
rtio Jun 18, 2025
214e23e
Top navigation should be clickable on the StepperPanel also fixes the…
rtio Jun 18, 2025
d4ad06d
Fix payment methods logos width calculation in block editor preview (…
mgascam Jun 19, 2025
d21eead
Fix cover letter state (#10864)
rtio Jun 20, 2025
50a66a0
Update the layout for the recommended documents section component (#1…
rtio Jun 20, 2025
b8ab68c
Update copy of cover letter notice (#10869)
rtio Jun 20, 2025
7b90664
Add notice when using bundled subscriptions (#10842)
rtio Jun 20, 2025
62ecde3
fix: ECE compatibility w/ MCCY disabled (#10866)
frosso Jun 24, 2025
c0cace9
Update "WC tested up to" header to include WooCommerce 10.0.0 (#10876)
dmvrtx Jun 24, 2025
8e411ff
Fee Taxes - provide a way for the merchant to enter Tax ID ahead of r…
mgascam Jun 24, 2025
6470314
Refine "Temporarily Suspended" language, statuses and tooltip copy (#…
oaratovskyi Jun 27, 2025
7131024
Update version and add changelog entries for release 9.6.0
github-actions[bot] Jun 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ updates:
- dependency-name: "@woocommerce/*"
# Reviewers for issues created
reviewers:
- 'Automattic/harmony'
- 'Automattic/gamma'
- 'Automattic/moltres'

# Enable version updates for composer
- package-ecosystem: 'composer'
Expand All @@ -25,7 +26,8 @@ updates:
interval: 'weekly'
# Reviewers for issues created
reviewers:
- 'Automattic/harmony'
- 'Automattic/gamma'
- 'Automattic/moltres'

# Enable version updates for Docker
- package-ecosystem: 'docker'
Expand All @@ -36,4 +38,5 @@ updates:
interval: 'weekly'
# Reviewers for issues created
reviewers:
- 'Automattic/harmony'
- 'Automattic/gamma'
- 'Automattic/moltres'
31 changes: 31 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
*** WooPayments Changelog ***

= 9.6.0 - 2025-07-02 =
* Add - Add cover letter for the new evidence submission screen for Product Unacceptable chargeback reason
* Add - Added a URL parameter to allow merchants to access the VAT details modal.
* Add - Show an admin notice when bundled subscriptions are in use
* Fix - Add NO VAT description for Norway in tax descriptions
* Fix - fix: ensure Google Pay/Apple Pay postcode matching for shipping zones works even when the provided postcode is redacted.
* Fix - Fix a layout shift when uploading evidence for a dispute on the new challenge dispute screen
* Fix - Fix mobile version of the StepperPanel and make the top navigation clickable.
* Fix - Fix padding on the recommended document section
* Fix - Fix payment methods logos width calculation in block editor preview
* Fix - Fix preselected Payment Methods ignored during account creation via KYC session.
* Fix - Fix spacing on disputes expandable block
* Fix - Fix state for the cover letter.
* Fix - Fix the browser print preview page on the payouts page.
* Fix - Prevent double stock reduction after (3DS) authentication.
* Fix - Prevent fatal error on the Pay for Order page upon deleted orders.
* Update - Change the copy of the cover letter notice.
* Update - Clicking on the Next button scroll the page position to the top.
* Update - Evidence submission form for product not received
* Update - fix: update Google Pay/Apple Pay buttons compatibility when multi-currency functionality is disabled - they'll no longer throw an exception for logged-out customers
* Update - Refine "Temporarily Suspended" language, statuses and tooltip copy
* Update - update: add `wcpay_express_checkout_js_params` filter for express checkout JS params.
* Update - Updates the recomended documents section for the new disputes experience
* Dev - Add missing arrow icons from the new evidence form
* Dev - Ensure the submitted state is working as expected
* Dev - Fix the regexp checking for the loading state of the checkout button to cover changes in latest WooCommerce.
* Dev - Remove CTA from the new evidence "Evidence saved!" toast.
* Dev - Revert @woocommerce/onboarding upgrade in PR 10840
* Dev - Update reviewers for dependabot
* Dev - Update tested WooCommerce version to 10.0.0

= 9.5.0 - 2025-06-11 =
* Add - Add specific texts for collecting Norway and New Zealand tax data
* Add - Add specific texts for collecting Singapore tax data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,57 @@ export const PaymentMethodsLogos: React.FC< PaymentMethodsLogosProps > = ( {
buttonRef.current?.focus();
}, [] );

// Try to find the preview iframe in the page editor.
const previewFrame = document.querySelector(
'iframe[name="editor-canvas"]'
);

useEffect( () => {
const updateMaxElements = () => {
// Get the actual width based on whether we're in an iframe or not.
let width: number;

if ( previewFrame ) {
// Get the width from the iframe's clientWidth.
width = previewFrame.clientWidth;
} else {
width = window.innerWidth;
}

const sortedConfigs = [ ...breakpointConfigs ].sort(
( a, b ) => a.breakpoint - b.breakpoint
);
const config = sortedConfigs.find(
( cfg ) => window.innerWidth <= cfg.breakpoint
( cfg ) => width <= cfg.breakpoint
);

setMaxShownElements( config ? config.maxElements : maxElements );
};

// Initial update
updateMaxElements();
window.addEventListener( 'resize', updateMaxElements );

// Use ResizeObserver if available, otherwise fallback to window resize
if ( typeof ResizeObserver !== 'undefined' ) {
const resizeObserver = new ResizeObserver( updateMaxElements );

if ( previewFrame ) {
resizeObserver.observe( previewFrame );
} else {
// Fallback to window resize
window.addEventListener( 'resize', updateMaxElements );
}

return () => {
resizeObserver.disconnect();
window.removeEventListener( 'resize', updateMaxElements );
};
}

// Fallback for browsers without ResizeObserver
window.addEventListener( 'resize', updateMaxElements );
return () => window.removeEventListener( 'resize', updateMaxElements );
}, [ breakpointConfigs, maxElements ] );
}, [ breakpointConfigs, maxElements, previewFrame ] );

useEffect( () => {
if ( popoverAnchor ) {
Expand Down
11 changes: 11 additions & 0 deletions client/checkout/blocks/payment-methods-logos/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,18 @@
> div {
display: flex;
align-items: center;
flex-wrap: nowrap;
min-width: 0;
max-width: 100%;
overflow: hidden;

img {
width: 37px;
height: 24px;
margin-right: 4px;
flex-shrink: 1;
min-width: 0;
max-width: 100%;
}
}

Expand All @@ -20,6 +27,10 @@
border-radius: 3px;
font-size: 11px;
font-weight: 600;
white-space: nowrap;
flex-shrink: 1;
text-overflow: ellipsis;
overflow: hidden;
}
}

Expand Down
4 changes: 0 additions & 4 deletions client/components/account-status/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,6 @@ const AccountStatusDetails = ( props ) => {
status={ accountStatus.deposits?.status }
interval={ accountStatus.deposits?.interval }
accountStatus={ accountStatus.status }
poEnabled={ accountStatus.progressiveOnboarding.isEnabled }
poComplete={
accountStatus.progressiveOnboarding.isComplete
}
iconSize={ 24 }
/>
</AccountStatusItem>
Expand Down
7 changes: 2 additions & 5 deletions client/components/account-status/status-chip.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import Chip from 'components/chip';
import './style.scss';

const StatusChip = ( props ) => {
const { accountStatus, poEnabled, poComplete } = props;
const { accountStatus } = props;

let description = __( 'Unknown', 'woocommerce-payments' );
let type = 'light';
Expand All @@ -27,10 +27,7 @@ const StatusChip = ( props ) => {
} else if ( accountStatus === 'restricted_soon' ) {
description = __( 'Restricted soon', 'woocommerce-payments' );
type = 'warning';
} else if (
accountStatus === 'pending_verification' ||
( poEnabled && ! poComplete && accountStatus === 'restricted' )
) {
} else if ( accountStatus === 'pending_verification' ) {
description = __( 'Pending', 'woocommerce-payments' );
type = 'light';
tooltip = __(
Expand Down
10 changes: 3 additions & 7 deletions client/components/deposits-status/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ const DepositsStatusSuspended: React.FC< DepositsStatusProps > = ( {
} ) => {
const description =
/* translators: <a> - suspended accounts FAQ URL */
__( 'Temporarily suspended', 'woocommerce-payments' );
__( 'Under Review', 'woocommerce-payments' );

return (
<span className={ 'account-status__info__yellow' }>
Expand All @@ -85,7 +85,7 @@ const DepositsStatusSuspended: React.FC< DepositsStatusProps > = ( {
/* translators: 1: WooPayments */
__(
// eslint-disable-next-line max-len
'After the information review, your account was temporarily suspended. {{learnMoreLink}}Learn more{{/learnMoreLink}}',
'While the account is under review payouts may remain suspended. {{learnMoreLink}}Learn more{{/learnMoreLink}}',
'woocommerce-payments'
),
'WooPayments'
Expand Down Expand Up @@ -134,20 +134,16 @@ const DepositsStatus: React.FC< Props > = ( {
status,
interval,
accountStatus,
poEnabled,
poComplete,
iconSize,
} ) => {
const isPoInProgress = poEnabled && ! poComplete;

if ( status === 'blocked' || accountStatus === 'under_review' ) {
return (
<DepositsStatusSuspended
iconSize={ iconSize }
interval={ interval }
/>
);
} else if ( accountStatus === 'pending_verification' || isPoInProgress ) {
} else if ( accountStatus === 'pending_verification' ) {
return (
<DepositsStatusPending
iconSize={ iconSize }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ exports[`DepositsStatus renders blocked status 1`] = `
/>
</g>
</svg>
Temporarily suspended
Under Review
<button
class="wcpay-tooltip__content-wrapper wcpay-tooltip--click__content-wrapper"
type="button"
Expand Down Expand Up @@ -69,7 +69,7 @@ exports[`DepositsStatus renders blocked status 2`] = `
/>
</g>
</svg>
Temporarily suspended
Under Review
<button
class="wcpay-tooltip__content-wrapper wcpay-tooltip--click__content-wrapper"
type="button"
Expand Down Expand Up @@ -212,7 +212,7 @@ exports[`DepositsStatus renders pending verification status 1`] = `
/>
</g>
</svg>
Temporarily suspended
Under Review
<button
class="wcpay-tooltip__content-wrapper wcpay-tooltip--click__content-wrapper"
type="button"
Expand Down
4 changes: 2 additions & 2 deletions client/components/deposits-status/test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ describe( 'DepositsStatus', () => {
}
);

expect( await findByText( /Temporarily suspended/i ) ).toBeVisible();
expect( await findByText( /Under Review/i ) ).toBeVisible();
expect( depositsStatus ).toMatchSnapshot();
} );

Expand All @@ -67,7 +67,7 @@ describe( 'DepositsStatus', () => {
}
);

expect( await findByText( /Temporarily suspended/i ) ).toBeVisible();
expect( await findByText( /Under Review/i ) ).toBeVisible();
expect( depositsStatus ).toMatchSnapshot();
} );

Expand Down
29 changes: 26 additions & 3 deletions client/components/stepper/stepper-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,55 @@ import clsx from 'clsx';
interface StepperIndicatorProps {
steps: string[];
currentStep: number;
onStepClick?: ( stepIndex: number ) => void;
}

export const StepperPanel: React.FC< StepperIndicatorProps > = ( {
steps,
currentStep,
onStepClick,
} ) => (
<div className="stepper-panel">
{ steps.map( ( label, idx ) => {
const isComplete = idx < currentStep;
const isActive = idx === currentStep;
const isClickable = typeof onStepClick === 'function';

const StepLabel = isClickable ? 'button' : 'div';

const handleClick = () => {
if ( isClickable && onStepClick ) {
onStepClick( idx );
}
};

return (
<div
key={ label }
className={ clsx( 'stepper-step', {
active: isActive,
complete: isComplete,
clickable: isClickable,
} ) }
>
<div className="stepper-circle">
<StepLabel
className="stepper-circle"
onClick={ handleClick }
disabled={ ! isClickable }
>
{ isComplete ? (
<Icon icon={ check } size={ 36 } />
) : (
idx + 1
) }
</div>
<div className="stepper-label">{ label }</div>
</StepLabel>
<StepLabel
className="stepper-label"
onClick={ handleClick }
disabled={ ! isClickable }
>
{ label }
</StepLabel>
{ idx < steps.length - 1 && (
<div className="stepper-line" />
) }
Expand Down
Loading
Loading