Commit Graph

977 Commits

Author SHA1 Message Date
jdlrobson
d69d5773e5 Compact language links module is loaded via server side
This provides an alternative mechanism to
I0518ecdf402ebf5eb6bad2c430f6462322c0d8e1 for loading the compact
language link module. Instead of relying on the client, the HTML
is inspected.

Bug: T264824
Change-Id: I977a998388b3e70f7fe4d97fa05be3c1ac1bf676
2020-11-18 17:07:59 +00:00
jdlrobson
ab6decae11 Allow skins to register their own button and disable compact
Example usage:
Iabd4688c6081b4de391b9655b92a16f3a414e018

We will skip loading the compact link if we don't need
to compact the languages.

Note special handling is known for Timeless which stops
propagation of events. This will be fixed in Timeless at a
later date.

Bug: T264824
Change-Id: I0518ecdf402ebf5eb6bad2c430f6462322c0d8e1
2020-11-18 17:06:40 +00:00
Amir Aharoni
077a3ac844 Make a more specific CSS selector in getLangsWithBadges
This should avoid problems with elements that are not real
interlanguage links, which may be added by other code,
for example user scripts.

Bug: T267887
Change-Id: I3f9c618b417363f667a31e9dad335c1aec15b055
2020-11-17 10:25:43 +02:00
Niklas Laxström
4387bb9d61 CompactLinks: Better handling of opening links to new tab/window
* Check for any of Shift, Ctrl or Meta
* Only do it for links
* Support both mouse and keyboard

Change-Id: I0b331b802e1d96ae0e0511746d6b42663db924b1
2020-11-16 14:51:47 +00:00
jdlrobson
e3569d32a7 Separate compacting of language list from launching of dialog
This refactor will allow us to separate these two functions so that
the modernized version of Vector can avoid loading the compact
language list.

Changes:
* `options` is now optional to the CompactInterlanguageList constructor
The max value is already defined in
CompactInterlanguageList.prototype.init
* this.interlanguageList is now initialized inside the constructor
Previously calling CompactInterlanguageList.prototype.createSelector
or getCompactList before calling init would throw an exception.
This will be important in I0518ecdf402ebf5eb6bad2c430f6462322c0d8e1 when
the responsibilities of wiring up the button and compacting the languages
is separated.

Bug: T264824
Change-Id: I9606df30a050d0cdaf7add2deff849cd5b895bab
2020-11-05 08:44:06 +00:00
Volker E
f5c4fe1826 Remove unnecessary rules and properties
Active state is already covered with `mw-ui-button`. Color needs to
become darker for better contrast ratio when button is toggled.

Change-Id: If888a862c0b642aaa200e8207f3804f76f05b8b0
2020-11-03 13:56:05 +00:00
Volker E
8d54c3faf7 Amend compact links icon to use latest WikimediaUI version
Also amending `color` & `padding` to be closer to button standard appearance and
increase `margin-bottom` to make “Edit links” link not stick to button.

Bug: T170137
Change-Id: Iabb6abfdb8fa69c9f2634b190cb5fa6c005eb17c
2020-11-02 07:00:55 -08:00
Niklas Laxström
79a038f166 Handle Apply button little bit more sanely
Change-Id: I55d48de703662f139549d764bf7c1f235111d5ab
2020-11-02 11:08:25 +00:00
Niklas Laxström
5cb2aec0a1 Fix language switching using the undo tooltip
Introduced in I740600d18859422b2f98a5ef92d0321f6e9615a2.

We need to prevent the default action (navigating a link) so that
our custom code has a chance to run. Before it was synchronous so
it called location.href before default action had a chance to execute.
When it was made asynchronous, the default action got executed before
our custom code.

Change-Id: I292f99aa5f5ff536d8197174c317018462685866
2020-10-28 11:44:33 +00:00
Niklas Laxström
094c30bc1c Fix language selection using [...] button
Introduced in I740600d18859422b2f98a5ef92d0321f6e9615a2.

When onSelect was called for the new language, it set dirty to true.
Then the, now delayed, render function reset the dirty status to false.

There is no need to set dirty to false on render, so moved it to the
constructor.

Change-Id: Ibfa23f545c9d358e7e03fb299c238182ea449d7c
2020-10-28 09:29:47 +01:00
Timo Tijhof
09862cffec ext.uls.eventlogger: Remove more obsolete deferred complexity
Follows-up c578db02 and ea671b1f, which I thought removed
all code relating to the old async EventLogging method.
I didn't notice this UI code at the time, because I only took a
single pass over the code to find dead code. Now that that code
is gone, it is clear that the UI code is also redundant.

The mw.track() and logEvent() methods don't track the Beacon API's
async fetches, which also isn't needed, since the loss of browser
context upon navigation doesn't abort background beacons.

The loading of the EL library itself is already ensured via a
dependency so we already know there won't be an async fetch for
that.

What that leaves is some portion of older browsers in which a
EventLogging falls back to 'new Image'. This is basically just
IE 11 per <https://caniuse.com/beacon>, and for those some portion
of events will have been lost since EventLogging removed support
two+ years ago for tracking those fallback fetches via a Promise
(because of the perf issues caused by what the removed code here
was able to do).

Change-Id: Idf4378f983b6ba0e755ebadb97aa6d87cf95f7a5
2020-10-22 23:45:52 +00:00
jdlrobson
f8fde38197 Use require to clarify ext.uls.preferences
ext.uls.preferences only depended on ext.uls.common because of its
use of the uls global. This is unnecessary, and made clearer by using
require and module.exports to access it.

Change-Id: Ied2a1b560d19a18529fd766ced778c912199fa2f
2020-10-20 16:08:59 +00:00
jdlrobson
5cd10ce862 Reduce JS loaded on critical path
As a precursor to incorporating a new language switcher in the new
version of Vector I'd like to improve the performance of loading
the switcher.

It seems most code can be deferred until the language selector
button is clicked.

This shaves around 30kb of resources off the critical path for
most users. There's potential here for a positive performance
impact so we should follow up the deployment by checking the
associated performance graphs to see if there's improvement.

Note, if the compact personal links feature is enabled
there is no performance saving for now. This will be addressed in follow
ups.

Bug: T153844
Bug: T153845
Bug: T237061
Change-Id: I740600d18859422b2f98a5ef92d0321f6e9615a2
2020-10-20 13:40:49 +00:00
jdlrobson
a1963ce12d Merge ext.uls.inputsettings into ext.uls.displaysettings
These modules are always loaded together. There is no need to load
them in separate ResourceLoader modules

Change-Id: Ibdf7d1bbd9090ffed6a142055ee684ad97dd6680
2020-10-14 21:11:03 +00:00
Reedy
99937ba18b Add GochiHand font
Bug: T258839
Change-Id: I38eacbfbc3293c7b7a2a6bf4f680b2f70f1a43ad
2020-09-16 05:20:07 +00:00
Volker E
394b7cb185 Replace deprecated background-image-svg() mixin calls
Use normal `background-image` properties with SVGs now
that IE 8 and Android 2.1 is removed from Grade C.

Bug: T248062
Change-Id: I6026ff013e41cc147d916193d93c03a6b3d4efef
2020-07-30 04:31:04 +00:00
David Kamholz
dc4937eb1f update Bali fonts to fix spacing issue
Change-Id: I221e9c2db3373ffc14a9f764e5de311e980a93a6
2020-07-27 14:29:15 -07:00
Ed Sanders
e128c51356 build: Update eslint-config-wikimedia to 0.16.2
Change-Id: Iea4b73bdceb66e113b7f9c9244ae6b37a3ce205f
2020-07-09 16:40:05 +01:00
Seb35
54ff8272ab Remove jQuery 3 migration warnings
Bug: T175236
Change-Id: Ibbeec40bd46523c14ba53da1441f46fc9cdfbc10
2020-05-08 11:48:58 +00:00
Volker E
6ea7307df9 Amend Base10 color and remove (affected) PNG fallbacks
Amending Base10 to slightly darker `#202122` to fulfill WCAG
requirements in connection to Accent50.
Also removing all PNG fallbacks as they are only used in JS-only.

Bug: T248393
Change-Id: I07fa4e23320763a634e5340ab125634842b86454
2020-04-21 11:43:23 +00:00
David Kamholz
a1628b0af0 Balinese fonts: update Pustaka Bali and add new Kadiri font
Change-Id: Ica823ce359bcdacc4982faf6c19f37549be37088
2020-04-20 04:27:49 +00:00
Abijeet Patro
56c38a5515 Revert "Simplify ext.uls.preferences module"
This reverts commit 61f1a9863a.

Reason: mw.storage.getObject was introduced in MW 1.34. Need to
support MW 1.33 for MLEB 2020.04 release.

Change-Id: If9cd8d1f9e1ab544eba280c8fa7b36db91b64573
2020-04-16 12:43:38 +00:00
David Kamholz
44ea2ceeb3 added Pustaka Bali and Vimala fonts for Balinese
Bug: T247142
Change-Id: Ie77a72ca532272662dd2c3f7f4d5a3ea2236f067
2020-03-09 05:47:15 +00:00
Reedy
da1c81d691 Run compile-font-repo.php
Running it on a repo without any changes, results in ext.uls.webfonts.repository.js changes

Change-Id: I28353a1da384eb6e3386d8697e80a2b33daaf455
2020-03-07 08:05:45 +00:00
Niklas Laxström
61f1a9863a Simplify ext.uls.preferences module
Related to T246370

Change-Id: Iedef79c75ef0ab9c1baff5a0e6f1953c3c56ac91
2020-03-03 11:38:23 +00:00
Fomafix
9fabb9a4ff Simplify variable assignment.
This makes the code shorter and the message is generated only in the
else path.

Change-Id: I1367280b6c154fe77b8a2cfbcdb6333aecefab53
2020-01-23 14:40:25 +01:00
Thiemo Kreuz
a5ae7cb556 Streamline a few pieces of JavaScript code
The main goal here is to reduce complexity. For example, the method to
remove a parameter from the current URL is never used with another
parameter. The complexity is not needed.

This is inspired by the changes I have seen in Icaf086f.

Change-Id: If22c25e84f50ac380320cd581690835ddb70f01d
2020-01-23 09:29:12 +00:00
Abijeet
459d55c5d3 Remove setlang URL parameter on dialog close
Add two new options for ext.uls.dialog - afterOpen and afterClose.
These are callback function which will be triggered after the dialog
opens or closes.

Using the afterClose callback in ext.uls.setlang to remove the
setlang parameter from the URL if the dialog is closed without
pressing any button. This might happen if the user closes the dialog
by pressing Esc, or by clicking on the overlay.

Also see: Ie3215d12d9c77f15597495e21610707b272eeee9

In addition, renamed all occurrence of setlang to setLang.

Bug: T63115
Change-Id: Icaf086f947b1d91bf7ad5b36f126da0be1fc7747
2020-01-23 09:27:15 +00:00
Fomafix
80b8d411aa Use document.documentElement instead of 'html' as jQuery selector
Change-Id: I1b3bb53a31125333d14d1659fdadd2a81140ae50
2020-01-20 14:52:13 +00:00
Abijeet
5ad4f74ea9 Add support for keyboard events for the setlang dialog
Support has been added for:

* Esc: Closes the dialog
* Tab: Ensures that tabbing keeps focus on the focusable elements
  in the dialog. If no overlay is not present, the focus is
  allowed to flow normally.

This should not happen but if NO focusable elements are found and
overlay is displayed, focus is locked on the overlay.

Also add description and other license information for uls.dialog
& uls.setlang files.

Bug: T63115
Change-Id: Ie3215d12d9c77f15597495e21610707b272eeee9
2020-01-14 15:14:37 +00:00
Fomafix
8652470ec4 Use position:fixed instead of position:absolute
This prevents a wrong position of the dialog when there is a different
scroll position like on an URL with fragment, for example
Special:Version?setlang=de#Installed_software

Change-Id: Ic10c6b13461a259d87fd43a718acdd1421193b6c
2019-12-23 13:50:28 +00:00
Fomafix
5fda459531 Remove URL parameter setlang from history when language is unchanged
This change allows to use the ULS language changer without getting a
dialog for restoring the old language.

This change requires that the module is also loaded in this case.

Change-Id: Ie5169e986d0362034ede122b0bc29ce7a4aa481e
2019-12-19 20:32:25 +01:00
Fomafix
d31fddd8e7 Use history.replaceState instead of history.pushState
This removes the URL with the URL parameter setlang from the history.
A click on history back doesn't show the URL parameter setlang anymore.

Change-Id: I0ea8c4508bedd9758a1cebbe8ecb2a7113bf8538
2019-12-19 20:11:19 +01:00
Abijeet
ff02e63a45 Update setlang to display confirmation dialog to change language
setlang will now display a dialog to confirm with the user that
they would like to change their interface language. The preferred
language will only be updated if the user confirms.

The dialog will be displayed if the setlang parameter is present in
the query string and,

* A user is logged in, and their preferred language is not the same
  as the one passed via setlang.
* For an anonymous user if the wgULSAnonCanChangeLanguage is true,
  and the current interface language is not the same as the one
  passed via setlang.

Bug: T63115
Change-Id: I882297d99a594fd82fd0aec3b4664e8bfd1eac3a
2019-12-19 14:54:34 +00:00
Fomafix
61ebecff91 Use document.body instead of 'body' as jQuery selector
Change-Id: Ia551b3050ed546de1f9db44dbd332a5b6c108a9f
2019-12-16 15:51:09 +00:00
Fomafix
6a5b9e3164 Consistently use setTimeout, clearTimeout and location without window
Change-Id: Ie83313b3f2a7f9bc939eb19d7a82bc980f12b0b8
2019-12-16 10:19:35 +00:00
Volker E
f6e5d24941 Put overhauled icon on baseline and unify code with Vector's
Putting icon on link label baseline as good as possible cross-browser
and unify code with Vector skin's code. With one improvement,
putting icon in `:before` selector in order to be able to specifically
change icon independent from link, which opens up `opacity` or state
changes.
Also cleaning up CSS by
- reducing specificity
- changing to `stylelint-disable-line` only on specific selectors
- removing initial value `transparent`

Bug: T207075
Change-Id: Ib5d446434263441eb85aa2e96a0e4dbde1034c1c
Depends-on: I92acb9851a3c0acdbc40a4a4528a91c7332c9293
2019-11-13 23:02:23 +00:00
Ed Sanders
b105c2cadc build: Update linters
Change-Id: Ib83952a64224ab550f64975285e60713225b23b7
2019-11-12 14:45:01 +00:00
Timo Tijhof
372ab5301e ext.uls: remove redundant -webkit gradient/svg reference
To match how MediaWiki core expands the .background-image-svg() mixin
function. According to Codesearch, this is the only repo with a match
for `-webkit-linear-gradient.*url\(`.

Bug: T121730
Change-Id: Ide4fc6eef81de76b4b0043cd88ecdf8ed2e3e736
2019-10-06 16:38:21 +00:00
Timo Tijhof
21100ebb78 Remove @embed where it needlesslay delays the page load
>>! Performance Inspector
> Source: ext.uls.common
> Used selectors: 0.00% (0 of 10)
> Used embeds: 0.00% (0 of 1)
> ----
>   .uls-icon-back {
>     background-image: .., url("data:image/svg+xml..

It seems the entire module isn't used, but that can be fixed
separately. The icon is used by ext.uls.inputsettings and
ext.uls.displaysettings as part of a click-triggered dialog,
which means it can never appear on a page directly.

Bug: T121730
Change-Id: I36831beeb764e6893c331b20b90102a5ceb0d21a
2019-09-27 16:19:34 +00:00
Ed Sanders
dae53b628c build: Update linters
Change-Id: Ib513d9fe879fb0c848cdfefaaaa753cc7279e242
2019-09-17 14:55:46 +01:00
Isarra
3ef282de00 Set a relative size for the pt-uls icon and padding so it scales properly
Instead of background-size:containing to the relative font size, but with
fixed horizontal space for it due to the padding, set both the padding and
background-size to use ems instead of px so both scale properly.

Tested in modern, cologneblue, monobook, and vector with no visible issues.
Resolves issue with icon being too large on timeless. Does not appear to
affect minerva, as that just handles it all another way.

Change-Id: Ibcea827fe15ee50c947e9c0de1e6cf053e299033
2019-09-07 11:36:34 +00:00
Ladsgroup
32b36828fd Revert "Return target of redirect languages in mw.uls.getFrequentLanguageList"
This reverts commit 76551ed4a7.

Reason for revert: It seems it's breaking Serbian editing Wikidata

Bug: T217770
Bug: T121747
Change-Id: If69156400ff665a8c488a24f70d6a100e26761da
2019-08-25 22:11:57 +00:00
Amir Sarabadani
76551ed4a7 Return target of redirect languages in mw.uls.getFrequentLanguageList
When mw.uls.getFrequentLanguageList() is requested sometimes
the language that is a redirect returned causing other codebases (like Wikibase)
to show an invalid language to the user.

Bug: T217770
Change-Id: I49c802d584081aa5992dd0ba76144059bcac56c8
2019-07-18 09:23:34 +00:00
Volker E
78b30ddae7 Decrease opacity and add :hover transition
Follow-up to https://github.com/wikimedia/jquery.uls/pull/335.

Change-Id: I83f2e8b0fd23a6a989b16009d2c138383320067f
2019-06-12 05:16:51 +00:00
Fomafix
8366a0a029 ext.uls.eventlogger: Remove use of mw.eventLog.logEvent() promise
This change prevents a failure when clicking on the language revert
button.

This change is a follow-up to c578db020d.

Change-Id: Ic5da1b1dcdcc07de417a6eef0189940cb5a2392f
2019-04-26 21:26:51 +00:00
Timo Tijhof
ea671b1f24 ext.uls.eventlogger: Use mw.track() and remove EventLogging dep
Given the code no longer uses any EventLogging methods directly,
but rather mw.track(), this means it also doesn't need to declare
any dependencies, including for older MediaWiki versions this
will work as-is.

Change-Id: I8cdcef54321d0887c509fc3683acf132c113e628
2019-04-17 04:04:01 +00:00
Timo Tijhof
c578db020d ext.uls.eventlogger: Remove use of mw.eventLog.logEvent() promise
I guess the expectation was that for browsers that don't support
Navigator.sendBeacon, the promise would wait for the 'new Image'
fallback to complete.

However, EventLogging never did that. In browsers where the Beacon API
is not supported, 'new Image' starts asynchronously and either
way the returned promise is immediately resolved.

The only purpose of the returned promise was to detect errors
in the format of the event (e.g. missing properties), which this
code is not concerned with (given that it uses "always",
not "done"). And besides, for that you'd probably want to use
the EventLogging debug mode [1] instead.

This is the last step before ULS can switch to a soft EL dependency
by using mw.track instead, which I'll do in the next commit.

Change-Id: If016b73dcd7320ddf1478c1678d2cc6371fe0fa1
2019-04-17 04:03:47 +00:00
Santhosh Thottingal
da0aad3e03 Add fonts for Church Slavonic
Adding Ponomar, Fedorovs, Menaion and Monomakh restaurant.

Bug: T156843
Change-Id: I8f7c4861fc667bba3dfd4359f2c59633fa6f83ff
2019-04-01 12:39:33 -07:00
Ed Sanders
c080452013 build: Update eslint-config-wikimedia to 0.11.0
Change-Id: Ic59891fab5f8e35420bddbed34072841883fa543
2019-03-13 23:41:14 +00:00