refactor: menu
parent
6bf3d283f6
commit
572ebc8f1a
|
@ -67,11 +67,11 @@ export default defineComponent({
|
||||||
computed(() => undefined),
|
computed(() => undefined),
|
||||||
);
|
);
|
||||||
const inlineCollapsed = computed(() => {
|
const inlineCollapsed = computed(() => {
|
||||||
const { inlineCollapsed } = props;
|
console.log('siderCollapsed.value', siderCollapsed.value);
|
||||||
if (siderCollapsed.value !== undefined) {
|
if (siderCollapsed.value !== undefined) {
|
||||||
return siderCollapsed.value;
|
return siderCollapsed.value;
|
||||||
}
|
}
|
||||||
return inlineCollapsed;
|
return props.inlineCollapsed;
|
||||||
});
|
});
|
||||||
|
|
||||||
const isMounted = ref(false);
|
const isMounted = ref(false);
|
||||||
|
@ -164,7 +164,9 @@ export default defineComponent({
|
||||||
watch(
|
watch(
|
||||||
() => props.openKeys,
|
() => props.openKeys,
|
||||||
(openKeys = mergedOpenKeys.value) => {
|
(openKeys = mergedOpenKeys.value) => {
|
||||||
|
if (!shallowEqual(mergedOpenKeys.value, openKeys)) {
|
||||||
mergedOpenKeys.value = openKeys;
|
mergedOpenKeys.value = openKeys;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{ immediate: true },
|
{ immediate: true },
|
||||||
);
|
);
|
||||||
|
@ -177,22 +179,38 @@ export default defineComponent({
|
||||||
const mergedMode = ref<MenuMode>('vertical');
|
const mergedMode = ref<MenuMode>('vertical');
|
||||||
const mergedInlineCollapsed = ref(false);
|
const mergedInlineCollapsed = ref(false);
|
||||||
|
|
||||||
const isInlineMode = computed(() => mergedMode.value === 'inline');
|
|
||||||
|
|
||||||
// >>>>> Cache & Reset open keys when inlineCollapsed changed
|
|
||||||
const inlineCacheOpenKeys = ref([]);
|
|
||||||
|
|
||||||
// Cache
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
if (isInlineMode.value) {
|
if (props.mode === 'inline' && inlineCollapsed.value) {
|
||||||
inlineCacheOpenKeys.value = mergedOpenKeys.value;
|
mergedMode.value = 'vertical';
|
||||||
|
mergedInlineCollapsed.value = inlineCollapsed.value;
|
||||||
|
} else {
|
||||||
|
mergedMode.value = props.mode;
|
||||||
|
mergedInlineCollapsed.value = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const isInlineMode = computed(() => mergedMode.value === 'inline');
|
||||||
|
|
||||||
|
// >>>>> Cache & Reset open keys when inlineCollapsed changed
|
||||||
|
const inlineCacheOpenKeys = ref(mergedOpenKeys.value);
|
||||||
|
|
||||||
const mountRef = ref(false);
|
const mountRef = ref(false);
|
||||||
|
|
||||||
|
// Cache
|
||||||
|
watch(
|
||||||
|
mergedOpenKeys,
|
||||||
|
() => {
|
||||||
|
if (isInlineMode.value) {
|
||||||
|
inlineCacheOpenKeys.value = mergedOpenKeys.value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true },
|
||||||
|
);
|
||||||
|
|
||||||
// Restore
|
// Restore
|
||||||
watch(isInlineMode, () => {
|
watch(
|
||||||
|
isInlineMode,
|
||||||
|
() => {
|
||||||
if (!mountRef.value) {
|
if (!mountRef.value) {
|
||||||
mountRef.value = true;
|
mountRef.value = true;
|
||||||
return;
|
return;
|
||||||
|
@ -207,16 +225,9 @@ export default defineComponent({
|
||||||
emit('update:openKeys', empty);
|
emit('update:openKeys', empty);
|
||||||
emit('openChange', empty);
|
emit('openChange', empty);
|
||||||
}
|
}
|
||||||
});
|
},
|
||||||
|
{ immediate: true },
|
||||||
watchEffect(() => {
|
);
|
||||||
if (props.mode === 'inline' && inlineCollapsed.value) {
|
|
||||||
mergedMode.value = 'vertical';
|
|
||||||
mergedInlineCollapsed.value = inlineCollapsed.value;
|
|
||||||
}
|
|
||||||
mergedMode.value = props.mode;
|
|
||||||
mergedInlineCollapsed.value = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
const className = computed(() => {
|
const className = computed(() => {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -89,7 +89,7 @@ export default defineComponent({
|
||||||
);
|
);
|
||||||
const toggleCollapsed = () => {
|
const toggleCollapsed = () => {
|
||||||
state.collapsed = !state.collapsed;
|
state.collapsed = !state.collapsed;
|
||||||
state.openKeys = state.collapsed ? [] : state.preOpenKeys;
|
// state.openKeys = state.collapsed ? [] : state.preOpenKeys;
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
Loading…
Reference in New Issue