diff --git a/packages/designer/src/designer/setting/setting-field.ts b/packages/designer/src/designer/setting/setting-field.ts index 956de1c8d..a70e83bb6 100644 --- a/packages/designer/src/designer/setting/setting-field.ts +++ b/packages/designer/src/designer/setting/setting-field.ts @@ -21,6 +21,7 @@ export class SettingField extends SettingPropEntry implements SettingEntry { readonly isSettingField = true; readonly isRequired: boolean; readonly transducer: Transducer; + private _config: FieldConfig; extraProps: FieldExtraProps; // ==== dynamic properties ==== @@ -53,6 +54,7 @@ export class SettingField extends SettingPropEntry implements SettingEntry { super(parent, config.name, config.type); const { title, items, setter, extraProps, ...rest } = config; + this._config = config; this._title = title; this._setter = setter; this.extraProps = { @@ -80,6 +82,10 @@ export class SettingField extends SettingPropEntry implements SettingEntry { return this._items; } + get config(): FieldConfig { + return this._config; + } + private initItems(items: Array, settingFieldCollector?: { (name: string | number, field: SettingField): void; (name: string, field: SettingField): void; }) { this._items = items.map((item) => { if (isCustomView(item)) { diff --git a/packages/editor-skeleton/src/components/settings/settings-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-pane.tsx index 76ea9c282..6ad763ac1 100644 --- a/packages/editor-skeleton/src/components/settings/settings-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-pane.tsx @@ -18,7 +18,13 @@ class SettingFieldView extends Component<{ field: SettingField }> { const { field } = this.props; const { extraProps } = field; const { condition, defaultValue, display } = extraProps; - const visible = field.isSingle && typeof condition === 'function' ? condition(field) !== false : true; + let visible; + try { + visible = field.isSingle && typeof condition === 'function' ? condition(field) !== false : true; + } catch (error) { + console.error('exception when condition (hidden) is excuted', error); + } + if (!visible) { return null; }