annotate default/node_modules/tablesaw/src/tables.btnmarkup.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 /*
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2 * tablesaw: A set of plugins for responsive tables
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 * Button component
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 * Copyright (c) 2013 Filament Group, Inc.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 * MIT License
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 (function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 var pluginName = "tablesawbtn",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 methods = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 _create: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 return $(this).each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 $(this)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 .trigger("beforecreate." + pluginName)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 [pluginName]("_init")
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 .trigger("create." + pluginName);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 _init: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 var oEl = $(this),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 sel = this.getElementsByTagName("select")[0];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 if (sel) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 // TODO next major version: remove .btn-select
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 $(this)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 .addClass("btn-select tablesaw-btn-select")
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 [pluginName]("_select", sel);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 return oEl;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 _select: function(sel) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 var update = function(oEl, sel) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 var opts = $(sel).find("option");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 var label = document.createElement("span");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 var el;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 var children;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 var found = false;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 label.setAttribute("aria-hidden", "true");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 label.innerHTML = "&#160;";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 opts.each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 var opt = this;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 if (opt.selected) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 label.innerHTML = opt.text;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 children = oEl.childNodes;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 if (opts.length > 0) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 for (var i = 0, l = children.length; i < l; i++) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 el = children[i];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 if (el && el.nodeName.toUpperCase() === "SPAN") {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 oEl.replaceChild(label, el);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 found = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 if (!found) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 oEl.insertBefore(label, oEl.firstChild);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 update(this, sel);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 // todo should this be tablesawrefresh?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 $(this).on("change refresh", function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 update(this, sel);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 // Collection method.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 $.fn[pluginName] = function(arrg, a, b, c) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 return this.each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 // if it's a method
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 if (arrg && typeof arrg === "string") {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 return $.fn[pluginName].prototype[arrg].call(this, a, b, c);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 // don't re-init
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 if ($(this).data(pluginName + "active")) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 return $(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 $(this).data(pluginName + "active", true);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 $.fn[pluginName].prototype._create.call(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 // add methods
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 $.extend($.fn[pluginName].prototype, methods);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96 // TODO OOP this and add to Tablesaw object
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 })();