@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
187 lines (159 loc) • 5.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _iconsVue = require("@ant-design/icons-vue/lib/icons");
var _divider = _interopRequireDefault(require("../../../divider"));
var _button = _interopRequireDefault(require("../../../button"));
var _dropdown = _interopRequireDefault(require("../../../dropdown"));
var _menu = _interopRequireDefault(require("../../../menu"));
var _useConfigInject2 = _interopRequireDefault(require("../../../_util/hooks/useConfigInject"));
var _vueTypes = _interopRequireDefault(require("../../../_util/vue-types"));
var _propsUtil = require("../../../_util/props-util");
var _useTableContext = require("../hooks/use-table-context");
var _const = require("../const");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: 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); }
var _default2 = (0, _vue.defineComponent)({
name: 'ATableAction',
props: {
actions: {
type: Array,
default: null
},
dropDownActions: {
type: Array,
default: null
},
divider: _vueTypes.default.bool.def(true),
outside: _vueTypes.default.bool,
trigger: {
type: Array,
default: function _default() {
return ['click'];
}
},
prefixCls: String
},
setup: function setup(props) {
var _useConfigInject = (0, _useConfigInject2.default)('table-pro-action', props),
prefixClsNew = _useConfigInject.prefixCls;
var table = {};
if (!props.outside) {
table = (0, _useTableContext.useTableContext)();
} // const getSize = computed(() => {
// const size = table?.getSize?.();
// if (size === 'middle' || !size) {
// return;
// }
// if (size === 'default') {
// return 'large';
// }
// return size;
// });
var getActions = (0, _vue.computed)(function () {
return (props.actions || []).map(function (action) {
var popConfirm = action.popConfirm; // const size = unref(getSize);
return _extends(_extends(_extends({
type: 'link'
}, action), popConfirm || {}), {
onConfirm: popConfirm === null || popConfirm === void 0 ? void 0 : popConfirm.confirm,
onCancel: popConfirm === null || popConfirm === void 0 ? void 0 : popConfirm.cancel,
enable: !!popConfirm
});
});
});
var getDropList = (0, _vue.computed)(function () {
return (props.dropDownActions || []).map(function (action, index) {
var label = action.label;
return _extends(_extends({}, action), {
text: label,
divider: index < props.dropDownActions.length - 1 ? props.divider : false
});
});
});
var getAlign = (0, _vue.computed)(function () {
var _a, _b, _c;
var columns = ((_b = (_a = table) === null || _a === void 0 ? void 0 : _a.getColumns) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
var actionColumn = columns.find(function (item) {
return item.flag === _const.ACTION_COLUMN_FLAG;
});
return (_c = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.align) !== null && _c !== void 0 ? _c : 'left';
});
return {
prefixClsNew: prefixClsNew,
getActions: getActions,
getDropList: getDropList,
getAlign: getAlign
};
},
render: function render() {
var _this = this;
var defaultSlot = [];
this.getActions.forEach(function (action, index) {
var itemNode = (0, _vue.createVNode)(_button.default, action, {
default: function _default() {
return [action.label];
}
});
defaultSlot.push(itemNode);
if (_this.divider && index < _this.getActions.length - (_this.dropDownActions && _this.getDropList.length ? 0 : 1)) {
defaultSlot.push((0, _vue.createVNode)(_divider.default, {
"type": "vertical"
}, null));
}
});
var dropDownNode = null;
if (this.dropDownActions && this.getDropList.length) {
var dropdownDefault = null;
var dropdownMoreNode = (0, _propsUtil.getSlot)(this, 'more');
if (dropdownMoreNode.length) {
dropdownDefault = dropdownMoreNode;
} else {
dropdownDefault = (0, _vue.createVNode)(_button.default, {
"type": "link",
"size": "small"
}, {
default: function _default() {
return [(0, _vue.createVNode)(_iconsVue.MoreOutlined, {
"class": "icon-more"
}, null)];
}
});
}
var overlayInnerNode = [];
this.getDropList.forEach(function (dropItem) {
overlayInnerNode.push((0, _vue.createVNode)(_menu.default.Item, null, {
default: function _default() {
return [(0, _vue.createVNode)("a", {
"href": "javascript:;",
"onClick": dropItem.onClick
}, [dropItem.label])];
}
}));
});
var overlayNode = (0, _vue.createVNode)(_menu.default, null, {
default: function _default() {
return [overlayInnerNode];
}
});
var dropdownSlots = {
default: function _default() {
return dropdownDefault;
},
overlay: function overlay() {
return overlayNode;
}
};
dropDownNode = (0, _vue.createVNode)(_dropdown.default, {
"trigger": this.trigger
}, dropdownSlots);
}
return (0, _vue.createVNode)("div", {
"class": [this.prefixClsNew, this.getAlign]
}, [defaultSlot, dropDownNode]);
}
});
exports.default = _default2;