Skip to content

Commit

Permalink
bug: maintain inject/provide context
Browse files Browse the repository at this point in the history
  • Loading branch information
mathuo committed Aug 1, 2024
1 parent e5e9603 commit ea5b94a
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
4 changes: 4 additions & 0 deletions packages/dockview-vue/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ export function mountVueComponent<T extends Record<string, any>>(
let vNode = createVNode(component, Object.freeze(props));

vNode.appContext = parent.appContext;
vNode.appContext.provides = {
...(vNode.appContext.provides ? vNode.appContext.provides : {}),
...((parent as any).provides ? (parent as any).provides : {}),
};

render(vNode, element);

Expand Down
23 changes: 21 additions & 2 deletions packages/docs/templates/dockview/basic/vue/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,35 @@ import {
} from 'dockview-vue';

const Panel = defineComponent({
inject: ['vu3ProvideInjectEvidenceTestMessage'],
name: 'Panel',
props: {
params: {
type: Object as PropType<IDockviewPanelProps>,
required: true,
},
},
setup(props) {
data() {
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: `
<div style="height:100%; color:red;">
Hello World
<div>{{title}}</div>
<div>{{message}}</div>
</div>`,
});

Expand All @@ -40,6 +54,11 @@ const App = defineComponent({
});
},
},
provide() {
return {
vu3ProvideInjectEvidenceTestMessage: 'Hello from the provider',
};
},
template: `
<dockview-vue
style="width:100%; height:100%"
Expand Down

0 comments on commit ea5b94a

Please sign in to comment.