vue-slot-portal

0.3.0 • Public • Published

vue-slot-portal

Vue plugin for across-component slot distribution.

sample

install

npm i vue-slot-portal

usage

  1. define slot routes (key: slotName, value: componentName)
import slotPortal from 'vue-slot-portal'
 
const slotRoutes = {
  level5: 'Level5'
}
 
Vue.use(slotPortal, slotRoutes)
  1. write slot content anywhich component in your project, with SlotReceiver
// write your slot content anywhere as you need
// someComponent.vue
 
<template>
  <div class="somewhere">
    ...
    <SlotReceiver>
      <!-- 'level5' slot content -->
      <template v-slot:level5="slotProps">
        <div>slot content from Index receiver: {{slotProps.test}}</div>
      </template>
    </SlotReceiver>
  </div>
</template>
  1. wrap your component who need the slot content with SlotInjector, when you reference this component.
// Level5.vue
<template>
  <div class="level5">
    <slot name="level5" v-bind:test="test">
      default {{test}}
    </slot>
  </div>
</template>
// the component which references Level5
<template>
  <div class="level4">
    <Level5></Level5>
  </div>
</template>
 
<script>
import Level5 from './Level5.vue'
import slotPortal from 'vue-slot-portal'
 
export default {
  components: {
    // hoc
    Level5: slotPortal.SlotInjector(Level5)
  }
}
</script>
 
<style></style>

then, the slot content whose name is 'level5' will be transported to the component whose name is 'Level5', according to the slot routes.

license

MIT

/vue-slot-portal/

    Package Sidebar

    Install

    npm i vue-slot-portal

    Weekly Downloads

    15

    Version

    0.3.0

    License

    MIT

    Unpacked Size

    10.3 kB

    Total Files

    24

    Last publish

    Collaborators

    • jin5354