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 theslot
attributes used in the HTML where the web component is utilized. - The
slot
attribute in the HTML should match thename
attribute in the Vue component. - The
namedSlots
attribute in the Vue component should be an array of strings, where each string is the name of a named slot.