Mercurial > nebulaweb3
diff default/node_modules/tablesaw/src/tables.minimap.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/default/node_modules/tablesaw/src/tables.minimap.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,88 @@ +/* +* tablesaw: A set of plugins for responsive tables +* minimap: a set of dots to show which columns are currently visible. +* Copyright (c) 2013 Filament Group, Inc. +* MIT License +*/ + +(function() { + var MiniMap = { + attr: { + init: "data-tablesaw-minimap" + }, + show: function(table) { + var mq = table.getAttribute(MiniMap.attr.init); + + if (mq === "") { + // value-less but exists + return true; + } else if (mq && "matchMedia" in window) { + // has a mq value + return window.matchMedia(mq).matches; + } + + return false; + } + }; + + function createMiniMap($table) { + var tblsaw = $table.data("tablesaw"); + var $btns = $('<div class="tablesaw-advance minimap">'); + var $dotNav = $('<ul class="tablesaw-advance-dots">').appendTo($btns); + var hideDot = "tablesaw-advance-dots-hide"; + var $headerCells = $table.data("tablesaw")._getPrimaryHeaderCells(); + + // populate dots + $headerCells.each(function() { + $dotNav.append("<li><i></i></li>"); + }); + + $btns.appendTo(tblsaw.$toolbar); + + function showHideNav() { + if (!MiniMap.show($table[0])) { + $btns.css("display", "none"); + return; + } + $btns.css("display", "block"); + + // show/hide dots + var dots = $dotNav.find("li").removeClass(hideDot); + $table.find("thead th").each(function(i) { + if ($(this).css("display") === "none") { + dots.eq(i).addClass(hideDot); + } + }); + } + + // run on init and resize + showHideNav(); + $(window).on(Tablesaw.events.resize, showHideNav); + + $table + .on("tablesawcolumns.minimap", function() { + showHideNav(); + }) + .on(Tablesaw.events.destroy + ".minimap", function() { + var $t = $(this); + + tblsaw.$toolbar.find(".tablesaw-advance").remove(); + $(window).off(Tablesaw.events.resize, showHideNav); + + $t.off(".minimap"); + }); + } + + // on tablecreate, init + $(document).on(Tablesaw.events.create, function(e, tablesaw) { + if ( + (tablesaw.mode === "swipe" || tablesaw.mode === "columntoggle") && + tablesaw.$table.is("[ " + MiniMap.attr.init + "]") + ) { + createMiniMap(tablesaw.$table); + } + }); + + // TODO OOP this better + Tablesaw.MiniMap = MiniMap; +})();