提交 71a147f9 编写于 作者: A Aditya Thakral 提交者: Aditya Thakral

Reset model state if setting key changes (#101806)

As the same instance of the object widget could be used for different
settings, it is necessary to make sure to reset the model state (edit
key and selection index) when an instance is reused.
上级 440c1c41
...@@ -1132,6 +1132,7 @@ export class SettingObjectRenderer extends AbstractSettingRenderer implements IT ...@@ -1132,6 +1132,7 @@ export class SettingObjectRenderer extends AbstractSettingRenderer implements IT
const items = getObjectDisplayValue(dataElement); const items = getObjectDisplayValue(dataElement);
template.objectWidget.setValue(items, { template.objectWidget.setValue(items, {
settingKey: dataElement.setting.key,
showAddButton: ( showAddButton: (
typeof dataElement.setting.objectAdditionalProperties === 'object' || typeof dataElement.setting.objectAdditionalProperties === 'object' ||
isDefined(dataElement.setting.objectPatternProperties) || isDefined(dataElement.setting.objectPatternProperties) ||
......
...@@ -188,7 +188,7 @@ export class ListSettingListModel<TDataItem extends object> { ...@@ -188,7 +188,7 @@ export class ListSettingListModel<TDataItem extends object> {
this._dataItems = listData; this._dataItems = listData;
} }
select(idx: number): void { select(idx: number | null): void {
this._selectedIdx = idx; this._selectedIdx = idx;
} }
...@@ -664,6 +664,7 @@ export interface IObjectKeySuggester { ...@@ -664,6 +664,7 @@ export interface IObjectKeySuggester {
} }
interface IObjectSetValueOptions { interface IObjectSetValueOptions {
settingKey: string;
showAddButton: boolean; showAddButton: boolean;
keySuggester: IObjectKeySuggester; keySuggester: IObjectKeySuggester;
valueSuggester: IObjectValueSuggester; valueSuggester: IObjectValueSuggester;
...@@ -678,6 +679,7 @@ interface IObjectRenderEditWidgetOptions { ...@@ -678,6 +679,7 @@ interface IObjectRenderEditWidgetOptions {
} }
export class ObjectSettingWidget extends AbstractListSettingWidget<IObjectDataItem> { export class ObjectSettingWidget extends AbstractListSettingWidget<IObjectDataItem> {
private currentSettingKey: string = '';
private showAddButton: boolean = true; private showAddButton: boolean = true;
private keySuggester: IObjectKeySuggester = () => undefined; private keySuggester: IObjectKeySuggester = () => undefined;
private valueSuggester: IObjectValueSuggester = () => undefined; private valueSuggester: IObjectValueSuggester = () => undefined;
...@@ -686,6 +688,13 @@ export class ObjectSettingWidget extends AbstractListSettingWidget<IObjectDataIt ...@@ -686,6 +688,13 @@ export class ObjectSettingWidget extends AbstractListSettingWidget<IObjectDataIt
this.showAddButton = options?.showAddButton ?? this.showAddButton; this.showAddButton = options?.showAddButton ?? this.showAddButton;
this.keySuggester = options?.keySuggester ?? this.keySuggester; this.keySuggester = options?.keySuggester ?? this.keySuggester;
this.valueSuggester = options?.valueSuggester ?? this.valueSuggester; this.valueSuggester = options?.valueSuggester ?? this.valueSuggester;
if (isDefined(options) && options.settingKey !== this.currentSettingKey) {
this.model.setEditKey('none');
this.model.select(null);
this.currentSettingKey = options.settingKey;
}
super.setValue(listData); super.setValue(listData);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册