Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/webroot/rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js
12242 views
1
/**
2
* @provides javelin-behavior-dashboard-tab-panel
3
* @requires javelin-behavior
4
* javelin-dom
5
* javelin-stratcom
6
*/
7
8
JX.behavior('dashboard-tab-panel', function() {
9
10
JX.Stratcom.listen('click', 'dashboard-tab-panel-tab', function(e) {
11
// On dashboard panels in edit mode, the user may click the dropdown caret
12
// within a tab to open the context menu. If they do, this click should
13
// just open the menu, not select the tab. For now, pass the event here
14
// to let the menu handler act on it.
15
if (JX.Stratcom.pass(e)) {
16
return;
17
}
18
19
e.kill();
20
21
var selected_key = e.getNodeData('dashboard-tab-panel-tab').panelKey;
22
23
var root = e.getNode('dashboard-tab-panel-container');
24
var data = JX.Stratcom.getData(root);
25
26
27
var ii;
28
// Give the tab the user clicked a selected style, and remove it from
29
// the other tabs.
30
var tabs = JX.DOM.scry(root, 'li', 'dashboard-tab-panel-tab');
31
for (ii = 0; ii < tabs.length; ii++) {
32
var tab = tabs[ii];
33
var tab_data = JX.Stratcom.getData(tab);
34
var is_selected = (tab_data.panelKey === selected_key);
35
JX.DOM.alterClass(tabs[ii], 'phui-list-item-selected', is_selected);
36
}
37
38
// Switch the visible content to correspond to whatever the user clicked.
39
for (ii = 0; ii < data.panels.length; ii++) {
40
var panel = data.panels[ii];
41
var node = JX.$(panel.panelContentID);
42
43
if (panel.panelKey == selected_key) {
44
JX.DOM.show(node);
45
} else {
46
JX.DOM.hide(node);
47
}
48
}
49
50
});
51
52
});
53
54