vue-ant-patterns
Version:
vue-ant-patterns
174 lines (151 loc) • 4.86 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _antDesignVue = require('ant-design-vue');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var Option = _antDesignVue.Select.Option;
var Group = _antDesignVue.Checkbox.Group;
var RadioGroup = _antDesignVue.Radio.Group;
exports['default'] = {
methods: {
change: function change(v, o) {
var _$props = this.$props,
multiple = _$props.multiple,
keys = _$props.keys;
var vType = this.vType;
if (vType === 'radio') {
v = v.target.value;
}
var options = this.options;
var _keys = (0, _slicedToArray3['default'])(keys, 2),
k = _keys[0],
n = _keys[1];
var opt = null;
if (vType === 'radio') {
opt = options.find(function (it) {
return it[k] === v ? it : null;
});
if (opt) {
opt = [(0, _extends3['default'])({}, opt)];
} else {
opt = [];
}
} else {
opt = options.map(function (it) {
return (v || []).includes(it[k]) ? (0, _extends3['default'])({}, it) : null;
}).filter(function (T) {
return T;
});
}
this.sValue = v;
this.$emit('change', v);
this.$emit('changeValue', { value: v, options: (0, _extends3['default'])([], opt) });
},
getOptions: function getOptions() {
var options = this.options,
sValue = this.sValue,
$listeners = this.$listeners;
var _$props2 = this.$props,
prefixCls = _$props2.prefixCls,
keys = _$props2.keys,
disabled = _$props2.disabled,
readonly = _$props2.readonly,
allowClear = _$props2.allowClear,
placeholder = _$props2.placeholder,
type = _$props2.type;
var _keys2 = (0, _slicedToArray3['default'])(keys, 2),
k = _keys2[0],
n = _keys2[1];
var transData = options.map(function (it) {
var value = it[k],
label = it[n];
return {
label: label,
value: value
};
});
var propsObject = {
props: {
options: transData,
value: sValue,
disabled: disabled,
readonly: readonly,
allowClear: allowClear,
placeholder: placeholder,
optionLabelProp: n
},
'class': prefixCls + '-biz-table-collection',
on: (0, _extends3['default'])({}, $listeners, {
change: this.change
})
};
return propsObject;
},
render$select: function render$select() {
var h = this.$createElement;
var _$props3 = this.$props,
keys = _$props3.keys,
multiple = _$props3.multiple;
var options = this.options,
sMultiple = this.sMultiple,
vType = this.vType,
sValue = this.sValue;
var _keys3 = (0, _slicedToArray3['default'])(keys, 2),
k = _keys3[0],
n = _keys3[1];
var propsObject = this.getOptions();
var isSelectBox = vType === 'selectCheckbox';
delete propsObject.props.options;
propsObject.props.mode = sMultiple;
// propsObject.on = {
// ...propsObject.on,
// // deselect: (value) => {
// // opt = options
// // .map(it => {
// // return (v || []).includes(it[k]) ? Object.assign({}, it) : null;
// // })
// // .filter(T => T);
// // },
// };
return h(
_antDesignVue.Select,
propsObject,
[options.map(function (it) {
var key = it[k],
name = it[n];
var isCk = multiple ? (sValue || []).includes(key) : sValue === key;
var optProps = {
key: key,
attrs: { name: name }
};
var ckProps = {
props: { checked: isCk }
};
return h(
Option,
optProps,
[isSelectBox ? h(_antDesignVue.Checkbox, ckProps) : null, ' ', name]
);
})]
);
},
render$checkbox: function render$checkbox() {
var h = this.$createElement;
var propsObject = this.getOptions();
return h(Group, propsObject);
},
render$radio: function render$radio() {
var h = this.$createElement;
var propsObject = this.getOptions();
return h(RadioGroup, propsObject);
},
render$selectCheckbox: function render$selectCheckbox() {
return this.render$select();
}
}
};