mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-05 19:41:42 +08:00
113 lines
2.0 KiB
Vue
113 lines
2.0 KiB
Vue
<template>
|
|
<input class="van-doc-search" :placeholder="placeholder" />
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'van-doc-search',
|
|
|
|
props: {
|
|
lang: String,
|
|
searchConfig: Object,
|
|
},
|
|
|
|
computed: {
|
|
placeholder() {
|
|
return this.searchConfig.placeholder || 'Search...';
|
|
},
|
|
},
|
|
|
|
watch: {
|
|
lang(lang) {
|
|
if (this.docsearchInstance) {
|
|
this.docsearchInstance.algoliaOptions.facetFilters = [`lang:${lang}`];
|
|
}
|
|
},
|
|
},
|
|
|
|
mounted() {
|
|
if (this.searchConfig) {
|
|
this.docsearchInstance = window.docsearch({
|
|
...this.searchConfig,
|
|
transformData: (hits) => {
|
|
hits.forEach((hit) => {
|
|
if (hit.anchor) {
|
|
hit.url = hit.url + '#' + hit.anchor;
|
|
hit.anchor = null;
|
|
}
|
|
});
|
|
if (this.searchConfig.transformData) {
|
|
this.searchConfig.transformData(hits);
|
|
}
|
|
},
|
|
inputSelector: '.van-doc-search',
|
|
algoliaOptions: {
|
|
facetFilters: [`lang:${this.lang}`],
|
|
},
|
|
});
|
|
}
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="less">
|
|
@import '../../common/style/var';
|
|
|
|
.van-doc-search {
|
|
width: 200px;
|
|
height: 60px;
|
|
margin-left: 140px;
|
|
color: #fff;
|
|
font-size: 14px;
|
|
background-color: transparent;
|
|
border: none;
|
|
|
|
&:focus {
|
|
outline: none;
|
|
}
|
|
|
|
&::placeholder {
|
|
color: #fff;
|
|
opacity: 0.7;
|
|
}
|
|
}
|
|
|
|
.ds-dropdown-menu {
|
|
line-height: 1.8;
|
|
}
|
|
|
|
.algolia-autocomplete {
|
|
.algolia-docsearch-suggestion--highlight {
|
|
color: @van-doc-blue;
|
|
background-color: transparent;
|
|
}
|
|
|
|
.algolia-docsearch-suggestion--title {
|
|
font-weight: 600;
|
|
}
|
|
|
|
.algolia-docsearch-suggestion--text {
|
|
.algolia-docsearch-suggestion--highlight {
|
|
box-shadow: inset 0 -1px 0 0 @van-doc-blue;
|
|
}
|
|
}
|
|
|
|
.algolia-docsearch-suggestion--category-header {
|
|
border-bottom-color: #eee;
|
|
}
|
|
|
|
.ds-dropdown-menu [class^='ds-dataset-'] {
|
|
border: none;
|
|
}
|
|
|
|
.ds-dropdown-menu {
|
|
top: 80% !important;
|
|
box-shadow: 0 4px 12px #ebedf0;
|
|
|
|
&::before {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
</style>
|