From 1300c134d11132455f5e259b98fc5bf9f7d17aa4 Mon Sep 17 00:00:00 2001
From: Liuzj <530604689@qq.com>
Date: Tue, 3 Jan 2023 14:27:35 +0800
Subject: [PATCH] fix(comp:table): can't reverse select, when multiple of
selectable is false (#1383)
---
.../__snapshots__/datePanel.spec.ts.snap | 4 ++--
.../table/src/main/body/BodyCell.tsx | 21 ++++++++++++++-----
.../transfer/__tests__/proTransfer.spec.ts | 20 +++++++++---------
3 files changed, 28 insertions(+), 17 deletions(-)
diff --git a/packages/components/_private/date-panel/__tests__/__snapshots__/datePanel.spec.ts.snap b/packages/components/_private/date-panel/__tests__/__snapshots__/datePanel.spec.ts.snap
index 6729961b1..f21faebd6 100644
--- a/packages/components/_private/date-panel/__tests__/__snapshots__/datePanel.spec.ts.snap
+++ b/packages/components/_private/date-panel/__tests__/__snapshots__/datePanel.spec.ts.snap
@@ -632,12 +632,12 @@ exports[`DatePanel > year type disabledDate work 1`] = `
-
+ |
|
-
+ |
diff --git a/packages/components/table/src/main/body/BodyCell.tsx b/packages/components/table/src/main/body/BodyCell.tsx
index f4ae2be85..28b516ad0 100644
--- a/packages/components/table/src/main/body/BodyCell.tsx
+++ b/packages/components/table/src/main/body/BodyCell.tsx
@@ -214,7 +214,7 @@ function renderSelectableChildren(
mergedPagination: ComputedRef,
) {
const { selected: checked, indeterminate, disabled, isHover, handleSelect: onChange } = props
- const { showIndex, multiple, customCell } = selectable.value!
+ const { showIndex, multiple, customCell, trigger } = selectable.value!
if (!checked && !isHover && showIndex) {
return renderIndexableChildren(props, slots, config.columnIndexable as TableColumnIndexable, mergedPagination)
@@ -222,11 +222,22 @@ function renderSelectableChildren(
const customRender = isString(customCell) ? slots[customCell] : customCell
if (multiple) {
- const checkboxProps = { checked, disabled, indeterminate, onChange, onClick }
- return customRender ? customRender(checkboxProps) :
+ // 存在trigger时将事件代理到bodyCell进行处理
+ const exitTriggerCheckboxProps = { checked, disabled, indeterminate }
+ const checkboxProps = { ...exitTriggerCheckboxProps, onChange, onClick }
+ return customRender ? (
+ customRender(trigger ? exitTriggerCheckboxProps : checkboxProps)
+ ) : (
+
+ )
} else {
- const radioProps = { checked, disabled, onChange, onClick }
- return customRender ? customRender(radioProps) :
+ const exitTriggerRadioProps = { checked, disabled }
+ const radioProps = { ...exitTriggerRadioProps, onChange, onClick }
+ return customRender ? (
+ customRender(radioProps)
+ ) : (
+
+ )
}
}
diff --git a/packages/pro/transfer/__tests__/proTransfer.spec.ts b/packages/pro/transfer/__tests__/proTransfer.spec.ts
index f6b5bbd87..906e2558f 100644
--- a/packages/pro/transfer/__tests__/proTransfer.spec.ts
+++ b/packages/pro/transfer/__tests__/proTransfer.spec.ts
@@ -143,19 +143,19 @@ describe('ProTransfer', () => {
.findAll('tr:not(.ix-table-measure-row)')[0]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await sourceTable
.find('tbody')
.findAll('tr:not(.ix-table-measure-row)')[1]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await sourceTable
.find('tbody')
.findAll('tr:not(.ix-table-measure-row)')[2]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await appendTrigger.trigger('click')
expect(onChange).toBeCalledWith([0, 1, 2, 3, 4, 5, 7], [0, 1, 2, 3, 4])
@@ -165,19 +165,19 @@ describe('ProTransfer', () => {
.findAll('tr:not(.ix-table-measure-row)')[0]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await targetTable
.find('tbody')
.findAll('tr:not(.ix-table-measure-row)')[1]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await targetTable
.find('tbody')
.findAll('tr:not(.ix-table-measure-row)')[2]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await removeTrigger.trigger('click')
expect(onChange).toBeCalledWith([1, 3, 4], [0, 1, 2, 3, 4])
})
@@ -219,25 +219,25 @@ describe('ProTransfer', () => {
.findAll('tr:not(.ix-table-measure-row)')[0]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await sourceTable
.find('tbody')
.findAll('tr:not(.ix-table-measure-row)')[1]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await sourceTable
.find('tbody')
.findAll('tr:not(.ix-table-measure-row)')[2]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
await sourceTable
.find('tbody')
.findAll('tr:not(.ix-table-measure-row)')[3]
.find('.ix-checkbox')
.find('input')
- .setValue(true)
+ .trigger('click')
const [, targetTable] = wrapper.findAll('.ix-table')
|