Files
element-plus/packages/components/cascader-panel/src/utils.ts
oooh 9b5e405ad9 chore(components): [cascader-panel] remove duplicate exports (#21828)
* chore(components): cascader-panel Update types.ts export types

* chore(components): cascader-panel/node.ts export types from types.ts

* chore(components): cascader-panel/types export

* chore: cascader-panel import types form types.ts

* chore: cascader-panel test types

---------

Co-authored-by: 一只前端汪 <985313519@qq.com>
2025-09-04 18:42:00 +08:00

42 lines
919 B
TypeScript

import { isLeaf } from '@element-plus/utils'
import type { CascaderNode } from './types'
export const getMenuIndex = (el: HTMLElement) => {
if (!el) return 0
const pieces = el.id.split('-')
return Number(pieces[pieces.length - 2])
}
export const checkNode = (el: HTMLElement) => {
if (!el) return
const input = el.querySelector('input')
if (input) {
input.click()
} else if (isLeaf(el)) {
el.click()
}
}
export const sortByOriginalOrder = (
oldNodes: CascaderNode[],
newNodes: CascaderNode[]
) => {
const newNodesCopy = newNodes.slice(0)
const newIds = newNodesCopy.map((node) => node.uid)
const res = oldNodes.reduce((acc, item) => {
const index = newIds.indexOf(item.uid)
if (index > -1) {
acc.push(item)
newNodesCopy.splice(index, 1)
newIds.splice(index, 1)
}
return acc
}, [] as CascaderNode[])
res.push(...newNodesCopy)
return res
}