5e68c427a1877196f96ec52092145549b457f3e3c8c9920e6ea69ecf668795c21c2ca0a43995f858ead7e7ab42fd7e6eaadc30998f652b97676646be29641f 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { defineComponent, inject, createVNode, Comment } from 'vue';
  2. import { CASCADER_PANEL_INJECTION_KEY } from './types.mjs';
  3. import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
  4. import { isArray } from '@vue/shared';
  5. function isVNodeEmpty(vnodes) {
  6. return !!(isArray(vnodes) ? vnodes.every(({
  7. type
  8. }) => type === Comment) : (vnodes == null ? void 0 : vnodes.type) === Comment);
  9. }
  10. var NodeContent = defineComponent({
  11. name: "NodeContent",
  12. props: {
  13. node: {
  14. type: Object,
  15. required: true
  16. }
  17. },
  18. setup(props) {
  19. const ns = useNamespace("cascader-node");
  20. const {
  21. renderLabelFn
  22. } = inject(CASCADER_PANEL_INJECTION_KEY);
  23. const {
  24. node
  25. } = props;
  26. const {
  27. data,
  28. label: nodeLabel
  29. } = node;
  30. const label = () => {
  31. const renderLabel = renderLabelFn == null ? void 0 : renderLabelFn({
  32. node,
  33. data
  34. });
  35. return isVNodeEmpty(renderLabel) ? nodeLabel : renderLabel != null ? renderLabel : nodeLabel;
  36. };
  37. return () => createVNode("span", {
  38. "class": ns.e("label")
  39. }, [label()]);
  40. }
  41. });
  42. export { NodeContent as default };
  43. //# sourceMappingURL=node-content.mjs.map