diff --git a/CHANGELOG.md b/CHANGELOG.md index 7976e47a..26216edd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ - [#1030](https://github.com/estruyf/vscode-front-matter/pull/1030): Add `frontMatter.file.slugSeparator` setting +### 🐞 Fixes + +- Fix number fields not being saved to front matter when used inside block field groups + ## [10.10.1] - 2026-04-23 ### 🐞 Fixes diff --git a/src/listeners/panel/DataListener.ts b/src/listeners/panel/DataListener.ts index 900da475..80c285dd 100644 --- a/src/listeners/panel/DataListener.ts +++ b/src/listeners/panel/DataListener.ts @@ -479,7 +479,11 @@ export class DataListener extends BaseListener { const contentType = await ArticleHelper.getContentType(article); const sourceField = ContentType.findFieldByName(contentType.fields, field); - if (!value && field !== titleField && contentType.clearEmpty) { + if ( + (value === undefined || value === null || value === '' || value === false) && + field !== titleField && + contentType.clearEmpty + ) { // Check if the draft or boolean field needs to be cleared // This is only required when the default value is not set to true if (sourceField && (sourceField.type === 'draft' || sourceField.type === 'boolean')) { diff --git a/src/panelWebView/components/DataBlock/DataBlockField.tsx b/src/panelWebView/components/DataBlock/DataBlockField.tsx index 85b36dbe..2ba67461 100644 --- a/src/panelWebView/components/DataBlock/DataBlockField.tsx +++ b/src/panelWebView/components/DataBlock/DataBlockField.tsx @@ -98,7 +98,14 @@ export const DataBlockField: React.FunctionComponent = ({ // Remove the empty fields Object.keys(data).forEach((key) => { - if (data[key] === undefined || data[key] === null || Object.keys(data[key]).length === 0) { + const currentValue = data[key]; + const isObjectValue = + typeof currentValue === 'object' && currentValue !== null; + const isEmptyArray = Array.isArray(currentValue) && currentValue.length === 0; + const isEmptyObject = + isObjectValue && !Array.isArray(currentValue) && Object.keys(currentValue).length === 0; + + if (currentValue === undefined || currentValue === null || isEmptyArray || isEmptyObject) { delete data[key]; } });