ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
200 lines (172 loc) • 6.3 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _DownOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/DownOutlined"));
var _checkbox = _interopRequireDefault(require("../checkbox"));
var _dropdown = _interopRequireDefault(require("../dropdown"));
var _menu = _interopRequireDefault(require("../menu"));
var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
var _interface = require("./interface");
var _BaseMixin = _interopRequireDefault(require("../_util/BaseMixin"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function checkSelection(_ref) {
var store = _ref.store,
getCheckboxPropsByItem = _ref.getCheckboxPropsByItem,
getRecordKey = _ref.getRecordKey,
data = _ref.data,
type = _ref.type,
byDefaultChecked = _ref.byDefaultChecked;
return byDefaultChecked ? data[type](function (item, i) {
return getCheckboxPropsByItem(item, i).defaultChecked;
}) : data[type](function (item, i) {
return store.selectedRowKeys.indexOf(getRecordKey(item, i)) >= 0;
});
}
function getIndeterminateState(props) {
var store = props.store,
data = props.data;
if (!data.length) {
return false;
}
var someCheckedNotByDefaultChecked = checkSelection(_extends(_extends({}, props), {
data: data,
type: 'some',
byDefaultChecked: false
})) && !checkSelection(_extends(_extends({}, props), {
data: data,
type: 'every',
byDefaultChecked: false
}));
var someCheckedByDefaultChecked = checkSelection(_extends(_extends({}, props), {
data: data,
type: 'some',
byDefaultChecked: true
})) && !checkSelection(_extends(_extends({}, props), {
data: data,
type: 'every',
byDefaultChecked: true
}));
if (store.selectionDirty) {
return someCheckedNotByDefaultChecked;
}
return someCheckedNotByDefaultChecked || someCheckedByDefaultChecked;
}
function getCheckState(props) {
var store = props.store,
data = props.data;
if (!data.length) {
return false;
}
if (store.selectionDirty) {
return checkSelection(_extends(_extends({}, props), {
data: data,
type: 'every',
byDefaultChecked: false
}));
}
return checkSelection(_extends(_extends({}, props), {
data: data,
type: 'every',
byDefaultChecked: false
})) || checkSelection(_extends(_extends({}, props), {
data: data,
type: 'every',
byDefaultChecked: true
}));
}
var _default2 = (0, _vue.defineComponent)({
name: 'SelectionCheckboxAll',
mixins: [_BaseMixin.default],
inheritAttrs: false,
props: _interface.SelectionCheckboxAllProps,
setup: function setup(props) {
return {
defaultSelections: [],
checked: (0, _vue.computed)(function () {
return getCheckState(props);
}),
indeterminate: (0, _vue.computed)(function () {
return getIndeterminateState(props);
})
};
},
created: function created() {
var props = this.$props;
this.defaultSelections = props.hideDefaultSelections ? [] : [{
key: 'all',
text: props.locale.selectAll
}, {
key: 'invert',
text: props.locale.selectInvert
}];
},
methods: {
handleSelectAllChange: function handleSelectAllChange(e) {
var checked = e.target.checked;
this.$emit('select', checked ? 'all' : 'removeAll', 0, null);
},
renderMenus: function renderMenus(selections) {
var _this = this;
return selections.map(function (selection, index) {
return (0, _vue.createVNode)(_menu.default.Item, {
"key": selection.key || index
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"onClick": function onClick() {
_this.$emit('select', selection.key, index, selection.onSelect);
}
}, [selection.text])];
}
});
});
}
},
render: function render() {
var _this2 = this;
var disabled = this.disabled,
prefixCls = this.prefixCls,
selections = this.selections,
getPopupContainer = this.getPopupContainer,
checked = this.checked,
indeterminate = this.indeterminate;
var selectionPrefixCls = "".concat(prefixCls, "-selection");
var customSelections = null;
if (selections) {
var newSelections = Array.isArray(selections) ? this.defaultSelections.concat(selections) : this.defaultSelections;
var menu = (0, _vue.createVNode)(_menu.default, {
"class": "".concat(selectionPrefixCls, "-menu"),
"selectedKeys": []
}, {
default: function _default() {
return [_this2.renderMenus(newSelections)];
}
});
customSelections = newSelections.length > 0 ? (0, _vue.createVNode)(_dropdown.default, {
"getPopupContainer": getPopupContainer,
"overlay": menu
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(selectionPrefixCls, "-down")
}, [(0, _vue.createVNode)(_DownOutlined.default, null, null)])];
}
}) : null;
}
return (0, _vue.createVNode)("div", {
"class": selectionPrefixCls
}, [(0, _vue.createVNode)(_checkbox.default, {
"class": (0, _classNames2.default)(_defineProperty({}, "".concat(selectionPrefixCls, "-select-all-custom"), customSelections)),
"checked": checked,
"indeterminate": indeterminate,
"disabled": disabled,
"onChange": this.handleSelectAllChange
}, null), customSelections]);
}
});
exports.default = _default2;
;