Dropdown
Introduction
The s-dropdown component is a versatile dropdown component in the masc-vue component library. It provides an elegant way to create pop-up menus or tooltips with customizable properties. This component uses the s-popper component from the same library to manage the pop-up behavior.
Usage
To use the s-dropdown component, you need to import it and place it in your Vue template. Here's a basic example:
<template>
<s-dropdown>
<!-- Your trigger element here -->
<s-btn class="btn-primary px-10">DropDown Button</s-btn>
<!-- Dropdown content slot -->
<template v-slot:content>
<!-- Dropdown content goes here -->
<ul class="menu p-2">
<li v-for="item in 10">
<a @click="onClick(item)">Item {{ item }}</a>
</li>
</ul>
</template>
</s-dropdown>
</template>
<script setup lang="ts">
import { SDropdown } from "masc-vue";
</script><template>
<s-dropdown>
<!-- Your trigger element here -->
<s-btn class="btn-primary px-10">DropDown Button</s-btn>
<!-- Dropdown content slot -->
<template v-slot:content>
<!-- Dropdown content goes here -->
<ul class="menu p-2">
<li v-for="item in 10">
<a @click="onClick(item)">Item {{ item }}</a>
</li>
</ul>
</template>
</s-dropdown>
</template>
<script setup lang="ts">
import { SDropdown } from "masc-vue";
</script>In this example, a basic s-dropdown is created with a trigger button and dropdown content. The :distance prop determines the distance between the trigger and the dropdown.
Props
The s-dropdown component accepts the following props:
| Prop | Type | Default | Description |
|---|---|---|---|
distance | String | "10" | The distance between the trigger and the dropdown. |
Slots
| Slot Name | Description |
|---|---|
default | The default slot is used for the trigger element, which opens the dropdown when interacted with. |
content | The content slot is used for the actual content of the dropdown. It can be customized to display any content you want, such as a menu or tooltip. It has access to the close function, allowing you to close the dropdown when an action is performed inside the content. |
Usage of Slots
In the usage example provided above, you can see how to use the default and content slots. The default slot is where you place the trigger element (e.g., a button). The content slot is used for the content of the dropdown. It has access to the close function, which you can call to close the dropdown when an action is performed inside the content.
<template>
<s-dropdown :distance="10">
<button>Open Dropdown</button>
<!-- This is placed in the default slot -->
<!-- Dropdown content slot -->
<template #content="{ close }">
<div @click="close">
<!-- You can use the `close` function to close the dropdown -->
<!-- Dropdown content goes here -->
</div>
</template>
</s-dropdown>
</template><template>
<s-dropdown :distance="10">
<button>Open Dropdown</button>
<!-- This is placed in the default slot -->
<!-- Dropdown content slot -->
<template #content="{ close }">
<div @click="close">
<!-- You can use the `close` function to close the dropdown -->
<!-- Dropdown content goes here -->
</div>
</template>
</s-dropdown>
</template>This setup allows you to create interactive dropdowns with your own content and behavior.