mirror of
https://github.com/mathuo/dockview
synced 2025-02-02 14:35:46 +00:00
Merge pull request #673 from mathuo/672-vu3-injectprovides-not-propagated-to-panels
bug: maintain inject/provide context
This commit is contained in:
commit
cd4cd0f0ce
@ -72,6 +72,10 @@ export function mountVueComponent<T extends Record<string, any>>(
|
|||||||
let vNode = createVNode(component, Object.freeze(props));
|
let vNode = createVNode(component, Object.freeze(props));
|
||||||
|
|
||||||
vNode.appContext = parent.appContext;
|
vNode.appContext = parent.appContext;
|
||||||
|
vNode.appContext.provides = {
|
||||||
|
...(vNode.appContext.provides ? vNode.appContext.provides : {}),
|
||||||
|
...((parent as any).provides ? (parent as any).provides : {}),
|
||||||
|
};
|
||||||
|
|
||||||
render(vNode, element);
|
render(vNode, element);
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import {
|
|||||||
} from 'dockview-vue';
|
} from 'dockview-vue';
|
||||||
|
|
||||||
const Panel = defineComponent({
|
const Panel = defineComponent({
|
||||||
|
inject: ['vu3ProvideInjectEvidenceTestMessage'],
|
||||||
name: 'Panel',
|
name: 'Panel',
|
||||||
props: {
|
props: {
|
||||||
params: {
|
params: {
|
||||||
@ -14,14 +15,27 @@ const Panel = defineComponent({
|
|||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
setup(props) {
|
data() {
|
||||||
return {
|
return {
|
||||||
title: props.params.api.title,
|
title: '',
|
||||||
|
message: this.vu3ProvideInjectEvidenceTestMessage ?? 'not found',
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const disposable = this.params.api.onDidTitleChange(() => {
|
||||||
|
this.title = this.params.api.title;
|
||||||
|
});
|
||||||
|
this.title = this.params.api.title;
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
disposable.dispose();
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
template: `
|
template: `
|
||||||
<div style="height:100%; color:red;">
|
<div style="height:100%; color:red;">
|
||||||
Hello World
|
Hello World
|
||||||
|
<div>{{title}}</div>
|
||||||
|
<div>{{message}}</div>
|
||||||
</div>`,
|
</div>`,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -40,6 +54,11 @@ const App = defineComponent({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
provide() {
|
||||||
|
return {
|
||||||
|
vu3ProvideInjectEvidenceTestMessage: 'Hello from the provider',
|
||||||
|
};
|
||||||
|
},
|
||||||
template: `
|
template: `
|
||||||
<dockview-vue
|
<dockview-vue
|
||||||
style="width:100%; height:100%"
|
style="width:100%; height:100%"
|
||||||
|
Loading…
Reference in New Issue
Block a user