MediaWiki:Gadget-skinTogglesNew-prompt.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
1 /**
2 * Prompts that dark mode color scheme is available.
3 *
4 * @author Elessar2
5 * @author Gaz Lloyd
6 * @author JaydenKieran
7 * @author TehKittyCat
8 *
9 * Positioning logic adapted from [[MediaWiki:Gadget-rsnews.js]].
10 */
11 var $portletLink = $('#pt-skin-toggles'),
12 $prompt
13
14 function init() {
15 $prompt = $('<div>').addClass('rsw-color-scheme-prompt').css( 'display', 'none' ).append(
16 $('<p>').css({
17 'font-size': '0.75em'
18 }).html('Your device is using dark mode. You can click here to enable the wiki\'s dark mode!<br><a id="rsw-color-scheme-opt-out" href="#">Don\'t show this again</a>')
19 )
20 $('body').append($prompt)
21
22 // Set initial position before showing the prompt.
23 resizeEvent()
24 $prompt.show()
25
26 // Reposition prompt on window resize.
27 $(window).resize(resizeEvent)
28
29 // Close prompt when anywhere is clicked.
30 $(document).click(function() {
31 $prompt.hide()
32 })
33
34 // Set localStorage key so we don't prompt them again.
35 $( '#rsw-color-scheme-opt-out' ).click( function() {
36 localStorage.setItem('dark_prompt', 'true')
37 $prompt.hide()
38 } )
39 }
40
41 function resizeEvent() {
42 var offset = $portletLink.offset(),
43 height = $portletLink.outerHeight(),
44 width = $portletLink.outerWidth(),
45 pwidth = $prompt.outerWidth(),
46 wheight = $(window).height(),
47 ptop = offset.top + height + 15
48
49 $prompt.css({
50 top: ptop + 'px',
51 left: (offset.left + width/2 - pwidth/2) + 'px',
52 'max-height': (wheight - ptop - 7) + 'px'
53 })
54 }
55
56 // Wait for #pt-skin-toggles's position to be finalised.
57 if ( document.readyState === 'complete' ) {
58 init()
59 } else {
60 window.addEventListener('load', init )
61 }