Appearance
Using Slots && Named Slots in vue-web-component-wrapper
The vue-web-component-wrapper enhances Vue components to be used as standard web components, supporting named slots. Use the namedSlots attribute in your Vue component to specify which slots are named.
Defining Named Slots in Vue Component
In your Vue component, define the namedSlots in the component's options to specify which slots are named.
App.vue (Vue Component):
vue
<template>
<div>
<!-- Usage of default slot -->
<slot></slot>
<!-- Usage of named slot -->
<slot name="customName"></slot>
</div>
</template>
<script>
export default {
name: 'App',
namedSlots: ['customName'],
// ... other component options
}
</script>In this example, App.vue declares a named slot customName by specifying it in the namedSlots array.
Using Named Slots in Web Component
Usage in HTML:
html
<my-web-component>
<!-- Content for the default slot -->
<h1>I am a default slot</h1>
<!-- Content for the named slot 'customName' -->
<div slot="customName">I am a custom slot</div>
</my-web-component>Here, the <h1> tag is passed into the default slot of my-web-component, and the <div> with slot="customName" is passed into the named slot customName.
Web Component without Shadow DOM
if useing disableShadowDOM option in createWebComponent function, the named slots will be rendered in the light DOM without the need of defining the named slots in the Vue component. namedSlots: ['customName']: Not needed if disableShadowDOM is true
Tips
- The slot names defined in your Vue component (
header,footer, etc.) should match theslotattributes used in the HTML where the web component is utilized. - The
slotattribute in the HTML should match thenameattribute in the Vue component. - The
namedSlotsattribute in the Vue component should be an array of strings, where each string is the name of a named slot.