mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2026-05-30 04:08:04 +00:00
feat(editor): 数据源字段选择按钮在对比模式与禁用态下禁止切换
- 按钮新增 disabled 绑定 (props.disabled || mForm?.isCompare) - 抽取 onToggleDataSourceFieldSelectHandler 增加 guard 防御 - 补充对应单元测试
This commit is contained in:
parent
b1193b909e
commit
ff810d09e4
@ -35,7 +35,8 @@
|
||||
<TMagicButton
|
||||
:type="showDataSourceFieldSelect ? 'primary' : 'default'"
|
||||
:size="size"
|
||||
@click="showDataSourceFieldSelect = !showDataSourceFieldSelect"
|
||||
:disabled="disabled || mForm?.isCompare"
|
||||
@click="onToggleDataSourceFieldSelectHandler"
|
||||
><MIcon :icon="Coin"></MIcon
|
||||
></TMagicButton>
|
||||
</TMagicTooltip>
|
||||
@ -185,4 +186,10 @@ const onChangeHandler = (value: string[], eventData?: ContainerChangeEventData)
|
||||
emit('change', [dsId], eventData);
|
||||
}
|
||||
};
|
||||
|
||||
const onToggleDataSourceFieldSelectHandler = () => {
|
||||
// 禁用或对比模式下禁止切换
|
||||
if (props.disabled || mForm?.isCompare) return;
|
||||
showDataSourceFieldSelect.value = !showDataSourceFieldSelect.value;
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -242,4 +242,64 @@ describe('DataSourceFieldSelect Index', () => {
|
||||
});
|
||||
expect(wrapper.findAll('.fake-cascader').length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
test('disabled 为 true 时切换按钮被禁用,点击不切换 showDataSourceFieldSelect', async () => {
|
||||
const wrapper = mount(DSFSIndex, {
|
||||
props: {
|
||||
config: { fieldConfig: { type: 'text' } },
|
||||
model: { v: [] },
|
||||
name: 'v',
|
||||
disabled: true,
|
||||
} as any,
|
||||
});
|
||||
|
||||
const toggleBtn = wrapper.find('.fake-btn');
|
||||
expect((toggleBtn.element as HTMLButtonElement).hasAttribute('disabled')).toBe(true);
|
||||
|
||||
// 点击不应切换显示 FieldSelect
|
||||
await toggleBtn.trigger('click');
|
||||
expect(wrapper.findAll('.fake-cascader').length).toBe(0);
|
||||
});
|
||||
|
||||
test('对比模式(mForm.isCompare=true)下切换按钮被禁用,点击不切换 showDataSourceFieldSelect', async () => {
|
||||
const wrapper = mount(DSFSIndex, {
|
||||
props: {
|
||||
config: { fieldConfig: { type: 'text' } },
|
||||
model: { v: [] },
|
||||
name: 'v',
|
||||
} as any,
|
||||
global: {
|
||||
provide: {
|
||||
mForm: { isCompare: true },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const toggleBtn = wrapper.find('.fake-btn');
|
||||
expect((toggleBtn.element as HTMLButtonElement).hasAttribute('disabled')).toBe(true);
|
||||
|
||||
await toggleBtn.trigger('click');
|
||||
expect(wrapper.findAll('.fake-cascader').length).toBe(0);
|
||||
});
|
||||
|
||||
test('非对比模式且未 disabled 时按钮可用,点击可切换', async () => {
|
||||
const wrapper = mount(DSFSIndex, {
|
||||
props: {
|
||||
config: { fieldConfig: { type: 'text' } },
|
||||
model: { v: [] },
|
||||
name: 'v',
|
||||
} as any,
|
||||
global: {
|
||||
provide: {
|
||||
mForm: { isCompare: false },
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const toggleBtn = wrapper.find('.fake-btn');
|
||||
expect((toggleBtn.element as HTMLButtonElement).hasAttribute('disabled')).toBe(false);
|
||||
|
||||
await toggleBtn.trigger('click');
|
||||
expect(wrapper.findAll('.fake-cascader').length).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user