{"version":3,"file":"collapse-panel.mjs","sources":["../../src/collapse/collapse-panel.tsx"],"sourcesContent":["import { defineComponent, ref, computed, inject, Ref, toRefs, Transition } from 'vue';\nimport props from './collapse-panel-props';\nimport FakeArrow from '../common-components/fake-arrow';\nimport { CollapseValue, TdCollapsePanelProps } from './type';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport useCollapseAnimation from '../hooks/useCollapseAnimation';\n\nexport default defineComponent({\n  name: 'XCollapsePanel',\n  props,\n  setup(props: TdCollapsePanelProps, { slots }) {\n    const renderTNodeJSX = useTNodeJSX();\n    const renderContent = useContent();\n    const componentName = usePrefixClass('collapse-panel');\n    const disableClass = usePrefixClass('is-disabled');\n    const clickableClass = usePrefixClass('is-clickable');\n    const transitionClass = usePrefixClass('slide-down');\n    const { value, disabled, destroyOnCollapse } = toRefs(props);\n    const collapseValue: Ref<CollapseValue> = inject('collapseValue');\n    const updateCollapseValue: Function = inject('updateCollapseValue');\n    const getUniqId: Function = inject('getUniqId', () => undefined, false);\n    const {\n      defaultExpandAll,\n      disabled: disableAll,\n      expandIconPlacement,\n      expandOnRowClick,\n    } = inject<any>('collapseProps');\n    const renderParentTNode: Function = inject('renderParentTNode');\n    const innerValue = value.value || getUniqId();\n    if (defaultExpandAll.value) {\n      updateCollapseValue(innerValue);\n    }\n    const { beforeEnter, enter, afterEnter, beforeLeave, leave, afterLeave } = useCollapseAnimation();\n    const iconRef = ref<HTMLElement>();\n    const isDisabled = computed(() => disabled.value || disableAll.value);\n    const isActive = computed(() =>\n      collapseValue.value instanceof Array\n        ? collapseValue.value.includes(innerValue)\n        : collapseValue.value === innerValue,\n    );\n    const classes = computed(() => {\n      return [componentName.value, { [disableClass.value]: isDisabled.value }];\n    });\n    const panelExpandIcon = computed(() => slots.expandIcon || props.expandIcon);\n    const handleClick = (e: MouseEvent) => {\n      const canExpand = expandOnRowClick.value || e.currentTarget === iconRef.value;\n      if (canExpand && !isDisabled.value) {\n        updateCollapseValue(innerValue);\n      }\n      e.stopPropagation();\n    };\n    const renderDefaultIcon = () => {\n      return <FakeArrow overlayClassName={`${componentName.value}__icon--default`} />;\n    };\n    const renderIcon = () => {\n      const tNodeRender = panelExpandIcon.value === undefined ? renderParentTNode : renderTNodeJSX;\n      return (\n        <div\n          ref={iconRef}\n          class={`${componentName.value}__icon ${componentName.value}__icon--${expandIconPlacement.value} ${\n            isActive.value ? `${componentName.value}__icon--active` : ''\n          }`}\n          onClick={handleClick}\n        >\n          {tNodeRender('expandIcon', renderDefaultIcon())}\n        </div>\n      );\n    };\n    const renderBlank = () => {\n      return <div class={`${componentName.value}__header--blank`}></div>;\n    };\n    const renderHeader = () => {\n      const cls = [\n        `${componentName.value}__header`,\n        {\n          [clickableClass.value]: expandOnRowClick.value && !isDisabled.value,\n        },\n      ];\n      return (\n        <div class={cls} onClick={handleClick}>\n          {expandIconPlacement.value === 'left' && renderIcon()}\n          {renderTNodeJSX('header')}\n          {renderBlank()}\n          {renderTNodeJSX('headerRightContent')}\n          {expandIconPlacement.value === 'right' && renderIcon()}\n        </div>\n      );\n    };\n    const renderBodyByNormal = () => {\n      return (\n        <div v-show={isActive.value} class={`${componentName.value}__body`}>\n          <div class={`${componentName.value}__content`}>{renderContent('default', 'content')}</div>\n        </div>\n      );\n    };\n    const renderBodyDestroyOnCollapse = () => {\n      return isActive.value ? (\n        <div class={`${componentName.value}__body`}>\n          <div class={`${componentName.value}__content`}>{renderContent('default', 'content')}</div>\n        </div>\n      ) : null;\n    };\n    const renderBody = () => {\n      return destroyOnCollapse.value ? renderBodyDestroyOnCollapse() : renderBodyByNormal();\n    };\n    return () => {\n      return (\n        <div class={classes.value}>\n          <div class={`${componentName.value}__wrapper`}>\n            {renderHeader()}\n            <Transition\n              name={transitionClass.value}\n              onBeforeEnter={beforeEnter}\n              onEnter={enter}\n              onAfterEnter={afterEnter}\n              onBeforeLeave={beforeLeave}\n              onLeave={leave}\n              onAfterLeave={afterLeave}\n            >\n              {renderBody()}\n            </Transition>\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["_isVNode","name","props","setup","_createVNode"],"mappings":"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"}