NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/ant-design-vue/lib/transfer/index.js

562 lines
20 KiB
Java
Raw Normal View History

2023-09-14 14:47:11 +08:00
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TransferLocale = exports.TransferProps = exports.TransferItem = exports.TransferDirection = undefined;
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _vueTypes = require('../_util/vue-types');
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _propsUtil = require('../_util/props-util');
var _BaseMixin = require('../_util/BaseMixin');
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _list = require('./list');
var _list2 = _interopRequireDefault(_list);
var _operation = require('./operation');
var _operation2 = _interopRequireDefault(_operation);
var _LocaleReceiver = require('../locale-provider/LocaleReceiver');
var _LocaleReceiver2 = _interopRequireDefault(_LocaleReceiver);
var _default2 = require('../locale-provider/default');
var _default3 = _interopRequireDefault(_default2);
var _configConsumerProps = require('../config-provider/configConsumerProps');
var _warning = require('../_util/warning');
var _warning2 = _interopRequireDefault(_warning);
var _base = require('../base');
var _base2 = _interopRequireDefault(_base);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var TransferDirection = exports.TransferDirection = 'left' | 'right';
var TransferItem = exports.TransferItem = {
key: _vueTypes2['default'].string,
title: _vueTypes2['default'].string,
description: _vueTypes2['default'].string,
disabled: _vueTypes2['default'].bool
};
var TransferProps = exports.TransferProps = {
prefixCls: _vueTypes2['default'].string,
dataSource: _vueTypes2['default'].arrayOf(_vueTypes2['default'].shape(TransferItem).loose),
disabled: _vueTypes2['default'].boolean,
targetKeys: _vueTypes2['default'].arrayOf(_vueTypes2['default'].string),
selectedKeys: _vueTypes2['default'].arrayOf(_vueTypes2['default'].string),
render: _vueTypes2['default'].func,
listStyle: _vueTypes2['default'].oneOfType([_vueTypes2['default'].func, _vueTypes2['default'].object]),
operationStyle: _vueTypes2['default'].object,
titles: _vueTypes2['default'].arrayOf(_vueTypes2['default'].string),
operations: _vueTypes2['default'].arrayOf(_vueTypes2['default'].string),
showSearch: _vueTypes2['default'].bool,
filterOption: _vueTypes2['default'].func,
searchPlaceholder: _vueTypes2['default'].string,
notFoundContent: _vueTypes2['default'].any,
locale: _vueTypes2['default'].object,
rowKey: _vueTypes2['default'].func,
lazy: _vueTypes2['default'].oneOfType([_vueTypes2['default'].object, _vueTypes2['default'].bool]),
showSelectAll: _vueTypes2['default'].bool
};
var TransferLocale = exports.TransferLocale = {
titles: _vueTypes2['default'].arrayOf(_vueTypes2['default'].string),
notFoundContent: _vueTypes2['default'].string,
itemUnit: _vueTypes2['default'].string,
itemsUnit: _vueTypes2['default'].string
};
var Transfer = {
name: 'ATransfer',
mixins: [_BaseMixin2['default']],
props: (0, _propsUtil.initDefaultProps)(TransferProps, {
dataSource: [],
locale: {},
showSearch: false,
listStyle: function listStyle() {}
}),
inject: {
configProvider: { 'default': function _default() {
return _configConsumerProps.ConfigConsumerProps;
} }
},
data: function data() {
// vue 中 通过slot不方便传递保留notFoundContent及searchPlaceholder
// warning(
// !(getComponentFromProp(this, 'notFoundContent') || hasProp(this, 'searchPlaceholder')),
// 'Transfer[notFoundContent] and Transfer[searchPlaceholder] will be removed, ' +
// 'please use Transfer[locale] instead.',
// )
var _selectedKeys = this.selectedKeys,
selectedKeys = _selectedKeys === undefined ? [] : _selectedKeys,
_targetKeys = this.targetKeys,
targetKeys = _targetKeys === undefined ? [] : _targetKeys;
return {
leftFilter: '',
rightFilter: '',
sourceSelectedKeys: selectedKeys.filter(function (key) {
return targetKeys.indexOf(key) === -1;
}),
targetSelectedKeys: selectedKeys.filter(function (key) {
return targetKeys.indexOf(key) > -1;
})
};
},
mounted: function mounted() {
// this.currentProps = { ...this.$props }
},
watch: {
targetKeys: function targetKeys() {
this.updateState();
if (this.selectedKeys) {
var targetKeys = this.targetKeys || [];
this.setState({
sourceSelectedKeys: this.selectedKeys.filter(function (key) {
return !targetKeys.includes(key);
}),
targetSelectedKeys: this.selectedKeys.filter(function (key) {
return targetKeys.includes(key);
})
});
}
},
dataSource: function dataSource() {
this.updateState();
},
selectedKeys: function selectedKeys() {
if (this.selectedKeys) {
var targetKeys = this.targetKeys || [];
this.setState({
sourceSelectedKeys: this.selectedKeys.filter(function (key) {
return !targetKeys.includes(key);
}),
targetSelectedKeys: this.selectedKeys.filter(function (key) {
return targetKeys.includes(key);
})
});
}
}
},
methods: {
getSelectedKeysName: function getSelectedKeysName(direction) {
return direction === 'left' ? 'sourceSelectedKeys' : 'targetSelectedKeys';
},
getTitles: function getTitles(transferLocale) {
if (this.titles) {
return this.titles;
}
return transferLocale.titles || ['', ''];
},
getLocale: function getLocale(transferLocale, renderEmpty) {
var h = this.$createElement;
// Keep old locale props still working.
var oldLocale = {
notFoundContent: renderEmpty(h, 'Transfer')
};
var notFoundContent = (0, _propsUtil.getComponentFromProp)(this, 'notFoundContent');
if (notFoundContent) {
oldLocale.notFoundContent = notFoundContent;
}
if ((0, _propsUtil.hasProp)(this, 'searchPlaceholder')) {
oldLocale.searchPlaceholder = this.$props.searchPlaceholder;
}
return (0, _extends3['default'])({}, transferLocale, oldLocale, this.$props.locale);
},
updateState: function updateState() {
var sourceSelectedKeys = this.sourceSelectedKeys,
targetSelectedKeys = this.targetSelectedKeys;
this.separatedDataSource = null;
if (!this.selectedKeys) {
// clear key nolonger existed
// clear checkedKeys according to targetKeys
var dataSource = this.dataSource,
_targetKeys2 = this.targetKeys,
targetKeys = _targetKeys2 === undefined ? [] : _targetKeys2;
var newSourceSelectedKeys = [];
var newTargetSelectedKeys = [];
dataSource.forEach(function (_ref) {
var key = _ref.key;
if (sourceSelectedKeys.includes(key) && !targetKeys.includes(key)) {
newSourceSelectedKeys.push(key);
}
if (targetSelectedKeys.includes(key) && targetKeys.includes(key)) {
newTargetSelectedKeys.push(key);
}
});
this.setState({
sourceSelectedKeys: newSourceSelectedKeys,
targetSelectedKeys: newTargetSelectedKeys
});
}
},
moveTo: function moveTo(direction) {
var _$props = this.$props,
_$props$targetKeys = _$props.targetKeys,
targetKeys = _$props$targetKeys === undefined ? [] : _$props$targetKeys,
_$props$dataSource = _$props.dataSource,
dataSource = _$props$dataSource === undefined ? [] : _$props$dataSource;
var sourceSelectedKeys = this.sourceSelectedKeys,
targetSelectedKeys = this.targetSelectedKeys;
var moveKeys = direction === 'right' ? sourceSelectedKeys : targetSelectedKeys;
// filter the disabled options
var newMoveKeys = moveKeys.filter(function (key) {
return !dataSource.some(function (data) {
return !!(key === data.key && data.disabled);
});
});
// move items to target box
var newTargetKeys = direction === 'right' ? newMoveKeys.concat(targetKeys) : targetKeys.filter(function (targetKey) {
return newMoveKeys.indexOf(targetKey) === -1;
});
// empty checked keys
var oppositeDirection = direction === 'right' ? 'left' : 'right';
this.setState((0, _defineProperty3['default'])({}, this.getSelectedKeysName(oppositeDirection), []));
this.handleSelectChange(oppositeDirection, []);
this.$emit('change', newTargetKeys, direction, newMoveKeys);
},
moveToLeft: function moveToLeft() {
this.moveTo('left');
},
moveToRight: function moveToRight() {
this.moveTo('right');
},
onItemSelectAll: function onItemSelectAll(direction, selectedKeys, checkAll) {
var originalSelectedKeys = this.$data[this.getSelectedKeysName(direction)] || [];
var mergedCheckedKeys = [];
if (checkAll) {
// Merge current keys with origin key
mergedCheckedKeys = Array.from(new Set([].concat((0, _toConsumableArray3['default'])(originalSelectedKeys), (0, _toConsumableArray3['default'])(selectedKeys))));
} else {
// Remove current keys from origin keys
mergedCheckedKeys = originalSelectedKeys.filter(function (key) {
return selectedKeys.indexOf(key) === -1;
});
}
this.handleSelectChange(direction, mergedCheckedKeys);
if (!this.$props.selectedKeys) {
this.setState((0, _defineProperty3['default'])({}, this.getSelectedKeysName(direction), mergedCheckedKeys));
}
},
handleSelectAll: function handleSelectAll(direction, filteredDataSource, checkAll) {
this.onItemSelectAll(direction, filteredDataSource.map(function (_ref2) {
var key = _ref2.key;
return key;
}), !checkAll);
},
// [Legacy] Old prop `body` pass origin check as arg. It's confusing.
// TODO: Remove this in next version.
handleLeftSelectAll: function handleLeftSelectAll(filteredDataSource, checkAll) {
return this.handleSelectAll('left', filteredDataSource, !checkAll);
},
handleRightSelectAll: function handleRightSelectAll(filteredDataSource, checkAll) {
return this.handleSelectAll('right', filteredDataSource, !checkAll);
},
onLeftItemSelectAll: function onLeftItemSelectAll(selectedKeys, checkAll) {
return this.onItemSelectAll('left', selectedKeys, checkAll);
},
onRightItemSelectAll: function onRightItemSelectAll(selectedKeys, checkAll) {
return this.onItemSelectAll('right', selectedKeys, checkAll);
},
handleFilter: function handleFilter(direction, e) {
var value = e.target.value;
if ((0, _propsUtil.getListeners)(this).searchChange) {
(0, _warning2['default'])(false, 'Transfer', '`searchChange` in Transfer is deprecated. Please use `search` instead.');
this.$emit('searchChange', direction, e);
}
this.$emit('search', direction, value);
},
handleLeftFilter: function handleLeftFilter(e) {
this.handleFilter('left', e);
},
handleRightFilter: function handleRightFilter(e) {
this.handleFilter('right', e);
},
handleClear: function handleClear(direction) {
this.$emit('search', direction, '');
},
handleLeftClear: function handleLeftClear() {
this.handleClear('left');
},
handleRightClear: function handleRightClear() {
this.handleClear('right');
},
onItemSelect: function onItemSelect(direction, selectedKey, checked) {
var sourceSelectedKeys = this.sourceSelectedKeys,
targetSelectedKeys = this.targetSelectedKeys;
var holder = direction === 'left' ? [].concat((0, _toConsumableArray3['default'])(sourceSelectedKeys)) : [].concat((0, _toConsumableArray3['default'])(targetSelectedKeys));
var index = holder.indexOf(selectedKey);
if (index > -1) {
holder.splice(index, 1);
}
if (checked) {
holder.push(selectedKey);
}
this.handleSelectChange(direction, holder);
if (!this.selectedKeys) {
this.setState((0, _defineProperty3['default'])({}, this.getSelectedKeysName(direction), holder));
}
},
handleSelect: function handleSelect(direction, selectedItem, checked) {
(0, _warning2['default'])(false, 'Transfer', '`handleSelect` will be removed, please use `onSelect` instead.');
this.onItemSelect(direction, selectedItem.key, checked);
},
handleLeftSelect: function handleLeftSelect(selectedItem, checked) {
return this.handleSelect('left', selectedItem, checked);
},
handleRightSelect: function handleRightSelect(selectedItem, checked) {
return this.handleSelect('right', selectedItem, checked);
},
onLeftItemSelect: function onLeftItemSelect(selectedKey, checked) {
return this.onItemSelect('left', selectedKey, checked);
},
onRightItemSelect: function onRightItemSelect(selectedKey, checked) {
return this.onItemSelect('right', selectedKey, checked);
},
handleScroll: function handleScroll(direction, e) {
this.$emit('scroll', direction, e);
},
handleLeftScroll: function handleLeftScroll(e) {
this.handleScroll('left', e);
},
handleRightScroll: function handleRightScroll(e) {
this.handleScroll('right', e);
},
handleSelectChange: function handleSelectChange(direction, holder) {
var sourceSelectedKeys = this.sourceSelectedKeys,
targetSelectedKeys = this.targetSelectedKeys;
if (direction === 'left') {
this.$emit('selectChange', holder, targetSelectedKeys);
} else {
this.$emit('selectChange', sourceSelectedKeys, holder);
}
},
handleListStyle: function handleListStyle(listStyle, direction) {
if (typeof listStyle === 'function') {
return listStyle({ direction: direction });
}
return listStyle;
},
separateDataSource: function separateDataSource() {
var _$props2 = this.$props,
dataSource = _$props2.dataSource,
rowKey = _$props2.rowKey,
_$props2$targetKeys = _$props2.targetKeys,
targetKeys = _$props2$targetKeys === undefined ? [] : _$props2$targetKeys;
var leftDataSource = [];
var rightDataSource = new Array(targetKeys.length);
dataSource.forEach(function (record) {
if (rowKey) {
record.key = rowKey(record);
}
// rightDataSource should be ordered by targetKeys
// leftDataSource should be ordered by dataSource
var indexOfKey = targetKeys.indexOf(record.key);
if (indexOfKey !== -1) {
rightDataSource[indexOfKey] = record;
} else {
leftDataSource.push(record);
}
});
return {
leftDataSource: leftDataSource,
rightDataSource: rightDataSource
};
},
renderTransfer: function renderTransfer(transferLocale) {
var _classNames;
var h = this.$createElement;
var props = (0, _propsUtil.getOptionProps)(this);
var customizePrefixCls = props.prefixCls,
disabled = props.disabled,
_props$operations = props.operations,
operations = _props$operations === undefined ? [] : _props$operations,
showSearch = props.showSearch,
listStyle = props.listStyle,
operationStyle = props.operationStyle,
filterOption = props.filterOption,
lazy = props.lazy,
showSelectAll = props.showSelectAll;
var children = (0, _propsUtil.getComponentFromProp)(this, 'children', {}, false);
var getPrefixCls = this.configProvider.getPrefixCls;
var prefixCls = getPrefixCls('transfer', customizePrefixCls);
var renderEmpty = this.configProvider.renderEmpty;
var locale = this.getLocale(transferLocale, renderEmpty);
var sourceSelectedKeys = this.sourceSelectedKeys,
targetSelectedKeys = this.targetSelectedKeys,
$scopedSlots = this.$scopedSlots;
var body = $scopedSlots.body,
footer = $scopedSlots.footer;
var renderItem = props.render;
var _separateDataSource = this.separateDataSource(),
leftDataSource = _separateDataSource.leftDataSource,
rightDataSource = _separateDataSource.rightDataSource;
var leftActive = targetSelectedKeys.length > 0;
var rightActive = sourceSelectedKeys.length > 0;
var cls = (0, _classnames2['default'])(prefixCls, (_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-disabled', disabled), (0, _defineProperty3['default'])(_classNames, prefixCls + '-customize-list', !!children), _classNames));
var titles = this.getTitles(locale);
return h(
'div',
{ 'class': cls },
[h(_list2['default'], {
key: 'leftList',
attrs: { prefixCls: prefixCls + '-list',
titleText: titles[0],
dataSource: leftDataSource,
filterOption: filterOption,
checkedKeys: sourceSelectedKeys,
handleFilter: this.handleLeftFilter,
handleClear: this.handleLeftClear,
handleSelect: this.handleLeftSelect,
handleSelectAll: this.handleLeftSelectAll,
renderItem: renderItem,
showSearch: showSearch,
body: body,
renderList: children,
footer: footer,
lazy: lazy,
disabled: disabled,
direction: 'left',
showSelectAll: showSelectAll,
itemUnit: locale.itemUnit,
itemsUnit: locale.itemsUnit,
notFoundContent: locale.notFoundContent,
searchPlaceholder: locale.searchPlaceholder
},
style: this.handleListStyle(listStyle, 'left'), on: {
'itemSelect': this.onLeftItemSelect,
'itemSelectAll': this.onLeftItemSelectAll,
'scroll': this.handleLeftScroll
}
}), h(_operation2['default'], {
key: 'operation',
'class': prefixCls + '-operation',
attrs: { rightActive: rightActive,
rightArrowText: operations[0],
moveToRight: this.moveToRight,
leftActive: leftActive,
leftArrowText: operations[1],
moveToLeft: this.moveToLeft,
disabled: disabled
},
style: operationStyle }), h(_list2['default'], {
key: 'rightList',
attrs: { prefixCls: prefixCls + '-list',
titleText: titles[1],
dataSource: rightDataSource,
filterOption: filterOption,
checkedKeys: targetSelectedKeys,
handleFilter: this.handleRightFilter,
handleClear: this.handleRightClear,
handleSelect: this.handleRightSelect,
handleSelectAll: this.handleRightSelectAll,
renderItem: renderItem,
showSearch: showSearch,
body: body,
renderList: children,
footer: footer,
lazy: lazy,
disabled: disabled,
direction: 'right',
showSelectAll: showSelectAll,
itemUnit: locale.itemUnit,
itemsUnit: locale.itemsUnit,
notFoundContent: locale.notFoundContent,
searchPlaceholder: locale.searchPlaceholder
},
style: this.handleListStyle(listStyle, 'right'), on: {
'itemSelect': this.onRightItemSelect,
'itemSelectAll': this.onRightItemSelectAll,
'scroll': this.handleRightScroll
}
})]
);
}
},
render: function render() {
var h = arguments[0];
return h(_LocaleReceiver2['default'], {
attrs: {
componentName: 'Transfer',
defaultLocale: _default3['default'].Transfer
},
scopedSlots: { 'default': this.renderTransfer }
});
}
};
/* istanbul ignore next */
Transfer.install = function (Vue) {
Vue.use(_base2['default']);
Vue.component(Transfer.name, Transfer);
};
exports['default'] = Transfer;