PanelContent.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { createVNode as _createVNode } from "vue";
  2. import { defineComponent, shallowRef, watchEffect } from 'vue';
  3. import { collapsePanelProps } from './commonProps';
  4. import classNames from '../_util/classNames';
  5. export default defineComponent({
  6. compatConfig: {
  7. MODE: 3
  8. },
  9. name: 'PanelContent',
  10. props: collapsePanelProps(),
  11. setup(props, _ref) {
  12. let {
  13. slots
  14. } = _ref;
  15. const rendered = shallowRef(false);
  16. watchEffect(() => {
  17. if (props.isActive || props.forceRender) {
  18. rendered.value = true;
  19. }
  20. });
  21. return () => {
  22. var _a;
  23. if (!rendered.value) return null;
  24. const {
  25. prefixCls,
  26. isActive,
  27. role
  28. } = props;
  29. return _createVNode("div", {
  30. "class": classNames(`${prefixCls}-content`, {
  31. [`${prefixCls}-content-active`]: isActive,
  32. [`${prefixCls}-content-inactive`]: !isActive
  33. }),
  34. "role": role
  35. }, [_createVNode("div", {
  36. "class": `${prefixCls}-content-box`
  37. }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);
  38. };
  39. }
  40. });