element-plus
Version:
A Component Library for Vue 3
46 lines (43 loc) • 1.2 kB
JavaScript
import { defineComponent, inject, createVNode, Comment } from 'vue';
import { CASCADER_PANEL_INJECTION_KEY } from './types.mjs';
import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
import { isArray } from '@vue/shared';
function isVNodeEmpty(vnodes) {
return !!(isArray(vnodes) ? vnodes.every(({
type
}) => type === Comment) : (vnodes == null ? void 0 : vnodes.type) === Comment);
}
var NodeContent = defineComponent({
name: "NodeContent",
props: {
node: {
type: Object,
required: true
}
},
setup(props) {
const ns = useNamespace("cascader-node");
const {
renderLabelFn
} = inject(CASCADER_PANEL_INJECTION_KEY);
const {
node
} = props;
const {
data,
label: nodeLabel
} = node;
const label = () => {
const renderLabel = renderLabelFn == null ? void 0 : renderLabelFn({
node,
data
});
return isVNodeEmpty(renderLabel) ? nodeLabel : renderLabel != null ? renderLabel : nodeLabel;
};
return () => createVNode("span", {
"class": ns.e("label")
}, [label()]);
}
});
export { NodeContent as default };
//# sourceMappingURL=node-content.mjs.map