UNPKG

@antdv/pro-utils

Version:

@antdv/pro-utils

71 lines (70 loc) 2.17 kB
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue"; import { ConfigProvider, Popover } from "ant-design-vue"; import { useConfigContextInject } from "ant-design-vue/lib/config-provider/context"; import { computed, defineComponent, ref } from "vue"; import { classNames } from "../../classNames/index.mjs"; import { DropdownFooter } from "../DropdownFooter/index.mjs"; import { useStyle } from "./style.mjs"; const FilterDropdown = defineComponent((props, { slots }) => { const { getPrefixCls } = useConfigContextInject(); const prefixCls = computed(() => getPrefixCls("pro-core-field-dropdown")); const { wrapSSR, hashId } = useStyle(prefixCls); const htmlRef = ref(null); return () => { const { label, footer, open, onOpenChange, disabled, footerRender, placement } = props; return wrapSSR(_createVNode(Popover, { "placement": placement, "trigger": ["click"], "open": open || false, "onOpenChange": onOpenChange, "overlayInnerStyle": { padding: 0 }, "content": _createVNode("div", { "ref": htmlRef, "class": classNames(`${prefixCls.value}-overlay`, { [`${prefixCls.value}-overlay-${placement}`]: placement, hashId: hashId.value }) }, [_createVNode(ConfigProvider, { "getPopupContainer": () => { return htmlRef.value || document.body; } }, { default: () => { var _a; return [_createVNode("div", { "class": `${prefixCls.value}-content ${hashId.value}`.trim() }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])]; } }), footer && _createVNode(DropdownFooter, _mergeProps({ "disabled": disabled, "footerRender": footerRender }, footer), null)]) }, { default: () => [_createVNode("span", { "class": `${prefixCls.value}-label ${hashId.value}`.trim() }, [label])] })); }; }, { props: ["label", "footer", "footerRender", "padding", "disabled", "onOpenChange", "open", "placement"] }); export { FilterDropdown };