UNPKG

tdesign-vue-next

Version:
1 lines 21.4 kB
{"version":3,"file":"Panel.mjs","sources":["../../../../components/cascader/components/Panel.tsx"],"sourcesContent":["import { defineComponent, PropType, computed, h, shallowRef, onUnmounted, watch } from 'vue';\n\nimport Item from './Item';\nimport { TreeNode, CascaderContextType, FilterState, FilterValue } from '../types';\nimport CascaderProps from '../props';\nimport { useConfig, usePrefixClass, useTNodeDefault, useTNodeJSX } from '@tdesign/shared-hooks';\n\nimport { getDefaultNode } from '@tdesign/shared-utils';\nimport {\n getPanels,\n expandClickEffect,\n valueChangeEffect,\n isFilterActive,\n isFilterLevelActive,\n filterOptions,\n FILTER_INACTIVE_LEVEL,\n} from '../utils';\n\nexport default defineComponent({\n name: 'TCascaderSubPanel',\n props: {\n option: CascaderProps.option,\n options: CascaderProps.options,\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 setup(props) {\n const renderTNodeJSXDefault = useTNodeDefault();\n const renderTNodeJSX = useTNodeJSX();\n const COMPONENT_NAME = usePrefixClass('cascader');\n const { globalConfig } = useConfig('cascader');\n\n const panels = computed(() => getPanels(props.cascaderContext.treeNodes));\n\n // shallowRef:状态更新通过整体替换触发响应式\n const filterState = shallowRef<FilterState | null>(null);\n\n const hasActiveFilter = computed(() => {\n const state = filterState.value;\n return state && hasAnyActiveFilter(state.filters);\n });\n\n const getFilteredNodes = (nodes: TreeNode[], index: number): TreeNode[] => {\n const state = filterState.value;\n if (!state) return nodes;\n const filter = state.filters[index];\n if (!filter) return nodes;\n return filterOptions(nodes, filter, index);\n };\n\n const hasAnyActiveFilter = (filters: Record<number, FilterValue>): boolean => {\n return Object.values(filters).some((f) => isFilterActive(f));\n };\n\n const clearExpiredFilters = (\n filters: Record<number, FilterValue>,\n maxLevel: number,\n ): Record<number, FilterValue> => {\n return Object.fromEntries(Object.entries(filters).filter(([panelIndex]) => Number(panelIndex) <= maxLevel));\n };\n\n const calculateCascadeMaxLevel = (\n panelIndex: number,\n filteredNodes: TreeNode[],\n currentMaxLevel: number,\n ): number => {\n if (filteredNodes.length === 0) {\n return panelIndex;\n }\n return Math.max(panelIndex, currentMaxLevel);\n };\n\n const handleFilter = (index: number, filter: FilterValue) => {\n const prev = filterState.value;\n\n let filters: Record<number, FilterValue> = { ...prev?.filters };\n if (isFilterActive(filter)) {\n filters[index] = filter;\n } else {\n delete filters[index];\n }\n\n let maxLevel = prev?.maxLevel ?? FILTER_INACTIVE_LEVEL;\n\n if (isFilterActive(filter)) {\n const currentNodes = panels.value[index] || [];\n const filteredNodes = filterOptions(currentNodes, filter, index);\n maxLevel = calculateCascadeMaxLevel(index, filteredNodes, maxLevel);\n } else if (!hasAnyActiveFilter(filters)) {\n maxLevel = FILTER_INACTIVE_LEVEL;\n }\n\n if (maxLevel < (prev?.maxLevel ?? FILTER_INACTIVE_LEVEL)) {\n filters = clearExpiredFilters(filters, maxLevel);\n }\n\n filterState.value = { filters, maxLevel };\n };\n\n const shouldShowPanel = (index: number): boolean => {\n const state = filterState.value;\n if (!hasActiveFilter.value || !state || !isFilterLevelActive(state.maxLevel)) {\n return true;\n }\n return index <= state.maxLevel;\n };\n\n const handleExpand = (node: TreeNode, trigger: 'hover' | 'click', level: number) => {\n const state = filterState.value;\n\n const { children } = node;\n if (\n state &&\n isFilterLevelActive(state.maxLevel) &&\n props.trigger === trigger &&\n Array.isArray(children) &&\n children.length\n ) {\n const childLevel = level + 1;\n if (childLevel > state.maxLevel) {\n const cleanedFilters = clearExpiredFilters(state.filters, childLevel);\n filterState.value = { filters: cleanedFilters, maxLevel: childLevel };\n }\n }\n\n expandClickEffect(props.trigger, trigger, node, props.cascaderContext);\n };\n\n const onFilterCallbacks = new Map<number, (filter: FilterValue) => void>();\n const getOnFilterCallback = (index: number) => {\n let callback = onFilterCallbacks.get(index);\n if (!callback) {\n callback = (filter: FilterValue) => handleFilter(index, filter);\n onFilterCallbacks.set(index, callback);\n }\n return callback;\n };\n\n watch(\n panels,\n (newPanels) => {\n const maxIndex = newPanels.length - 1;\n for (const [index] of onFilterCallbacks) {\n if (index > maxIndex) {\n onFilterCallbacks.delete(index);\n }\n }\n },\n { flush: 'post' },\n );\n\n onUnmounted(() => {\n onFilterCallbacks.clear();\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: {\n item: node.data,\n index,\n onExpand: () => handleExpand(node, 'click', index),\n onChange: () => valueChangeEffect(node, props.cascaderContext),\n },\n });\n return (\n <Item\n key={node.value}\n node={node}\n optionChild={optionChild}\n cascaderContext={props.cascaderContext}\n onClick={() => handleExpand(node, 'click', index)}\n onMouseenter={() => handleExpand(node, 'hover', index)}\n onChange={() => valueChangeEffect(node, props.cascaderContext)}\n />\n );\n };\n\n const renderList = (treeNodes: TreeNode[], segment = true, index = 0) => {\n const displayNodes = hasActiveFilter.value ? getFilteredNodes(treeNodes, index) : treeNodes;\n\n const columnParams = {\n panelIndex: index,\n options: treeNodes.map((node) => node.data),\n filteredOptions: displayNodes.map((node) => node.data),\n };\n\n return (\n <ul\n class={[\n `${COMPONENT_NAME.value}__menu`,\n 'narrow-scrollbar',\n {\n [`${COMPONENT_NAME.value}__menu--segment`]: segment,\n },\n ]}\n key={`${COMPONENT_NAME}__menu${index}`}\n >\n {renderTNodeJSX('columnHeader', { params: { ...columnParams, onFilter: getOnFilterCallback(index) } })}\n {displayNodes.map((node: TreeNode) => renderItem(node, index))}\n {renderTNodeJSX('columnFooter', { params: { ...columnParams, onFilter: getOnFilterCallback(index) } })}\n </ul>\n );\n };\n\n const noop: (filter: FilterValue) => void = () => {};\n\n const renderFilteredList = (treeNodes: TreeNode[]) => {\n const columnParams = {\n panelIndex: 0,\n options: treeNodes.map((node) => node.data),\n filteredOptions: treeNodes.map((node) => node.data),\n onFilter: noop,\n };\n\n return (\n <ul\n class={[`${COMPONENT_NAME.value}__menu`, 'narrow-scrollbar', `${COMPONENT_NAME.value}__menu--filter`]}\n key={`${COMPONENT_NAME}__menu--filtered`}\n >\n {renderTNodeJSX('columnHeader', { params: columnParams })}\n {treeNodes.map((node: TreeNode) => renderItem(node, 0))}\n {renderTNodeJSX('columnFooter', { params: columnParams })}\n </ul>\n );\n };\n\n const renderPanels = () => {\n const { inputVal, treeNodes } = props.cascaderContext;\n if (inputVal) return renderFilteredList(treeNodes);\n\n const result = [];\n const len = panels.value.length;\n for (let i = 0; i < len; i++) {\n if (shouldShowPanel(i)) {\n result.push(renderList(panels.value[i], i !== len - 1, i));\n }\n }\n return result;\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":["defineComponent","name","props","option","CascaderProps","options","empty","trigger","onChange","loading","loadingText","cascaderContext","type","Object","setup","renderTNodeJSXDefault","useTNodeDefault","renderTNodeJSX","useTNodeJSX","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","globalConfig","panels","computed","getPanels","treeNodes","filterState","shallowRef","hasActiveFilter","state","value","hasAnyActiveFilter","filters","getFilteredNodes","nodes","index","filter","filterOptions","values","some","f","isFilterActive","clearExpiredFilters","maxLevel","fromEntries","entries","_ref","_ref2","_slicedToArray","panelIndex","Number","calculateCascadeMaxLevel","filteredNodes","currentMaxLevel","length","Math","max","handleFilter","_prev$maxLevel","_prev$maxLevel2","prev","_objectSpread","FILTER_INACTIVE_LEVEL","currentNodes","shouldShowPanel","isFilterLevelActive","handleExpand","node","level","children","Array","isArray","childLevel","cleanedFilters","expandClickEffect","onFilterCallbacks","Map","getOnFilterCallback","callback","get","set","watch","newPanels","maxIndex","_iterator","_createForOfIteratorHelper","_step","s","n","done","_step$value","err","e","flush","onUnmounted","clear","renderItem","optionChild","data","content","getDefaultNode","h","params","item","onExpand","valueChangeEffect","_createVNode","Item","onClick","onMouseenter","renderList","segment","arguments","undefined","displayNodes","columnParams","map","filteredOptions","concat","_defineProperty","onFilter","noop","renderFilteredList","renderPanels","_props$cascaderContex","inputVal","result","len","i","push"],"mappings":"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"}