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;
+})();