mirror of
https://github.com/youzan/vant.git
synced 2026-04-01 02:01:29 +08:00
feat: layout component
This commit is contained in:
@@ -1,33 +1,34 @@
|
||||
import { VNode } from 'vue';
|
||||
// import { VNode } from 'vue';
|
||||
|
||||
function flattenVNodes(vnodes: VNode[]) {
|
||||
const result: VNode[] = [];
|
||||
// function flattenVNodes(vnodes: VNode[]) {
|
||||
// const result: VNode[] = [];
|
||||
|
||||
function traverse(vnodes: VNode[]) {
|
||||
vnodes.forEach((vnode) => {
|
||||
result.push(vnode);
|
||||
// function traverse(vnodes: VNode[]) {
|
||||
// vnodes.forEach((vnode) => {
|
||||
// result.push(vnode);
|
||||
|
||||
if (vnode.componentInstance) {
|
||||
traverse(vnode.componentInstance.$children.map((item) => item.$vnode));
|
||||
}
|
||||
// if (vnode.componentInstance) {
|
||||
// traverse(vnode.componentInstance.$children.map((item) => item.$vnode));
|
||||
// }
|
||||
|
||||
if (vnode.children) {
|
||||
traverse(vnode.children);
|
||||
}
|
||||
});
|
||||
}
|
||||
// if (vnode.children) {
|
||||
// traverse(vnode.children);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
traverse(vnodes);
|
||||
return result;
|
||||
}
|
||||
// traverse(vnodes);
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// TODO
|
||||
// sort children instances by vnodes order
|
||||
export function sortChildren(children: Vue[], parent: Vue) {
|
||||
const { componentOptions } = parent.$vnode;
|
||||
if (!componentOptions || !componentOptions.children) {
|
||||
return;
|
||||
}
|
||||
// const { componentOptions } = parent.$vnode;
|
||||
// if (!componentOptions || !componentOptions.children) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
const vnodes = flattenVNodes(componentOptions.children);
|
||||
children.sort((a, b) => vnodes.indexOf(a.$vnode) - vnodes.indexOf(b.$vnode));
|
||||
// const vnodes = flattenVNodes(componentOptions.children);
|
||||
// children.sort((a, b) => vnodes.indexOf(a.$vnode) - vnodes.indexOf(b.$vnode));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user