UNPKG

@arco-vue-pro-components/pro-components

Version:
73 lines (72 loc) 2.51 kB
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 };