Commit Graph

1924 Commits

Author SHA1 Message Date
jdlrobson 9f1a1fa829 Simplify menu code
SkinMustache in core provides most of what is required for Vector to
generate its menus.  In the interest of having a canonical source of
truth for menus across all skins, Vector should use this data.

To ensure the HTML generated is (mostly) the same after this patch to
prior, a few modifications are necessary:

* The data from core is decorated so that Vector can continue having its
  own custom class names on menus. This is done using the
  decoratePortletClass method.
* There is no support for a menu having a header representing the
  selected menu item, as is currently the case with variants. This is
  achieved via an extension to getPortletData. It's assumed that later
  when variants are merged with languages, this can be removed.
* Menus are agnostic to how they are displayed, so we must continue to
  add the is-dropdown template variable to drop down menus. In future we
  may want to rethink our Menu partial to make this unnecessary in PHP.
* The portal-first class is redundant in the modern Vector as we can
  use the first-child selector. Previously we introduced a class to
  service the legacy skin where this rule doesn't apply as #p-logo is
  the first child.  However, the legacy skin can do this using a special
  next sibling selector instead.

Bug: T268157
Change-Id: I5f7adc1840441b508ffee40139b85b64021789e6
2021-01-04 19:02:34 +00:00
Translation updater bot 64b7d4e868 Localisation updates from https://translatewiki.net.
Change-Id: Ieb60248ae8ca3f7f227b32dc4c60e02781969d6f
2020-12-30 10:17:39 +01:00
Translation updater bot cfec70852f Localisation updates from https://translatewiki.net.
Change-Id: I69b3a2fedcf8c920632e8f94c80c518b3c0ef58f
2020-12-29 09:51:41 +01:00
Translation updater bot 5dde318d5b Localisation updates from https://translatewiki.net.
Change-Id: Id99ca37364fb3c568553276cd7ac92a354f384ce
2020-12-28 10:44:14 +01:00
jenkins-bot 850b7a6ce6 Merge "Gadgets can change the search API" 2020-12-23 12:40:59 +00:00
jdlrobson 289f1d48f5 Gadgets can change the search API
```
mw.config.set('wgVectorSearchClient', {

   fetchByTitle: function( query, domain, limit ) {
      var xhr = fetch('http://' + domain + '/w/rest.php/v1/search/title?q=banana')
      .then(function (resp) {
          return resp.json();
      }).then(function (json) {
         return {
             results: json.pages
         }
      });
      return {
         fetch: xhr,
         abort: function() {}
      }
   }
})
```

This should be the absolute minimum to allow API clients to configure
the search. This should be considered an interim solution to buy us time to work out a more
elegant way to do this e.g. do this in the API itself…

Bug: T262566
Change-Id: Iac6f2551bed911980064dcb023193f800df0934f
2020-12-23 12:16:29 +00:00
jenkins-bot 9d16a71cea Merge "build: Updating mediawiki/mediawiki-phan-config to 0.10.6" 2020-12-23 07:41:52 +00:00
Translation updater bot 73e12842af Localisation updates from https://translatewiki.net.
Change-Id: I5b61a36624e4e9b9f6278734278e9060d41f1322
2020-12-23 08:34:18 +01:00
libraryupgrader 8d7df298b2 build: Updating mediawiki/mediawiki-phan-config to 0.10.6
Additional changes:
* Added the "composer phan" command to conveniently run phan.

Change-Id: I8d43396372a965018c8f98815e56977a943e9310
2020-12-23 07:15:01 +00:00
Translation updater bot 13e044ec68 Localisation updates from https://translatewiki.net.
Change-Id: I259beffe4e3fdf0b5647fcfb9e3eb294b02d11af
2020-12-22 08:36:31 +01:00
jenkins-bot 48edb06b66 Merge "Bump the bundlesize of skins.vector.styles and skins.vector.styles" 2020-12-21 13:29:12 +00:00
Translation updater bot ff4d0d4d6f Localisation updates from https://translatewiki.net.
Change-Id: Ice550fe961ee8d43e8b2c042f8ba85f4b54d11d7
2020-12-21 08:43:59 +01:00
jenkins-bot c07310165a Merge "Use User->isRegistered(), not deprecated isLoggedIn()" 2020-12-19 17:06:44 +00:00
James D. Forrester 5ef1ddb733 Use User->isRegistered(), not deprecated isLoggedIn()
Bug: T270450
Change-Id: If385757d64664eba148914063fbbe88f72b66fdc
2020-12-19 16:44:06 +00:00
jenkins-bot a0dd9de829 Merge "Add missing @return to Requirement" 2020-12-18 23:01:33 +00:00
Umherirrender c643250755 Add missing @return to Requirement
even with type hint there should be the full phpdoc to be consistent

