Search Bar Vue component represents Framework7's Search Bar component.
<f7-searchbar
cancel-link="Cancel"
placeholder="Search in items"
:clear-button="true"
></f7-searchbar>
Renders to:
<form class="searchbar">
<div class="searchbar-input">
<!-- Input -->
<input type="search" placeholder="Search in items">
<!-- Clear button -->
<a href="#" class="searchbar-clear"></a>
</div>
<!-- Cancel Link -->
<div class="searchbar-cancel">Cancel</div>
</form>
Here is how it can be used in Vue component with initialization
<template>
<!-- Search bar -->
<f7-searchbar
<!-- Cancel link's text (affects iOS theme only) -->
cancel-link="Cancel"
<!-- Where to search -->
search-list="#search-list"
<!-- Input placeholder text -->
placeholder="Search in items"
<!-- Show "clear" button -->
:clear-button="true"
<!-- Events -->
@searchbar:search="onSearch"
@searchbar:enable="onEnable"
@searchbar:disable="onDisable"
@searchbar:clear="onClear"
></f7-searchbar>
<!-- Will be visible if there is no any results found, defined by "searchbar-not-found" class -->
<f7-list class="searchbar-not-found">
<f7-list-item title="Nothing found"></f7-list-item>
</f7-list>
<!-- Search-through list -->
<f7-list class="searchbar-found" id="search-list">
<f7-list-item v-for="item in items" :title="'Item ' + item"></f7-list-item>
</f7-list>
</template>
<script>
export default {
data: function () {
return {
items: (function () {
var it = [];
for (var i = 0; i < 100; i++) it.push(i+1);
return it;
})()
}
},
methods: {
onSearch: function (query, found) {
console.log('search', query);
},
onClear: function (event) {
console.log('clear');
},
onEnable: function (event) {
console.log('enable');
},
onDisable: function (event) {
console.log('disable');
},
}
}
</script>
Search Bar Vue component has additional slots for custom elements:
<f7-searchbar
cancel-link="Cancel"
placeholder="Search in items"
:clear-button="true"
>
<div slot="before-input">Before Input</div>
<div slot="after-input">After Input</div>
</f7-searchbar>
Renders to:
<form class="searchbar">
<div class="searchbar-input">
<div>Before Input</div>
<input type="search" placeholder="Search in items">
<div>After Input</div>
<a href="#" class="searchbar-clear"></a>
</div>
<div class="searchbar-cancel">Cancel</div>
</form>
You can pass all parameters in single params property or use separate props for each parameter to specify them via component attributes:
| Prop | Type | Default | Description |
|---|---|---|---|
| form | boolean | true | Main search bar element will be used as a form tag instead of div |
| placeholder | string | "Search" | Input placeholder text |
| cancel-link | string | Cancel link text. Affects only iOS theme | |
| clear-button | boolean | true | Enables "clear" input button |
| init | boolean | true | Initializes Search Bar |
| params | Object | Object with Search Bar API parameters | |
params separate props |
|||
| searchList | string/object | CSS selector or HTML element of list block to search | |
| searchIn | string | '.item-title' | CSS selector of List View element's field where we need to search. Usually we search through element titles ('.item-title'). It is also to pass few elements for search like '.item-title, .item-text' |
| found | string/object | CSS selector or HTMLElement of searchbar "found" element. If not specified, searchbar will look for .searchbar-found element on page |
|
| notFoud | string/object | CSS selector or HTMLElement of searchbar "not-found" element. If not specified, searchbar will look for .searchbar-not-found element on page |
|
| overlay | string/object | CSS selector or HTMLElement of searchbar overlay. If not specified, searchbar will look for .searchbar-overlay element on page |
|
| ignore | string | '.searchbar-ignore' | CSS selector for items to be ignored by searchbar and always present in search results |
| customSearch | boolean | false | When enabled searchbar will not search through any of list blocks specified by `searchList` and you will be able to use custom search functionality, for example, for calling external APIs with search results and for displaying them manually |
| removeDiacritics | boolean | false | Enable to remove/replace diacritics (á, í, ó, etc.) during search |
| hideDividers | boolean | true | If enabled, then search will consider item dividers and group titles and hide them if there are no found items right after them |
| hideGroups | boolean | true | If enabled, then search will consider list view groups hide them if there are no found items inside of these groups |
| no-shadow | boolean | Disable shadow rendering for Material theme | |
| .empty() | Clear search query and update results |
| .search(query) | Force searchbar to search passed query |
| .enable() | Enable/activate searchbar |
| .disable() | Disable/deactivate searchbar |
| Event | Description |
|---|---|
| searchbar:search | Event will be triggered during search (search field change). Event detail contains search query (e.detail.query) and array of found HTML elements (e.detail.foundItems) |
| searchbar:clear | Event will be triggered when user clicks on Search Bar's "clear" element (a href="#" class="searchbar-clear") |
| searchbar:enable | Event will be triggered when Search Bar becomes active |
| searchbar:disable | Event will be triggered when Search Bar becomes inactive - when user clicks on "Cancel" button (a href="searchbar-cancel") or on "searchbar-overlay" element |
| change | Event will be triggered when "change" event occurs on search bar input element |
| input | Event will be triggered when "input" event occurs on search bar input element |
| focus | Event will be triggered when "focus" event occurs on search bar input element |
| blur | Event will be triggered when "blur" event occurs on search bar input element |
| click:clear | Event will be triggered when user clicks on input "clear" button |
| click:cancel | Event will be triggered when user clicks on "cancel" link |
If you use automatic initalization to init Search Bar (with init:true prop) and need to use its Methods and Properties you can access its initialized instance by accessing .f7Searchbar component's property.