@arco-vue-pro-components/pro-components
Version:
基于@arco-design/web-vue组件的高级组件,包括pro-table
73 lines (72 loc) • 2.51 kB
JavaScript
import { defineComponent, toRefs, inject, isVNode, createVNode, createTextVNode } from "vue";
import { Alert as Alert$1, Space } from "@arco-design/web-vue";
import { useI18n } from "../../locale/index.js";
import { getPrefixCls } from "../../_utils/index.js";
import { proTableInjectionKey } from "../form/context.js";
var Alert = defineComponent({
name: "TableAlert",
props: {
alwaysShowAlert: {
type: Boolean,
default: false
},
alertRender: {
type: [Function, Boolean]
}
},
setup(props, {
slots
}) {
const {
alwaysShowAlert
} = toRefs(props);
const tableCtx = inject(proTableInjectionKey, {});
const {
getMessage
} = useI18n();
const prefixCls = getPrefixCls("pro-table-alert");
const render = () => {
var _a;
const data = {
selectedRowKeys: (tableCtx == null ? void 0 : tableCtx.selectedRowKeys) || [],
selectedRows: (tableCtx == null ? void 0 : tableCtx.selectedRows) || [],
onCleanSelected: () => {
var _a2, _b;
(_b = (_a2 = tableCtx == null ? void 0 : tableCtx.action) == null ? void 0 : _a2.clearSelected) == null ? void 0 : _b.call(_a2);
}
};
if (slots["alert-render"]) {
return slots["alert-render"](data);
}
const dom = typeof props.alertRender === "function" ? props.alertRender(data) : props.alertRender;
if (isVNode(dom)) {
return dom;
}
if (dom === false || (tableCtx == null ? void 0 : tableCtx.selectedRowKeys) && ((_a = tableCtx == null ? void 0 : tableCtx.selectedRowKeys) == null ? void 0 : _a.length) < 1 && !alwaysShowAlert.value) {
return null;
}
return createVNode(Alert$1, {
"class": `${prefixCls}-container`,
"closable": false
}, {
default: () => [createVNode(Space, null, {
default: () => [getMessage("alert.selected", "\u5DF2\u9009\u62E9"), (tableCtx == null ? void 0 : tableCtx.selectedRowKeys) && (tableCtx == null ? void 0 : tableCtx.selectedRowKeys.length), getMessage("alert.item", "\u9879"), createTextVNode("\xA0\xA0")]
})],
action: () => {
return createVNode("a", {
"class": `${prefixCls}-clear`,
"onClick": data.onCleanSelected,
"key": "0"
}, [getMessage("alert.clear", "\u6E05\u7A7A")]);
}
});
};
return {
render
};
},
render() {
return this.render();
}
});
export { Alert as default };