Change-Id: I74f2fec23d655deee5704b0ab432cba5c7921ab6
2020-12-18 22:55:08 +01:00
Ammar Abdulhamid 3253665b0e Bump the bundlesize of skins.vector.styles and skins.vector.styles
Needed for core change I276325dc55fd475655e0212fc256b95ebb41b276

Bug: T268593
Depends-On: If2348d30c2382cd9642e2741b10884752493e0c8
Change-Id: Ib80fc24c84eb333daa016c9816fdf91cc60d3983
2020-12-18 19:00:17 +00:00
jenkins-bot 30eb683a70 Merge "Sync location/other styles of #mw-searchButton with #searchButton" 2020-12-18 18:41:40 +00:00
Nicholas Ray 0fdd4a99ac Sync location/other styles of #mw-searchButton with #searchButton
`#mw-searchButton` is apparently used with no-js clients or if the
js-search is broken [1]. Its position and dimensions should be kept in
sync with #searchButton.

This commit:

* Ensures that the same styles, including position, applied to #searchButton
are applied to "#mw-searchButton" so the dimensions are identical. This
should also address a critique in T270202 by removing the "invisible
button".

* Applies a `client-js` selector to ensure these buttons are
only positioned to the left of the search input if js is enabled. If js
is not enabled, having these positioned to the left is confusing as the
input has no obvious "submit" button.

* Syncs the input's end padding to match WVUI's input's end padding if
JS is enabled.

[1] 465e9492bb/includes/templates/SearchBox.mustache (L12-L21)

Bug: T270202
Change-Id: Ie1bb8c68b713b3a18f90ee11b44c78b436a6d0ba
2020-12-18 11:14:19 -07:00
Translation updater bot 209c245717 Localisation updates from https://translatewiki.net.
Change-Id: I2614895f5be70474cbd992da465b19ee4b213deb
2020-12-18 08:26:23 +01:00
Nicholas Ray 465e9492bb Remove suggestion link underline on hover and li bottom margin
Per T270202, there should be no underline on hover. The underline is
coming from a style in core.

There should also be no bottom margin on the suggestion li elements. The
bottom margin is also coming from a style in core.

Bug: T270202
Change-Id: I215a41aa328366aee2bb552d5d49c95905fd37f2
2020-12-17 10:06:29 -07:00
jenkins-bot d6979b1917 Merge "[modern][styles] Use @size-search-figure variable in padding-left calc" 2020-12-15 10:11:50 +00:00
Translation updater bot 853852a995 Localisation updates from https://translatewiki.net.
Change-Id: I4a8864273f357df2022ddc3a3d62fb505b9fd28f
2020-12-15 08:39:14 +01:00
Nicholas Ray 720bd0e6b7 [modern][styles] Use @size-search-figure variable in padding-left calc
This variable is used in the same way in WVUI.

Change-Id: Ib7a6d7bb456b3179c3b2eae4b1b0da064fe1f79c
2020-12-14 17:04:33 -07:00
Volker E 595870baeb [modern][styles] Amend Typeahead component styles in modern
Following Design Style Guide components sizing and Alex' feedback
on task. Changing applied styles scope to non Vue.js enhanced,
modern-only style of search component as well, in order to have
clean appearance and transforming disruption free.
Also changing em static values to LESS calculations for more developer
friendliness and change background-size to be `em` as well for
user-set typographic zoom preference ability.

Bug: T269959
Change-Id: I157712721621344171a32a8887a5e20cc16cae0d
2020-12-14 11:37:14 -08:00
Volker E 816836c2ae [modern][styles] Shift search bar to the left
`@margin-horizontal-search` is used for margin of search component
and for personal tools, but they are also floated right so one only
gets a clearer picture of this change when the canvas is exactly at
one specific size.
Additionally it's used for a media query, so the min-width is slightly
reduced (by 32px equivalent) as well. That's advantageous too.
At some point we're going to change this to `rem` unit, that's why I've
taken distance from changing it to a `px` value for now although devised
differently before.

Bug: T269959
Change-Id: I21cac3f049eed64520dd229ef80d10f9be853e0e
2020-12-14 08:12:01 -08:00
Translation updater bot 2c0c6336fa Localisation updates from https://translatewiki.net.
Change-Id: I540339e7af69de9acf05e2e4e79e9a56c6a7d01f
2020-12-14 08:54:41 +01:00
libraryupgrader e27837d832 build: Updating ini to 1.3.8
* https://npmjs.com/advisories/1589

Change-Id: I91c83a7070f219833cbaa3e33939778880dd7bf7
2020-12-12 08:35:05 +00:00
Umherirrender 61c50007e3 build: Updating mediawiki/mediawiki-codesniffer to 34.0.0
Change-Id: I79d8249096760043242f3ff18421b03f17afb1e9
2020-12-12 01:16:02 +01:00
Translation updater bot c5a6164cef Localisation updates from https://translatewiki.net.
Change-Id: I79d2b7ba3284c778b57c7a00fe1b753a51caf784
2020-12-11 08:39:13 +01:00
Jan Drewniak 8afa6f4440 Improve visual similarities between Vector and WVUI search forms.
Modifies and annotates the CSS required to make the server-rendered
version of the new search form look like the WVUI version of the
search form.

Bug: T264355
Change-Id: I989860cfbb755ecbb706b79bd807e9d0013bc4e5
2020-12-09 16:04:45 +01:00
Translation updater bot 3a782ce41b Localisation updates from https://translatewiki.net.
Change-Id: Ie798402f51360cc2bd4b8e1ca58fe833bfb1194e
2020-12-09 08:44:17 +01:00
jenkins-bot a9b47f57fb Merge "Development: Allow us to test search with different API hosts" 2020-12-09 00:14:43 +00:00
jenkins-bot 454611f60a Merge "[search] Add Vue search performance instrumentation" 2020-12-09 00:06:32 +00:00
jenkins-bot 707862df60 Merge "[search] Instrument Vue.js-based search widget" 2020-12-09 00:06:30 +00:00
Nicholas Ray 3aaedcfe3c [search] Add Vue search performance instrumentation
This is almost identical to the instrumentation currently used in
production for mediawiki.searchSuggest -- the only differences being in
the nomenclature of variables, etc.

As part of comparing Vue search with legacy search, we need to track how
long it takes a keypress to load and render search results for Vue
search. This will only be used only in synthetic testing at this time
(Real user monitoring (RUM) is not in scope for this ticket).

To test locally, first enter characters in input. Then to see the
metrics recorded:

```
// View all marks
performance.getEntriesByType('mark');

// View all measures
performance.getEntriesByType('measure');
```

This commit adds the following metrics which will only be used in our
synthetic tests. We are not collecting RUM metrics at this time.

Measures:

* mwVectorVueSearchLoadStartToFirstRender: Measures the time it takes
from the start of loading the search module to the first render of results.

* mwVectorVueSearchQueryToRender: Measures the time it takes from
the start of the fetch to the render of search results.

Bug: T251544
Change-Id: I39200648a3a0a4079a132134d142ad8997c8962a
2020-12-08 23:41:28 +00:00
Sam Smith aa10668e6d [search] Instrument Vue.js-based search widget
Add event listeners and associated helpers to emit SearchSatisfaction
events via the `mediawiki.searchSuggest` protocol.

Bug: T257698
Change-Id: Ica040cd18d6c4bf8a1b1f607bb4647c7e8eb7108
2020-12-08 23:41:19 +00:00
jdlrobson dce24c9784 Development: Allow us to test search with different API hosts
By default the API uses location.host as the host, however during
development it is useful to test against production wikis

For example to test against English Wikipedia:
$wgVectorSearchHost = 'en.wikipedia.org';

