|
|
|
|
|
|
|
|
<!-- Search form & filters wrapper --> |
|
|
<!-- Search form & filters wrapper --> |
|
|
<div class="unified-search__input-wrapper"> |
|
|
<div class="unified-search__input-wrapper"> |
|
|
<div class="unified-search__input-row"> |
|
|
<div class="unified-search__input-row"> |
|
|
<NcTextField :value.sync="query" |
|
|
|
|
|
|
|
|
<NcTextField ref="input" |
|
|
|
|
|
:value.sync="query" |
|
|
trailing-button-icon="close" |
|
|
trailing-button-icon="close" |
|
|
:label="ariaLabel" |
|
|
:label="ariaLabel" |
|
|
ref="input" |
|
|
|
|
|
:trailing-button-label="t('core','Reset search')" |
|
|
:trailing-button-label="t('core','Reset search')" |
|
|
:show-trailing-button="query !== ''" |
|
|
:show-trailing-button="query !== ''" |
|
|
aria-describedby="unified-search-desc" |
|
|
aria-describedby="unified-search-desc" |
|
|
|
|
|
|
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
|
<!-- Grouped search results --> |
|
|
<!-- Grouped search results --> |
|
|
<template v-else> |
|
|
|
|
|
<ul v-for="({list, type}, typesIndex) in orderedResults" |
|
|
|
|
|
:key="type" |
|
|
|
|
|
class="unified-search__results" |
|
|
|
|
|
:class="`unified-search__results-${type}`" |
|
|
|
|
|
:aria-label="typesMap[type]"> |
|
|
|
|
|
|
|
|
<template v-for="({list, type}, typesIndex) in orderedResults" v-else :key="type"> |
|
|
<h2 class="unified-search__results-header"> |
|
|
<h2 class="unified-search__results-header"> |
|
|
{{ typesMap[type] }} |
|
|
{{ typesMap[type] }} |
|
|
</h2> |
|
|
</h2> |
|
|
|
|
|
|
|
|
|
|
|
<ul class="unified-search__results" |
|
|
|
|
|
:class="`unified-search__results-${type}`" |
|
|
|
|
|
:aria-label="typesMap[type]"> |
|
|
<!-- Search results --> |
|
|
<!-- Search results --> |
|
|
<li v-for="(result, index) in limitIfAny(list, type)" :key="result.resourceUrl"> |
|
|
<li v-for="(result, index) in limitIfAny(list, type)" :key="result.resourceUrl"> |
|
|
<SearchResult v-bind="result" |
|
|
<SearchResult v-bind="result" |