Skip to content

Commit 6f4c7a0

Browse files
authored
Merge pull request #599 from BigLiao/bugfix/transfer-target-sort
fix(transfer): 修复targetSort展示问题
2 parents 1b42667 + 6ac28f0 commit 6f4c7a0

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/transfer/utils.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,14 @@ function filterTransferData(
164164
isTreeMode = false,
165165
) {
166166
if (!isTreeMode) {
167+
if (needMatch) {
168+
// 正向过滤。要保持filterValues顺序
169+
return filterValues.map((value) => data.find((item) => item.value === value));
170+
}
171+
// 反向过滤
167172
return data.filter((item) => {
168173
const isMatch = filterValues.includes(item.value);
169-
return needMatch ? isMatch : !isMatch;
174+
return !isMatch;
170175
});
171176
}
172177

test/unit/transfer/index.test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,13 @@ describe('Transfer', () => {
315315

316316
wrapper.vm.$el.querySelectorAll('.t-transfer__operations button')[0].click();
317317
expect(wrapper.vm.$data.targetValue).toEqual(['1', '2', '5']);
318+
319+
await wrapper.vm.$nextTick();
320+
const targetColumn = wrapper.vm.$el.querySelectorAll(
321+
'.t-transfer__list-target .t-transfer__list-item input[type=checkbox]',
322+
);
323+
const targetColumnValues = Array.prototype.map.call(targetColumn, (item) => item.value);
324+
expect(targetColumnValues).toEqual(['1', '2', '5']);
318325
});
319326

320327
it('push', async () => {
@@ -336,6 +343,13 @@ describe('Transfer', () => {
336343

337344
wrapper.vm.$el.querySelectorAll('.t-transfer__operations button')[0].click();
338345
expect(wrapper.vm.$data.targetValue).toEqual(['1', '5', '2']);
346+
347+
await wrapper.vm.$nextTick();
348+
const targetColumn = wrapper.vm.$el.querySelectorAll(
349+
'.t-transfer__list-target .t-transfer__list-item input[type=checkbox]',
350+
);
351+
const targetColumnValues = Array.prototype.map.call(targetColumn, (item) => item.value);
352+
expect(targetColumnValues).toEqual(['1', '5', '2']);
339353
});
340354

341355
it('unshift', async () => {
@@ -357,6 +371,13 @@ describe('Transfer', () => {
357371

358372
wrapper.vm.$el.querySelectorAll('.t-transfer__operations button')[0].click();
359373
expect(wrapper.vm.$data.targetValue).toEqual(['2', '1', '5']);
374+
375+
await wrapper.vm.$nextTick();
376+
const targetColumn = wrapper.vm.$el.querySelectorAll(
377+
'.t-transfer__list-target .t-transfer__list-item input[type=checkbox]',
378+
);
379+
const targetColumnValues = Array.prototype.map.call(targetColumn, (item) => item.value);
380+
expect(targetColumnValues).toEqual(['2', '1', '5']);
360381
});
361382
});
362383

0 commit comments

Comments
 (0)