On a high level let's say I have:
<parent>
<template v-slot:content="{foo, bar}"> // foo/bar are just data from parent that contains "FOO" / "BAR"
<child :v-text="foo" :someprop="bar === 'BAR'"> // foo and bar are accessible here
<template v-slot:content>
<grandchild :v-text="foo" :someprop="bar === 'BAR'"> // foo and bar are no longer accessible here
</grandchild>
</template>
</child>
</template>
</parent>
In this manner, I can pass any arbitrary data from parent's scope and the direct child can access that. However, if the child also has slots, that child's children will lose context of the grandparent slot (unless I manually expose from child the data that came from parent in its slot template, I guess). And these nested slots can even go deeper to great grand children.
Is there a solution for making parent data available to great grand children's prop values?
You can create a named slot inside of the slot template of the parent, within the intermediate component.
This example passes an item property back to the child
Parent Component
<slot name='content' :item='item'>
Replace Me
</slot>
Middle Component
<parent>
<template #content='{item}'>
<slot name='content' :item='item' />
</template>
</parent>
Child Component
<middle>
<template #content='{item}'>
the item is {{item}}
</template>
</middle>