Skip to content

Commit cd4cd0f

Browse files
authored
Merge pull request #673 from mathuo/672-vu3-injectprovides-not-propagated-to-panels
bug: maintain inject/provide context
2 parents 408db93 + ea5b94a commit cd4cd0f

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

packages/dockview-vue/src/utils.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ export function mountVueComponent<T extends Record<string, any>>(
7272
let vNode = createVNode(component, Object.freeze(props));
7373

7474
vNode.appContext = parent.appContext;
75+
vNode.appContext.provides = {
76+
...(vNode.appContext.provides ? vNode.appContext.provides : {}),
77+
...((parent as any).provides ? (parent as any).provides : {}),
78+
};
7579

7680
render(vNode, element);
7781

packages/docs/templates/dockview/basic/vue/src/index.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,35 @@ import {
77
} from 'dockview-vue';
88

99
const Panel = defineComponent({
10+
inject: ['vu3ProvideInjectEvidenceTestMessage'],
1011
name: 'Panel',
1112
props: {
1213
params: {
1314
type: Object as PropType<IDockviewPanelProps>,
1415
required: true,
1516
},
1617
},
17-
setup(props) {
18+
data() {
1819
return {
19-
title: props.params.api.title,
20+
title: '',
21+
message: this.vu3ProvideInjectEvidenceTestMessage ?? 'not found',
22+
};
23+
},
24+
mounted() {
25+
const disposable = this.params.api.onDidTitleChange(() => {
26+
this.title = this.params.api.title;
27+
});
28+
this.title = this.params.api.title;
29+
30+
return () => {
31+
disposable.dispose();
2032
};
2133
},
2234
template: `
2335
<div style="height:100%; color:red;">
2436
Hello World
37+
<div>{{title}}</div>
38+
<div>{{message}}</div>
2539
</div>`,
2640
});
2741

@@ -40,6 +54,11 @@ const App = defineComponent({
4054
});
4155
},
4256
},
57+
provide() {
58+
return {
59+
vu3ProvideInjectEvidenceTestMessage: 'Hello from the provider',
60+
};
61+
},
4362
template: `
4463
<dockview-vue
4564
style="width:100%; height:100%"

0 commit comments

Comments
 (0)