mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
synced 2024-11-28 17:40:12 +00:00
3028a4f9d8
In preparation for I30c670e3f195f77a27715c6b494a3088b7a55712, refactor the search component expand behavior so that it can accomodate the new changes in WVUI while maintaining backwards compatibility with the status quo. Additionally, pass/enable the `auto-expand-width` prop to the main header's search. This will be inert until the new changes in WVUI have landed. Bug: T297531 Change-Id: Id8d3bd4aa74113b91ecaf66cb58cf5625db8a302
153 lines
3.7 KiB
Vue
153 lines
3.7 KiB
Vue
<template>
|
|
<wvui-typeahead-search
|
|
:id="id"
|
|
ref="searchForm"
|
|
:client="getClient"
|
|
:domain="domain"
|
|
:suggestions-label="$i18n( 'searchresults' ).text()"
|
|
:accesskey="searchAccessKey"
|
|
:title="searchTitle"
|
|
:placeholder="searchPlaceholder"
|
|
:aria-label="searchPlaceholder"
|
|
:search-page-title="searchPageTitle"
|
|
:initial-input-value="searchQuery"
|
|
:button-label="$i18n( 'searchbutton' ).text()"
|
|
:form-action="action"
|
|
:search-language="language"
|
|
:show-thumbnail="showThumbnail"
|
|
:show-description="showDescription"
|
|
:highlight-query="highlightQuery"
|
|
:auto-expand-width="autoExpandWidth"
|
|
@fetch-start="instrumentation.onFetchStart"
|
|
@fetch-end="instrumentation.onFetchEnd"
|
|
@suggestion-click="instrumentation.onSuggestionClick"
|
|
@submit="onSubmit"
|
|
>
|
|
<template #default>
|
|
<input type="hidden"
|
|
name="title"
|
|
:value="searchPageTitle"
|
|
>
|
|
<input type="hidden"
|
|
name="wprov"
|
|
:value="wprov"
|
|
>
|
|
</template>
|
|
<template #search-footer-text="{ searchQuery }">
|
|
<span v-i18n-html:vector-searchsuggest-containing="[ searchQuery ]"></span>
|
|
</template>
|
|
</wvui-typeahead-search>
|
|
</template>
|
|
|
|
<script>
|
|
/* global SubmitEvent */
|
|
var wvui = require( 'wvui-search' ),
|
|
instrumentation = require( './instrumentation.js' );
|
|
|
|
module.exports = {
|
|
name: 'App',
|
|
components: wvui,
|
|
mounted: function () {
|
|
// access the element associated with the wvui-typeahead-search component
|
|
// eslint-disable-next-line no-jquery/variable-pattern
|
|
var wvuiSearchForm = this.$refs.searchForm.$el;
|
|
|
|
if ( this.autofocusInput ) {
|
|
// TODO: The wvui-typeahead-search component does not accept an autofocus parameter
|
|
// or directive. This can be removed when its does.
|
|
wvuiSearchForm.querySelector( 'input' ).focus();
|
|
}
|
|
},
|
|
computed: {
|
|
/**
|
|
* Allow wikis eg. Hebrew Wikipedia to replace the default search API client
|
|
*
|
|
* @return {void|Object}
|
|
*/
|
|
getClient: function () {
|
|
return mw.config.get( 'wgVectorSearchClient', undefined );
|
|
},
|
|
language: function () {
|
|
return mw.config.get( 'wgUserLanguage' );
|
|
},
|
|
domain: function () {
|
|
// It might be helpful to allow this to be configurable in future.
|
|
return mw.config.get( 'wgVectorSearchHost', location.host );
|
|
}
|
|
},
|
|
props: {
|
|
id: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
searchPageTitle: {
|
|
type: String,
|
|
default: 'Special:Search'
|
|
},
|
|
autofocusInput: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
action: {
|
|
type: String,
|
|
default: ''
|
|
},
|
|
/** The keyboard shortcut to focus search. */
|
|
searchAccessKey: {
|
|
type: String
|
|
},
|
|
/** The access key informational tip for search. */
|
|
searchTitle: {
|
|
type: String
|
|
},
|
|
/** The ghost text shown when no search query is entered. */
|
|
searchPlaceholder: {
|
|
type: String
|
|
},
|
|
/**
|
|
* The search query string taken from the server-side rendered input immediately before
|
|
* client render.
|
|
*/
|
|
searchQuery: {
|
|
type: String
|
|
},
|
|
showThumbnail: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
showDescription: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
highlightQuery: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
autoExpandWidth: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
},
|
|
data: function () {
|
|
return {
|
|
// -1 here is the default "active suggestion index" defined in the
|
|
// `wvui-typeahead-search` component (see
|
|
// https://gerrit.wikimedia.org/r/plugins/gitiles/wvui/+/c7af5d6d091ffb3beb4fd2723fdf50dc6bb2789b/src/components/typeahead-search/TypeaheadSearch.vue#167).
|
|
wprov: instrumentation.getWprovFromResultIndex( -1 ),
|
|
|
|
instrumentation: instrumentation.listeners
|
|
};
|
|
},
|
|
methods: {
|
|
/**
|
|
* @param {SubmitEvent} event
|
|
*/
|
|
onSubmit: function ( event ) {
|
|
this.wprov = instrumentation.getWprovFromResultIndex( event.index );
|
|
|
|
instrumentation.listeners.onSubmit( event );
|
|
}
|
|
}
|
|
};
|
|
</script>
|