UNPKG

tdesign-vue-next

Version:
1 lines 12 kB
{"version":3,"file":"collapse-panel.mjs","sources":["../../../components/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 { useContent, useTNodeJSX, usePrefixClass, useCollapseAnimation } from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n name: 'TCollapsePanel',\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 => 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 handleHeaderRightContentClick = (e: MouseEvent) => {\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 renderHeaderRightContent = () => {\n const headerRightContent = renderTNodeJSX('headerRightContent');\n\n return headerRightContent ? <div onClick={handleHeaderRightContentClick}>{headerRightContent}</div> : null;\n };\n const renderHeader = () => {\n const cls = [\n `${componentName.value}__header`,\n {\n [clickableClass.value]: expandOnRowClick.value && !isDisabled.value,\n },\n ];\n\n return (\n <div class={cls} onClick={handleClick}>\n {expandIconPlacement.value === 'left' && renderIcon()}\n {renderTNodeJSX('header')}\n {renderBlank()}\n {renderHeaderRightContent()}\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":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","setup","slots","_ref","renderTNodeJSX","useTNodeJSX","renderContent","useContent","componentName","usePrefixClass","disableClass","clickableClass","transitionClass","_toRefs","toRefs","value","disabled","destroyOnCollapse","collapseValue","inject","updateCollapseValue","getUniqId","_inject","defaultExpandAll","disableAll","expandIconPlacement","expandOnRowClick","renderParentTNode","innerValue","_useCollapseAnimation","useCollapseAnimation","beforeEnter","enter","afterEnter","beforeLeave","leave","afterLeave","iconRef","ref","isDisabled","computed","isActive","Array","includes","classes","_defineProperty","panelExpandIcon","expandIcon","handleClick","e","canExpand","currentTarget","stopPropagation","handleHeaderRightContentClick","renderDefaultIcon","_createVNode","FakeArrow","concat","renderIcon","tNodeRender","renderBlank","renderHeaderRightContent","headerRightContent","renderHeader","cls","renderBodyByNormal","_withDirectives","_vShow","renderBodyDestroyOnCollapse","renderBody","_slot","Transition"],"mappings":"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"}