Having trouble getting help?
Contact Support
Contact Support
Item template in Vue Drop down button component
14 Dec 20248 minutes to read
The itemTemplate property in the DropDownButton component allows for the definition of custom templates to display dropdown items. This feature is especially useful for customizing the appearance and layout of dropdown items beyond the default options provided. By utilizing this property, diverse content such as icons, formatted text, and other visual elements can be integrated into the dropdown items for a more engaging and tailored user interface.
<template>
<ejs-dropdownbutton :items="items" :itemTemplate="'itemTemplate'">DropDownButton
<template v-slot:itemTemplate="{ data }">
<div>
<span class="e-menu-icon" :class="data.iconCss"></span>
<span class="custom-class">
<a v-if="data.url" :href="data.url" target="_blank" rel="noopener noreferrer"></a>
<span v-else></span>
<span v-if="data.description" class="description"></span>
</span>
</div>
</template>
</ejs-dropdownbutton>
</template>
<script setup>
import { DropDownButtonComponent as EjsDropdownbutton } from '@syncfusion/ej2-vue-splitbuttons';
import { enableRipple } from '@syncfusion/ej2-base';
enableRipple(true);
const items = [
{
text: 'Home',
iconCss: 'e-icons e-home',
},
{
text: 'Search',
iconCss: 'e-icons e-search',
url: 'http://www.google.com'
},
{
text: 'Yes / No',
iconCss: 'e-icons e-check-box'
},
{
text: 'Text',
iconCss: 'e-icons e-caption',
},
{
separator: true
},
{
text: 'Syncfusion',
iconCss: 'e-icons e-mouse-pointer',
url: 'http://www.syncfusion.com'
}
];
</script>
<style>
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
.e-dropdown-popup .e-item {
color: #4a4a4a;
}
.e-dropdown-popup .e-item a {
color: blue;
}
</style>
<template>
<ejs-dropdownbutton :items="items" :itemTemplate="'itemTemplate'">DropDownButton
<template v-slot:itemTemplate="{ data }">
<div>
<span class="e-menu-icon" :class="data.iconCss"></span>
<span class="custom-class">
<a v-if="data.url" :href="data.url" target="_blank" rel="noopener noreferrer"></a>
<span v-else></span>
<span v-if="data.description" class="description"></span>
</span>
</div>
</template>
</ejs-dropdownbutton>
</template>
<script>
import { DropDownButtonComponent } from '@syncfusion/ej2-vue-splitbuttons';
import { enableRipple } from '@syncfusion/ej2-base';
enableRipple(true);
export default {
name: 'App',
components: {
'ejs-dropdownbutton': DropDownButtonComponent,
},
data() {
return {
items: [
{
text: 'Home',
iconCss: 'e-icons e-home',
},
{
text: 'Search',
iconCss: 'e-icons e-search',
url: 'http://www.google.com',
},
{
text: 'Yes / No',
iconCss: 'e-icons e-check-box',
},
{
text: 'Text',
iconCss: 'e-icons e-caption',
},
{
separator: true,
},
{
text: 'Syncfusion',
iconCss: 'e-icons e-mouse-pointer',
url: 'http://www.syncfusion.com',
},
],
};
},
};
</script>
<style>
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import "../node_modules/@syncfusion/ej2-buttons/styles/material.css";
@import "../node_modules/@syncfusion/ej2-popups/styles/material.css";
@import "../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css";
.e-dropdown-popup .e-item {
color: #4a4a4a;
}
.e-dropdown-popup .e-item a {
color: blue;
}
</style>