Commit 8eaf6000 authored by 杨奕's avatar 杨奕 Committed by GitHub

Transfer: add left-check-change and right-check-change (#10156)

parent 1238dbf9
...@@ -288,3 +288,5 @@ By default, Transfer looks for `key`, `label` and `disabled` in a data item. If ...@@ -288,3 +288,5 @@ By default, Transfer looks for `key`, `label` and `disabled` in a data item. If
| Event Name | Description | Parameters | | Event Name | Description | Parameters |
|---------- |-------- |---------- | |---------- |-------- |---------- |
| change | triggers when data items change in the right list | key array of current data items in the right list, transfer direction (left or right), moved item keys | | change | triggers when data items change in the right list | key array of current data items in the right list, transfer direction (left or right), moved item keys |
| left-check-change | triggers when end user changes the checked state of any data item in the left list | key array of currently checked items, key array of items whose checked state have changed |
| right-check-change | triggers when end user changes the checked state of any data item in the right list | key array of currently checked items, key array of items whose checked state have changed |
...@@ -289,4 +289,5 @@ Por defecto Transfer busca los atributos `key`, `label`, y `disabled` en cada el ...@@ -289,4 +289,5 @@ Por defecto Transfer busca los atributos `key`, `label`, y `disabled` en cada el
| Nombre | Descripcion | Parametros | | Nombre | Descripcion | Parametros |
| ------ | ---------------------------------------- | ---------------------------------------- | | ------ | ---------------------------------------- | ---------------------------------------- |
| change | se lanzá cuando los elementos cambian en la lista de la derecha | array con las claves de los elementos de la lista de la derecha | | change | se lanzá cuando los elementos cambian en la lista de la derecha | array con las claves de los elementos de la lista de la derecha |
| left-check-change | triggers when end user changes the checked state of any data item in the left list | key array of currently checked items, key array of items whose checked state have changed |
| right-check-change | triggers when end user changes the checked state of any data item in the right list | key array of currently checked items, key array of items whose checked state have changed |
...@@ -285,3 +285,5 @@ ...@@ -285,3 +285,5 @@
| 事件名称 | 说明 | 回调参数 | | 事件名称 | 说明 | 回调参数 |
|---------- |-------- |---------- | |---------- |-------- |---------- |
| change | 右侧列表元素变化时触发 | 当前值、数据移动的方向('left' / 'right')、发生移动的数据 key 数组 | | change | 右侧列表元素变化时触发 | 当前值、数据移动的方向('left' / 'right')、发生移动的数据 key 数组 |
| left-check-change | 左侧列表元素被用户选中 / 取消选中时触发 | 当前被选中的元素的 key 数组、选中状态发生变化的元素的 key 数组 |
| right-check-change | 右侧列表元素被用户选中 / 取消选中时触发 | 当前被选中的元素的 key 数组、选中状态发生变化的元素的 key 数组 |
...@@ -167,12 +167,16 @@ ...@@ -167,12 +167,16 @@
}; };
}, },
onSourceCheckedChange(val) { onSourceCheckedChange(val, movedKeys) {
this.leftChecked = val; this.leftChecked = val;
if (movedKeys === undefined) return;
this.$emit('left-check-change', val, movedKeys);
}, },
onTargetCheckedChange(val) { onTargetCheckedChange(val, movedKeys) {
this.rightChecked = val; this.rightChecked = val;
if (movedKeys === undefined) return;
this.$emit('right-check-change', val, movedKeys);
}, },
addToLeft() { addToLeft() {
......
...@@ -112,14 +112,22 @@ ...@@ -112,14 +112,22 @@
checked: [], checked: [],
allChecked: false, allChecked: false,
query: '', query: '',
inputHover: false inputHover: false,
checkChangeByUser: true
}; };
}, },
watch: { watch: {
checked(val) { checked(val, oldVal) {
this.updateAllChecked(); this.updateAllChecked();
if (this.checkChangeByUser) {
const movedKeys = val.concat(oldVal)
.filter(v => val.indexOf(v) === -1 || oldVal.indexOf(v) === -1);
this.$emit('checked-change', val, movedKeys);
} else {
this.$emit('checked-change', val); this.$emit('checked-change', val);
this.checkChangeByUser = true;
}
}, },
data() { data() {
...@@ -130,6 +138,7 @@ ...@@ -130,6 +138,7 @@
checked.push(item); checked.push(item);
} }
}); });
this.checkChangeByUser = false;
this.checked = checked; this.checked = checked;
}, },
...@@ -149,6 +158,7 @@ ...@@ -149,6 +158,7 @@
checked.push(item); checked.push(item);
} }
}); });
this.checkChangeByUser = false;
this.checked = checked; this.checked = checked;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment