Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/webroot/rsrc/js/application/conpherence/behavior-conpherence-search.js
12242 views
1
/**
2
* @provides javelin-behavior-conpherence-search
3
* @requires javelin-behavior
4
* javelin-dom
5
* javelin-util
6
* javelin-workflow
7
* javelin-stratcom
8
*/
9
10
JX.behavior('conpherence-search', function() {
11
12
var shown = true;
13
var request = null;
14
15
function _toggleSearch(e) {
16
e.kill();
17
var node = JX.$('conpherence-main-layout');
18
19
shown = !shown;
20
JX.DOM.alterClass(node, 'show-searchbar', !shown);
21
if (!shown) {
22
JX.$('conpherence-search-input').focus();
23
} else {
24
var form_root = JX.DOM.find(document, 'div', 'conpherence-form');
25
var textarea = JX.DOM.find(form_root, 'textarea');
26
textarea.focus();
27
}
28
JX.Stratcom.invoke('resize');
29
}
30
31
function _doSearch(e) {
32
e.kill();
33
var search_text = JX.$('conpherence-search-input').value;
34
var search_uri = JX.$('conpherence-search-form').action;
35
var search_node = JX.$('conpherence-search-results');
36
37
if (request || !search_text) {
38
return;
39
}
40
41
request = new JX.Request(search_uri, function(response) {
42
JX.DOM.setContent(search_node, JX.$H(response));
43
request = null;
44
});
45
request.setData({fulltext: search_text});
46
request.send();
47
}
48
49
function _viewResult(e) {
50
e.kill();
51
var uri = e.getNode('tag:a');
52
_toggleSearch(e);
53
JX.$U(uri).go();
54
}
55
56
JX.Stratcom.listen(
57
['submit', 'didSyntheticSubmit'],
58
'conpherence-search-input',
59
_doSearch);
60
61
JX.Stratcom.listen(
62
'keydown',
63
'conpherence-search-input',
64
function(e) {
65
if (e.getSpecialKey() != 'return') {
66
return;
67
}
68
e.kill();
69
_doSearch(e);
70
});
71
72
JX.Stratcom.listen(
73
'click',
74
'conpherence-search-result-jump',
75
_viewResult);
76
77
JX.Stratcom.listen(
78
'click',
79
'conpherence-search-toggle',
80
_toggleSearch);
81
82
});
83
84