|
|
|
@ -1,6 +1,6 @@ |
|
|
|
|
<template> |
|
|
|
|
<NcModal v-if="isVisible" |
|
|
|
|
id="global-search" |
|
|
|
|
<NcModal id="global-search" |
|
|
|
|
ref="globalSearchModal" |
|
|
|
|
:name="t('core', 'Global search')" |
|
|
|
|
:show.sync="isVisible" |
|
|
|
|
:clear-view-delay="0" |
|
|
|
@ -115,6 +115,14 @@ |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div v-if="supportFiltering()" class="global-search-modal__results"> |
|
|
|
|
<NcButton @click="closeModal"> |
|
|
|
|
{{ t('core', 'Filter in current view') }} |
|
|
|
|
<template #icon> |
|
|
|
|
<FilterIcon :size="20" /> |
|
|
|
|
</template> |
|
|
|
|
</NcButton> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</NcModal> |
|
|
|
|
</template> |
|
|
|
@ -125,6 +133,7 @@ import AccountGroup from 'vue-material-design-icons/AccountGroup.vue' |
|
|
|
|
import CalendarRangeIcon from 'vue-material-design-icons/CalendarRange.vue' |
|
|
|
|
import CustomDateRangeModal from '../components/GlobalSearch/CustomDateRangeModal.vue' |
|
|
|
|
import DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue' |
|
|
|
|
import FilterIcon from 'vue-material-design-icons/Filter.vue' |
|
|
|
|
import FilterChip from '../components/GlobalSearch/SearchFilterChip.vue' |
|
|
|
|
import FlaskEmpty from 'vue-material-design-icons/FlaskEmpty.vue' |
|
|
|
|
import ListBox from 'vue-material-design-icons/ListBox.vue' |
|
|
|
@ -140,6 +149,7 @@ import SearchableList from '../components/GlobalSearch/SearchableList.vue' |
|
|
|
|
import SearchResult from '../components/GlobalSearch/SearchResult.vue' |
|
|
|
|
|
|
|
|
|
import debounce from 'debounce' |
|
|
|
|
import { emit } from '@nextcloud/event-bus' |
|
|
|
|
import { getProviders, search as globalSearch, getContacts } from '../services/GlobalSearchService.js' |
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
@ -150,6 +160,7 @@ export default { |
|
|
|
|
CalendarRangeIcon, |
|
|
|
|
CustomDateRangeModal, |
|
|
|
|
DotsHorizontalIcon, |
|
|
|
|
FilterIcon, |
|
|
|
|
FilterChip, |
|
|
|
|
FlaskEmpty, |
|
|
|
|
ListBox, |
|
|
|
@ -227,6 +238,9 @@ export default { |
|
|
|
|
this.results = [] |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
if (this.supportFiltering()) { |
|
|
|
|
emit('nextcloud:unified-search.search', { query }) |
|
|
|
|
} |
|
|
|
|
const newResults = [] |
|
|
|
|
const providersToSearch = this.filteredProviders.length > 0 ? this.filteredProviders : this.providers |
|
|
|
|
const searchProvider = (provider, filters) => { |
|
|
|
@ -490,8 +504,16 @@ export default { |
|
|
|
|
this.updateDateFilter() |
|
|
|
|
}, |
|
|
|
|
closeModal() { |
|
|
|
|
this.$refs.globalSearchModal.close() |
|
|
|
|
this.searchQuery = '' |
|
|
|
|
}, |
|
|
|
|
supportFiltering() { |
|
|
|
|
/* Hard coded apps for the moment this would be improved in coming updates. */ |
|
|
|
|
const providerPaths = ['/settings/users', '/apps/files', '/apps/deck'] |
|
|
|
|
const currentPath = window.location.pathname.replace('/index.php', '') |
|
|
|
|
const containsProvider = providerPaths.some(path => currentPath.includes(path)) |
|
|
|
|
return containsProvider |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|