xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 6.8 kB
Source Map (JSON)
{"version":3,"file":"Panel.mjs","sources":["../../../src/cascader/components/Panel.tsx"],"sourcesContent":["import { defineComponent, PropType, computed, h } from 'vue';\n\nimport Item from './Item';\nimport { TreeNode, CascaderContextType } from '../interface';\nimport CascaderProps from '../props';\nimport { usePrefixClass, useConfig } from '../../hooks/useConfig';\nimport { useTNodeDefault } from '../../hooks/tnode';\nimport { getDefaultNode } from '../../utils/render-tnode';\nimport { getPanels } from '../core/helper';\nimport { expendClickEffect, valueChangeEffect } from '../core/effect';\n\nexport default defineComponent({\n name: 'XCascaderSubPanel',\n props: {\n option: CascaderProps.option,\n empty: CascaderProps.empty,\n trigger: CascaderProps.trigger,\n onChange: CascaderProps.onChange,\n loading: CascaderProps.loading,\n loadingText: CascaderProps.loadingText,\n cascaderContext: {\n type: Object as PropType<CascaderContextType>,\n },\n },\n\n setup(props) {\n const renderTNodeJSXDefault = useTNodeDefault();\n const COMPONENT_NAME = usePrefixClass('cascader');\n const { globalConfig } = useConfig('cascader');\n\n const panels = computed(() => getPanels(props.cascaderContext.treeNodes));\n\n const handleExpand = (node: TreeNode, trigger: 'hover' | 'click') => {\n const { trigger: propsTrigger, cascaderContext } = props;\n expendClickEffect(propsTrigger, trigger, node, cascaderContext);\n };\n\n const renderItem = (node: TreeNode, index: number) => {\n const optionChild = node.data.content\n ? getDefaultNode(node.data.content(h))\n : renderTNodeJSXDefault('option', {\n params: { item: node.data, index },\n });\n return (\n <Item\n key={node.value}\n node={node}\n optionChild={optionChild}\n cascaderContext={props.cascaderContext}\n onClick={() => {\n handleExpand(node, 'click');\n }}\n onMouseenter={() => {\n handleExpand(node, 'hover');\n }}\n onChange={() => {\n valueChangeEffect(node, props.cascaderContext);\n }}\n />\n );\n };\n\n const renderList = (treeNodes: TreeNode[], isFilter = false, segment = true, index = 1) => (\n <ul\n class={[\n `${COMPONENT_NAME.value}__menu`,\n 'narrow-scrollbar',\n {\n [`${COMPONENT_NAME.value}__menu--segment`]: segment,\n [`${COMPONENT_NAME.value}__menu--filter`]: isFilter,\n },\n ]}\n key={`${COMPONENT_NAME}__menu${index}`}\n >\n {treeNodes.map((node: TreeNode) => renderItem(node, index))}\n </ul>\n );\n\n const renderPanels = () => {\n const { inputVal, treeNodes } = props.cascaderContext;\n return inputVal\n ? renderList(treeNodes, true)\n : panels.value.map((treeNodes, index: number) =>\n renderList(treeNodes, false, index !== panels.value.length - 1, index),\n );\n };\n\n return () => {\n let content;\n if (props.loading) {\n content = renderTNodeJSXDefault(\n 'loadingText',\n <div class={`${COMPONENT_NAME.value}__panel--empty`}>{globalConfig.value.loadingText}</div>,\n );\n } else {\n content = panels.value.length\n ? renderPanels()\n : renderTNodeJSXDefault(\n 'empty',\n <div class={`${COMPONENT_NAME.value}__panel--empty`}>{globalConfig.value.empty}</div>,\n );\n }\n return (\n <div\n class={[\n `${COMPONENT_NAME.value}__panel`,\n { [`${COMPONENT_NAME.value}--normal`]: panels.value.length && !props.loading },\n ]}\n >\n {content}\n </div>\n );\n };\n },\n});\n"],"names":["name","props","cascaderContext","type","params","index","handleExpand","valueChangeEffect","_createVNode","content"],"mappings":"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"}