1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Usage:
* <div piwik-menudropdown menu-title="MyMenuItem" tooltip="My Tooltip" show-search="false">
* <a class="item" href="/url">An Item</a>
* <a class="item disabled">Disabled</a>
* <a class="item active">Active item</a>
* <hr class="item separator"/>
* <a class="item disabled category">Category</a>
* <a class="item" href="/url"></a>
* </div>
*/
(function () {
angular.module('piwikApp').directive('piwikMenudropdown', piwikMenudropdown);
function piwikMenudropdown(){
return {
transclude: true,
replace: true,
restrict: 'A',
scope: {
menuTitle: '@',
tooltip: '@',
showSearch: '=',
menuTitleChangeOnClick: '='
},
templateUrl: 'plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html?cb=' + piwik.cacheBuster,
link: function(scope, element, attrs) {
scope.selectItem = function (event) {
var $self = angular.element(event.target);
if (!$self.hasClass('item') || $self.hasClass('disabled') || $self.hasClass('separator')) {
return;
}
if (scope.menuTitleChangeOnClick !== false) {
scope.menuTitle = $self.text().replace(/[\u0000-\u2666]/g, function(c) {
return '&#'+c.charCodeAt(0)+';';
});
}
scope.$eval('view.showItems = false');
setTimeout(function () {
scope.$apply();
}, 0);
element.find('.item').removeClass('active');
$self.addClass('active');
};
scope.searchItems = function (searchTerm)
{
searchTerm = searchTerm.toLowerCase();
element.find('.item').each(function (index, node) {
var $node = angular.element(node);
if (-1 === $node.text().toLowerCase().indexOf(searchTerm)) {
$node.hide();
} else {
$node.show();
}
});
};
}
};
}
})();
|