From 0e4a79959fbdd3e898a2a22560c8f52f4a2ab851 Mon Sep 17 00:00:00 2001 From: zzj3720 <17165520+zzj3720@users.noreply.github.com> Date: Tue, 25 Feb 2025 23:23:00 +0000 Subject: [PATCH] fix(editor): improve string conversion logic for checkbox property (#10433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: BS-2465 - Add a FALSE_VALUES set containing various falsy string representations - Support Chinese negation terms like "否", "不", "错", etc. - Optimize the implementation of cellFromString method --- .../src/property-presets/checkbox/define.ts | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/blocksuite/affine/data-view/src/property-presets/checkbox/define.ts b/blocksuite/affine/data-view/src/property-presets/checkbox/define.ts index 3fda1bcb3b..ff7ebb09a2 100644 --- a/blocksuite/affine/data-view/src/property-presets/checkbox/define.ts +++ b/blocksuite/affine/data-view/src/property-presets/checkbox/define.ts @@ -3,17 +3,30 @@ import { propertyType } from '../../core/property/property-config.js'; export const checkboxPropertyType = propertyType('checkbox'); +const FALSE_VALUES = new Set([ + 'false', + 'no', + '0', + '', + 'undefined', + 'null', + '否', + '不', + '错', + '错误', + '取消', + '关闭', +]); + export const checkboxPropertyModelConfig = checkboxPropertyType.modelConfig({ name: 'Checkbox', type: () => t.boolean.instance(), defaultData: () => ({}), cellToString: ({ value }) => (value ? 'True' : 'False'), - cellFromString: ({ value }) => { - return { - value: value !== 'False', - }; - }, + cellFromString: ({ value }) => ({ + value: !FALSE_VALUES.has((value?.trim() ?? '').toLowerCase()), + }), cellToJson: ({ value }) => value ?? null, cellFromJson: ({ value }) => typeof value !== 'boolean' ? undefined : value,