Commit 2737230b5b for woocommerce
commit 2737230b5b89bd921a32f84a255733faa1844fd9
Author: louwie17 <lourensschep@gmail.com>
Date: Mon Nov 17 01:58:18 2025 +0100
Fix issue where calendar dropdown showed error (#61971)
* Fix issue where query was saving undefined values as string
* Check if moment date is valid, before changing it.
* Add changelog
diff --git a/packages/js/components/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error b/packages/js/components/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
new file mode 100644
index 0000000000..d6e97bef09
--- /dev/null
+++ b/packages/js/components/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
@@ -0,0 +1,4 @@
+Significance: minor
+Type: fix
+
+Make date handling within DateRange component more robust, for scenarious where a wrong moment date is used.
diff --git a/packages/js/components/src/calendar/date-range.js b/packages/js/components/src/calendar/date-range.js
index 32386a76a0..b1c39388a9 100644
--- a/packages/js/components/src/calendar/date-range.js
+++ b/packages/js/components/src/calendar/date-range.js
@@ -157,7 +157,9 @@ class DateRange extends Component {
setTnitialVisibleMonth( isDoubleCalendar, before ) {
return () => {
- const visibleDate = before || moment();
+ const isValidMoment =
+ before && moment.isMoment( before ) && before.isValid();
+ const visibleDate = isValidMoment ? before : moment();
if ( isDoubleCalendar ) {
return visibleDate.clone().subtract( 1, 'month' );
}
diff --git a/packages/js/components/src/date-range-filter-picker/index.js b/packages/js/components/src/date-range-filter-picker/index.js
index 85bb057c3a..410414435a 100644
--- a/packages/js/components/src/date-range-filter-picker/index.js
+++ b/packages/js/components/src/date-range-filter-picker/index.js
@@ -35,6 +35,7 @@ class DateRangeFilterPicker extends Component {
if (
date &&
date._isAMomentObject &&
+ date.isValid() &&
typeof date.format === 'function'
) {
return date.format( format );
diff --git a/plugins/woocommerce/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error b/plugins/woocommerce/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
new file mode 100644
index 0000000000..081b2f1fc9
--- /dev/null
+++ b/plugins/woocommerce/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
@@ -0,0 +1,4 @@
+Significance: minor
+Type: fix
+
+Fix issue where updating the woocommerce_default_date_range option was saving stringified undefined values.
diff --git a/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js b/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js
index 22c1f99909..939409a38b 100644
--- a/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js
+++ b/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js
@@ -16,10 +16,15 @@ const DefaultDate = ( { value, onChange } ) => {
const { woocommerce_default_date_range: defaultDateRange } =
wcAdminSettings;
const change = ( query ) => {
+ const sanitizedQuery = Object.fromEntries(
+ Object.entries( query ).filter(
+ ( [ , queryValue ] ) => typeof queryValue !== 'undefined'
+ )
+ );
onChange( {
target: {
name: 'woocommerce_default_date_range',
- value: new URLSearchParams( query ).toString(),
+ value: new URLSearchParams( sanitizedQuery ).toString(),
},
} );
};