Note: Links when clicked will not take the user to the target page, and
instead will take the user to the search results page with a link to
create the page.

The following config can be used to workaround that page:
$wgDisableTextSearch = true;
$wgSearchForwardUrl = "/w/index.php?title=$1";

Change-Id: I5fbac7f54844d7a9d6976007bc0d0ff9938b9f2b
2020-12-08 15:22:45 -08:00
jenkins-bot f44fefb53b Merge "Cleanup: Drop unused body feature classes" 2020-12-08 22:25:20 +00:00
jenkins-bot b8e8655af3 Merge "Add Wvui Config to show/hide thumbnails and descriptions" 2020-12-08 22:25:18 +00:00
jenkins-bot 3c6c8ebbba Merge "Integrate WVUI search into Vector" 2020-12-08 22:18:38 +00:00
jdlrobson a52da8ddaa Cleanup: Drop unused body feature classes
These are no longer referenced in the code and artifacts of a time
when these were feature flagged.

Change-Id: Ia850ac9fb92033d82a333836ba7ff32312f042a7
2020-12-08 13:29:06 -08:00
Nicholas Ray e0c47dc462 Add Wvui Config to show/hide thumbnails and descriptions
Uses ResourceLoader's virtual config feature to get the config and pass
it down to Wvui's typeahead search component.

Disclaimer: I'm a typescript noob and am not sure if the
config.json.d.ts is correct although it seems to make tsc happy.

Bug: T260167
Change-Id: I2eced14c7df3b795b4de0e5149c2ca9fd598c7be
2020-12-08 13:28:42 -08:00
Jan Drewniak bd83398659 Integrate WVUI search into Vector
Creates a new skins.vector.search module that
replaces the searchSuggest module from MediaWiki core.

This module creates a new Vue app using the WVUI
search widget for the new search experience.

The legacy search input form is still retains on pageload,
and the new search kicks on search input focus.

In order to manage that transition, the legacy search
input is styled to resemble the new WVUI input, and the
new input is manually focused after the component mounts.

Vue is also added as a dev-dependency to help with
type-checking.

Other changes:
* the entry in skin.json is reordered alphabetically after
skins.vector.js

Bug: T264355
Change-Id: Ibb9561a77a14734297cb4d0ddcd415fc0750b45d
2020-12-08 13:27:12 -08:00
jenkins-bot 87fdf5d7c7 Merge "Amend standard 'search' icon size, position and CSS rules" 2020-12-07 12:47:14 +00:00
Volker E 795de73496 Amend standard 'search' icon size, position and CSS rules
Updating 'search' icon to latest WVUI/OOUI optimized, reduced path. Also
- amending size of search input and position of icon in input slightly to
  align it closer to standard text inputs
- simplify CSS by getting rid of selector which is targeting both, input and
  button and applying rules only where needed
- fixing code comments
- increasing icon size to `16px` equivalent `em` to enable user text zooming
  preference applied to search icon as well. `16px` is a compromise towards the
  old look and feel of the previous icon bringing it closer to standard icon size in
  legacy Vector.

This change affects both modern and legacy versions of Vector.

Bug: T266166
Change-Id: Ib4c0c74d3cac30e1893f4c76e56e1197652d41ba
2020-12-07 12:19:01 +00:00
Translation updater bot cff34a672a Localisation updates from https://translatewiki.net.
Change-Id: I1f6e3d4c9f80faa7f09e1fdc08a172737e8ecb74
2020-12-07 08:57:20 +01:00
Translation updater bot 2ff4d4d6ae Localisation updates from https://translatewiki.net.
Change-Id: I664835d6ac97c08d0bf06bb0a0e339425dc49efc
2020-12-04 08:36:03 +01:00
Translation updater bot 5bf22a7740 Localisation updates from https://translatewiki.net.
Change-Id: Iebb97cb0f2b3fe374c9366ec6c91366546e42bd4
2020-12-02 08:34:47 +01:00
Translation updater bot a6a3c5961f Localisation updates from https://translatewiki.net.
Change-Id: I21ae32c8e160374e8d77e91d4802d2ab8bdced96
2020-11-30 08:50:53 +01:00