node-content.mjs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { isArray } from "../../../utils/types.mjs";
  2. import { useNamespace } from "../../../hooks/use-namespace/index.mjs";
  3. import { CASCADER_PANEL_INJECTION_KEY } from "./types.mjs";
  4. import { Comment, createVNode, defineComponent, inject } from "vue";
  5. //#region ../../packages/components/cascader-panel/src/node-content.tsx
  6. function isVNodeEmpty(vnodes) {
  7. return !!(isArray(vnodes) ? vnodes.every(({ type }) => type === Comment) : vnodes?.type === Comment);
  8. }
  9. var node_content_default = /* @__PURE__ */ defineComponent({
  10. name: "NodeContent",
  11. props: { node: {
  12. type: Object,
  13. required: true
  14. } },
  15. setup(props) {
  16. const ns = useNamespace("cascader-node");
  17. const { renderLabelFn } = inject(CASCADER_PANEL_INJECTION_KEY);
  18. const { node } = props;
  19. const { data, label: nodeLabel } = node;
  20. const label = () => {
  21. const renderLabel = renderLabelFn?.({
  22. node,
  23. data
  24. });
  25. return isVNodeEmpty(renderLabel) ? nodeLabel : renderLabel ?? nodeLabel;
  26. };
  27. return () => createVNode("span", { "class": ns.e("label") }, [label()]);
  28. }
  29. });
  30. //#endregion
  31. export { node_content_default as default };
  32. //# sourceMappingURL=node-content.mjs.map