Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordizzy <diosmosis@users.noreply.github.com>2021-11-11 13:53:05 +0300
committerGitHub <noreply@github.com>2021-11-11 13:53:05 +0300
commit680ac30b2078ce7f0fb587c145161dab0bce2c24 (patch)
tree17aeb01ffa31e59267a6b9859f900c944883c1fd
parentac3d508c9ac9700c7d3928bd8014a34205f4c296 (diff)
[Vue] migrate dropdown and related directives (#18214)
* migrating RateFeature and ReviewLinks + adding AjaxHelper.fetch utility method (all untested) * get ratefeature component to work, modify matomodialog component to use v-model, add event parameters to createAngularAdapter, allow translate to use variadic args or one string array + rebuild * remove ratefeature angularjs files * rebuild + make vue mapping property optional in createANgularJsAdapter * migrate enrichedheadline and get to work * fix test * fix translate * fix another translate issue & migrate contentblock directive * fix anchor links, not including the "/" causes angularjs to fail (also on 4.x-dev) * update expected screenshots * fix ui test * fix some test failures * fix nested transclude issue * remove content block files * fix icon spacing that occurs due to angularjs inserting empty comments in between nodes while vue 3 does not * update some screenshots * update screenshot (actually fixes an alignment issue) * update screenshot * first pass at converting comparisons service/component * get new code to build and load without error in the UI * debugging * getting basic functionaltiy to work * Update _dataTable.twig * fix UI test failure + URL encoding/angularjs issue causing back button to not work * fix order of operations issue * built vue files * using ref in setup() is not needed to access this.$refs * Convert comparisons service angularjs tests to comparison store typescript tests. * migrate piwik-date-picker directive * migrate date range picker component (changed invalid date in input handling to just reset back to the previous date since it was easier in vue to do that) * migrate period-date-picker component (using composition api more when easier for migration) * convert piwik-expand-onclick directive to vue directive * migrate expand on hover directive to vue directive * fix variable reference * build * Add materialize-css @types and migrate piwik-dropdown-menu. * migrate focus-anywhere-but-here directive to vue directive * migrate focus-if directive * migrate menudropdown directive * forgot to remove old files * built vue files * rewrite URL handling to use computed properties in a URL store + do the same for other dependent data in the comparison store to allow vues to subscribe to the properties for changes to global state * fix some tests * some more fixes * more fixes + disallow modifications to MatomoUrl state * get angularjs unit tests to pass + fix a couple more issues * another fix * fix bad merge * self review + fixes * remove old fix as it may not be needed anymore * empty string is not a valid date + do not report invalid date exception just rethrow * update screenshots and try to fix random failure * use jquery $destroy event instead of scope one since the scope one is broadcasted * rangeChange event must be triggered once on mount * initialize startDateText/endDateText correctly * use jquery $destroy event instead of angularjs one * built vue files * fix menudropdown.directive.js reference * load vue in installation/updater & correctly make focusanywherebuthere stateful * correctly implement stateful directives for ExpandOnClick/ExpandOnHover * less tweak (angularjs comment removal) * fix submenu check * quick type fix * load vue in installation workflow * add broadcast.js to Installation workflow + do not fail in pk_translate if no translations are loaded * update expected screenshots (spacing of arrow changed because of angularjs comment no longer being there) * fix prop type * built vue files * re add accidentally removed (?) file * remove no longer needed file * Add CoreHome UMD in CoreUpdater/Installation. * self review * remove file from JS list * fix UI tests * apply review fixes Co-authored-by: sgiehl <stefan@matomo.org>
-rw-r--r--package-lock.json33
-rw-r--r--package.json1
-rw-r--r--plugins/CoreHome/CoreHome.php7
-rw-r--r--plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js76
-rw-r--r--plugins/CoreHome/angularjs/common/directives/focusif.js33
-rw-r--r--plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js56
-rw-r--r--plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html33
-rw-r--r--plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js76
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.js509
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.min.js100
-rw-r--r--plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts12
-rw-r--r--plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts34
-rw-r--r--plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less (renamed from plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.less)2
-rw-r--r--plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts53
-rw-r--r--plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts5
-rw-r--r--plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts5
-rw-r--r--plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts44
-rw-r--r--plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts98
-rw-r--r--plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts39
-rw-r--r--plugins/CoreHome/vue/src/FocusIf/FocusIf.ts27
-rw-r--r--plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts36
-rw-r--r--plugins/CoreHome/vue/src/Menudropdown/Menudropdown.less (renamed from plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.less)4
-rw-r--r--plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue132
-rw-r--r--plugins/CoreHome/vue/src/index.ts8
-rw-r--r--plugins/CoreUpdater/Controller.php9
-rw-r--r--plugins/CoreUpdater/templates/layout.twig1
-rw-r--r--plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png4
-rw-r--r--plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png4
-rw-r--r--plugins/CoreVue/CoreVue.php5
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png4
-rw-r--r--plugins/Installation/Controller.php9
-rw-r--r--plugins/Installation/templates/layout.twig1
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png2
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_start.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png4
-rw-r--r--plugins/LanguagesManager/LanguagesManager.php2
-rw-r--r--plugins/Morpheus/javascripts/piwikHelper.js5
-rw-r--r--plugins/Morpheus/stylesheets/base.less2
-rw-r--r--tsconfig.json3
48 files changed, 1144 insertions, 374 deletions
diff --git a/package-lock.json b/package-lock.json
index 793914e3b2..4c59f2a872 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -37,6 +37,7 @@
"devDependencies": {
"@types/angular": "^1.8.2",
"@types/jest": "^26.0.24",
+ "@types/materialize-css": "^1.0.11",
"@typescript-eslint/eslint-plugin": "^4.29.3",
"@typescript-eslint/parser": "^4.29.3",
"@vue/cli-plugin-babel": "^4.5.13",
@@ -4096,6 +4097,16 @@
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
"dev": true
},
+ "node_modules/@types/materialize-css": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@types/materialize-css/-/materialize-css-1.0.11.tgz",
+ "integrity": "sha512-V7/jSwuq6QrWAjzA2dkZhlqzrrcxcjB+RDfwhw8CosNYZgb+FaAJmmB6t7CT7SRFNRRSxG839e6iK32Vq6sZrQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/jquery": "*",
+ "cash-dom": "*"
+ }
+ },
"node_modules/@types/mime": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
@@ -12676,6 +12687,12 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
+ "node_modules/cash-dom": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-8.1.0.tgz",
+ "integrity": "sha512-QTa50rFuPaX8klEDEbwLr+jVutwpvZEBQ0NpMMyng+je7gNe9Bz/JsOLHIG24tvNSSSIN/Q1QD0bnF6PQzWKHA==",
+ "dev": true
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -37850,6 +37867,16 @@
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
"dev": true
},
+ "@types/materialize-css": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@types/materialize-css/-/materialize-css-1.0.11.tgz",
+ "integrity": "sha512-V7/jSwuq6QrWAjzA2dkZhlqzrrcxcjB+RDfwhw8CosNYZgb+FaAJmmB6t7CT7SRFNRRSxG839e6iK32Vq6sZrQ==",
+ "dev": true,
+ "requires": {
+ "@types/jquery": "*",
+ "cash-dom": "*"
+ }
+ },
"@types/mime": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
@@ -44877,6 +44904,12 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
+ "cash-dom": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-8.1.0.tgz",
+ "integrity": "sha512-QTa50rFuPaX8klEDEbwLr+jVutwpvZEBQ0NpMMyng+je7gNe9Bz/JsOLHIG24tvNSSSIN/Q1QD0bnF6PQzWKHA==",
+ "dev": true
+ },
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
diff --git a/package.json b/package.json
index 96e973ec2e..e3bf6380ac 100644
--- a/package.json
+++ b/package.json
@@ -55,6 +55,7 @@
"devDependencies": {
"@types/angular": "^1.8.2",
"@types/jest": "^26.0.24",
+ "@types/materialize-css": "^1.0.11",
"@typescript-eslint/eslint-plugin": "^4.29.3",
"@typescript-eslint/parser": "^4.29.3",
"@vue/cli-plugin-babel": "^4.5.13",
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index 1992b79e0c..ce05e819bc 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -147,7 +147,7 @@ class CoreHome extends \Piwik\Plugin
$stylesheets[] = "plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.less";
$stylesheets[] = "plugins/CoreHome/angularjs/period-selector/period-selector.directive.less";
$stylesheets[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less";
- $stylesheets[] = "plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.less";
+ $stylesheets[] = "plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less";
$stylesheets[] = "plugins/CoreHome/angularjs/sparkline/sparkline.component.less";
$stylesheets[] = "plugins/CoreHome/angularjs/field-array/field-array.directive.less";
$stylesheets[] = "plugins/CoreHome/vue/src/Comparisons/Comparisons.less";
@@ -211,10 +211,8 @@ class CoreHome extends \Piwik\Plugin
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/field-condition.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/show-sensitive-data.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js";
- $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/ignore-click.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/onenter.js";
- $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/focusif.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/translate.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/dropdown-button.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/select-on-focus.js";
@@ -234,7 +232,6 @@ class CoreHome extends \Piwik\Plugin
$jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector.controller.js";
$jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector.directive.js";
- $jsFiles[] = "plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js";
$jsFiles[] = "plugins/CoreHome/angularjs/content-intro/content-intro.directive.js";
@@ -274,8 +271,6 @@ class CoreHome extends \Piwik\Plugin
$jsFiles[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.js";
$jsFiles[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.controller.js";
- $jsFiles[] = "plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js";
-
$jsFiles[] = "plugins/CoreHome/angularjs/field-array/field-array.directive.js";
$jsFiles[] = "plugins/CoreHome/angularjs/field-array/field-array.controller.js";
diff --git a/plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js b/plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js
deleted file mode 100644
index 4b210b2974..0000000000
--- a/plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * The given expression will be executed when the user presses either escape or presses something outside
- * of this element
- *
- * Example:
- * <div piwik-focus-anywhere-but-here="closeDialog()">my dialog</div>
- */
-(function () {
- angular.module('piwikApp.directive').directive('piwikFocusAnywhereButHere', piwikFocusAnywhereButHere);
-
- piwikFocusAnywhereButHere.$inject = ['$document'];
-
- function piwikFocusAnywhereButHere($document){
- return {
- restrict: 'A',
- link: function(scope, element, attr, ctrl) {
-
- var isMouseDown = false;
- var hasScrolled = false;
-
- function onClickOutsideElement (event) {
- var hadUsedScrollbar = isMouseDown && hasScrolled;
- isMouseDown = false;
- hasScrolled = false;
-
- if (hadUsedScrollbar) {
- return;
- }
-
- if (element.has(event.target).length === 0) {
- setTimeout(function () {
- scope.$apply(attr.piwikFocusAnywhereButHere);
- }, 0);
- }
- }
-
- function onScroll (event) {
- hasScrolled = true;
- }
-
- function onMouseDown (event) {
- isMouseDown = true;
- hasScrolled = false;
- }
-
- function onEscapeHandler (event) {
- if (event.which === 27) {
- setTimeout(function () {
- isMouseDown = false;
- hasScrolled = false;
- scope.$apply(attr.piwikFocusAnywhereButHere);
- }, 0);
- }
- }
-
- $document.on('keyup', onEscapeHandler);
- $document.on('mousedown', onMouseDown);
- $document.on('mouseup', onClickOutsideElement);
- $document.on('scroll', onScroll);
- scope.$on('$destroy', function() {
- $document.off('keyup', onEscapeHandler);
- $document.off('mousedown', onMouseDown);
- $document.off('mouseup', onClickOutsideElement);
- $document.off('scroll', onScroll);
- });
- }
- };
- }
-})();
diff --git a/plugins/CoreHome/angularjs/common/directives/focusif.js b/plugins/CoreHome/angularjs/common/directives/focusif.js
deleted file mode 100644
index 8db12603b6..0000000000
--- a/plugins/CoreHome/angularjs/common/directives/focusif.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * If the given expression evaluates to true the element will be focused
- *
- * Example:
- * <input type="text" piwik-focus-if="view.editName">
- */
-(function () {
- angular.module('piwikApp.directive').directive('piwikFocusIf', piwikFocusIf);
-
- piwikFocusIf.$inject = ['$timeout'];
-
- function piwikFocusIf($timeout) {
- return {
- restrict: 'A',
- link: function(scope, element, attrs) {
- scope.$watch(attrs.piwikFocusIf, function(newValue, oldValue) {
- if (newValue) {
- $timeout(function () {
- element[0].focus();
- }, 5);
- }
- });
- }
- };
- }
-})();
diff --git a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js b/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js
deleted file mode 100644
index 8829b671a5..0000000000
--- a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * A materializecss dropdown menu that supports submenus.
- *
- * To use a submenu, just use this directive within another dropdown.
- *
- * Note: if submenus are used, then dropdowns will never scroll.
- *
- * Usage:
- * <a class='dropdown-trigger btn' href='' data-target='mymenu' piwik-dropdown-menu>Menu</a>
- * <ul id='mymenu' class='dropdown-content'>
- * <li>
- * <a class='dropdown-trigger' data-target="mysubmenu" piwik-dropdown-menu>Submenu</a>
- * <ul id="mysubmenu" class="dropdown-content">
- * <li>Submenu Item</li>
- * </ul>
- * </li>
- * <li>
- * <a href="">Another item</a>
- * </li>
- * </ul>
- */
-(function () {
- angular.module('piwikApp').directive('piwikDropdownMenu', piwikDropdownMenu);
-
- piwikDropdownMenu.$inject = ['$timeout'];
-
- function piwikDropdownMenu($timeout){
- return {
- restrict: 'A',
- link: function (scope, element, attrs) {
- var options = {};
-
- var isSubmenu = !! element.parent().closest('.dropdown-content').length;
- if (isSubmenu) {
- options = { hover: true };
- element.addClass('submenu');
- angular.element('#' + attrs.activates).addClass('submenu-dropdown-content');
-
- // if a submenu is used, the dropdown will never scroll
- element.parents('.dropdown-content').addClass('submenu-container');
- }
-
- $timeout(function () {
- element.dropdown(options);
- });
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html b/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html
deleted file mode 100644
index cbfbbb1ae1..0000000000
--- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<div piwik-focus-anywhere-but-here="view.showItems=false" class="menuDropdown">
-
- <span class="title"
- ng-click="view.showItems=!view.showItems"
- title="{{ tooltip }}">
- <span ng-bind-html="menuTitle"></span>
- <span class="icon-arrow-bottom"></span>
- </span>
-
- <div class="items" ng-show="view.showItems">
- <div class="search" ng-if="showSearch && view.showItems">
- <input type="text"
- piwik-focus-if="view.showItems"
- ng-model="view.searchTerm"
- placeholder="{{ 'General_Search'|translate }}"
- ng-change="searchItems(view.searchTerm)">
-
- <img title="{{ 'General_Search'|translate }}"
- ng-show="!view.searchTerm"
- class="search_ico"
- src="plugins/Morpheus/images/search_ico.png"/>
- <img title="{{ 'General_Clear'|translate }}"
- ng-show="view.searchTerm"
- ng-click="view.searchTerm='';searchItems('')"
- class="reset"
- src="plugins/CoreHome/images/reset_search.png"/>
- </div>
- <div ng-transclude ng-click="selectItem($event)">
-
- </div>
- </div>
-
-</div> \ No newline at end of file
diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js b/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js
deleted file mode 100644
index f51ce2abcf..0000000000
--- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*!
- * 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();
- }
- });
- };
- }
- };
- }
-})();
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js
index 00d50f2dbc..c649e0ca8b 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js
@@ -146,12 +146,16 @@ __webpack_require__.d(__webpack_exports__, "format", function() { return /* reex
__webpack_require__.d(__webpack_exports__, "getToday", function() { return /* reexport */ getToday; });
__webpack_require__.d(__webpack_exports__, "parseDate", function() { return /* reexport */ parseDate; });
__webpack_require__.d(__webpack_exports__, "todayIsInRange", function() { return /* reexport */ todayIsInRange; });
+__webpack_require__.d(__webpack_exports__, "Dropdown", function() { return /* reexport */ DropdownMenu; });
+__webpack_require__.d(__webpack_exports__, "FocusAnywhereButHere", function() { return /* reexport */ FocusAnywhereButHere; });
+__webpack_require__.d(__webpack_exports__, "FocusIf", function() { return /* reexport */ FocusIf; });
__webpack_require__.d(__webpack_exports__, "MatomoDialog", function() { return /* reexport */ MatomoDialog; });
__webpack_require__.d(__webpack_exports__, "ExpandOnClick", function() { return /* reexport */ ExpandOnClick; });
__webpack_require__.d(__webpack_exports__, "ExpandOnHover", function() { return /* reexport */ ExpandOnHover; });
__webpack_require__.d(__webpack_exports__, "EnrichedHeadline", function() { return /* reexport */ EnrichedHeadline; });
__webpack_require__.d(__webpack_exports__, "ContentBlock", function() { return /* reexport */ ContentBlock; });
__webpack_require__.d(__webpack_exports__, "Comparisons", function() { return /* reexport */ Comparisons; });
+__webpack_require__.d(__webpack_exports__, "Menudropdown", function() { return /* reexport */ Menudropdown; });
__webpack_require__.d(__webpack_exports__, "DatePicker", function() { return /* reexport */ DatePicker; });
__webpack_require__.d(__webpack_exports__, "DateRangePicker", function() { return /* reexport */ DateRangePicker; });
__webpack_require__.d(__webpack_exports__, "PeriodDatePicker", function() { return /* reexport */ PeriodDatePicker; });
@@ -1842,6 +1846,264 @@ function ajaxQueue() {
}
angular.module('piwikApp.service').service('globalAjaxQueue', ajaxQueue);
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+/**
+ * A materializecss dropdown menu that supports submenus.
+ *
+ * To use a submenu, just use this directive within another dropdown.
+ *
+ * Note: if submenus are used, then dropdowns will never scroll.
+ *
+ * Usage:
+ * <a class='dropdown-trigger btn' href='' data-target='mymenu' v-dropdown-menu>Menu</a>
+ * <ul id='mymenu' class='dropdown-content'>
+ * <li>
+ * <a class='dropdown-trigger' data-target="mysubmenu" v-dropdown-menu>Submenu</a>
+ * <ul id="mysubmenu" class="dropdown-content">
+ * <li>Submenu Item</li>
+ * </ul>
+ * </li>
+ * <li>
+ * <a href="">Another item</a>
+ * </li>
+ * </ul>
+ */
+/* harmony default export */ var DropdownMenu = ({
+ mounted: function mounted(element, binding) {
+ var options = {};
+ $(element).addClass('matomo-dropdown-menu');
+ var isSubmenu = !!$(element).parent().closest('.dropdown-content').length;
+
+ if (isSubmenu) {
+ options = {
+ hover: true
+ };
+ $(element).addClass('submenu');
+ $(binding.value.activates).addClass('submenu-dropdown-content'); // if a submenu is used, the dropdown will never scroll
+
+ $(element).parents('.dropdown-content').addClass('submenu-container');
+ }
+
+ $(element).dropdown(options);
+ }
+});
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+function piwikDropdownMenu($timeout) {
+ return {
+ restrict: 'A',
+ link: function piwikDropdownMenuLink(scope, element, attrs) {
+ var binding = {
+ instance: null,
+ value: {
+ activates: $("#".concat(attrs.activates))[0]
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ };
+ $timeout(function () {
+ DropdownMenu.mounted(element[0], binding);
+ });
+ }
+ };
+}
+
+piwikDropdownMenu.$inject = ['$timeout'];
+angular.module('piwikApp').directive('piwikDropdownMenu', piwikDropdownMenu);
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function onClickOutsideElement(element, binding, event) {
+ var hadUsedScrollbar = binding.value.isMouseDown && binding.value.hasScrolled;
+ binding.value.isMouseDown = false;
+ binding.value.hasScrolled = false;
+
+ if (hadUsedScrollbar) {
+ return;
+ }
+
+ if (!element.contains(event.target)) {
+ if (binding.value) {
+ binding.value.blur();
+ }
+ }
+}
+
+function onScroll(element, binding) {
+ binding.value.hasScrolled = true;
+}
+
+function onMouseDown(element, binding) {
+ binding.value.isMouseDown = true;
+ binding.value.hasScrolled = false;
+}
+
+function onEscapeHandler(element, binding, event) {
+ if (event.which === 27) {
+ setTimeout(function () {
+ binding.value.isMouseDown = false;
+ binding.value.hasScrolled = false;
+
+ if (binding.value.blur) {
+ binding.value.blur();
+ }
+ }, 0);
+ }
+}
+
+var doc = document.documentElement;
+/**
+ * Usage (in a component):
+ *
+ * directives: {
+ * // function call is important since we store state in this directive
+ * FocusAnywhereButHere: FocusAnywhereButHere(),
+ * }
+ *
+ * Note: the binding data needs to be static, changes will not be handled.
+ */
+
+/* harmony default export */ var FocusAnywhereButHere = ({
+ mounted: function mounted(el, binding) {
+ binding.value.isMouseDown = false;
+ binding.value.hasScrolled = false;
+ binding.value.onEscapeHandler = onEscapeHandler.bind(null, el, binding);
+ binding.value.onMouseDown = onMouseDown.bind(null, el, binding);
+ binding.value.onClickOutsideElement = onClickOutsideElement.bind(null, el, binding);
+ binding.value.onScroll = onScroll.bind(null, el, binding);
+ doc.addEventListener('keyup', binding.value.onEscapeHandler);
+ doc.addEventListener('mousedown', binding.value.onMouseDown);
+ doc.addEventListener('mouseup', binding.value.onClickOutsideElement);
+ doc.addEventListener('scroll', binding.value.onScroll);
+ },
+ unmounted: function unmounted(el, binding) {
+ doc.removeEventListener('keyup', binding.value.onEscapeHandler);
+ doc.removeEventListener('mousedown', binding.value.onMouseDown);
+ doc.removeEventListener('mouseup', binding.value.onClickOutsideElement);
+ doc.removeEventListener('scroll', binding.value.onScroll);
+ }
+});
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+/**
+ * The given expression will be executed when the user presses either escape or presses something
+ * outside of this element
+ *
+ * Example:
+ * <div piwik-focus-anywhere-but-here="closeDialog()">my dialog</div>
+ */
+
+function piwikFocusAnywhereButHere() {
+ return {
+ restrict: 'A',
+ link: function focusAnywhereButHereLink(scope, element, attr) {
+ var binding = {
+ instance: null,
+ value: {
+ blur: function blur() {
+ setTimeout(function () {
+ scope.$apply(attr.piwikFocusAnywhereButHere);
+ }, 0);
+ }
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ };
+ FocusAnywhereButHere.mounted(element[0], binding);
+ element.on('$destroy', function () {
+ return FocusAnywhereButHere.unmounted(element[0], binding);
+ });
+ }
+ };
+}
+
+piwikFocusAnywhereButHere.$inject = [];
+angular.module('piwikApp.directive').directive('piwikFocusAnywhereButHere', piwikFocusAnywhereButHere);
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusIf/FocusIf.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+/* harmony default export */ var FocusIf = ({
+ updated: function updated(el, binding) {
+ if (binding.value.focusIf) {
+ setTimeout(function () {
+ el.focus();
+
+ if (binding.value.afterFocus) {
+ binding.value.afterFocus();
+ }
+ }, 5);
+ }
+ }
+});
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+/**
+ * If the given expression evaluates to true the element will be focused
+ *
+ * Example:
+ * <input type="text" piwik-focus-if="view.editName">
+ */
+
+function piwikFocusIf() {
+ return {
+ restrict: 'A',
+ link: function focusIfLink(scope, element, attrs) {
+ scope.$watch(attrs.piwikFocusIf, function (newValue) {
+ var binding = {
+ instance: null,
+ value: {
+ focusIf: !!newValue,
+ afterFocus: function afterFocus() {
+ return scope.$apply();
+ }
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ };
+ FocusIf.updated(element[0], binding);
+ });
+ }
+ };
+}
+
+angular.module('piwikApp.directive').directive('piwikFocusIf', piwikFocusIf);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.ts
/*!
* Matomo - free/libre analytics platform
@@ -1860,7 +2122,7 @@ function onExpand(element) {
}
}
-function onClickOutsideElement(element, binding, event) {
+function ExpandOnClick_onClickOutsideElement(element, binding, event) {
var hadUsedScrollbar = binding.value.isMouseDown && binding.value.hasScrolled;
binding.value.isMouseDown = false;
binding.value.hasScrolled = false;
@@ -1874,16 +2136,16 @@ function onClickOutsideElement(element, binding, event) {
}
}
-function onScroll(binding) {
+function ExpandOnClick_onScroll(binding) {
binding.value.hasScrolled = true;
}
-function onMouseDown(binding) {
+function ExpandOnClick_onMouseDown(binding) {
binding.value.isMouseDown = true;
binding.value.hasScrolled = false;
}
-function onEscapeHandler(element, binding, event) {
+function ExpandOnClick_onEscapeHandler(element, binding, event) {
if (event.which === 27) {
binding.value.isMouseDown = false;
binding.value.hasScrolled = false;
@@ -1891,7 +2153,7 @@ function onEscapeHandler(element, binding, event) {
}
}
-var doc = document.documentElement;
+var ExpandOnClick_doc = document.documentElement;
/**
* Usage (in a component):
*
@@ -1906,22 +2168,22 @@ var doc = document.documentElement;
binding.value.isMouseDown = false;
binding.value.hasScrolled = false;
binding.value.onExpand = onExpand.bind(null, el);
- binding.value.onEscapeHandler = onEscapeHandler.bind(null, el, binding);
- binding.value.onMouseDown = onMouseDown.bind(null, binding);
- binding.value.onClickOutsideElement = onClickOutsideElement.bind(null, el, binding);
- binding.value.onScroll = onScroll.bind(null, binding);
+ binding.value.onEscapeHandler = ExpandOnClick_onEscapeHandler.bind(null, el, binding);
+ binding.value.onMouseDown = ExpandOnClick_onMouseDown.bind(null, binding);
+ binding.value.onClickOutsideElement = ExpandOnClick_onClickOutsideElement.bind(null, el, binding);
+ binding.value.onScroll = ExpandOnClick_onScroll.bind(null, binding);
binding.value.expander.addEventListener('click', binding.value.onExpand);
- doc.addEventListener('keyup', binding.value.onEscapeHandler);
- doc.addEventListener('mousedown', binding.value.onMouseDown);
- doc.addEventListener('mouseup', binding.value.onClickOutsideElement);
- doc.addEventListener('scroll', binding.value.onScroll);
+ ExpandOnClick_doc.addEventListener('keyup', binding.value.onEscapeHandler);
+ ExpandOnClick_doc.addEventListener('mousedown', binding.value.onMouseDown);
+ ExpandOnClick_doc.addEventListener('mouseup', binding.value.onClickOutsideElement);
+ ExpandOnClick_doc.addEventListener('scroll', binding.value.onScroll);
},
unmounted: function unmounted(el, binding) {
binding.value.expander.removeEventListener('click', binding.value.onExpand);
- doc.removeEventListener('keyup', binding.value.onEscapeHandler);
- doc.removeEventListener('mousedown', binding.value.onMouseDown);
- doc.removeEventListener('mouseup', binding.value.onClickOutsideElement);
- doc.removeEventListener('scroll', binding.value.onScroll);
+ ExpandOnClick_doc.removeEventListener('keyup', binding.value.onEscapeHandler);
+ ExpandOnClick_doc.removeEventListener('mousedown', binding.value.onMouseDown);
+ ExpandOnClick_doc.removeEventListener('mouseup', binding.value.onClickOutsideElement);
+ ExpandOnClick_doc.removeEventListener('scroll', binding.value.onScroll);
}
});
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts
@@ -1945,10 +2207,9 @@ function piwikExpandOnClick() {
modifiers: {},
dir: {}
};
- var wrapped = ExpandOnClick;
- wrapped.mounted(element[0], binding);
+ ExpandOnClick.mounted(element[0], binding);
element.on('$destroy', function () {
- return wrapped.unmounted(element[0], binding);
+ return ExpandOnClick.unmounted(element[0], binding);
});
}
};
@@ -2039,10 +2300,9 @@ function piwikExpandOnHover() {
modifiers: {},
dir: {}
};
- var wrapped = ExpandOnHover;
- wrapped.mounted(element[0], binding);
+ ExpandOnHover.mounted(element[0], binding);
element.on('$destroy', function () {
- return wrapped.unmounted(element[0], binding);
+ return ExpandOnHover.unmounted(element[0], binding);
});
}
};
@@ -3154,6 +3414,11 @@ var Comparisons_store_ComparisonsStore = /*#__PURE__*/function () {
key: "getAllSeriesColors",
value: function getAllSeriesColors() {
var ColorManager = Matomo_Matomo.ColorManager;
+
+ if (!ColorManager) {
+ return [];
+ }
+
var seriesColorNames = [];
for (var i = 0; i < SERIES_COLOR_COUNT; i += 1) {
@@ -3171,6 +3436,13 @@ var Comparisons_store_ComparisonsStore = /*#__PURE__*/function () {
value: function loadComparisonsDisabledFor() {
var _this3 = this;
+ var matomoModule = src_MatomoUrl_MatomoUrl.parsed.value.module;
+
+ if (matomoModule === 'CoreUpdater' || matomoModule === 'Installation') {
+ this.privateState.comparisonsDisabledFor = [];
+ return;
+ }
+
AjaxHelper_AjaxHelper.fetch({
module: 'API',
method: 'API.getPagesComparisonsDisabledFor'
@@ -3531,6 +3803,189 @@ angular.module('piwikApp.service').factory('piwikComparisonsService', Comparison
directiveName: 'piwikComparisons',
restrict: 'E'
}));
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=template&id=6bbbef32
+
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_1 = {
+ ref: "root",
+ class: "menuDropdown"
+};
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_2 = ["title"];
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_3 = ["innerHTML"];
+
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-arrow-bottom"
+}, null, -1);
+
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_5 = {
+ class: "items"
+};
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_6 = {
+ key: 0,
+ class: "search"
+};
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_7 = ["placeholder"];
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_8 = ["title"];
+var Menudropdownvue_type_template_id_6bbbef32_hoisted_9 = ["title"];
+function Menudropdownvue_type_template_id_6bbbef32_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _directive_focus_anywhere_but_here = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("focus-anywhere-but-here");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Menudropdownvue_type_template_id_6bbbef32_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "title",
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.showItems = !_ctx.showItems;
+ }),
+ title: _ctx.tooltip
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(this.actualMenuTitle)
+ }, null, 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_3), Menudropdownvue_type_template_id_6bbbef32_hoisted_4], 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", Menudropdownvue_type_template_id_6bbbef32_hoisted_5, [_ctx.showSearch && _ctx.showItems ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Menudropdownvue_type_template_id_6bbbef32_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "text",
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.searchTerm = $event;
+ }),
+ onKeydown: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.onSearchTermKeydown($event);
+ }),
+ placeholder: _ctx.translate('General_Search')
+ }, null, 40, Menudropdownvue_type_template_id_6bbbef32_hoisted_7), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ class: "search_ico",
+ src: "plugins/Morpheus/images/search_ico.png",
+ title: _ctx.translate('General_Search')
+ }, null, 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_8), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.searchTerm]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ onClick: _cache[3] || (_cache[3] = function ($event) {
+ _ctx.searchTerm = '';
+
+ _ctx.searchItems('');
+ }),
+ class: "reset",
+ src: "plugins/CoreHome/images/reset_search.png",
+ title: _ctx.translate('General_Clear')
+ }, null, 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_9), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ onClick: _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.selectItem($event);
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showItems]])], 512)), [[_directive_focus_anywhere_but_here, {
+ blur: _ctx.lostFocus
+ }]]);
+}
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=template&id=6bbbef32
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=script&lang=ts
+
+
+
+var Menudropdownvue_type_script_lang_ts_window = window,
+ Menudropdownvue_type_script_lang_ts_$ = Menudropdownvue_type_script_lang_ts_window.$;
+/* harmony default export */ var Menudropdownvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ menuTitle: String,
+ tooltip: String,
+ showSearch: Boolean,
+ menuTitleChangeOnClick: String
+ },
+ directives: {
+ FocusAnywhereButHere: FocusAnywhereButHere,
+ FocusIf: FocusIf
+ },
+ emits: ['afterSelect'],
+ watch: {
+ menuTitle: function menuTitle() {
+ this.actualMenuTitle = this.menuTitle;
+ }
+ },
+ data: function data() {
+ return {
+ showItems: false,
+ searchTerm: '',
+ actualMenuTitle: this.menuTitle
+ };
+ },
+ methods: {
+ lostFocus: function lostFocus() {
+ this.showItems = false;
+ },
+ selectItem: function selectItem(event) {
+ var targetClasses = event.target.classList;
+
+ if (!targetClasses.contains('item') || targetClasses.contains('disabled') || targetClasses.contains('separator')) {
+ return;
+ }
+
+ if (this.menuTitleChangeOnClick !== false) {
+ this.actualMenuTitle = event.target.textContent.replace(/[\u0000-\u2666]/g, function (c) {
+ return "&#".concat(c.charCodeAt(0), ";");
+ }); // eslint-disable-line
+ }
+
+ this.showItems = false;
+ Menudropdownvue_type_script_lang_ts_$(this.$slots.default()).find('.item').removeClass('active');
+ targetClasses.add('active');
+ this.$emit('afterSelect');
+ },
+ onSearchTermKeydown: function onSearchTermKeydown() {
+ var _this = this;
+
+ setTimeout(function () {
+ _this.searchItems(_this.searchTerm);
+ });
+ },
+ searchItems: function searchItems(unprocessedSearchTerm) {
+ var searchTerm = unprocessedSearchTerm.toLowerCase();
+ Menudropdownvue_type_script_lang_ts_$(this.$refs.root).find('.item').each(function (index, node) {
+ var $node = Menudropdownvue_type_script_lang_ts_$(node);
+
+ if ($node.text().toLowerCase().indexOf(searchTerm) === -1) {
+ $node.hide();
+ } else {
+ $node.show();
+ }
+ });
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue
+
+
+
+Menudropdownvue_type_script_lang_ts.render = Menudropdownvue_type_template_id_6bbbef32_render
+
+/* harmony default export */ var Menudropdown = (Menudropdownvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var Menudropdown_adapter = (createAngularJsAdapter({
+ component: Menudropdown,
+ scope: {
+ menuTitle: {
+ angularJsBind: '@'
+ },
+ tooltip: {
+ angularJsBind: '@'
+ },
+ showSearch: {
+ angularJsBind: '='
+ },
+ menuTitleChangeOnClick: {
+ angularJsBind: '='
+ }
+ },
+ directiveName: 'piwikMenudropdown',
+ transclude: true,
+ events: {
+ 'after-select': function afterSelect($event, scope) {
+ setTimeout(function () {
+ scope.$apply();
+ }, 0);
+ }
+ }
+}));
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/DatePicker/DatePicker.vue?vue&type=template&id=c8c462d2
var DatePickervue_type_template_id_c8c462d2_hoisted_1 = {
@@ -4452,6 +4907,14 @@ Alertvue_type_script_lang_ts.render = Alertvue_type_template_id_c3863ae2_render
+
+
+
+
+
+
+
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
index c5a9368621..381689e5a0 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
@@ -4,13 +4,13 @@
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createAngularJsAdapter",(function(){return st})),n.d(t,"activityIndicatorAdapter",(function(){return Qn})),n.d(t,"ActivityIndicator",(function(){return Gn})),n.d(t,"translate",(function(){return P})),n.d(t,"alertAdapter",(function(){return Xn})),n.d(t,"AjaxHelper",(function(){return He})),n.d(t,"MatomoUrl",(function(){return ke})),n.d(t,"Matomo",(function(){return j})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return Q})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return se})),n.d(t,"Range",(function(){return L})),n.d(t,"format",(function(){return C})),n.d(t,"getToday",(function(){return S})),n.d(t,"parseDate",(function(){return E})),n.d(t,"todayIsInRange",(function(){return T})),n.d(t,"MatomoDialog",(function(){return Xe})),n.d(t,"ExpandOnClick",(function(){return Ve})),n.d(t,"ExpandOnHover",(function(){return Qe})),n.d(t,"EnrichedHeadline",(function(){return Pt})),n.d(t,"ContentBlock",(function(){return $t})),n.d(t,"Comparisons",(function(){return wn})),n.d(t,"DatePicker",(function(){return In})),n.d(t,"DateRangePicker",(function(){return Nn})),n.d(t,"PeriodDatePicker",(function(){return Ln})),"undefined"!==typeof window){var r=window.document.currentScript,a=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}n("2342");var o=n("8bbf");function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createAngularJsAdapter",(function(){return yt})),n.d(t,"activityIndicatorAdapter",(function(){return br})),n.d(t,"ActivityIndicator",(function(){return gr})),n.d(t,"translate",(function(){return C})),n.d(t,"alertAdapter",(function(){return Or})),n.d(t,"AjaxHelper",(function(){return He})),n.d(t,"MatomoUrl",(function(){return ke})),n.d(t,"Matomo",(function(){return j})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return Q})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return se})),n.d(t,"Range",(function(){return R})),n.d(t,"format",(function(){return P})),n.d(t,"getToday",(function(){return S})),n.d(t,"parseDate",(function(){return E})),n.d(t,"todayIsInRange",(function(){return T})),n.d(t,"Dropdown",(function(){return Ae})),n.d(t,"FocusAnywhereButHere",(function(){return Re})),n.d(t,"FocusIf",(function(){return _e})),n.d(t,"MatomoDialog",(function(){return ct})),n.d(t,"ExpandOnClick",(function(){return Ke})),n.d(t,"ExpandOnHover",(function(){return at})),n.d(t,"EnrichedHeadline",(function(){return Mt})),n.d(t,"ContentBlock",(function(){return qt})),n.d(t,"Comparisons",(function(){return In})),n.d(t,"Menudropdown",(function(){return Gn})),n.d(t,"DatePicker",(function(){return nr})),n.d(t,"DateRangePicker",(function(){return lr})),n.d(t,"PeriodDatePicker",(function(){return pr})),"undefined"!==typeof window){var r=window.document.currentScript,a=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}n("2342");var o=n("8bbf");function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var u,d=function(){function e(){i(this,e),c(this,"periods",{}),c(this,"periodOrder",[])}return s(e,[{key:"addCustomPeriod",value:function(e,t){if(this.periods[e])throw new Error('The "'.concat(e,'" period already exists! It cannot be overridden.'));this.periods[e]=t,this.periodOrder.push(e)}},{key:"getAllLabels",value:function(){return Array().concat(this.periodOrder)}},{key:"get",value:function(e){var t=this.periods[e];if(!t)throw new Error("Invalid period label: ".concat(e));return t}},{key:"parse",value:function(e,t){return this.get(e).parse(t)}},{key:"isRecognizedPeriod",value:function(e){return!!this.periods[e]}}]),e}(),p=new d;function f(e){return v(e)||g(e)||h(e)||m()}function m(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(e,t){if(e){if("string"===typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}function g(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function v(e){if(Array.isArray(e))return b(e)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}
+ */var u,d=function(){function e(){i(this,e),c(this,"periods",{}),c(this,"periodOrder",[])}return s(e,[{key:"addCustomPeriod",value:function(e,t){if(this.periods[e])throw new Error('The "'.concat(e,'" period already exists! It cannot be overridden.'));this.periods[e]=t,this.periodOrder.push(e)}},{key:"getAllLabels",value:function(){return Array().concat(this.periodOrder)}},{key:"get",value:function(e){var t=this.periods[e];if(!t)throw new Error("Invalid period label: ".concat(e));return t}},{key:"parse",value:function(e,t){return this.get(e).parse(t)}},{key:"isRecognizedPeriod",value:function(e){return!!this.periods[e]}}]),e}(),p=new d;function f(e){return g(e)||v(e)||h(e)||m()}function m(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(e,t){if(e){if("string"===typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}function v(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function g(e){if(Array.isArray(e))return b(e)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}
/*!
* Matomo - free/libre analytics platform
*
@@ -23,50 +23,50 @@
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=n;return 1===n.length&&n[0]&&n[0]instanceof Array&&(a=n[0]),window._pk_translate(e,a)}
+function C(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=n;return 1===n.length&&n[0]&&n[0]instanceof Array&&(a=n[0]),window._pk_translate(e,a)}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function C(e){return $.datepicker.formatDate("yy-mm-dd",e)}function S(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function E(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return S();if("yesterday"===t||"yesterdaySameTime"===t){var n=S();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=S();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var a=S();return a.setDate(1),a.setMonth(a.getMonth()-1),a}if(t.match(/last[ -]?year/i)){var o=S();return o.setFullYear(o.getFullYear()-1),o}return $.datepicker.parseDate("yy-mm-dd",t)}function T(e){return 2===e.length&&(S()>=e[0]&&S()<=e[1])}function x(e,t){return N(e)||B(e,t)||H(e,t)||I()}function I(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function H(e,t){if(e){if("string"===typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?A(e,t):void 0}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function B(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function N(e){if(Array.isArray(e))return e}function M(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function R(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),e}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */function P(e){return $.datepicker.formatDate("yy-mm-dd",e)}function S(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function E(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return S();if("yesterday"===t||"yesterdaySameTime"===t){var n=S();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=S();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var a=S();return a.setDate(1),a.setMonth(a.getMonth()-1),a}if(t.match(/last[ -]?year/i)){var o=S();return o.setFullYear(o.getFullYear()-1),o}return $.datepicker.parseDate("yy-mm-dd",t)}function T(e){return 2===e.length&&(S()>=e[0]&&S()<=e[1])}function x(e,t){return M(e)||B(e,t)||H(e,t)||I()}function I(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function H(e,t){if(e){if("string"===typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?A(e,t):void 0}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function B(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function M(e){if(Array.isArray(e))return e}function N(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function V(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),e}function L(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var L=function(){function e(t,n,r){M(this,e),V(this,"startDate",void 0),V(this,"endDate",void 0),V(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return R(e,[{key:"getPrettyString",value:function(){var e=C(this.startDate),t=C(this.endDate);return P("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"getLastNRange",value:function(t,n,r){var a=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(a))throw new Error("Invalid range strAmount");var o=r?E(r):S(),i=new Date(o.getTime());if("day"===t)i.setDate(i.getDate()-a);else if("week"===t)i.setDate(i.getDate()-7*a);else if("month"===t)i.setDate(1),i.setMonth(i.getMonth()-a);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));i.setFullYear(i.getFullYear()-a)}if("day"!==t){var l=p.periods[t].parse(i),s=p.periods[t].parse(o),c=l.getDateRange(),u=x(c,1);i=u[0];var d=s.getDateRange(),f=x(d,2);o=f[1]}var m=new Date(1991,7,6);if(i.getTime()-m.getTime()<0)switch(t){case"year":i=new Date(1992,0,1);break;case"month":i=new Date(1991,8,1);break;case"week":i=new Date(1991,8,12);break;case"day":default:i=m;break}return new e(i,o,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var a=n?E(n):S(),o=new Date(a.getTime()),i=new Date(a.getTime());if("day"===t)o.setDate(o.getDate()-r),i.setDate(i.getDate()-r);else if("week"===t)o.setDate(o.getDate()-7*r),i.setDate(i.getDate()-7*r);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-r),i.setDate(1),i.setMonth(i.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-r),i.setFullYear(i.getFullYear()-r)}if("day"!==t){var l=p.periods[t].parse(o),s=p.periods[t].parse(i),c=l.getDateRange(),u=x(c,1);o=u[0];var d=s.getDateRange(),f=x(d,2);i=f[1]}var m=new Date(1991,7,6);if(o.getTime()-m.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=m;break}return new e(o,i,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var a=decodeURIComponent(t).split(",");return new e(E(a[0]),E(a[1]),n)}},{key:"getDisplayText",value:function(){return P("General_DateRangeInPeriodList")}}]),e}();function U(){return{getAllLabels:p.getAllLabels.bind(p),isRecognizedPeriod:p.isRecognizedPeriod.bind(p),get:p.get.bind(p),parse:p.parse.bind(p),parseDate:E,format:C,RangePeriod:L,todayIsInRange:T}}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function J(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function q(e,t,n){return t&&J(e.prototype,t),n&&J(e,n),e}function G(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var R=function(){function e(t,n,r){N(this,e),L(this,"startDate",void 0),L(this,"endDate",void 0),L(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return V(e,[{key:"getPrettyString",value:function(){var e=P(this.startDate),t=P(this.endDate);return C("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"getLastNRange",value:function(t,n,r){var a=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(a))throw new Error("Invalid range strAmount");var o=r?E(r):S(),i=new Date(o.getTime());if("day"===t)i.setDate(i.getDate()-a);else if("week"===t)i.setDate(i.getDate()-7*a);else if("month"===t)i.setDate(1),i.setMonth(i.getMonth()-a);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));i.setFullYear(i.getFullYear()-a)}if("day"!==t){var l=p.periods[t].parse(i),s=p.periods[t].parse(o),c=l.getDateRange(),u=x(c,1);i=u[0];var d=s.getDateRange(),f=x(d,2);o=f[1]}var m=new Date(1991,7,6);if(i.getTime()-m.getTime()<0)switch(t){case"year":i=new Date(1992,0,1);break;case"month":i=new Date(1991,8,1);break;case"week":i=new Date(1991,8,12);break;case"day":default:i=m;break}return new e(i,o,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var a=n?E(n):S(),o=new Date(a.getTime()),i=new Date(a.getTime());if("day"===t)o.setDate(o.getDate()-r),i.setDate(i.getDate()-r);else if("week"===t)o.setDate(o.getDate()-7*r),i.setDate(i.getDate()-7*r);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-r),i.setDate(1),i.setMonth(i.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-r),i.setFullYear(i.getFullYear()-r)}if("day"!==t){var l=p.periods[t].parse(o),s=p.periods[t].parse(i),c=l.getDateRange(),u=x(c,1);o=u[0];var d=s.getDateRange(),f=x(d,2);i=f[1]}var m=new Date(1991,7,6);if(o.getTime()-m.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=m;break}return new e(o,i,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var a=decodeURIComponent(t).split(",");return new e(E(a[0]),E(a[1]),n)}},{key:"getDisplayText",value:function(){return C("General_DateRangeInPeriodList")}}]),e}();function U(){return{getAllLabels:p.getAllLabels.bind(p),isRecognizedPeriod:p.isRecognizedPeriod.bind(p),get:p.get.bind(p),parse:p.parse.bind(p),parseDate:E,format:P,RangePeriod:R,todayIsInRange:T}}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function J(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function q(e,t,n){return t&&J(e.prototype,t),n&&J(e,n),e}function G(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("range",L),
+ */p.addCustomPeriod("range",R),
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-window.piwik.addCustomPeriod=p.addCustomPeriod.bind(p),window.angular.module("piwikApp.service").factory("piwikPeriods",U);var Q=function(){function e(t){_(this,e),G(this,"dateInPeriod",void 0),this.dateInPeriod=t}return q(e,[{key:"getPrettyString",value:function(){return C(this.dateInPeriod)}},{key:"getDateRange",value:function(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodDay")}}]),e}();function z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function W(e,t,n){return t&&Y(e.prototype,t),n&&Y(e,n),e}function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+window.piwik.addCustomPeriod=p.addCustomPeriod.bind(p),window.angular.module("piwikApp.service").factory("piwikPeriods",U);var Q=function(){function e(t){_(this,e),G(this,"dateInPeriod",void 0),this.dateInPeriod=t}return q(e,[{key:"getPrettyString",value:function(){return P(this.dateInPeriod)}},{key:"getDateRange",value:function(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodDay")}}]),e}();function z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function W(e,t,n){return t&&Y(e.prototype,t),n&&Y(e,n),e}function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("day",Q);var X=function(){function e(t){z(this,e),K(this,"dateInPeriod",void 0),this.dateInPeriod=t}return W(e,[{key:"getPrettyString",value:function(){var e=this.getDateRange(),t=C(e[0]),n=C(e[1]);return P("General_DateRangeFromTo",[t,n])}},{key:"getDateRange",value:function(){var e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);var n=new Date(t.getTime());return n.setDate(t.getDate()+6),[t,n]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodWeek")}}]),e}();function Z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function te(e,t,n){return t&&ee(e.prototype,t),n&&ee(e,n),e}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */p.addCustomPeriod("day",Q);var X=function(){function e(t){z(this,e),K(this,"dateInPeriod",void 0),this.dateInPeriod=t}return W(e,[{key:"getPrettyString",value:function(){var e=this.getDateRange(),t=P(e[0]),n=P(e[1]);return C("General_DateRangeFromTo",[t,n])}},{key:"getDateRange",value:function(){var e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);var n=new Date(t.getTime());return n.setDate(t.getDate()+6),[t,n]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodWeek")}}]),e}();function Z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function te(e,t,n){return t&&ee(e.prototype,t),n&&ee(e,n),e}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("week",X);var re=function(){function e(t){Z(this,e),ne(this,"dateInPeriod",void 0),this.dateInPeriod=t}return te(e,[{key:"getPrettyString",value:function(){var e=P("Intl_Month_Long_StandAlone_".concat(this.dateInPeriod.getMonth()+1));return"".concat(e," ").concat(this.dateInPeriod.getFullYear())}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodMonth")}}]),e}();function ae(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function ie(e,t,n){return t&&oe(e.prototype,t),n&&oe(e,n),e}function le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */p.addCustomPeriod("week",X);var re=function(){function e(t){Z(this,e),ne(this,"dateInPeriod",void 0),this.dateInPeriod=t}return te(e,[{key:"getPrettyString",value:function(){var e=C("Intl_Month_Long_StandAlone_".concat(this.dateInPeriod.getMonth()+1));return"".concat(e," ").concat(this.dateInPeriod.getFullYear())}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodMonth")}}]),e}();function ae(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function ie(e,t,n){return t&&oe(e.prototype,t),n&&oe(e,n),e}function le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("month",re);var se=function(){function e(t){ae(this,e),le(this,"dateInPeriod",void 0),this.dateInPeriod=t}return ie(e,[{key:"getPrettyString",value:function(){return this.dateInPeriod.getFullYear().toString()}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodYear")}}]),e}();
+ */p.addCustomPeriod("month",re);var se=function(){function e(t){ae(this,e),le(this,"dateInPeriod",void 0),this.dateInPeriod=t}return ie(e,[{key:"getPrettyString",value:function(){return this.dateInPeriod.getFullYear().toString()}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodYear")}}]),e}();
/*!
* Matomo - free/libre analytics platform
*
@@ -79,7 +79,7 @@ function ce(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Obj
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("year",se);var he=window,ge=he.piwik,ve=he.broadcast;function be(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ye=function(){function e(){var t=this;de(this,e),me(this,"urlQuery",Object(o["ref"])("")),me(this,"hashQuery",Object(o["ref"])("")),me(this,"urlParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ve.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),me(this,"hashParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ve.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),me(this,"parsed",Object(o["computed"])((function(){return Object(o["readonly"])(ue(ue({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),j.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return fe(e,[{key:"updateHash",value:function(e){var t="string"!==typeof e?this.stringify(e):e,n=j.helper.getAngularDependency("$location");n.search(t)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){return $.param(e).replace(/%5B%5D/g,"[]")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(be(t,e)&&(ge.period!==t||ge.currentDateString!==e)){ge.period=t;var n=p.parse(t,e).getDateRange();ge.startDateString=C(n[0]),ge.endDateString=C(n[1]),ge.updateDateInTitle(e,t),"range"===ge.period&&(e="".concat(ge.startDateString,",").concat(ge.endDateString)),ge.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),we=new ye,ke=we;
+ */p.addCustomPeriod("year",se);var he=window,ve=he.piwik,ge=he.broadcast;function be(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ye=function(){function e(){var t=this;de(this,e),me(this,"urlQuery",Object(o["ref"])("")),me(this,"hashQuery",Object(o["ref"])("")),me(this,"urlParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ge.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),me(this,"hashParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ge.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),me(this,"parsed",Object(o["computed"])((function(){return Object(o["readonly"])(ue(ue({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),j.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return fe(e,[{key:"updateHash",value:function(e){var t="string"!==typeof e?this.stringify(e):e,n=j.helper.getAngularDependency("$location");n.search(t)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){return $.param(e).replace(/%5B%5D/g,"[]")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(be(t,e)&&(ve.period!==t||ve.currentDateString!==e)){ve.period=t;var n=p.parse(t,e).getDateRange();ve.startDateString=P(n[0]),ve.endDateString=P(n[1]),ve.updateDateInTitle(e,t),"range"===ve.period&&(e="".concat(ve.startDateString,",").concat(ve.endDateString)),ve.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),we=new ye,ke=we;
/*!
* Matomo - free/libre analytics platform
*
@@ -93,107 +93,151 @@ function De(){var e={getSearchParam:ke.getSearchParam.bind(ke)};return e}
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Oe(){return j}function je(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return j.postEvent.apply(j,[e].concat(n))},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return j.postEventNoEmit.apply(j,[e].concat(r)),t.$oldBroadcast.apply(t,[e].concat(r))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){xe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Se(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Te(e,t,n){return t&&Ee(e.prototype,t),n&&Ee(e,n),e}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+function Oe(){return j}function je(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return j.postEvent.apply(j,[e].concat(n))},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return j.postEventNoEmit.apply(j,[e].concat(r)),t.$oldBroadcast.apply(t,[e].concat(r))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function Ce(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ce(Object(n),!0).forEach((function(t){xe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ce(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Se(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Te(e,t,n){return t&&Ee(e.prototype,t),n&&Ee(e,n),e}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Ie(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}ge.updatePeriodParamsFromUrl=we.updatePeriodParamsFromUrl.bind(we),De.$inject=[],angular.module("piwikApp.service").service("piwikUrl",De),window.angular.module("piwikApp.service").service("piwik",Oe),je.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(je),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var He=function(){function e(){Se(this,e),xe(this,"format","json"),xe(this,"timeout",null),xe(this,"callback",null),xe(this,"useRegularCallbackInCaseOfError",!1),xe(this,"errorCallback",void 0),xe(this,"withToken",!1),xe(this,"completeCallback",void 0),xe(this,"getParams",{}),xe(this,"getUrl","?"),xe(this,"postParams",{}),xe(this,"loadingElement",null),xe(this,"errorElement","#ajaxError"),xe(this,"requestHandle",null),xe(this,"defaultParams",["idSite","period","date","segment"]),this.errorCallback=Ie}return Te(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,a=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var o=r[e];(-1===a.indexOf(e)||o)&&("get"===t.toLowerCase()?n.getParams[e]=o:"post"===t.toLowerCase()&&(n.postParams[e]=o))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;return $(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle),new Promise((function(t,n){e.requestHandle.then(t).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),n(t))}))}))}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var a={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var a=null,o="toast";if($(e.errorElement).length&&t.message&&($(e.errorElement).show(),a=e.errorElement,o=null),t.message){var i=window["require"]("piwik/UI"),l=new i.Notification;l.show(t.message,{placeat:a,context:"error",type:o,id:"ajaxHelper"}),l.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,j.ajaxRequestFinished&&j.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(a)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||j.shouldPropagateTokenAuth?{token_auth:j.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=Ce(Ce({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=ke.getSearchParam("segment"),r={idSite:j.idSite?j.idSite.toString():broadcast.getValueFromUrl("idSite"),period:j.period||broadcast.getValueFromUrl("period"),segment:n},a=e;return a.token_auth&&(a.token_auth=null,delete a.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!a[e]&&!t.postParams[e]&&r[e]&&(a[e]=r[e])})),!this.useGETDefaultParameter("date")||a.date||this.postParams.date||(a.date=j.currentDateString),a}}],[{key:"fetch",value:function(t){var n=new e;return n.setFormat("json"),n.addParams(Ce({module:"API",format:"json"},t),"get"),n.send()}}]),e}();function Ae(){return globalAjaxQueue}
+ */function Ie(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}ve.updatePeriodParamsFromUrl=we.updatePeriodParamsFromUrl.bind(we),De.$inject=[],angular.module("piwikApp.service").service("piwikUrl",De),window.angular.module("piwikApp.service").service("piwik",Oe),je.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(je),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var He=function(){function e(){Se(this,e),xe(this,"format","json"),xe(this,"timeout",null),xe(this,"callback",null),xe(this,"useRegularCallbackInCaseOfError",!1),xe(this,"errorCallback",void 0),xe(this,"withToken",!1),xe(this,"completeCallback",void 0),xe(this,"getParams",{}),xe(this,"getUrl","?"),xe(this,"postParams",{}),xe(this,"loadingElement",null),xe(this,"errorElement","#ajaxError"),xe(this,"requestHandle",null),xe(this,"defaultParams",["idSite","period","date","segment"]),this.errorCallback=Ie}return Te(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,a=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var o=r[e];(-1===a.indexOf(e)||o)&&("get"===t.toLowerCase()?n.getParams[e]=o:"post"===t.toLowerCase()&&(n.postParams[e]=o))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;return $(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle),new Promise((function(t,n){e.requestHandle.then(t).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),n(t))}))}))}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var a={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var a=null,o="toast";if($(e.errorElement).length&&t.message&&($(e.errorElement).show(),a=e.errorElement,o=null),t.message){var i=window["require"]("piwik/UI"),l=new i.Notification;l.show(t.message,{placeat:a,context:"error",type:o,id:"ajaxHelper"}),l.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,j.ajaxRequestFinished&&j.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(a)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||j.shouldPropagateTokenAuth?{token_auth:j.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=Pe(Pe({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=ke.getSearchParam("segment"),r={idSite:j.idSite?j.idSite.toString():broadcast.getValueFromUrl("idSite"),period:j.period||broadcast.getValueFromUrl("period"),segment:n},a=e;return a.token_auth&&(a.token_auth=null,delete a.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!a[e]&&!t.postParams[e]&&r[e]&&(a[e]=r[e])})),!this.useGETDefaultParameter("date")||a.date||this.postParams.date||(a.date=j.currentDateString),a}}],[{key:"fetch",value:function(t){var n=new e;return n.setFormat("json"),n.addParams(Pe({module:"API",format:"json"},t),"get"),n.send()}}]),e}();function $e(){return globalAjaxQueue}window.ajaxHelper=He,angular.module("piwikApp.service").service("globalAjaxQueue",$e);
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */var Ae={mounted:function(e,t){var n={};$(e).addClass("matomo-dropdown-menu");var r=!!$(e).parent().closest(".dropdown-content").length;r&&(n={hover:!0},$(e).addClass("submenu"),$(t.value.activates).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container")),$(e).dropdown(n)}};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function Be(e){return{restrict:"A",link:function(t,n,r){var a={instance:null,value:{activates:$("#".concat(r.activates))[0]},oldValue:null,modifiers:{},dir:{}};e((function(){Ae.mounted(n[0],a)}))}}}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function $e(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function Be(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Ne(e){e.value.hasScrolled=!0}function Me(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Fe(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}window.ajaxHelper=He,angular.module("piwikApp.service").service("globalAjaxQueue",Ae);var Re=document.documentElement,Ve={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=$e.bind(null,e),t.value.onEscapeHandler=Fe.bind(null,e,t),t.value.onMouseDown=Me.bind(null,t),t.value.onClickOutsideElement=Be.bind(null,e,t),t.value.onScroll=Ne.bind(null,t),t.value.expander.addEventListener("click",t.value.onExpand),Re.addEventListener("keyup",t.value.onEscapeHandler),Re.addEventListener("mousedown",t.value.onMouseDown),Re.addEventListener("mouseup",t.value.onClickOutsideElement),Re.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){t.value.expander.removeEventListener("click",t.value.onExpand),Re.removeEventListener("keyup",t.value.onEscapeHandler),Re.removeEventListener("mousedown",t.value.onMouseDown),Re.removeEventListener("mouseup",t.value.onClickOutsideElement),Re.removeEventListener("scroll",t.value.onScroll)}};
+function Me(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||t.value&&t.value.blur()}function Ne(e,t){t.value.hasScrolled=!0}function Fe(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function Ve(e,t,n){27===n.which&&setTimeout((function(){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()}),0)}Be.$inject=["$timeout"],angular.module("piwikApp").directive("piwikDropdownMenu",Be);var Le=document.documentElement,Re={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=Ve.bind(null,e,t),t.value.onMouseDown=Fe.bind(null,e,t),t.value.onClickOutsideElement=Me.bind(null,e,t),t.value.onScroll=Ne.bind(null,e,t),Le.addEventListener("keyup",t.value.onEscapeHandler),Le.addEventListener("mousedown",t.value.onMouseDown),Le.addEventListener("mouseup",t.value.onClickOutsideElement),Le.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){Le.removeEventListener("keyup",t.value.onEscapeHandler),Le.removeEventListener("mousedown",t.value.onMouseDown),Le.removeEventListener("mouseup",t.value.onClickOutsideElement),Le.removeEventListener("scroll",t.value.onScroll)}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Le(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}},r=Ve;r.mounted(t[0],n),t.on("$destroy",(function(){return r.unmounted(t[0],n)}))}}}
+function Ue(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{blur:function(){setTimeout((function(){e.$apply(n.piwikFocusAnywhereButHere)}),0)}},oldValue:null,modifiers:{},dir:{}};Re.mounted(t[0],r),t.on("$destroy",(function(){return Re.unmounted(t[0],r)}))}}}Ue.$inject=[],angular.module("piwikApp.directive").directive("piwikFocusAnywhereButHere",Ue);
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */var _e={updated:function(e,t){t.value.focusIf&&setTimeout((function(){e.focus(),t.value.afterFocus&&t.value.afterFocus()}),5)}};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function Je(){return{restrict:"A",link:function(e,t,n){e.$watch(n.piwikFocusIf,(function(n){var r={instance:null,value:{focusIf:!!n,afterFocus:function(){return e.$apply()}},oldValue:null,modifiers:{},dir:{}};_e.updated(t[0],r)}))}}}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function qe(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function Ge(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Qe(e){e.value.hasScrolled=!0}function ze(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Ye(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}angular.module("piwikApp.directive").directive("piwikFocusIf",Je);var We=document.documentElement,Ke={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=qe.bind(null,e),t.value.onEscapeHandler=Ye.bind(null,e,t),t.value.onMouseDown=ze.bind(null,t),t.value.onClickOutsideElement=Ge.bind(null,e,t),t.value.onScroll=Qe.bind(null,t),t.value.expander.addEventListener("click",t.value.onExpand),We.addEventListener("keyup",t.value.onEscapeHandler),We.addEventListener("mousedown",t.value.onMouseDown),We.addEventListener("mouseup",t.value.onClickOutsideElement),We.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){t.value.expander.removeEventListener("click",t.value.onExpand),We.removeEventListener("keyup",t.value.onEscapeHandler),We.removeEventListener("mousedown",t.value.onMouseDown),We.removeEventListener("mouseup",t.value.onClickOutsideElement),We.removeEventListener("scroll",t.value.onScroll)}};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function Xe(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};Ke.mounted(t[0],n),t.on("$destroy",(function(){return Ke.unmounted(t[0],n)}))}}}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Ue(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function _e(e){e.classList.remove("expanded")}function Je(e,t){e.contains(t.target)||e.classList.remove("expanded")}function qe(e,t){27===t.which&&e.classList.remove("expanded")}Le.$inject=[],angular.module("piwikApp").directive("piwikExpandOnClick",Le);var Ge=document.documentElement,Qe={mounted:function(e,t){t.value.onMouseEnter=Ue.bind(null,e),t.value.onMouseLeave=_e.bind(null,e),t.value.onClickOutsideElement=Je.bind(null,e),t.value.onEscapeHandler=qe.bind(null,e),t.value.expander.addEventListener("mouseenter",t.value.onMouseEnter),e.addEventListener("mouseleave",t.value.onMouseLeave),Ge.addEventListener("keyup",t.value.onEscapeHandler),Ge.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){t.value.expander.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}};
+function Ze(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function et(e){e.classList.remove("expanded")}function tt(e,t){e.contains(t.target)||e.classList.remove("expanded")}function nt(e,t){27===t.which&&e.classList.remove("expanded")}Xe.$inject=[],angular.module("piwikApp").directive("piwikExpandOnClick",Xe);var rt=document.documentElement,at={mounted:function(e,t){t.value.onMouseEnter=Ze.bind(null,e),t.value.onMouseLeave=et.bind(null,e),t.value.onClickOutsideElement=tt.bind(null,e),t.value.onEscapeHandler=nt.bind(null,e),t.value.expander.addEventListener("mouseenter",t.value.onMouseEnter),e.addEventListener("mouseleave",t.value.onMouseLeave),rt.addEventListener("keyup",t.value.onEscapeHandler),rt.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){t.value.expander.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function ze(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}},r=Qe;r.mounted(t[0],n),t.on("$destroy",(function(){return r.unmounted(t[0],n)}))}}}ze.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",ze);var Ye={ref:"root"};function We(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ye,[Object(o["renderSlot"])(e.$slots,"default")],512)),[[o["vShow"],e.modelValue]])}var Ke=Object(o["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;j.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});Ke.render=We;var Xe=Ke;function Ze(e,t){return at(e)||rt(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function rt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function at(e){if(Array.isArray(e))return e}
+function ot(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};at.mounted(t[0],n),t.on("$destroy",(function(){return at.unmounted(t[0],n)}))}}}ot.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",ot);var it={ref:"root"};function lt(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",it,[Object(o["renderSlot"])(e.$slots,"default")],512)),[[o["vShow"],e.modelValue]])}var st=Object(o["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;j.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});st.render=lt;var ct=st;function ut(e,t){return ht(e)||mt(e,t)||pt(e,t)||dt()}function dt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function pt(e,t){if(e){if("string"===typeof e)return ft(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ft(e,t):void 0}}function ft(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function mt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function ht(e){if(Array.isArray(e))return e}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */var vt=0;function gt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function bt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function yt(e){var t=e.component,n=e.scope,r=void 0===n?{}:n,a=e.events,i=void 0===a?{}:a,l=e.$inject,s=e.directiveName,c=e.transclude,u=e.mountPointFactory,d=e.postCreate,p=e.noScope,f=e.restrict,m=void 0===f?"A":f,h=vt;c&&(vt+=1);var v={};function g(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];var l={restrict:m,scope:p?void 0:v,compile:function(){return{post:function(e,a,l){var s=c?a.find("[ng-transclude][counter=".concat(h,"]")):null,p="<root-component";Object.entries(i).forEach((function(e){var t=ut(e,1),n=t[0];p+=" @".concat(n,"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(r).forEach((function(e){var t=ut(e,2),n=t[0],r=t[1];if("&"===r.angularJsBind){var a=gt(n);i[a]||(p+=" @".concat(a,"=\"onEventHandler('").concat(a,"', $event)\""))}else p+=" :".concat(r.vue,'="').concat(r.vue,'"')})),p+=">",c&&(p+='<div ref="transcludeTarget"/>'),p+="</root-component>";var f=Object(o["createApp"])({template:p,data:function(){var t={};return Object.entries(r).forEach((function(r){var o=ut(r,2),i=o[0],s=o[1],c=e[i];"undefined"===typeof c&&"undefined"!==typeof s.default&&(c=s.default instanceof Function?s.default.apply(s,[e,a,l].concat(n)):s.default),t[s.vue]=c})),t},setup:function(){if(c){var e=Object(o["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,r){var o=bt(t);e[o]&&e[o](r),i[t]&&i[t].apply(i,[r,e,a,l].concat(n))}}});f.config.globalProperties.$sanitize=window.vueSanitize,f.config.globalProperties.translate=C,f.component("root-component",t);var m=u?u.apply(void 0,[e,a,l].concat(n)):a[0],v=f.mount(m);Object.entries(r).forEach((function(t){var r=ut(t,2),o=r[0],i=r[1];i.angularJsBind&&"&"!==i.angularJsBind&&e.$watch(o,(function(t){"undefined"!==typeof i.default&&"undefined"===typeof t?v[o]=i.default instanceof Function?i.default.apply(i,[e,a,l].concat(n)):i.default:v[o]=t}))})),c&&$(v.transcludeTarget).append(s),d&&d.apply(void 0,[v,e,a,l].concat(n)),a.on("$destroy",(function(){f.unmount()}))}}}};return c&&(l.transclude=!0,l.template='<div ng-transclude counter="'.concat(h,'"/>')),l}return Object.entries(r).forEach((function(e){var t=ut(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(v[n]=r.angularJsBind)})),g.$inject=l||[],angular.module("piwikApp").directive(s,g),g}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var ot=0;function it(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function lt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function st(e){var t=e.component,n=e.scope,r=void 0===n?{}:n,a=e.events,i=void 0===a?{}:a,l=e.$inject,s=e.directiveName,c=e.transclude,u=e.mountPointFactory,d=e.postCreate,p=e.noScope,f=e.restrict,m=void 0===f?"A":f,h=ot;c&&(ot+=1);var g={};function v(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];var l={restrict:m,scope:p?void 0:g,compile:function(){return{post:function(e,a,l){var s=c?a.find("[ng-transclude][counter=".concat(h,"]")):null,p="<root-component";Object.entries(i).forEach((function(e){var t=Ze(e,1),n=t[0];p+=" @".concat(n,"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(r).forEach((function(e){var t=Ze(e,2),n=t[0],r=t[1];if("&"===r.angularJsBind){var a=it(n);i[a]||(p+=" @".concat(a,"=\"onEventHandler('").concat(a,"', $event)\""))}else p+=" :".concat(r.vue,'="').concat(r.vue,'"')})),p+=">",c&&(p+='<div ref="transcludeTarget"/>'),p+="</root-component>";var f=Object(o["createApp"])({template:p,data:function(){var t={};return Object.entries(r).forEach((function(r){var o=Ze(r,2),i=o[0],s=o[1],c=e[i];"undefined"===typeof c&&"undefined"!==typeof s.default&&(c=s.default instanceof Function?s.default.apply(s,[e,a,l].concat(n)):s.default),t[s.vue]=c})),t},setup:function(){if(c){var e=Object(o["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,r){var o=lt(t);e[o]&&e[o](r),i[t]&&i[t].apply(i,[r,e,a,l].concat(n))}}});f.config.globalProperties.$sanitize=window.vueSanitize,f.config.globalProperties.translate=P,f.component("root-component",t);var m=u?u.apply(void 0,[e,a,l].concat(n)):a[0],g=f.mount(m);Object.entries(r).forEach((function(t){var r=Ze(t,2),o=r[0],i=r[1];i.angularJsBind&&"&"!==i.angularJsBind&&e.$watch(o,(function(t){"undefined"!==typeof i.default&&"undefined"===typeof t?g[o]=i.default instanceof Function?i.default.apply(i,[e,a,l].concat(n)):i.default:g[o]=t}))})),c&&$(g.transcludeTarget).append(s),d&&d.apply(void 0,[g,e,a,l].concat(n)),a.on("$destroy",(function(){f.unmount()}))}}}};return c&&(l.transclude=!0,l.template='<div ng-transclude counter="'.concat(h,'"/>')),l}return Object.entries(r).forEach((function(e){var t=Ze(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(g[n]=r.angularJsBind)})),v.$inject=l||[],angular.module("piwikApp").directive(s,v),v}
+ */yt({component:ct,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r){r.yes&&(t.$eval(r.yes),setTimeout((function(){t.$apply()}),0))},no:function(e,t,n,r){r.no&&(t.$eval(r.no),setTimeout((function(){t.$apply()}),0))},close:function(e,t,n,r){r.close&&(t.$eval(r.close),setTimeout((function(){t.$apply()}),0))},"update:modelValue":function(e,t,n,r,a){setTimeout((function(){t.$apply(a(r.piwikDialog).assign(t,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0});var wt={key:0,class:"title",tabindex:"6"},kt=["href","title"],Dt={class:"iconsBar"},Ot=["href","title"],jt=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),Ct=[jt],Pt=["title"],St=Object(o["createElementVNode"])("span",{class:"icon-info"},null,-1),Et=[St],Tt={class:"ratingIcons"},xt={class:"inlineHelp"},It=["innerHTML"],Ht=["href"];function $t(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("RateFeature");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",wt,[Object(o["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(o["renderSlot"])(e.$slots,"default")],8,kt)):Object(o["createCommentVNode"])("",!0),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",Dt,[e.helpUrl&&!e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},Ct,8,Ot)):Object(o["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(o["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},Et,10,Pt)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",Tt,[Object(o["createVNode"])(l,{title:e.actualFeatureName},null,8,["title"])])],512),[[o["vShow"],e.showIcons||e.showInlineHelp]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",xt,[Object(o["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,It),e.helpUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(o["toDisplayString"])(e.translate("General_MoreDetails")),9,Ht)):Object(o["createCommentVNode"])("",!0)],512),[[o["vShow"],e.showInlineHelp]])],544)}var At=Object(o["defineAsyncComponent"])((function(){return new Promise((function(e){window.$(document).ready((function(){e(window.Feedback.RateFeature)}))}))})),Bt=Object(o["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:At},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n=t.querySelector(".title .inlineHelp");if(!n&&t.parentElement.nextElementSibling&&(n=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),n){var r=n.getAttribute("data-content").trim();r.length&&(e.actualInlineHelp="<p>".concat(r,"</p>"),setTimeout((function(){return n.remove()}),0))}}e.actualFeatureName||(e.actualFeatureName=t.querySelector(".title").textContent),e.reportGenerated&&p.parse(j.period,j.currentDateString).containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}))}});Bt.render=$t;var Mt=Bt,Nt=(yt({component:Mt,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),Ft={class:"card-content"},Vt={key:0,class:"card-title"},Lt={key:1,class:"card-title"},Rt={ref:"content"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */st({component:Xe,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r){r.yes&&(t.$eval(r.yes),setTimeout((function(){t.$apply()}),0))},no:function(e,t,n,r){r.no&&(t.$eval(r.no),setTimeout((function(){t.$apply()}),0))},close:function(e,t,n,r){r.close&&(t.$eval(r.close),setTimeout((function(){t.$apply()}),0))},"update:modelValue":function(e,t,n,r,a){setTimeout((function(){t.$apply(a(r.piwikDialog).assign(t,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0});var ct={key:0,class:"title",tabindex:"6"},ut=["href","title"],dt={class:"iconsBar"},pt=["href","title"],ft=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),mt=[ft],ht=["title"],gt=Object(o["createElementVNode"])("span",{class:"icon-info"},null,-1),vt=[gt],bt={class:"ratingIcons"},yt={class:"inlineHelp"},wt=["innerHTML"],kt=["href"];function Dt(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("RateFeature");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ct,[Object(o["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(o["renderSlot"])(e.$slots,"default")],8,ut)):Object(o["createCommentVNode"])("",!0),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",dt,[e.helpUrl&&!e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},mt,8,pt)):Object(o["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(o["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},vt,10,ht)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",bt,[Object(o["createVNode"])(l,{title:e.actualFeatureName},null,8,["title"])])],512),[[o["vShow"],e.showIcons||e.showInlineHelp]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",yt,[Object(o["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,wt),e.helpUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(o["toDisplayString"])(e.translate("General_MoreDetails")),9,kt)):Object(o["createCommentVNode"])("",!0)],512),[[o["vShow"],e.showInlineHelp]])],544)}var Ot=Object(o["defineAsyncComponent"])((function(){return new Promise((function(e){window.$(document).ready((function(){e(window.Feedback.RateFeature)}))}))})),jt=Object(o["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:Ot},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n=t.querySelector(".title .inlineHelp");if(!n&&t.parentElement.nextElementSibling&&(n=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),n){var r=n.getAttribute("data-content").trim();r.length&&(e.actualInlineHelp="<p>".concat(r,"</p>"),setTimeout((function(){return n.remove()}),0))}}e.actualFeatureName||(e.actualFeatureName=t.querySelector(".title").textContent),e.reportGenerated&&p.parse(j.period,j.currentDateString).containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}))}});jt.render=Dt;var Pt=jt,Ct=(st({component:Pt,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),St={class:"card-content"},Et={key:0,class:"card-title"},Tt={key:1,class:"card-title"},xt={ref:"content"};
+ */function Ut(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("EnrichedHeadline");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Nt,[Object(o["createElementVNode"])("div",Ft,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Vt,Object(o["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Lt,[Object(o["createVNode"])(l,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(o["withCtx"])((function(){return[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",Rt,[Object(o["renderSlot"])(e.$slots,"default")],512)])],512)}var _t=null,Jt=Object(o["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Mt},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e,t=this,n=this.$refs,r=n.root,a=n.content;if(this.anchor){var o=document.createElement("a");o.id=this.anchor,r.parentElement.prepend(o)}if(setTimeout((function(){var e=a.querySelector(".contentHelp");e&&(t.actualHelpText=e.innerHTML,e.remove())}),0),!this.actualFeature||!0!==this.actualFeature&&"true"!==this.actualFeature||(this.actualFeature=this.contentTitle),null===_t&&(_t=document.querySelector("#content.admin")),_t&&(e=_t.offsetTop),e||0===e){var i=r.closest("[piwik-widget-loader]"),l=i?i.offsetTop:r.offsetTop;l-e<17&&(r.style.marginTop=0)}}});Jt.render=Ut;var qt=Jt;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function It(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("EnrichedHeadline");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ct,[Object(o["createElementVNode"])("div",St,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Et,Object(o["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Tt,[Object(o["createVNode"])(l,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(o["withCtx"])((function(){return[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",xt,[Object(o["renderSlot"])(e.$slots,"default")],512)])],512)}var Ht=null,At=Object(o["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Pt},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e,t=this,n=this.$refs,r=n.root,a=n.content;if(this.anchor){var o=document.createElement("a");o.id=this.anchor,r.parentElement.prepend(o)}if(setTimeout((function(){var e=a.querySelector(".contentHelp");e&&(t.actualHelpText=e.innerHTML,e.remove())}),0),!this.actualFeature||!0!==this.actualFeature&&"true"!==this.actualFeature||(this.actualFeature=this.contentTitle),null===Ht&&(Ht=document.querySelector("#content.admin")),Ht&&(e=Ht.offsetTop),e||0===e){var i=r.closest("[piwik-widget-loader]"),l=i?i.offsetTop:r.offsetTop;l-e<17&&(r.style.marginTop=0)}}});At.render=It;var $t=At;
+ */yt({component:qt,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function Gt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Qt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function zt(e,t,n){return t&&Qt(e.prototype,t),n&&Qt(e,n),e}function Yt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */st({component:$t,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function Bt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Nt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Mt(e,t,n){return t&&Nt(e.prototype,t),n&&Nt(e,n),e}function Ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var Wt=function(){function e(){var t=this;Gt(this,e),Yt(this,"segmentState",Object(o["reactive"])({availableSegments:[]})),j.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return zt(e,[{key:"state",get:function(){return Object(o["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),Kt=new Wt;function Xt(e){return nn(e)||tn(e)||en(e)||Zt()}function Zt(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function en(e,t){if(e){if("string"===typeof e)return rn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?rn(e,t):void 0}}function tn(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function nn(e){if(Array.isArray(e))return rn(e)}function rn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function an(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function on(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?an(Object(n),!0).forEach((function(t){un(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):an(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ln(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function cn(e,t,n){return t&&sn(e.prototype,t),n&&sn(e,n),e}function un(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var Rt=function(){function e(){var t=this;Bt(this,e),Ft(this,"segmentState",Object(o["reactive"])({availableSegments:[]})),j.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return Mt(e,[{key:"state",get:function(){return Object(o["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),Vt=new Rt;function Lt(e){return qt(e)||Jt(e)||_t(e)||Ut()}function Ut(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _t(e,t){if(e){if("string"===typeof e)return Gt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Gt(e,t):void 0}}function Jt(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function qt(e){if(Array.isArray(e))return Gt(e)}function Gt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Qt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Qt(Object(n),!0).forEach((function(t){Xt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Yt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Wt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Kt(e,t,n){return t&&Wt(e.prototype,t),n&&Wt(e,n),e}function Xt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var dn=8,pn=3;function fn(e){return e?e instanceof Array?e:[e]:[]}var mn=function(){function e(){var t=this;ln(this,e),un(this,"privateState",Object(o["reactive"])({comparisonsDisabledFor:[]})),un(this,"state",Object(o["readonly"])(this.privateState)),un(this,"colors",{}),un(this,"segmentComparisons",Object(o["computed"])((function(){return t.parseSegmentComparisons()}))),un(this,"periodComparisons",Object(o["computed"])((function(){return t.parsePeriodComparisons()}))),un(this,"isEnabled",Object(o["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(o["watch"])((function(){return t.getComparisons()}),(function(){return j.postEvent("piwikComparisonsChanged")}),{deep:!0})}return cn(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%dn;if(0===n)return this.colors["series".concat(r)];var a=n%pn;return this.colors["series".concat(r,"-shade").concat(a)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%dn);return t>0&&(n+="-shade".concat(t%pn)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(a){t.push({index:n,params:on(on({},a.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=Xt(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},a={},o=!1,i=!1;e.forEach((function(e){o?r[e.params.segment]=!0:o=!0})),t.forEach((function(e){i?a["".concat(e.params.period,"|").concat(e.params.date)]=!0:i=!0}));var l=[],s=[];Object.keys(a).forEach((function(e){var t=e.split("|");l.push(t[0]),s.push(t[1])}));var c={compareSegments:Object.keys(r),comparePeriods:l,compareDates:s};if(j.helper.isAngularRenderingThePage()){var u=ke.hashParsed.value,d=on(on(on({},u),c),n);return delete d["compareSegments[]"],delete d["comparePeriods[]"],delete d["compareDates[]"],void(JSON.stringify(d)!==JSON.stringify(u)&&ke.updateHash(d))}var p=[];["compareSegments","comparePeriods","compareDates"].forEach((function(e){c[e].length||p.push(e)}));var f=ke.stringify(n),m=ke.stringify(c);window.broadcast.propagateNewPage(f,void 0,m,p)}},{key:"getAllSeriesColors",value:function(){var e=j.ColorManager;if(!e)return[];for(var t=[],n=0;n<dn;n+=1){t.push("series".concat(n));for(var r=0;r<pn;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this,t=ke.parsed.value.module;"CoreUpdater"!==t&&"Installation"!==t?He.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t})):this.privateState.comparisonsDisabledFor=[]}},{key:"parseSegmentComparisons",value:function(){var e=Kt.state.availableSegments,t=Xt(fn(ke.parsed.value.compareSegments));t.unshift(ke.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var a;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(a=e)}));var o=a?a.name:C("General_Unknown");""===t.trim()&&(o=C("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:j.helper.htmlDecode(o),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=Xt(fn(ke.parsed.value.comparePeriods)),t=Xt(fn(ke.parsed.value.compareDates));e.unshift(ke.parsed.value.period),t.unshift(ke.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var a=void 0;try{a=p.parse(e[r],t[r]).getPrettyString()}catch(o){a=C("General_Error")}n.push({params:{date:t[r],period:e[r]},title:a,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=ke.parsed.value.category||ke.parsed.value.module,t=ke.parsed.value.subcategory||ke.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),hn=new mn,vn={key:0,ref:"root",class:"matomo-comparisons"},gn={class:"comparison-type"},bn=["title"],yn=["href"],wn=["title"],kn={class:"comparison-period-label"},Dn=["onClick"],On=["title"],jn={class:"loadingPiwik",style:{display:"none"}},Cn=["alt"];function Pn(e,t,n,r,a,i){return e.isComparing?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",vn,[Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.segmentComparisons,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(o["createElementVNode"])("div",gn,Object(o["toDisplayString"])(e.translate("General_Segment")),1),Object(o["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(o["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(o["toDisplayString"])(t.title),9,yn)],8,bn),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.periodComparisons,(function(n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(o["createElementVNode"])("span",{class:"comparison-dot",style:Object(o["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(o["createElementVNode"])("span",kn,Object(o["toDisplayString"])(n.title)+" ("+Object(o["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,wn)})),128)),e.segmentComparisons.length>1?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(o["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,On)],8,Dn)):Object(o["createCommentVNode"])("",!0)])})),128)),Object(o["createElementVNode"])("div",jn,[Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,Cn),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)):Object(o["createCommentVNode"])("",!0)}function Sn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function En(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sn(Object(n),!0).forEach((function(t){Tn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Tn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var xn=Object(o["defineComponent"])({props:{},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(o["computed"])((function(){return hn.isComparing()})),t=Object(o["computed"])((function(){return hn.getSegmentComparisons()})),n=Object(o["computed"])((function(){return hn.getPeriodComparisons()})),r=hn.getSeriesColor.bind(hn);return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),hn.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return C("CoreHome_PeriodRange");var n=C("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=En({},ke.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(ke.stringify(t))},setUpTooltips:function(){var e=window,t=e.$;t(this.$refs.root).tooltip({track:!0,content:function(){var e=t(this).attr("title");return window.vueSanitize(e.replace(/\n/g,"<br />"))},show:{delay:200,duration:200},hide:!1})},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,hn.isComparing()){var t=hn.getPeriodComparisons(),n=hn.getSegmentComparisons();He.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:ke.getSearchParam("compareSegments"),comparePeriods:ke.getSearchParam("comparePeriods"),compareDates:ke.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var a=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=a}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=hn.getComparisonSeriesIndex(t.index,0),a=e.reportData.comparisons[r],o=hn.getComparisonSeriesIndex(t.index,n.index),i=e.reportData.comparisons[o],l=e.reportData.comparisons[n.index],s='<div class="comparison-card-tooltip">',c=(i.nb_visits/a.nb_visits*100).toFixed(2);return c="".concat(c,"%"),s+=C("General_ComparisonCardTooltip1",["'".concat(i.compareSegmentPretty,"'"),i.comparePeriodPretty,c,i.nb_visits.toString(),a.nb_visits.toString()]),t.index>0&&(s+="<br/><br/>",s+=C("General_ComparisonCardTooltip2",[i.nb_visits_change.toString(),l.compareSegmentPretty,l.comparePeriodPretty])),s+="</div>",s}},updated:function(){var e=this;setTimeout((function(){return e.setUpTooltips()}))},mounted:function(){var e=this;j.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged(),setTimeout((function(){return e.setUpTooltips()}))},beforeUnmount:function(){try{window.$(this.refs.root).tooltip("destroy")}catch(e){}}});xn.render=Pn;var In=xn;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var Zt=8,en=3;function tn(e){return e?e instanceof Array?e:[e]:[]}var nn=function(){function e(){var t=this;Yt(this,e),Xt(this,"privateState",Object(o["reactive"])({comparisonsDisabledFor:[]})),Xt(this,"state",Object(o["readonly"])(this.privateState)),Xt(this,"colors",{}),Xt(this,"segmentComparisons",Object(o["computed"])((function(){return t.parseSegmentComparisons()}))),Xt(this,"periodComparisons",Object(o["computed"])((function(){return t.parsePeriodComparisons()}))),Xt(this,"isEnabled",Object(o["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(o["watch"])((function(){return t.getComparisons()}),(function(){return j.postEvent("piwikComparisonsChanged")}),{deep:!0})}return Kt(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%Zt;if(0===n)return this.colors["series".concat(r)];var a=n%en;return this.colors["series".concat(r,"-shade").concat(a)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%Zt);return t>0&&(n+="-shade".concat(t%en)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(a){t.push({index:n,params:zt(zt({},a.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=Lt(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},a={},o=!1,i=!1;e.forEach((function(e){o?r[e.params.segment]=!0:o=!0})),t.forEach((function(e){i?a["".concat(e.params.period,"|").concat(e.params.date)]=!0:i=!0}));var l=[],s=[];Object.keys(a).forEach((function(e){var t=e.split("|");l.push(t[0]),s.push(t[1])}));var c={compareSegments:Object.keys(r),comparePeriods:l,compareDates:s};if(j.helper.isAngularRenderingThePage()){var u=ke.hashParsed.value,d=zt(zt(zt({},u),c),n);return delete d["compareSegments[]"],delete d["comparePeriods[]"],delete d["compareDates[]"],void(JSON.stringify(d)!==JSON.stringify(u)&&ke.updateHash(d))}var p=[];["compareSegments","comparePeriods","compareDates"].forEach((function(e){c[e].length||p.push(e)}));var f=ke.stringify(n),m=ke.stringify(c);window.broadcast.propagateNewPage(f,void 0,m,p)}},{key:"getAllSeriesColors",value:function(){for(var e=j.ColorManager,t=[],n=0;n<Zt;n+=1){t.push("series".concat(n));for(var r=0;r<en;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this;He.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t}))}},{key:"parseSegmentComparisons",value:function(){var e=Vt.state.availableSegments,t=Lt(tn(ke.parsed.value.compareSegments));t.unshift(ke.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var a;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(a=e)}));var o=a?a.name:P("General_Unknown");""===t.trim()&&(o=P("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:j.helper.htmlDecode(o),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=Lt(tn(ke.parsed.value.comparePeriods)),t=Lt(tn(ke.parsed.value.compareDates));e.unshift(ke.parsed.value.period),t.unshift(ke.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var a=void 0;try{a=p.parse(e[r],t[r]).getPrettyString()}catch(o){a=P("General_Error")}n.push({params:{date:t[r],period:e[r]},title:a,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=ke.parsed.value.category||ke.parsed.value.module,t=ke.parsed.value.subcategory||ke.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),rn=new nn,an={key:0,ref:"root",class:"matomo-comparisons"},on={class:"comparison-type"},ln=["title"],sn=["href"],cn=["title"],un={class:"comparison-period-label"},dn=["onClick"],pn=["title"],fn={class:"loadingPiwik",style:{display:"none"}},mn=["alt"];function hn(e,t,n,r,a,i){return e.isComparing?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",an,[Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.segmentComparisons,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(o["createElementVNode"])("div",on,Object(o["toDisplayString"])(e.translate("General_Segment")),1),Object(o["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(o["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(o["toDisplayString"])(t.title),9,sn)],8,ln),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.periodComparisons,(function(n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(o["createElementVNode"])("span",{class:"comparison-dot",style:Object(o["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(o["createElementVNode"])("span",un,Object(o["toDisplayString"])(n.title)+" ("+Object(o["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,cn)})),128)),e.segmentComparisons.length>1?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(o["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,pn)],8,dn)):Object(o["createCommentVNode"])("",!0)])})),128)),Object(o["createElementVNode"])("div",fn,[Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,mn),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)):Object(o["createCommentVNode"])("",!0)}function gn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gn(Object(n),!0).forEach((function(t){bn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function bn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var yn=Object(o["defineComponent"])({props:{},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(o["computed"])((function(){return rn.isComparing()})),t=Object(o["computed"])((function(){return rn.getSegmentComparisons()})),n=Object(o["computed"])((function(){return rn.getPeriodComparisons()})),r=rn.getSeriesColor.bind(rn);return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),rn.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return P("CoreHome_PeriodRange");var n=P("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=vn({},ke.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(ke.stringify(t))},setUpTooltips:function(){var e=window,t=e.$;t(this.$refs.root).tooltip({track:!0,content:function(){var e=t(this).attr("title");return window.vueSanitize(e.replace(/\n/g,"<br />"))},show:{delay:200,duration:200},hide:!1})},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,rn.isComparing()){var t=rn.getPeriodComparisons(),n=rn.getSegmentComparisons();He.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:ke.getSearchParam("compareSegments"),comparePeriods:ke.getSearchParam("comparePeriods"),compareDates:ke.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var a=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=a}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=rn.getComparisonSeriesIndex(t.index,0),a=e.reportData.comparisons[r],o=rn.getComparisonSeriesIndex(t.index,n.index),i=e.reportData.comparisons[o],l=e.reportData.comparisons[n.index],s='<div class="comparison-card-tooltip">',c=(i.nb_visits/a.nb_visits*100).toFixed(2);return c="".concat(c,"%"),s+=P("General_ComparisonCardTooltip1",["'".concat(i.compareSegmentPretty,"'"),i.comparePeriodPretty,c,i.nb_visits.toString(),a.nb_visits.toString()]),t.index>0&&(s+="<br/><br/>",s+=P("General_ComparisonCardTooltip2",[i.nb_visits_change.toString(),l.compareSegmentPretty,l.comparePeriodPretty])),s+="</div>",s}},updated:function(){var e=this;setTimeout((function(){return e.setUpTooltips()}))},mounted:function(){var e=this;j.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged(),setTimeout((function(){return e.setUpTooltips()}))},beforeUnmount:function(){try{window.$(this.refs.root).tooltip("destroy")}catch(e){}}});yn.render=hn;var wn=yn;
+ */function Hn(){return hn}Hn.$inject=[],angular.module("piwikApp.service").factory("piwikComparisonsService",Hn);yt({component:In,directiveName:"piwikComparisons",restrict:"E"});var $n={ref:"root",class:"menuDropdown"},An=["title"],Bn=["innerHTML"],Mn=Object(o["createElementVNode"])("span",{class:"icon-arrow-bottom"},null,-1),Nn={class:"items"},Fn={key:0,class:"search"},Vn=["placeholder"],Ln=["title"],Rn=["title"];function Un(e,t,n,r,a,i){var l=Object(o["resolveDirective"])("focus-anywhere-but-here");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",$n,[Object(o["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=function(t){return e.showItems=!e.showItems}),title:e.tooltip},[Object(o["createElementVNode"])("span",{innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,Bn),Mn],8,An),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",Nn,[e.showSearch&&e.showItems?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Fn,[Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),onKeydown:t[2]||(t[2]=function(t){return e.onSearchTermKeydown(t)}),placeholder:e.translate("General_Search")},null,40,Vn),[[o["vModelText"],e.searchTerm]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("img",{class:"search_ico",src:"plugins/Morpheus/images/search_ico.png",title:e.translate("General_Search")},null,8,Ln),[[o["vShow"],!e.searchTerm]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("img",{onClick:t[3]||(t[3]=function(t){e.searchTerm="",e.searchItems("")}),class:"reset",src:"plugins/CoreHome/images/reset_search.png",title:e.translate("General_Clear")},null,8,Rn),[[o["vShow"],e.searchTerm]])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",{onClick:t[4]||(t[4]=function(t){return e.selectItem(t)})},[Object(o["renderSlot"])(e.$slots,"default")])],512),[[o["vShow"],e.showItems]])],512)),[[l,{blur:e.lostFocus}]])}var _n=window,Jn=_n.$,qn=Object(o["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:String},directives:{FocusAnywhereButHere:Re,FocusIf:_e},emits:["afterSelect"],watch:{menuTitle:function(){this.actualMenuTitle=this.menuTitle}},data:function(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus:function(){this.showItems=!1},selectItem:function(e){var t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(!1!==this.menuTitleChangeOnClick&&(this.actualMenuTitle=e.target.textContent.replace(/[\u0000-\u2666]/g,(function(e){return"&#".concat(e.charCodeAt(0),";")}))),this.showItems=!1,Jn(this.$slots.default()).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect"))},onSearchTermKeydown:function(){var e=this;setTimeout((function(){e.searchItems(e.searchTerm)}))},searchItems:function(e){var t=e.toLowerCase();Jn(this.$refs.root).find(".item").each((function(e,n){var r=Jn(n);-1===r.text().toLowerCase().indexOf(t)?r.hide():r.show()}))}}});qn.render=Un;var Gn=qn,Qn=(yt({component:Gn,scope:{menuTitle:{angularJsBind:"@"},tooltip:{angularJsBind:"@"},showSearch:{angularJsBind:"="},menuTitleChangeOnClick:{angularJsBind:"="}},directiveName:"piwikMenudropdown",transclude:!0,events:{"after-select":function(e,t){setTimeout((function(){t.$apply()}),0)}}}),{ref:"root"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function kn(){return rn}kn.$inject=[],angular.module("piwikApp.service").factory("piwikComparisonsService",kn);st({component:wn,directiveName:"piwikComparisons",restrict:"E"});var Dn={ref:"root"};function On(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Dn,null,512)}function jn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?jn(Object(n),!0).forEach((function(t){Cn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Cn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Sn=1,En=window,Tn=En.$,xn=Object(o["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(o["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var a=r.length?r:t;a.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function a(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return i(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function i(e,t,n){var r,o=e.parent(),i=o.children("td");if(o.is(":first-child")){var l=o.children("td:not(.ui-datepicker-other-month)").first();return r=a(l,t,n),r.setDate(i.index(e)-i.index(l)+1),r}var s=o.children("td:not(.ui-datepicker-other-month)").last();return r=a(s,t,n),r.setDate(r.getDate()+i.index(e)-i.index(s)),r}function l(){var e=Tn(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),a=parseInt(t.attr("data-year"),10);return[r,a]}function s(){var e=Tn(n.value),t=e.find(".ui-datepicker-calendar"),o=l(),i=t.find("td"),s=i.first(),c=a(s,o[0],o[1]);i.each((function(){r(Tn(this),c),c.setDate(c.getDate()+1)}))}function c(){var t=e.viewDate;if(!t)return!1;if(!(t instanceof Date))try{t=E(t)}catch(o){return!1}var r=Tn(n.value),a=l();return(a[0]!==t.getMonth()||a[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=Tn(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=Tn(n.value),r=e.stepMonths||Sn;if(t.datepicker("option","stepMonths")===r)return!1;var a=Tn(".ui-datepicker-month",t).val(),o=Tn(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(o,a)),u(),!0}function p(){var t=Tn(n.value);t.find(".ui-datepicker-month").attr("disabled",e.disableMonthDropdown)}function f(){if(Tn(this).hasClass("ui-state-hover")){var e=Tn(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function m(){p(),s()}return Object(o["watch"])((function(){return Pn({},e)}),(function(e,t){var n=!1;["selectedDateStart","selectedDateEnd","highlightedDateStart","highlightedDateEnd"].forEach((function(r){n||(!e[r]&&t[r]&&(n=!0),e[r]&&!t[r]&&(n=!0),e[r]&&t[r]&&e[r].getTime()!==t[r].getTime()&&(n=!0))})),e.viewDate!==t.viewDate&&c()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.enableDisableMonthDropdown!==t.enableDisableMonthDropdown&&p(),n&&s()})),Object(o["onMounted"])((function(){var r=Tn(n.value),o=e.options||{},i=Pn(Pn(Pn({},j.getBaseDatePickerOptions()),o),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(i),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&s()})),r.on("mouseenter","tbody td",(function(){var e=l(),n=Tn(this),r=a(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){s()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",(function(){return f()})),r.on("click",(function(e){e.preventDefault();var t=Tn(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&m()})),r.on("click","td[data-month]",(function(e){var n=Tn(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),a=parseInt(n.attr("data-year"),10),o=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(a,r,o)})}));var h=d();c(),p(),h||u(),s()})),{root:n}}});xn.render=On;var In=xn,Hn=(st({component:In,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,a){a()},"cell-hover-leave":function(e,t,n,r,a){a()},"date-select":function(e,t,n,r,a){a()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),An={id:"calendarRangeTo"};
+ */function zn(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Qn,null,512)}function Yn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yn(Object(n),!0).forEach((function(t){Kn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Kn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Xn=1,Zn=window,er=Zn.$,tr=Object(o["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(o["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var a=r.length?r:t;a.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function a(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return i(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function i(e,t,n){var r,o=e.parent(),i=o.children("td");if(o.is(":first-child")){var l=o.children("td:not(.ui-datepicker-other-month)").first();return r=a(l,t,n),r.setDate(i.index(e)-i.index(l)+1),r}var s=o.children("td:not(.ui-datepicker-other-month)").last();return r=a(s,t,n),r.setDate(r.getDate()+i.index(e)-i.index(s)),r}function l(){var e=er(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),a=parseInt(t.attr("data-year"),10);return[r,a]}function s(){var e=er(n.value),t=e.find(".ui-datepicker-calendar"),o=l(),i=t.find("td"),s=i.first(),c=a(s,o[0],o[1]);i.each((function(){r(er(this),c),c.setDate(c.getDate()+1)}))}function c(){var t=e.viewDate;if(!t)return!1;if(!(t instanceof Date))try{t=E(t)}catch(o){return!1}var r=er(n.value),a=l();return(a[0]!==t.getMonth()||a[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=er(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=er(n.value),r=e.stepMonths||Xn;if(t.datepicker("option","stepMonths")===r)return!1;var a=er(".ui-datepicker-month",t).val(),o=er(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(o,a)),u(),!0}function p(){var t=er(n.value);t.find(".ui-datepicker-month").attr("disabled",e.disableMonthDropdown)}function f(){if(er(this).hasClass("ui-state-hover")){var e=er(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function m(){p(),s()}return Object(o["watch"])((function(){return Wn({},e)}),(function(e,t){var n=!1;["selectedDateStart","selectedDateEnd","highlightedDateStart","highlightedDateEnd"].forEach((function(r){n||(!e[r]&&t[r]&&(n=!0),e[r]&&!t[r]&&(n=!0),e[r]&&t[r]&&e[r].getTime()!==t[r].getTime()&&(n=!0))})),e.viewDate!==t.viewDate&&c()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.enableDisableMonthDropdown!==t.enableDisableMonthDropdown&&p(),n&&s()})),Object(o["onMounted"])((function(){var r=er(n.value),o=e.options||{},i=Wn(Wn(Wn({},j.getBaseDatePickerOptions()),o),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(i),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&s()})),r.on("mouseenter","tbody td",(function(){var e=l(),n=er(this),r=a(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){s()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",(function(){return f()})),r.on("click",(function(e){e.preventDefault();var t=er(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&m()})),r.on("click","td[data-month]",(function(e){var n=er(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),a=parseInt(n.attr("data-year"),10),o=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(a,r,o)})}));var h=d();c(),p(),h||u(),s()})),{root:n}}});tr.render=zn;var nr=tr,rr=(yt({component:nr,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,a){a()},"cell-hover-leave":function(e,t,n,r,a){a()},"date-select":function(e,t,n,r,a){a()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),ar={id:"calendarRangeTo"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function $n(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createElementBlock"])(o["Fragment"],null,[Object(o["createElementVNode"])("div",Hn,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onChange:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.startDateText]])]),Object(o["createVNode"])(l,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(o["createElementVNode"])("div",An,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onChange:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.endDateText]])]),Object(o["createVNode"])(l,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])],64)}var Bn=Object(o["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:In},data:function(){var e=null;try{e=E(this.startDate)}catch(n){}var t=null;try{t=E(this.endDate)}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.startDateText=this.startDate}t&&(this.fromPickerSelectedDates=[t,t]),this.rangeChanged()},setEndRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.endDateText=this.endDate}t&&(this.toPickerSelectedDates=[t,t]),this.rangeChanged()},rangeChanged:function(){this.$emit("rangeChange",{start:C(this.fromPickerSelectedDates[0]),end:C(this.toPickerSelectedDates[0])})}}});Bn.render=$n;var Nn=Bn;
+ */function or(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createElementBlock"])(o["Fragment"],null,[Object(o["createElementVNode"])("div",rr,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onChange:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.startDateText]])]),Object(o["createVNode"])(l,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(o["createElementVNode"])("div",ar,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onChange:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.endDateText]])]),Object(o["createVNode"])(l,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])],64)}var ir=Object(o["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:nr},data:function(){var e=null;try{e=E(this.startDate)}catch(n){}var t=null;try{t=E(this.endDate)}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.startDateText=this.startDate}t&&(this.fromPickerSelectedDates=[t,t]),this.rangeChanged()},setEndRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.endDateText=this.endDate}t&&(this.toPickerSelectedDates=[t,t]),this.rangeChanged()},rangeChanged:function(){this.$emit("rangeChange",{start:P(this.fromPickerSelectedDates[0]),end:P(this.toPickerSelectedDates[0])})}}});ir.render=or;var lr=ir;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */st({component:Nn,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function Mn(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createBlock"])(l,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var Fn=new Date(j.minDateYear,j.minDateMonth-1,j.minDateDay),Rn=new Date(j.maxDateYear,j.maxDateMonth-1,j.maxDateDay),Vn=Object(o["defineComponent"])({props:{period:String,date:[String,Date]},components:{DatePicker:In},emits:["select"],setup:function(e,t){var n=Object(o["ref"])(e.date),r=Object(o["ref"])([null,null]),a=Object(o["ref"])([null,null]);function i(t){var n=p.get(e.period).parse(t).getDateRange();return n[0]=Fn<n[0]?n[0]:Fn,n[1]=Rn>n[1]?n[1]:Rn,n}function l(t,n){var r=t<Fn||t>Rn,o=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);a.value=r||o?[null,null]:i(t)}function s(){a.value=[null,null]}function c(e){t.emit("select",{date:e})}function u(){e.period&&e.date?r.value=i(e.date):r.value=[null,null]}return Object(o["watch"])(e,u),u(),{selectedDates:r,highlightedDates:a,viewDate:n,onHoverNormalCell:l,onHoverLeaveNormalCells:s,onDateSelected:c}}});Vn.render=Mn;var Ln=Vn,Un=(st({component:Ln,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),{class:"loadingPiwik"}),_n=Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1);
+ */yt({component:lr,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function sr(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createBlock"])(l,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var cr=new Date(j.minDateYear,j.minDateMonth-1,j.minDateDay),ur=new Date(j.maxDateYear,j.maxDateMonth-1,j.maxDateDay),dr=Object(o["defineComponent"])({props:{period:String,date:[String,Date]},components:{DatePicker:nr},emits:["select"],setup:function(e,t){var n=Object(o["ref"])(e.date),r=Object(o["ref"])([null,null]),a=Object(o["ref"])([null,null]);function i(t){var n=p.get(e.period).parse(t).getDateRange();return n[0]=cr<n[0]?n[0]:cr,n[1]=ur>n[1]?n[1]:ur,n}function l(t,n){var r=t<cr||t>ur,o=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);a.value=r||o?[null,null]:i(t)}function s(){a.value=[null,null]}function c(e){t.emit("select",{date:e})}function u(){e.period&&e.date?r.value=i(e.date):r.value=[null,null]}return Object(o["watch"])(e,u),u(),{selectedDates:r,highlightedDates:a,viewDate:n,onHoverNormalCell:l,onHoverLeaveNormalCells:s,onDateSelected:c}}});dr.render=sr;var pr=dr,fr=(yt({component:pr,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),{class:"loadingPiwik"}),mr=Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1);
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Jn(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Un,[_n,Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(e.loadingMessage),1)],512)),[[o["vShow"],e.loading]])}var qn=Object(o["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:P("General_LoadingData")}}});qn.render=Jn;var Gn=qn,Qn=st({component:Gn,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return P("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"});
+ */function hr(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",fr,[mr,Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(e.loadingMessage),1)],512)),[[o["vShow"],e.loading]])}var vr=Object(o["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:C("General_LoadingData")}}});vr.render=hr;var gr=vr,br=yt({component:gr,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return C("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function zn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yn(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["alert",zn({},"alert-".concat(e.severity),!0)])},[Object(o["renderSlot"])(e.$slots,"default")],2)}var Wn=Object(o["defineComponent"])({props:{severity:{type:String,required:!0}}});Wn.render=Yn;var Kn=Wn,Xn=st({component:Kn,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!0});
+ */function yr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wr(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["alert",yr({},"alert-".concat(e.severity),!0)])},[Object(o["renderSlot"])(e.$slots,"default")],2)}var kr=Object(o["defineComponent"])({props:{severity:{type:String,required:!0}}});kr.render=wr;var Dr=kr,Or=yt({component:Dr,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!0});
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts
index f3204f163a..6d3b8462dd 100644
--- a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts
+++ b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts
@@ -299,6 +299,10 @@ export default class ComparisonsStore {
private getAllSeriesColors() {
const { ColorManager } = Matomo;
+ if (!ColorManager) {
+ return [];
+ }
+
const seriesColorNames = [];
for (let i = 0; i < SERIES_COLOR_COUNT; i += 1) {
@@ -312,6 +316,14 @@ export default class ComparisonsStore {
}
private loadComparisonsDisabledFor() {
+ const matomoModule: string = MatomoUrl.parsed.value.module as string;
+ if (matomoModule === 'CoreUpdater'
+ || matomoModule === 'Installation'
+ ) {
+ this.privateState.comparisonsDisabledFor = [];
+ return;
+ }
+
AjaxHelper.fetch({
module: 'API',
method: 'API.getPagesComparisonsDisabledFor',
diff --git a/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts
new file mode 100644
index 0000000000..1e8598881a
--- /dev/null
+++ b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts
@@ -0,0 +1,34 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { IDirective } from 'angular';
+import DropdownMenu from './DropdownMenu';
+
+function piwikDropdownMenu($timeout): IDirective {
+ return {
+ restrict: 'A',
+ link: function piwikDropdownMenuLink(scope, element, attrs) {
+ const binding = {
+ instance: null,
+ value: {
+ activates: $(`#${attrs.activates}`)[0],
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ };
+
+ $timeout(() => {
+ DropdownMenu.mounted(element[0], binding);
+ });
+ },
+ };
+}
+
+piwikDropdownMenu.$inject = ['$timeout'];
+
+angular.module('piwikApp').directive('piwikDropdownMenu', piwikDropdownMenu);
diff --git a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.less b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less
index 92f8ca8785..606b42bd1f 100644
--- a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.less
+++ b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less
@@ -1,4 +1,4 @@
-[piwik-dropdown-menu] {
+[piwik-dropdown-menu],[matomo-dropdown-menu] {
position: relative;
&::after {
diff --git a/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts
new file mode 100644
index 0000000000..a39d288565
--- /dev/null
+++ b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts
@@ -0,0 +1,53 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { DirectiveBinding } from 'vue';
+
+interface DropdownArgs {
+ activates: HTMLElement,
+}
+
+/**
+ * A materializecss dropdown menu that supports submenus.
+ *
+ * To use a submenu, just use this directive within another dropdown.
+ *
+ * Note: if submenus are used, then dropdowns will never scroll.
+ *
+ * Usage:
+ * <a class='dropdown-trigger btn' href='' data-target='mymenu' v-dropdown-menu>Menu</a>
+ * <ul id='mymenu' class='dropdown-content'>
+ * <li>
+ * <a class='dropdown-trigger' data-target="mysubmenu" v-dropdown-menu>Submenu</a>
+ * <ul id="mysubmenu" class="dropdown-content">
+ * <li>Submenu Item</li>
+ * </ul>
+ * </li>
+ * <li>
+ * <a href="">Another item</a>
+ * </li>
+ * </ul>
+ */
+export default {
+ mounted(element: HTMLElement, binding: DirectiveBinding<DropdownArgs>): void {
+ let options = {};
+
+ $(element).addClass('matomo-dropdown-menu');
+
+ const isSubmenu = !!$(element).parent().closest('.dropdown-content').length;
+ if (isSubmenu) {
+ options = { hover: true };
+ $(element).addClass('submenu');
+ $(binding.value.activates).addClass('submenu-dropdown-content');
+
+ // if a submenu is used, the dropdown will never scroll
+ $(element).parents('.dropdown-content').addClass('submenu-container');
+ }
+
+ $(element).dropdown(options);
+ },
+};
diff --git a/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts b/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts
index f7dff78fde..c4d39aab52 100644
--- a/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts
+++ b/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts
@@ -22,9 +22,8 @@ export default function piwikExpandOnClick(): IDirective {
dir: {},
};
- const wrapped = ExpandOnClick;
- wrapped.mounted(element[0], binding);
- element.on('$destroy', () => wrapped.unmounted(element[0], binding));
+ ExpandOnClick.mounted(element[0], binding);
+ element.on('$destroy', () => ExpandOnClick.unmounted(element[0], binding));
},
};
}
diff --git a/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts b/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts
index 5ffdc00153..83ea6ff966 100644
--- a/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts
+++ b/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts
@@ -21,9 +21,8 @@ function piwikExpandOnHover() {
dir: {},
};
- const wrapped = ExpandOnHover;
- wrapped.mounted(element[0], binding);
- element.on('$destroy', () => wrapped.unmounted(element[0], binding));
+ ExpandOnHover.mounted(element[0], binding);
+ element.on('$destroy', () => ExpandOnHover.unmounted(element[0], binding));
},
};
}
diff --git a/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts
new file mode 100644
index 0000000000..348a51cd73
--- /dev/null
+++ b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts
@@ -0,0 +1,44 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { IDirective } from 'angular';
+import FocusAnywhereButHere from './FocusAnywhereButHere';
+
+/**
+ * The given expression will be executed when the user presses either escape or presses something
+ * outside of this element
+ *
+ * Example:
+ * <div piwik-focus-anywhere-but-here="closeDialog()">my dialog</div>
+ */
+function piwikFocusAnywhereButHere(): IDirective {
+ return {
+ restrict: 'A',
+ link: function focusAnywhereButHereLink(scope, element, attr) {
+ const binding = {
+ instance: null,
+ value: {
+ blur: () => {
+ setTimeout(() => {
+ scope.$apply(attr.piwikFocusAnywhereButHere);
+ }, 0);
+ },
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ };
+
+ FocusAnywhereButHere.mounted(element[0], binding);
+ element.on('$destroy', () => FocusAnywhereButHere.unmounted(element[0], binding));
+ },
+ };
+}
+
+piwikFocusAnywhereButHere.$inject = [];
+
+angular.module('piwikApp.directive').directive('piwikFocusAnywhereButHere', piwikFocusAnywhereButHere);
diff --git a/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts
new file mode 100644
index 0000000000..dcfb3928f9
--- /dev/null
+++ b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts
@@ -0,0 +1,98 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { DirectiveBinding } from 'vue';
+
+interface FocusAnywhereButHereArgs {
+ blur: () => void,
+
+ isMouseDown?: boolean;
+ hasScrolled?: boolean;
+ onEscapeHandler?: (event: KeyboardEvent) => void;
+ onMouseDown?: () => void;
+ onClickOutsideElement?: (event: MouseEvent) => void;
+ onScroll?: () => void;
+}
+
+function onClickOutsideElement(
+ element: HTMLElement,
+ binding: DirectiveBinding<FocusAnywhereButHereArgs>,
+ event: MouseEvent,
+) {
+ const hadUsedScrollbar = binding.value.isMouseDown && binding.value.hasScrolled;
+ binding.value.isMouseDown = false;
+ binding.value.hasScrolled = false;
+
+ if (hadUsedScrollbar) {
+ return;
+ }
+
+ if (!element.contains(event.target as HTMLElement)) {
+ if (binding.value) {
+ binding.value.blur();
+ }
+ }
+}
+
+function onScroll(element: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>) {
+ binding.value.hasScrolled = true;
+}
+
+function onMouseDown(element: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>) {
+ binding.value.isMouseDown = true;
+ binding.value.hasScrolled = false;
+}
+
+function onEscapeHandler(
+ element: HTMLElement,
+ binding: DirectiveBinding<FocusAnywhereButHereArgs>,
+ event: KeyboardEvent,
+) {
+ if (event.which === 27) {
+ setTimeout(() => {
+ binding.value.isMouseDown = false;
+ binding.value.hasScrolled = false;
+ if (binding.value.blur) {
+ binding.value.blur();
+ }
+ }, 0);
+ }
+}
+
+const doc = document.documentElement;
+
+/**
+ * Usage (in a component):
+ *
+ * directives: {
+ * // function call is important since we store state in this directive
+ * FocusAnywhereButHere: FocusAnywhereButHere(),
+ * }
+ *
+ * Note: the binding data needs to be static, changes will not be handled.
+ */
+export default {
+ mounted(el: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>): void {
+ binding.value.isMouseDown = false;
+ binding.value.hasScrolled = false;
+ binding.value.onEscapeHandler = onEscapeHandler.bind(null, el, binding);
+ binding.value.onMouseDown = onMouseDown.bind(null, el, binding);
+ binding.value.onClickOutsideElement = onClickOutsideElement.bind(null, el, binding);
+ binding.value.onScroll = onScroll.bind(null, el, binding);
+
+ doc.addEventListener('keyup', binding.value.onEscapeHandler);
+ doc.addEventListener('mousedown', binding.value.onMouseDown);
+ doc.addEventListener('mouseup', binding.value.onClickOutsideElement);
+ doc.addEventListener('scroll', binding.value.onScroll);
+ },
+ unmounted(el: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>): void {
+ doc.removeEventListener('keyup', binding.value.onEscapeHandler);
+ doc.removeEventListener('mousedown', binding.value.onMouseDown);
+ doc.removeEventListener('mouseup', binding.value.onClickOutsideElement);
+ doc.removeEventListener('scroll', binding.value.onScroll);
+ },
+};
diff --git a/plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts b/plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts
new file mode 100644
index 0000000000..a2226866ad
--- /dev/null
+++ b/plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts
@@ -0,0 +1,39 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { IDirective } from 'angular';
+import FocusIf from './FocusIf';
+
+/**
+ * If the given expression evaluates to true the element will be focused
+ *
+ * Example:
+ * <input type="text" piwik-focus-if="view.editName">
+ */
+function piwikFocusIf(): IDirective {
+ return {
+ restrict: 'A',
+ link: function focusIfLink(scope, element, attrs) {
+ scope.$watch(attrs.piwikFocusIf, (newValue) => {
+ const binding = {
+ instance: null,
+ value: {
+ focusIf: !!newValue,
+ afterFocus: () => scope.$apply(),
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ };
+
+ FocusIf.updated(element[0], binding);
+ });
+ },
+ };
+}
+
+angular.module('piwikApp.directive').directive('piwikFocusIf', piwikFocusIf);
diff --git a/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts b/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts
new file mode 100644
index 0000000000..665f2774c3
--- /dev/null
+++ b/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts
@@ -0,0 +1,27 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { DirectiveBinding } from 'vue';
+
+interface FocusIfArgs {
+ focusIf: boolean;
+ afterFocus?: () => void;
+}
+
+export default {
+ updated(el: HTMLElement, binding: DirectiveBinding<FocusIfArgs>): void {
+ if (binding.value.focusIf) {
+ setTimeout(() => {
+ el.focus();
+
+ if (binding.value.afterFocus) {
+ binding.value.afterFocus();
+ }
+ }, 5);
+ }
+ },
+};
diff --git a/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts
new file mode 100644
index 0000000000..f56616f54d
--- /dev/null
+++ b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts
@@ -0,0 +1,36 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import createAngularJsAdapter from '../createAngularJsAdapter';
+import Menudropdown from './Menudropdown.vue';
+
+export default createAngularJsAdapter({
+ component: Menudropdown,
+ scope: {
+ menuTitle: {
+ angularJsBind: '@',
+ },
+ tooltip: {
+ angularJsBind: '@',
+ },
+ showSearch: {
+ angularJsBind: '=',
+ },
+ menuTitleChangeOnClick: {
+ angularJsBind: '=',
+ },
+ },
+ directiveName: 'piwikMenudropdown',
+ transclude: true,
+ events: {
+ 'after-select': ($event, scope) => {
+ setTimeout(() => {
+ scope.$apply();
+ }, 0);
+ },
+ },
+});
diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.less b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.less
index 63e85640d7..2a04d675df 100644
--- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.less
+++ b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.less
@@ -8,6 +8,10 @@
cursor: pointer;
}
+ .icon-arrow-bottom {
+ margin-left: 4px;
+ }
+
.items {
z-index: 200;
position: absolute;
diff --git a/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue
new file mode 100644
index 0000000000..de879274bd
--- /dev/null
+++ b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue
@@ -0,0 +1,132 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div
+ ref="root"
+ class="menuDropdown"
+ v-focus-anywhere-but-here="{ blur: lostFocus }"
+ >
+ <span
+ class="title"
+ @click="showItems = !showItems"
+ :title="tooltip"
+ >
+ <span v-html="$sanitize(this.actualMenuTitle)" />
+ <span class="icon-arrow-bottom" />
+ </span>
+ <div
+ class="items"
+ v-show="showItems"
+ >
+ <div
+ class="search"
+ v-if="showSearch && showItems"
+ >
+ <input
+ type="text"
+ v-model="searchTerm"
+ @keydown="onSearchTermKeydown($event)"
+ :placeholder="translate('General_Search')"
+ />
+ <img
+ v-show="!searchTerm"
+ class="search_ico"
+ src="plugins/Morpheus/images/search_ico.png"
+ :title="translate('General_Search')"
+ />
+ <img
+ v-show="searchTerm"
+ v-on:click="searchTerm = '';searchItems('')"
+ class="reset"
+ src="plugins/CoreHome/images/reset_search.png"
+ :title="translate('General_Clear')"
+ />
+ </div>
+ <div v-on:click="selectItem($event)">
+ <slot />
+ </div>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import FocusAnywhereButHere from '../FocusAnywhereButHere/FocusAnywhereButHere';
+import FocusIf from '../FocusIf/FocusIf';
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ menuTitle: String,
+ tooltip: String,
+ showSearch: Boolean,
+ menuTitleChangeOnClick: String,
+ },
+ directives: {
+ FocusAnywhereButHere,
+ FocusIf,
+ },
+ emits: ['afterSelect'],
+ watch: {
+ menuTitle() {
+ this.actualMenuTitle = this.menuTitle;
+ },
+ },
+ data() {
+ return {
+ showItems: false,
+ searchTerm: '',
+ actualMenuTitle: this.menuTitle,
+ };
+ },
+ methods: {
+ lostFocus() {
+ this.showItems = false;
+ },
+ selectItem(event: MouseEvent) {
+ const targetClasses = (event.target as HTMLElement).classList;
+ if (!targetClasses.contains('item')
+ || targetClasses.contains('disabled')
+ || targetClasses.contains('separator')
+ ) {
+ return;
+ }
+
+ if (this.menuTitleChangeOnClick !== false) {
+ this.actualMenuTitle = (event.target as HTMLElement).textContent
+ .replace(/[\u0000-\u2666]/g, (c) => `&#${c.charCodeAt(0)};`); // eslint-disable-line
+ }
+
+ this.showItems = false;
+
+ $(this.$slots.default()).find('.item').removeClass('active');
+ targetClasses.add('active');
+
+ this.$emit('afterSelect');
+ },
+ onSearchTermKeydown() {
+ setTimeout(() => {
+ this.searchItems(this.searchTerm);
+ });
+ },
+ searchItems(unprocessedSearchTerm: string) {
+ const searchTerm = unprocessedSearchTerm.toLowerCase();
+
+ $(this.$refs.root).find('.item').each((index: number, node: HTMLElement) => {
+ const $node = $(node);
+
+ if ($node.text().toLowerCase().indexOf(searchTerm) === -1) {
+ $node.hide();
+ } else {
+ $node.show();
+ }
+ });
+ },
+ },
+});
+</script>
diff --git a/plugins/CoreHome/vue/src/index.ts b/plugins/CoreHome/vue/src/index.ts
index d7c543baf3..0374f04f91 100644
--- a/plugins/CoreHome/vue/src/index.ts
+++ b/plugins/CoreHome/vue/src/index.ts
@@ -15,12 +15,16 @@ import './Periods/Year';
import './Periods/Range';
import './Periods/Periods.adapter';
import './AjaxHelper/AjaxHelper.adapter';
+import './DropdownMenu/DropdownMenu.adapter';
+import './FocusAnywhereButHere/FocusAnywhereButHere.adapter';
+import './FocusIf/FocusIf.adapter';
import './ExpandOnClick/ExpandOnClick.adapter';
import './ExpandOnHover/ExpandOnHover.adapter';
import './MatomoDialog/MatomoDialog.adapter';
import './EnrichedHeadline/EnrichedHeadline.adapter';
import './ContentBlock/ContentBlock.adapter';
import './Comparisons/Comparisons.adapter';
+import './Menudropdown/Menudropdown.adapter';
import './DatePicker/DatePicker.adapter';
import './DateRangePicker/DateRangePicker.adapter';
import './PeriodDatePicker/PeriodDatePicker.adapter';
@@ -34,12 +38,16 @@ export { default as AjaxHelper } from './AjaxHelper/AjaxHelper';
export { default as MatomoUrl } from './MatomoUrl/MatomoUrl';
export { default as Matomo } from './Matomo/Matomo';
export * from './Periods';
+export { default as Dropdown } from './DropdownMenu/DropdownMenu';
+export { default as FocusAnywhereButHere } from './FocusAnywhereButHere/FocusAnywhereButHere';
+export { default as FocusIf } from './FocusIf/FocusIf';
export { default as MatomoDialog } from './MatomoDialog/MatomoDialog.vue';
export { default as ExpandOnClick } from './ExpandOnClick/ExpandOnClick';
export { default as ExpandOnHover } from './ExpandOnHover/ExpandOnHover';
export { default as EnrichedHeadline } from './EnrichedHeadline/EnrichedHeadline.vue';
export { default as ContentBlock } from './ContentBlock/ContentBlock.vue';
export { default as Comparisons } from './Comparisons/Comparisons.vue';
+export { default as Menudropdown } from './Menudropdown/Menudropdown.vue';
export { default as DatePicker } from './DatePicker/DatePicker.vue';
export { default as DateRangePicker } from './DateRangePicker/DateRangePicker.vue';
export { default as PeriodDatePicker } from './PeriodDatePicker/PeriodDatePicker.vue';
diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php
index e647fcdb42..dcfb7532d7 100644
--- a/plugins/CoreUpdater/Controller.php
+++ b/plugins/CoreUpdater/Controller.php
@@ -14,6 +14,7 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\DataTable\Renderer\Json;
use Piwik\DbHelper;
+use Piwik\Development;
use Piwik\Filechecks;
use Piwik\FileIntegrity;
use Piwik\Filesystem;
@@ -22,6 +23,7 @@ use Piwik\Nonce;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\Manager as PluginManager;
+use Piwik\Plugins\CoreVue\CoreVue;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\Marketplace\Plugins;
use Piwik\SettingsPiwik;
@@ -98,6 +100,7 @@ class Controller extends \Piwik\Plugin\Controller
'node_modules/materialize-css/dist/js/materialize.min.js',
"plugins/CoreHome/javascripts/materialize-bc.js",
'plugins/Morpheus/javascripts/piwikHelper.js',
+ "plugins/CoreHome/javascripts/broadcast.js",
'plugins/CoreUpdater/javascripts/updateLayout.js',
'node_modules/angular/angular.min.js',
'node_modules/angular-sanitize/angular-sanitize.min.js',
@@ -108,12 +111,16 @@ class Controller extends \Piwik\Plugin\Controller
'plugins/CoreHome/angularjs/common/filters/filter.module.js',
'plugins/CoreHome/angularjs/common/filters/translate.js',
'plugins/CoreHome/angularjs/common/directives/directive.module.js',
- 'plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js',
'plugins/CoreHome/angularjs/piwikApp.config.js',
'plugins/CoreHome/angularjs/piwikApp.js',
'plugins/Installation/javascripts/installation.js',
);
+ CoreVue::addJsFilesTo($files);
+
+ $coreHomeUmd = Development::isEnabled() ? 'CoreHome.umd.js' : 'CoreHome.umd.min.js';
+ $files[] = "plugins/CoreHome/vue/dist/$coreHomeUmd";
+
return AssetManager::compileCustomJs($files);
}
diff --git a/plugins/CoreUpdater/templates/layout.twig b/plugins/CoreUpdater/templates/layout.twig
index 5593435c4f..a78aff6603 100644
--- a/plugins/CoreUpdater/templates/layout.twig
+++ b/plugins/CoreUpdater/templates/layout.twig
@@ -8,6 +8,7 @@
<meta name="robots" content="noindex,nofollow">
<meta name="google" content="notranslate">
+ <script>window.piwik = {};</script>
<link rel="stylesheet" type="text/css" href="index.php?module=CoreUpdater&action=getUpdaterCss"/>
<script type="text/javascript" src="index.php?module=CoreUpdater&action=getUpdaterJs"></script>
diff --git a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png
index 0908ac8ef9..50221a34a2 100644
--- a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png
+++ b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:88d2b601b770783a3cb9a71357859c6bf7ef48775ce2b7e59412ad6abb8099a9
-size 348613
+oid sha256:ffe28867eeb1e4bc3315f74360d1b6966063b2b396b90d318469f7184f43eb78
+size 348576
diff --git a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png
index 7e62977a0f..bb37df3ad0 100644
--- a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png
+++ b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:abe28d78c7cf52bcfd71a3b77641db7dbcdb428157ba10d7f07ea59e324576d1
-size 350194
+oid sha256:33282b0571e22f4aa815f3c8d3062150b5f53591776101571d0536a07b44aa8b
+size 350156
diff --git a/plugins/CoreVue/CoreVue.php b/plugins/CoreVue/CoreVue.php
index d115a25653..063a26894c 100644
--- a/plugins/CoreVue/CoreVue.php
+++ b/plugins/CoreVue/CoreVue.php
@@ -21,6 +21,11 @@ class CoreVue extends \Piwik\Plugin
public function getJsFiles(&$jsFiles)
{
+ self::addJsFilesTo($jsFiles);
+ }
+
+ public static function addJsFilesTo(&$jsFiles)
+ {
$jsFiles[] = Development::isEnabled() ? "node_modules/vue/dist/vue.global.js" : "node_modules/vue/dist/vue.global.prod.js";
$jsFiles[] = Development::isEnabled() ? "plugins/CoreVue/polyfills/dist/MatomoPolyfills.js" : "plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js";
}
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
index 5c691ad82c..e5726aac5d 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a07b081dc2be59969c55d42c713a61692e05aa9d17de04ea0ecff18762d20c0b
-size 293532
+oid sha256:88acd2937275d3788a13c87619ec67643e9b89d33756f975c811e9d07ec0d67d
+size 293490
diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php
index 099496728c..a26a42fe1b 100644
--- a/plugins/Installation/Controller.php
+++ b/plugins/Installation/Controller.php
@@ -17,10 +17,12 @@ use Piwik\Container\StaticContainer;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Db;
use Piwik\DbHelper;
+use Piwik\Development;
use Piwik\Filesystem;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
+use Piwik\Plugins\CoreVue\CoreVue;
use Piwik\Plugins\Diagnostics\DiagnosticService;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\SitesManager\API as APISitesManager;
@@ -556,13 +558,18 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
'plugins/CoreHome/angularjs/common/filters/filter.module.js',
'plugins/CoreHome/angularjs/common/filters/translate.js',
'plugins/CoreHome/angularjs/common/directives/directive.module.js',
- 'plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js',
'plugins/CoreHome/angularjs/piwikApp.config.js',
'plugins/CoreHome/angularjs/piwikApp.js',
'plugins/Installation/javascripts/installation.js',
'plugins/Morpheus/javascripts/piwikHelper.js',
+ "plugins/CoreHome/javascripts/broadcast.js",
);
+ CoreVue::addJsFilesTo($files);
+
+ $coreHomeUmd = Development::isEnabled() ? 'CoreHome.umd.js' : 'CoreHome.umd.min.js';
+ $files[] = "plugins/CoreHome/vue/dist/$coreHomeUmd";
+
if (defined('PIWIK_TEST_MODE') && PIWIK_TEST_MODE
&& file_exists(PIWIK_DOCUMENT_ROOT . '/tests/resources/screenshot-override/override.js')) {
$files[] = 'tests/resources/screenshot-override/override.js';
diff --git a/plugins/Installation/templates/layout.twig b/plugins/Installation/templates/layout.twig
index 05ebebd008..6a8e5be08f 100644
--- a/plugins/Installation/templates/layout.twig
+++ b/plugins/Installation/templates/layout.twig
@@ -6,6 +6,7 @@
<meta name="google" content="notranslate">
<title>Matomo {{ piwikVersion }} &rsaquo; {{ 'Installation_Installation'|translate }}</title>
+ <script>window.piwik = {};</script>
<link rel="stylesheet" type="text/css" href="index.php?module=Installation&action=getInstallationCss"/>
<script type="text/javascript" src="index.php?module=Installation&action=getInstallationJs"></script>
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png
index 09484df48d..b9cf3b197e 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:419c0aab43421ffd4e266e882d774dd0852420066ec493f7a8c3bb18489ab72b
-size 238482
+oid sha256:5b323f6efdbe5eb7d974bd5c8373ac6025ed1ee85cde2613169be49f64100c66
+size 238486
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png
index abc3f12601..9787932fb2 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0fb592393904c7bfe7c6eb25e5724c0220d244ef8e58bdcaa05d6e4c70758215
+oid sha256:60290f6a6ecb90a3fcb4dbb23c8ba56dc71daca33179aac37df7b460df407409
size 45937
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png
index 7fd7ea1a70..a3f2f51afe 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3478dc4c3f94c76436d0cdec26954f2bcb155689f0ca12dcc57a60a0e4a7b2fe
-size 57339
+oid sha256:d93cce14d8524d53ba35b81621e6fba03f9a2d2495cd2c311bbab7823790a397
+size 57342
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png
index 7c6def5e70..438e52b4fa 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:07dcc84c6269d0fbd62705f61a79f13c496b4186aa6e2fa240238299ae427065
-size 66569
+oid sha256:67f3860a138e73acc9b05021651032c62eaeeb9375cacb290e68994a285542d4
+size 66572
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png
index 9949dbf9a5..78b77b5b62 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1d2f2db5abff964e2831016bb755ae8eef582d4ec58e0aa5789d4372679a9841
-size 240512
+oid sha256:b0ae5f7581cef949c2580b10c09ca3f3d712206e66e015f41b665437b860baca
+size 240519
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png
index 4fd6c64772..ef83cc8557 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:71f9f3ec237041d08e9e969c0650ebf884ed8f0f6fbe549e305e92cf910df261
-size 79017
+oid sha256:f6d9f99d0e1af35cd3298495b5bd7a0bd06abb8515abac17533d9039a68aecb9
+size 79019
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png
index b615ba3885..1e9f311160 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:49ca3ce1148257b04c92b2fdb343813e7bad1b1cbc73965b3bf70b388a706fed
-size 83895
+oid sha256:762600e40190b8e5d88383ef8cd3e39b374734e6850d6d2c0f57c537dd6b7ce6
+size 83896
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png
index 45bac029a5..7c03cb2fac 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:59131ec24e226f041ecd2504a18079889da876134013e9798d066d6a99234c50
-size 52552
+oid sha256:fb9e4bdb29bb124a7eb5472e762dc6eea486cc1a4afee7a68c65cd717e35fad0
+size 52554
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png
index 2b8e3da94a..8f45bb2b36 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:74cd83a2193242d515f0c0808ba34469be6469cd9ed376212d8c084f3e580e9a
-size 96619
+oid sha256:dec55a0fbcbfdc98d2efdd01415db4fc21d3b3a2a89cb46bdbafdb8421e897b2
+size 96621
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png
index 2768e71815..b1945444f4 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6f40e5b80761ea5bc925f39287276426d164322affc4ce3f21a28d0dda3da00e
-size 112859
+oid sha256:c0c8420bc76c7a66c29f55a66dd0bd5ef5db223a42439695ed001e8d11febed0
+size 112864
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png
index 336fa5c425..e240402fdb 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5f9b9d2f22de6f1a90adf0987bfee64527d31452c9b213a37a44f7aa8b94770a
-size 110900
+oid sha256:7f9fbbab42c25797d0974ca3b5e22f48ab10d93a9a8878fc0a570d0caa4994ad
+size 110899
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png
index 71dfe71834..20afd7ed95 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3f9633f41731d10927024857da1e781a4c8e9c0b605ecfb170eb372f42ca5f0f
-size 276019
+oid sha256:9ddfc2753e52b4b95088c1e7af002feb721a72cb994a69408bfbe4d296c5813f
+size 276022
diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php
index 2976efcf2c..0dcfe9a29d 100644
--- a/plugins/LanguagesManager/LanguagesManager.php
+++ b/plugins/LanguagesManager/LanguagesManager.php
@@ -15,6 +15,7 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Cookie;
+use Piwik\Development;
use Piwik\Intl\Locale;
use Piwik\Nonce;
use Piwik\Piwik;
@@ -73,7 +74,6 @@ class LanguagesManager extends \Piwik\Plugin
{
// piwik object & scripts aren't loaded in 'other' topbars
$str .= "<script type='text/javascript'>if (!window.piwik) window.piwik={};</script>";
- $str .= "<script type='text/javascript' src='plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js'></script>";
$str .= "<script type='text/javascript' src='plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js'></script>";
$str .= $this->getLanguagesSelector();
}
diff --git a/plugins/Morpheus/javascripts/piwikHelper.js b/plugins/Morpheus/javascripts/piwikHelper.js
index 4cfc22e51d..390d257041 100644
--- a/plugins/Morpheus/javascripts/piwikHelper.js
+++ b/plugins/Morpheus/javascripts/piwikHelper.js
@@ -6,8 +6,9 @@
*/
function _pk_translate(translationStringId, values) {
-
- if( typeof(piwik_translations[translationStringId]) != 'undefined' ){
+ if (typeof(piwik_translations) !== 'undefined'
+ && typeof(piwik_translations[translationStringId]) != 'undefined'
+ ) {
var translation = piwik_translations[translationStringId];
if (typeof values != 'undefined' && values && values.length) {
values.unshift(translation);
diff --git a/plugins/Morpheus/stylesheets/base.less b/plugins/Morpheus/stylesheets/base.less
index f4951ddbcf..e2deb1c633 100644
--- a/plugins/Morpheus/stylesheets/base.less
+++ b/plugins/Morpheus/stylesheets/base.less
@@ -15,7 +15,7 @@
@import "uibase/_header.less";
@import "uibase/_headerMessage.less";
@import "../../CoreHome/angularjs/siteselector/siteselector.directive.less";
-@import "../../CoreHome/angularjs/menudropdown/menudropdown.directive.less";
+@import "../../CoreHome/vue/src/Menudropdown/Menudropdown.less";
@import "../../CoreHome/vue/src/Alert/alert.less";
@import "../../CoreHome/stylesheets/dataTable/_entityTable.less";
@import "uibase/_periodSelect.less";
diff --git a/tsconfig.json b/tsconfig.json
index 65fa6f699c..25cb9f68e4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -20,7 +20,8 @@
"webpack-env",
"angular",
"jquery",
- "jqueryui"
+ "jqueryui",
+ "materialize-css"
],
"paths": {
"@/*": [