MediaWiki:Gadget-site-javascript.js:修订间差异

imported>=海豚=
无编辑摘要
imported>=海豚=
无编辑摘要
第6行: 第6行:
/* eslint-disable no-var */
/* eslint-disable no-var */
"use strict";
"use strict";
    /* Tabs */
/* Tabs */
    function tabs() {
$(function () {
        var defaultStyle = {
    var defaultStyle = {
            purple: {
        purple: {
                labelColor: " ", //anti check
            labelColor: " ", //anti check
                labelBackgroundColor: "#9070c0",
            labelBackgroundColor: "#9070c0",
                labelBorderColor: "#b090e0 #7050a0 #9070c0 #b090e0",
            labelBorderColor: "#b090e0 #7050a0 #9070c0 #b090e0",
                labelPadding: ".2em .3em .2em .3em",
            labelPadding: ".2em .3em .2em .3em",
                textBorderColor: "#9070c0",
            textBorderColor: "#9070c0",
                textBackgroundColor: "#f0edf5",
            textBackgroundColor: "#f0edf5",
                textPadding: "1em"
            textPadding: "1em",
            },
        },
            green: {
        green: {
                labelColor: " ",
            labelColor: " ",
                labelBackgroundColor: "#75c045",
            labelBackgroundColor: "#75c045",
                labelBorderColor: "#90d060 #60b030 #75c045 #90d060",
            labelBorderColor: "#90d060 #60b030 #75c045 #90d060",
                labelPadding: ".2em .3em .2em .3em",
            labelPadding: ".2em .3em .2em .3em",
                textBorderColor: "#75c045 #60b030 #60b030 #75c045",
            textBorderColor: "#75c045 #60b030 #60b030 #75c045",
                textBackgroundColor: "#f5fffa",
            textBackgroundColor: "#f5fffa",
                textPadding: "1em"
            textPadding: "1em",
            },
        },
            red: {
        red: {
                labelColor: " ",
            labelColor: " ",
                labelBackgroundColor: "#FF0000",
            labelBackgroundColor: "#FF0000",
                labelBorderColor: "#FF8888 #CC0000 #FF0000 #FF8888",
            labelBorderColor: "#FF8888 #CC0000 #FF0000 #FF8888",
                labelPadding: ".2em .3em .2em .3em",
            labelPadding: ".2em .3em .2em .3em",
                textBorderColor: "#FF0000 #CC0000 #CC0000 #FF0000",
            textBorderColor: "#FF0000 #CC0000 #CC0000 #FF0000",
                textBackgroundColor: "#fffafa",
            textBackgroundColor: "#fffafa",
                textPadding: "1em"
            textPadding: "1em",
            },
        },
            blue: {
        blue: {
                labelColor: " ",
            labelColor: " ",
                labelBackgroundColor: "#5b8dd6",
            labelBackgroundColor: "#5b8dd6",
                labelBorderColor: "#88abde #3379de #5b8dd6 #88abde",
            labelBorderColor: "#88abde #3379de #5b8dd6 #88abde",
                labelPadding: ".2em .3em .2em .3em",
            labelPadding: ".2em .3em .2em .3em",
                textBackgroundColor: "#f0f8ff",
            textBackgroundColor: "#f0f8ff",
                textBorderColor: "#5b8dd6 #3379de #3379de #5b8dd6",
            textBorderColor: "#5b8dd6 #3379de #3379de #5b8dd6",
                textPadding: "1em"
            textPadding: "1em",
            },
        },
            yellow: {
        yellow: {
                labelColor: " ",
            labelColor: " ",
                labelBackgroundColor: "#ffe147",
            labelBackgroundColor: "#ffe147",
                labelBorderColor: "#ffe977 #ffd813 #ffe147 #ffe977",
            labelBorderColor: "#ffe977 #ffd813 #ffe147 #ffe977",
                labelPadding: ".2em .3em .2em .3em",
            labelPadding: ".2em .3em .2em .3em",
                textBackgroundColor: "#fffce8",
            textBackgroundColor: "#fffce8",
                textBorderColor: "#ffe147 #ffd813 #ffd813 #ffe147",
            textBorderColor: "#ffe147 #ffd813 #ffd813 #ffe147",
                textPadding: "1em"
            textPadding: "1em",
            },
        },
            orange: {
        orange: {
                labelColor: " ",
            labelColor: " ",
                labelBackgroundColor: "#ff9d42",
            labelBackgroundColor: "#ff9d42",
                labelBorderColor: "#ffac5d #ff820e #ff9d42 #ffac5d",
            labelBorderColor: "#ffac5d #ff820e #ff9d42 #ffac5d",
                labelPadding: ".2em .3em .2em .3em",
            labelPadding: ".2em .3em .2em .3em",
                textBackgroundColor: "#ffeedd",
            textBackgroundColor: "#ffeedd",
                textBorderColor: "#ff9d42 #ff820e #ff820e #ff9d42",
            textBorderColor: "#ff9d42 #ff820e #ff820e #ff9d42",
                textPadding: "1em"
            textPadding: "1em",
            },
        },
            black: {
        black: {
                labelColor: " ",
            labelColor: " ",
                labelBackgroundColor: "#7f7f7f",
            labelBackgroundColor: "#7f7f7f",
                labelBorderColor: "#999999 #4c4c4c #7f7f7f #999999",
            labelBorderColor: "#999999 #4c4c4c #7f7f7f #999999",
                labelPadding: ".2em .3em .2em .3em",
            labelPadding: ".2em .3em .2em .3em",
                textBackgroundColor: "#e5e5e5",
            textBackgroundColor: "#e5e5e5",
                textBorderColor: "#7f7f7f #4c4c4c #4c4c4c #7f7f7f",
            textBorderColor: "#7f7f7f #4c4c4c #4c4c4c #7f7f7f",
                textPadding: "1em"
            textPadding: "1em",
            }
        },
        };
    };
        var sides = {
    var sides = {
            top: {
        top: {
                className: "tabLabelTop",
            className: "tabLabelTop",
                labelColorSide: "top",
            labelColorSide: "top",
                labelBorderSide: ["left", "right"],
            labelBorderSide: ["left", "right"],
                labelColorSideReverse: "bottom",
            labelColorSideReverse: "bottom",
                dividerSizeType: "height"
            dividerSizeType: "height"
            },
        },
            bottom: {
        bottom: {
                className: "tabLabelBottom",
            className: "tabLabelBottom",
                labelColorSide: "bottom",
            labelColorSide: "bottom",
                labelBorderSide: ["left", "right"],
            labelBorderSide: ["left", "right"],
                labelColorSideReverse: "top",
            labelColorSideReverse: "top",
                dividerSizeType: "height"
            dividerSizeType: "height"
            },
        },
            left: {
        left: {
                className: "tabLabelLeft",
            className: "tabLabelLeft",
                labelColorSide: "left",
            labelColorSide: "left",
                labelBorderSide: ["top", "bottom"],
            labelBorderSide: ["top", "bottom"],
                labelColorSideReverse: "right",
            labelColorSideReverse: "right",
                dividerSizeType: "width"
            dividerSizeType: "width"
            },
        },
            right: {
        right: {
                className: "tabLabelRight",
            className: "tabLabelRight",
                labelColorSide: "right",
            labelColorSide: "right",
                labelBorderSide: ["top", "bottom"],
            labelBorderSide: ["top", "bottom"],
                labelColorSideReverse: "left",
            labelColorSideReverse: "left",
                dividerSizeType: "width"
            dividerSizeType: "width"
        }
    };
    var truthy = ["1", "on", "true", "yes"];
    $("body").addClass("tab");
    function getOwnPropertyNamesLength(obj) {
        return Object.getOwnPropertyNames(obj).length;
    }
    function toLowerFirstCase(str) {
        return str.substring(0, 1).toLowerCase() + str.substring(1);
    }
    function toUpperFirstCase(str) {
        return str.substring(0, 1).toUpperCase() + str.substring(1);
    }
    mw.hook("wikipage.content").add(function () {
        $(".Tabs").each(function () {
            if ($(this).children(".TabLabel")[0]) {
                return true;
             }
             }
        };
             var self = $(this),
        var truthy = ["1", "on", "true", "yes"];
                 classList = Array.from(this.classList).filter(function (n) {
        $body.addClass("tab");
        function getOwnPropertyNamesLength(obj) {
            return Object.getOwnPropertyNames(obj).length;
        }
        function toLowerFirstCase(str) {
            return str.substring(0, 1).toLowerCase() + str.substring(1);
        }
        function toUpperFirstCase(str) {
            return str.substring(0, 1).toUpperCase() + str.substring(1);
        }
        mw.hook("wikipage.content").add(function (content) {
             content.find(".Tabs").each(function () {
                var self = $(this);
                 if (self.children(".TabLabel")[0]) {
                    return true;
                }
                var classList = Array.from(this.classList).filter(function (n) {
                     return n in defaultStyle;
                     return n in defaultStyle;
                 });
                 }),
                 var data = $.extend({
                 data = $.extend({
                     labelPadding: "2px",
                     labelPadding: "2px",
                     labelBorderColor: "#aaa",
                     labelBorderColor: "#aaa",
第131行: 第131行:
                     textBorderColor: "#aaa",
                     textBorderColor: "#aaa",
                     textBackgroundColor: "white",
                     textBackgroundColor: "white",
                     defaultTab: 1
                     defaultTab: 1,
                 }, classList[0] ? defaultStyle[classList[0]] || {} : {}, this.dataset || {});
                 }, classList[0] ? defaultStyle[classList[0]] || {} : {}, this.dataset || {}),
                 var styleSheet = {
                tabLabel = self.append('<div class="TabLabel"></div>').children(".TabLabel"),
                tabDivider = self.append('<div class="TabDivider"></div>').children(".TabDivider"),
                tabContent = self.append('<div class="TabContent"></div>').children(".TabContent"),
                labelPadding = data.labelPadding,
                labelColor = data.labelColor,
                 styleSheet = {
                     label: {},
                     label: {},
                     text: {}
                     text: {},
                 };
                 },
                 var tabLabel = self.append('<div class="TabLabel"></div>').children(".TabLabel"),
                 labelSide = data.labelSide in sides ? data.labelSide : "top",
                    tabDivider = self.append('<div class="TabDivider"></div>').children(".TabDivider"),
                side = sides[labelSide],
                    tabContent = self.append('<div class="TabContent"></div>').children(".TabContent"),
                labelColorSideReverse = truthy.includes(data.labelColorSideReverse),
                    labelPadding = data.labelPadding,
                dividerSize = parseInt(data.dividerSize),
                    labelColor = data.labelColor,
                defaultTab = parseInt(data.defaultTab);
                    labelSide = data.labelSide in sides ? data.labelSide : "top",
            if(labelSide==="top"){
                    side = sides[labelSide],
                tabLabel.after(tabDivider);
                    labelColorSideReverse = truthy.includes(data.labelColorSideReverse),
                tabDivider.after(tabContent);
                    dividerSize = parseInt(data.dividerSize),
            }else if(labelSide==="bottom"){
                    defaultTab = parseInt(data.defaultTab);
                tabContent.after(tabDivider);
                if (labelSide === "top") {
                tabDivider.after(tabLabel);
                    tabLabel.after(tabDivider);
            }
                    tabDivider.after(tabContent);
            if (!isNaN(dividerSize) && dividerSize > 0) {
                } else if (labelSide === "bottom") {
                self.find(".TabDivider")[side.dividerSizeType](dividerSize);
                    tabContent.after(tabDivider);
            }
                    tabDivider.after(tabLabel);
            var labelColorName = toUpperFirstCase(labelColorSideReverse ? side.labelColorSideReverse : side.labelColorSide);
            self.addClass(side.className);
            if (labelColorSideReverse) {
                self.addClass("reverse");
            }
            self.children(".Tab").each(function () {
                if ($(this).children(".TabLabelText").text().replace(/\s/g, "").length || $(this).children(".TabLabelText").children().length) {
                    $(this).children(".TabLabelText").appendTo(tabLabel);
                    $(this).children(".TabContentText").appendTo(self.children(".TabContent"));
                 }
                 }
                 if (!isNaN(dividerSize) && dividerSize > 0) {
                 $(this).remove();
                    self.find(".TabDivider")[side.dividerSizeType](dividerSize);
            });
                }
            if (isNaN(defaultTab) || defaultTab <= 0 || defaultTab > tabLabel.children(".TabLabelText").length) {
                var labelColorName = toUpperFirstCase(labelColorSideReverse ? side.labelColorSideReverse : side.labelColorSide);
                defaultTab = 1;
                self.addClass(side.className);
            }
                if (labelColorSideReverse) {
            tabLabel.children(".TabLabelText").on("click", function () {
                    self.addClass("reverse");
                var label = $(this);
                }
                label.addClass("selected").siblings().removeClass("selected").css({
                self.children(".Tab").each(function () {
                    "border-color": "transparent",
                    if ($(this).children(".TabLabelText").text().replace(/\s/g, "").length || $(this).children(".TabLabelText").children().length) {
                    "background-color": "inherit",
                        $(this).children(".TabLabelText").appendTo(tabLabel);
                        $(this).children(".TabContentText").appendTo(self.children(".TabContent"));
                    }
                    $(this).remove();
                 });
                 });
                 if (isNaN(defaultTab) || defaultTab <= 0 || defaultTab > tabLabel.children(".TabLabelText").length) {
                 tabContent.children(".TabContentText").eq(tabLabel.children(".TabLabelText").index(label)).addClass("selected").siblings().removeClass("selected").removeAttr("style");
                    defaultTab = 1;
                if (getOwnPropertyNamesLength(styleSheet.label) > 0) {
                }
                    label.css(styleSheet.label);
                tabLabel.children(".TabLabelText").on("click", function () {
                    var label = $(this);
                    label.addClass("selected").siblings().removeClass("selected").css({
                        "border-color": "transparent",
                        "background-color": "inherit"
                    });
                    tabContent.children(".TabContentText").eq(tabLabel.children(".TabLabelText").index(label)).addClass("selected").siblings().removeClass("selected").removeAttr("style");
                    if (getOwnPropertyNamesLength(styleSheet.label) > 0) {
                        label.css(styleSheet.label);
                    }
                    setTimeout(function () {
                        $window.triggerHandler("scroll");
                    }, 1);
                }).eq(defaultTab - 1).trigger("click");
                if (labelPadding) {
                    tabLabel.children(".TabLabelText").css("padding", labelPadding);
                }
                ["labelBorderColor", "labelBackgroundColor", "textPadding", "textBorderColor", "textBackgroundColor"].forEach(function (n) {
                    var target = /^label/.test(n) ? "label" : "text",
                        key = toLowerFirstCase(n.replace(target, ""));
                    styleSheet[target][key] = data[n];
                });
                if (labelColor) {
                    styleSheet.label["border" + labelColorName + "Color"] = labelColor;
                } else if (styleSheet.label.borderColor) {
                    styleSheet.label["border" + labelColorName + "Color"] = "green";
                }
                tabLabel.find(".selected").trigger("click");
                if (getOwnPropertyNamesLength(styleSheet.text) > 0) {
                    tabContent.css(styleSheet.text);
                }
                if (data.autoWidth === "yes") {
                    self.addClass("AutoWidth");
                }
                if (data.float === "left") {
                    self.addClass("FloatLeft");
                }
                if (data.float === "right") {
                    self.addClass("FloatRight");
                 }
                 }
            }).eq(defaultTab - 1).click();
            if (labelPadding) {
                tabLabel.children(".TabLabelText").css("padding", labelPadding);
            }
            ["labelBorderColor", "labelBackgroundColor", "textPadding", "textBorderColor", "textBackgroundColor"].forEach(function (n) {
                var target = /^label/.test(n) ? "label" : "text",
                    key = toLowerFirstCase(n.replace(target, ""));
                styleSheet[target][key] = data[n];
             });
             });
            if (labelColor) {
                styleSheet.label["border" + labelColorName + "Color"] = labelColor;
            } else if (styleSheet.label.borderColor) {
                styleSheet.label["border" + labelColorName + "Color"] = "green";
            }
            tabLabel.find(".selected").click();
            if (getOwnPropertyNamesLength(styleSheet.text) > 0) {
                tabContent.css(styleSheet.text);
            }
            if (data.autoWidth === "yes") {
                self.addClass("AutoWidth");
            }
            if (data.float === "left") {
                self.addClass("FloatLeft");
            }
            if (data.float === "right") {
                self.addClass("FloatRight");
            }
         });
         });
     }
     });
});
//萌百条目
//萌百条目
$(function(){
$(function(){