Mercurial > nebulaweb3
diff default/node_modules/tablesaw/src/tables.modeswitch.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.modeswitch.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,93 @@ +/* +* tablesaw: A set of plugins for responsive tables +* Mode Switch: UI element to allow the user to change table modes: stack/swipe/columntoggle +* Copyright (c) 2013 Filament Group, Inc. +* MIT License +*/ + +(function() { + var S = { + selectors: { + init: "table[data-tablesaw-mode-switch]" + }, + attributes: { + excludeMode: "data-tablesaw-mode-exclude" + }, + classes: { + main: "tablesaw-modeswitch", + toolbar: "tablesaw-bar-section" + }, + modes: ["stack", "swipe", "columntoggle"], + init: function(table) { + var $table = $(table); + var tblsaw = $table.data("tablesaw"); + var ignoreMode = $table.attr(S.attributes.excludeMode); + var $toolbar = tblsaw.$toolbar; + var $switcher = $("<div>").addClass(S.classes.main + " " + S.classes.toolbar); + + var html = [ + '<label><span class="abbreviated">' + + Tablesaw.i18n.modeSwitchColumnsAbbreviated + + '</span><span class="longform">' + + Tablesaw.i18n.modeSwitchColumns + + "</span>:" + ], + dataMode = $table.attr("data-tablesaw-mode"), + isSelected; + + // TODO next major version: remove .btn + html.push('<span class="btn tablesaw-btn"><select>'); + for (var j = 0, k = S.modes.length; j < k; j++) { + if (ignoreMode && ignoreMode.toLowerCase() === S.modes[j]) { + continue; + } + + isSelected = dataMode === S.modes[j]; + + html.push( + "<option" + + (isSelected ? " selected" : "") + + ' value="' + + S.modes[j] + + '">' + + Tablesaw.i18n.modes[j] + + "</option>" + ); + } + html.push("</select></span></label>"); + + $switcher.html(html.join("")); + + var $otherToolbarItems = $toolbar.find(".tablesaw-advance").eq(0); + if ($otherToolbarItems.length) { + $switcher.insertBefore($otherToolbarItems); + } else { + $switcher.appendTo($toolbar); + } + + $switcher.find(".tablesaw-btn").tablesawbtn(); + $switcher.find("select").on("change", function(event) { + return S.onModeChange.call(table, event, $(this).val()); + }); + }, + onModeChange: function(event, val) { + var $table = $(this); + var tblsaw = $table.data("tablesaw"); + var $switcher = tblsaw.$toolbar.find("." + S.classes.main); + + $switcher.remove(); + tblsaw.destroy(); + + $table.attr("data-tablesaw-mode", val); + $table.tablesaw(); + } + }; + + $(document).on(Tablesaw.events.create, function(e, Tablesaw) { + if (Tablesaw.$table.is(S.selectors.init)) { + S.init(Tablesaw.table); + } + }); + + // TODO OOP this and add to Tablesaw object +})();