<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-QDmodal.js</id>
	<title>MediaWiki:Gadget-QDmodal.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-QDmodal.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-QDmodal.js&amp;action=history"/>
	<updated>2026-04-11T05:09:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-QDmodal.js&amp;diff=42205&amp;oldid=prev</id>
		<title>Alex at 11:06, 20 October 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-QDmodal.js&amp;diff=42205&amp;oldid=prev"/>
		<updated>2024-10-20T11:06:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-QDmodal.js&amp;amp;diff=42205&amp;amp;oldid=919&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-QDmodal.js&amp;diff=919&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;/* &lt;nowiki&gt;     QDmodal - flexbox-based modal library     Modified to remove Wikia-specific i18n code; relies on MediaWiki:Gadget-QDmodal.css      @author OneTwoThreeFall     @source &lt;https://dev.fandom.com/wiki/QDmodal&gt;     @source &lt;https://dev.fandom.com/wiki/MediaWiki:QDmodal.js&gt; */  /*jslint browser, long, this */ /*global jQuery, mediaWiki */  (function ($, mw) {     &quot;use strict&quot;;      var version = 20230117;      if (mw.libs.QDmodal &amp;&amp; mw.libs.QDmodal.version &gt;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-QDmodal.js&amp;diff=919&amp;oldid=prev"/>
		<updated>2024-10-13T01:00:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;&amp;lt;nowiki&amp;gt;     QDmodal - flexbox-based modal library     Modified to remove Wikia-specific i18n code; relies on &lt;a href=&quot;/w/MediaWiki:Gadget-QDmodal.css&quot; title=&quot;MediaWiki:Gadget-QDmodal.css&quot;&gt;MediaWiki:Gadget-QDmodal.css&lt;/a&gt;      @author OneTwoThreeFall     @source &amp;lt;https://dev.fandom.com/wiki/QDmodal&amp;gt;     @source &amp;lt;https://dev.fandom.com/wiki/MediaWiki:QDmodal.js&amp;gt;: &lt;/span&gt;  &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;jslint browser, long, this: &lt;/span&gt; &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;global jQuery, mediaWiki: &lt;/span&gt;  (function ($, mw) {     &amp;quot;use strict&amp;quot;;      var version = 20230117;      if (mw.libs.QDmodal &amp;amp;&amp;amp; mw.libs.QDmodal.version &amp;gt;...&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* &amp;lt;nowiki&amp;gt;&lt;br /&gt;
    QDmodal - flexbox-based modal library&lt;br /&gt;
    Modified to remove Wikia-specific i18n code; relies on [[MediaWiki:Gadget-QDmodal.css]]&lt;br /&gt;
&lt;br /&gt;
    @author OneTwoThreeFall&lt;br /&gt;
    @source &amp;lt;https://dev.fandom.com/wiki/QDmodal&amp;gt;&lt;br /&gt;
    @source &amp;lt;https://dev.fandom.com/wiki/MediaWiki:QDmodal.js&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*jslint browser, long, this */&lt;br /&gt;
/*global jQuery, mediaWiki */&lt;br /&gt;
&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    var version = 20230117;&lt;br /&gt;
&lt;br /&gt;
    if (mw.libs.QDmodal &amp;amp;&amp;amp; mw.libs.QDmodal.version &amp;gt;= version) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var visibleModals = document.getElementsByClassName(&amp;quot;qdmodal&amp;quot;);&lt;br /&gt;
    var $window = $(window);&lt;br /&gt;
    var $body = $(document.body);&lt;br /&gt;
    var $closeIcon = $(&lt;br /&gt;
        &amp;quot;&amp;lt;svg class=&amp;#039;qdmodal-close&amp;#039; xmlns=&amp;#039;http://www.w3.org/2000/svg&amp;#039; viewBox=&amp;#039;0 0 16 16&amp;#039;&amp;gt;&amp;quot;&lt;br /&gt;
        + &amp;quot;&amp;lt;title&amp;gt;Close&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
        + &amp;quot;&amp;lt;path d=&amp;#039;M 3,3 13,13 M 13,3 3,13&amp;#039;/&amp;gt;&amp;quot;&lt;br /&gt;
        + &amp;quot;&amp;lt;/svg&amp;gt;&amp;quot;&lt;br /&gt;
    );&lt;br /&gt;
    var $spinner = $(&lt;br /&gt;
        &amp;quot;&amp;lt;svg class=&amp;#039;qdmodal-spinner&amp;#039; xmlns=&amp;#039;http://www.w3.org/2000/svg&amp;#039; viewBox=&amp;#039;0 0 50 50&amp;#039;&amp;gt;&amp;quot;&lt;br /&gt;
        + (&amp;quot;&amp;lt;path d=&amp;#039;M 25,5 v 10&amp;#039;/&amp;gt;&amp;quot;.repeat(12))&lt;br /&gt;
        + &amp;quot;&amp;lt;/svg&amp;gt;&amp;quot;&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    function isElementOrChildFrontmost(element) {&lt;br /&gt;
        var pos = element.getBoundingClientRect();&lt;br /&gt;
        var frontmostElement = document.elementFromPoint(pos.left, pos.top);&lt;br /&gt;
        return element.contains(frontmostElement);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function addButton(button) {&lt;br /&gt;
        var $button = $(&amp;quot;&amp;lt;span&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        if (!button) {&lt;br /&gt;
            // invalid&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (typeof button.condition === &amp;quot;function&amp;quot; &amp;amp;&amp;amp; !button.condition(this)) {&lt;br /&gt;
            // condition function present and didn&amp;#039;t return truthy&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (button.href) {&lt;br /&gt;
            $button = $(&amp;quot;&amp;lt;a&amp;gt;&amp;quot;).attr({&lt;br /&gt;
                href: button.href,&lt;br /&gt;
                target: &amp;quot;_blank&amp;quot;&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (typeof button.handler === &amp;quot;function&amp;quot;) {&lt;br /&gt;
            $button.on(&amp;quot;click&amp;quot;, button.handler);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (button.attr) {&lt;br /&gt;
            $button.attr(button.attr);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $button.addClass(&amp;quot;qdmodal-button&amp;quot;).text(button.text);&lt;br /&gt;
&lt;br /&gt;
        this.$footer.append($button);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function closeOnBackgroundClick(event) {&lt;br /&gt;
        if (event.target === event.delegateTarget) {&lt;br /&gt;
            this.hide();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function closeOnEscapeKeydown(event) {&lt;br /&gt;
        if (&lt;br /&gt;
            event.key === &amp;quot;Escape&amp;quot;&lt;br /&gt;
            &amp;amp;&amp;amp; isElementOrChildFrontmost(this.$container[0])&lt;br /&gt;
        ) {&lt;br /&gt;
            this.hide();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //// QDmodal constructor ////&lt;br /&gt;
&lt;br /&gt;
    mw.libs.QDmodal = function (id) {&lt;br /&gt;
        if (this === mw.libs) {&lt;br /&gt;
            throw new Error(&amp;quot;mw.libs.QDmodal should be called as a constructor.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var $close = $closeIcon.clone();&lt;br /&gt;
&lt;br /&gt;
        this.$container = $(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;qdmodal-container&amp;quot;);&lt;br /&gt;
        this.$element = $(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;qdmodal&amp;quot;);&lt;br /&gt;
        this.$title = $(&amp;quot;&amp;lt;h3&amp;gt;&amp;quot;);&lt;br /&gt;
        this.$content = $(&amp;quot;&amp;lt;section&amp;gt;&amp;quot;);&lt;br /&gt;
        this.$footer = $(&amp;quot;&amp;lt;footer&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        this.$container.append(&lt;br /&gt;
            this.$element.append(&lt;br /&gt;
                $(&amp;quot;&amp;lt;header&amp;gt;&amp;quot;).append(&lt;br /&gt;
                    this.$title,&lt;br /&gt;
                    $close&lt;br /&gt;
                ),&lt;br /&gt;
                this.$content,&lt;br /&gt;
                this.$footer&lt;br /&gt;
            )&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
        this.visible = false;&lt;br /&gt;
        this.data = null;&lt;br /&gt;
&lt;br /&gt;
        if (typeof id === &amp;quot;string&amp;quot;) {&lt;br /&gt;
            this.$element.attr(&amp;quot;id&amp;quot;, id);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $close.on(&amp;quot;click&amp;quot;, this.hide.bind(this));&lt;br /&gt;
        this.$container.on(&amp;quot;click&amp;quot;, closeOnBackgroundClick.bind(this));&lt;br /&gt;
        $window.on(&amp;quot;keydown&amp;quot;, closeOnEscapeKeydown.bind(this));&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    mw.libs.QDmodal.prototype.hide = function () {&lt;br /&gt;
        if (this.data &amp;amp;&amp;amp; typeof this.data.onHide === &amp;quot;function&amp;quot;) {&lt;br /&gt;
            if (this.data.onHide(this) === false) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        this.visible = false;&lt;br /&gt;
        this.data = null;&lt;br /&gt;
        this.$container.detach();&lt;br /&gt;
&lt;br /&gt;
        if (!visibleModals.length) {&lt;br /&gt;
            $body.removeClass(&amp;quot;qdmodal-is-visible&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    mw.libs.QDmodal.prototype.show = function (data) {&lt;br /&gt;
        if (!data) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        this.data = data;&lt;br /&gt;
&lt;br /&gt;
        // only set title if one is given, else keep previous title&lt;br /&gt;
        if (data.title) {&lt;br /&gt;
            this.$title.text(data.title);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (data.loading) {&lt;br /&gt;
            this.$content.empty().append($spinner.clone());&lt;br /&gt;
        } else {&lt;br /&gt;
            this.$content.html(data.content || &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        this.$footer.empty();&lt;br /&gt;
&lt;br /&gt;
        if (Array.isArray(data.buttons)) {&lt;br /&gt;
            data.buttons.forEach(addButton.bind(this));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (typeof this.data.onBeforeShow === &amp;quot;function&amp;quot;) {&lt;br /&gt;
            this.data.onBeforeShow(this);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (data.hook) {&lt;br /&gt;
            mw.hook(data.hook).fire(this);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!this.visible) {&lt;br /&gt;
            $body.addClass(&amp;quot;qdmodal-is-visible&amp;quot;).append(this.$container);&lt;br /&gt;
            this.visible = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (typeof this.data.onShow === &amp;quot;function&amp;quot;) {&lt;br /&gt;
            this.data.onShow(this);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    //// Initialisation ////&lt;br /&gt;
&lt;br /&gt;
    mw.libs.QDmodal.version = version;&lt;br /&gt;
&lt;br /&gt;
    // provide other scripts a copy of the loading spinner&lt;br /&gt;
    mw.libs.QDmodal.getSpinner = function () {&lt;br /&gt;
    	return $(&amp;quot;&amp;lt;span&amp;gt;&amp;quot;).addClass(&amp;quot;qdmodal-spinner-container&amp;quot;).append($spinner.clone());&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    // no-op function, kept to prevent breakage in other scripts&lt;br /&gt;
    mw.libs.QDmodal.loadTheme = function () {};&lt;br /&gt;
&lt;br /&gt;
    $(function () {&lt;br /&gt;
        document.documentElement.style.setProperty(&lt;br /&gt;
            &amp;quot;--qdmodal-scrollbar-width&amp;quot;,&lt;br /&gt;
            (window.innerWidth - document.body.offsetWidth) + &amp;quot;px&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // fire hook for convenience&lt;br /&gt;
    mw.hook(&amp;quot;dev.qdmodal&amp;quot;).fire(mw.libs.QDmodal);&lt;br /&gt;
}(jQuery, mediaWiki));&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>