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:
authorBen Burgess <88810029+bx80@users.noreply.github.com>2021-11-16 01:49:33 +0300
committerGitHub <noreply@github.com>2021-11-16 01:49:33 +0300
commitbd3e66993262f795a194386979cb56fe41ff6497 (patch)
tree27b74641573b538c747381efa67b511daa468b43 /plugins
parent33132937abf4cbfd7824a4b385c37e6e03fb0ec7 (diff)
Improvements to the in-app feature rating mechanism (#18280)
* Changes to in-app feedback mechanism * Fix for dialog close issue * Update plugins/Feedback/API.php Co-authored-by: Stefan Giehl <stefan@matomo.org> * Update plugins/Feedback/lang/en.json Co-authored-by: Stefan Giehl <stefan@matomo.org> * Update plugins/Feedback/lang/en.json Co-authored-by: Stefan Giehl <stefan@matomo.org> * Update plugins/Feedback/lang/en.json Co-authored-by: Stefan Giehl <stefan@matomo.org> * Update plugins/Feedback/lang/en.json Co-authored-by: Stefan Giehl <stefan@matomo.org> * Update plugins/Feedback/lang/en.json Co-authored-by: Stefan Giehl <stefan@matomo.org> * Added UI tests * UI improvements, shorter questions text, autofocus text field * Layout tweaks * Added custom questions for like choices * Fix for UI tests, added UI screenshot * Updated UI test screenshots * Updated UI test screenshots * Build vue * built vue files * Update plugins/Feedback/lang/en.json Co-authored-by: Stefan Giehl <stefan@matomo.org> * Tidied message validation, text fixes, added privacy policy link * built vue files * Update plugins/Feedback/API.php * Update plugins/Feedback/API.php * built vue files * Added missing selection.json * Restored deleted ReviewLinks which is to be displayed after a positive Rate Feature * built vue files * Added null check for javascript focus call * built vue files * Remove unnecessary inline test check for rate feature feedback mail * Updated UI test screenshot Co-authored-by: Stefan Giehl <stefan@matomo.org> Co-authored-by: bx80 <bx80@users.noreply.github.com> Co-authored-by: sgiehl <sgiehl@users.noreply.github.com>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.js10
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.min.js2
-rw-r--r--plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.vue2
-rw-r--r--plugins/Feedback/API.php39
-rw-r--r--plugins/Feedback/Feedback.php26
-rw-r--r--plugins/Feedback/lang/en.json39
-rw-r--r--plugins/Feedback/tests/UI/RateFeature_spec.js88
-rw-r--r--plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_questions.png3
-rw-r--r--plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_submit.png3
-rw-r--r--plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_questions.png3
-rw-r--r--plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_submit.png3
-rw-r--r--plugins/Feedback/vue/dist/Feedback.umd.js392
-rw-r--r--plugins/Feedback/vue/dist/Feedback.umd.min.js6
-rw-r--r--plugins/Feedback/vue/src/RateFeature/RateFeature.less23
-rw-r--r--plugins/Feedback/vue/src/RateFeature/RateFeature.vue190
-rw-r--r--plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.less25
-rw-r--r--plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue89
-rw-r--r--plugins/Feedback/vue/src/index.ts1
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_2_segment_editor_update.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_3_segment_editor_edit_name.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_and_condition.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_or_condition.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_enabled_create_realtime_segments.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_suggested_values.png4
-rw-r--r--plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png4
30 files changed, 877 insertions, 115 deletions
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js
index 36e4c542d9..83a95674b5 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js
@@ -2336,15 +2336,15 @@ function piwikExpandOnHover() {
piwikExpandOnHover.$inject = [];
angular.module('piwikApp').directive('piwikExpandOnHover', piwikExpandOnHover);
-// 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/MatomoDialog/MatomoDialog.vue?vue&type=template&id=7aba656e
+// 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/MatomoDialog/MatomoDialog.vue?vue&type=template&id=64e27324
var _hoisted_1 = {
ref: "root"
};
-function MatomoDialogvue_type_template_id_7aba656e_render(_ctx, _cache, $props, $setup, $data, $options) {
+function MatomoDialogvue_type_template_id_64e27324_render(_ctx, _cache, $props, $setup, $data, $options) {
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", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.modelValue]]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.vue?vue&type=template&id=7aba656e
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.vue?vue&type=template&id=64e27324
// 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/MatomoDialog/MatomoDialog.vue?vue&type=script&lang=ts
@@ -2371,7 +2371,7 @@ function MatomoDialogvue_type_template_id_7aba656e_render(_ctx, _cache, $props,
required: false
}
},
- emits: ['yes', 'no', 'closeEnd', 'close', 'update:modelValue'],
+ emits: ['yes', 'no', 'closeEnd', 'close', 'validation', 'update:modelValue'],
activated: function activated() {
this.$emit('update:modelValue', false);
},
@@ -2416,7 +2416,7 @@ function MatomoDialogvue_type_template_id_7aba656e_render(_ctx, _cache, $props,
-MatomoDialogvue_type_script_lang_ts.render = MatomoDialogvue_type_template_id_7aba656e_render
+MatomoDialogvue_type_script_lang_ts.render = MatomoDialogvue_type_template_id_64e27324_render
/* harmony default export */ var MatomoDialog = (MatomoDialogvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/createAngularJsAdapter.ts
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
index 4b0e64d200..3ef044bf58 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
@@ -166,7 +166,7 @@ function et(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.posi
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function it(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};ot.mounted(t[0],n),t.on("$destroy",(function(){return ot.unmounted(t[0],n)}))}}}it.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",it);var ct={ref:"root"};function st(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ct,[Object(o["renderSlot"])(e.$slots,"default")],512)),[[o["vShow"],e.modelValue]])}var lt=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;D.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")},validation:function(){n.$emit("validation")}},{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")}}});lt.render=st;var ut=lt;function dt(e,t){return vt(e)||ht(e,t)||ft(e,t)||pt()}function pt(){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 ft(e,t){if(e){if("string"===typeof e)return mt(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)?mt(e,t):void 0}}function mt(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 ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,c=!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){c=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(c)throw a}}return o}}function vt(e){if(Array.isArray(e))return e}
+function it(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};ot.mounted(t[0],n),t.on("$destroy",(function(){return ot.unmounted(t[0],n)}))}}}it.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",it);var ct={ref:"root"};function st(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ct,[Object(o["renderSlot"])(e.$slots,"default")],512)),[[o["vShow"],e.modelValue]])}var lt=Object(o["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","validation","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;D.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")},validation:function(){n.$emit("validation")}},{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")}}});lt.render=st;var ut=lt;function dt(e,t){return vt(e)||ht(e,t)||ft(e,t)||pt()}function pt(){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 ft(e,t){if(e){if("string"===typeof e)return mt(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)?mt(e,t):void 0}}function mt(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 ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,c=!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){c=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(c)throw a}}return o}}function vt(e){if(Array.isArray(e))return e}
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.vue b/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.vue
index 76c12c5807..9fd3feaa13 100644
--- a/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.vue
+++ b/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.vue
@@ -35,7 +35,7 @@ export default defineComponent({
required: false,
},
},
- emits: ['yes', 'no', 'closeEnd', 'close', 'update:modelValue'],
+ emits: ['yes', 'no', 'closeEnd', 'close', 'validation', 'update:modelValue'],
activated() {
this.$emit('update:modelValue', false);
},
diff --git a/plugins/Feedback/API.php b/plugins/Feedback/API.php
index 1619d46544..1ab2b6c6da 100644
--- a/plugins/Feedback/API.php
+++ b/plugins/Feedback/API.php
@@ -15,6 +15,7 @@ use Piwik\Date;
use Piwik\IP;
use Piwik\Mail;
use Piwik\Piwik;
+use Piwik\SettingsServer;
use Piwik\Url;
use Piwik\Version;
@@ -29,15 +30,20 @@ class API extends \Piwik\Plugin\API
* Sends feedback for a specific feature to the Matomo team or alternatively to the email address configured in the
* config: "feedback_email_address".
*
- * @param string $featureName The name of a feature you want to give feedback to.
- * @param bool|int $like Whether you like the feature or not
- * @param string|bool $message A message containing the actual feedback
+ * @param string|null $featureName The name of a feature you want to give feedback to.
+ * @param int $like Whether you like the feature or not
+ * @param string|null $choice Multiple choice option chosen
+ * @param string|null $message A message containing the actual feedback
*/
- public function sendFeedbackForFeature($featureName, $like, $message = false)
+ public function sendFeedbackForFeature(?string $featureName, int $like, ?string $choice, ?string $message = null)
{
Piwik::checkUserIsNotAnonymous();
Piwik::checkUserHasSomeViewAccess();
+ if (empty($message) || $message === 'undefined' || strlen($message) < 4) {
+ return Piwik::translate("Feedback_FormNotEnoughFeedbackText");
+ }
+
$featureName = $this->getEnglishTranslationForFeatureName($featureName);
$likeText = 'Yes';
@@ -47,19 +53,30 @@ class API extends \Piwik\Plugin\API
$body = sprintf("Feature: %s\nLike: %s\n", $featureName, $likeText);
- $feedbackMessage = "";
- if (!empty($message) && $message != 'undefined') {
- $feedbackMessage = sprintf("Feedback:\n%s\n", trim($message));
+ if (!empty($choice) && $choice !== 'undefined') {
+ $body .= "Choice: ".$choice."\n";
}
- $body .= $feedbackMessage ? $feedbackMessage : " \n";
- $subject = sprintf("%s for %s %s",
+ $body .= sprintf("Feedback:\n%s\n", trim($message));
+
+ $subject = sprintf("%s for %s",
empty($like) ? "-1" : "+1",
- $featureName,
- empty($feedbackMessage) ? "" : "(w/ feedback)"
+ $featureName
);
+ // Determine where Matomo is running and add as source
+ if (Config::getHostname() === 'demo.matomo.cloud') {
+ $source = 'Demo';
+ } else if (SettingsServer::isMatomoForWordPress()) {
+ $source = 'Wordpress';
+ } else {
+ $source = 'On-Premise';
+ }
+ $body .= "Source: ".$source."\n";
+
$this->sendMail($subject, $body);
+
+ return 'success';
}
/**
diff --git a/plugins/Feedback/Feedback.php b/plugins/Feedback/Feedback.php
index 97cd34fe9c..9a75c51c92 100644
--- a/plugins/Feedback/Feedback.php
+++ b/plugins/Feedback/Feedback.php
@@ -42,6 +42,7 @@ class Feedback extends \Piwik\Plugin
{
$stylesheets[] = "plugins/Feedback/stylesheets/feedback.less";
$stylesheets[] = "plugins/Feedback/vue/src/RateFeature/RateFeature.less";
+ $stylesheets[] = "plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.less";
$stylesheets[] = "plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.less";
}
@@ -51,18 +52,40 @@ class Feedback extends \Piwik\Plugin
public function getClientSideTranslationKeys(&$translationKeys)
{
- $translationKeys[] = 'Feedback_ThankYou';
+ $translationKeys[] = 'Feedback_ThankYouHeart';
+ $translationKeys[] = 'Feedback_ThankYouForSpreading';
$translationKeys[] = 'Feedback_RateFeatureTitle';
$translationKeys[] = 'Feedback_RateFeatureThankYouTitle';
$translationKeys[] = 'Feedback_RateFeatureLeaveMessageLike';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageLikeNamedFeature';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageLikeExtra';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageLikeExtraConfigurable';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageLikeExtraEasy';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageLikeExtraUseful';
$translationKeys[] = 'Feedback_RateFeatureLeaveMessageDislike';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageDislikeNamedFeature';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageDislikeExtra';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageDislikeExtraBugs';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageDislikeExtraMissing';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageDislikeExtraSpeed';
+ $translationKeys[] = 'Feedback_RateFeatureLeaveMessageDislikeExtraEasier';
+ $translationKeys[] = 'Feedback_RateFeatureOtherReason';
$translationKeys[] = 'Feedback_SendFeedback';
$translationKeys[] = 'Feedback_RateFeatureSendFeedbackInformation';
+ $translationKeys[] = 'Feedback_RateFeatureUsefulInfo';
+ $translationKeys[] = 'Feedback_RateFeatureEasyToUse';
+ $translationKeys[] = 'Feedback_RateFeatureConfigurable';
+ $translationKeys[] = 'Feedback_RateFeatureDislikeAddMissingFeatures';
+ $translationKeys[] = 'Feedback_RateFeatureDislikeMakeEasier';
+ $translationKeys[] = 'Feedback_RateFeatureDislikeSpeedUp';
+ $translationKeys[] = 'Feedback_RateFeatureDislikeFixBugs';
$translationKeys[] = 'Feedback_ReviewMatomoTitle';
$translationKeys[] = 'Feedback_PleaseLeaveExternalReviewForMatomo';
$translationKeys[] = 'Feedback_RemindMeLater';
$translationKeys[] = 'Feedback_NeverAskMeAgain';
$translationKeys[] = 'Feedback_WontShowAgain';
+ $translationKeys[] = 'Feedback_AppreciateFeedback';
+ $translationKeys[] = 'Feedback_Policy';
$translationKeys[] = 'General_Ok';
$translationKeys[] = 'General_Cancel';
$translationKeys[] = 'Feedback_Question0';
@@ -72,7 +95,6 @@ class Feedback extends \Piwik\Plugin
$translationKeys[] = 'Feedback_Question4';
$translationKeys[] = 'Feedback_FeedbackTitle';
$translationKeys[] = 'Feedback_FeedbackSubtitle';
- $translationKeys[] = 'Feedback_ThankYourForFeedback';
$translationKeys[] = 'Feedback_Policy';
$translationKeys[] = 'Feedback_ThankYourForFeedback';
$translationKeys[] = 'Feedback_ThankYou';
diff --git a/plugins/Feedback/lang/en.json b/plugins/Feedback/lang/en.json
index 345be23916..f3b1fec3de 100644
--- a/plugins/Feedback/lang/en.json
+++ b/plugins/Feedback/lang/en.json
@@ -7,13 +7,34 @@
"ManuallySendEmailTo": "Please manually send your message to",
"PluginDescription": "Send your Feedback to the Matomo Team. Share your ideas and suggestions to make Matomo the best analytics platform in the world!",
"PrivacyClaim": "Matomo respects your %1$sprivacy%2$s and gives you full control over your data.",
- "RateFeatureLeaveMessageDislike": "We are sorry to hear you don't like it! Please let us know how we can improve.",
- "RateFeatureLeaveMessageLike": "We are glad you like it! Please let us know what you like the most or if you have a feature request.",
+ "RateFeatureLeaveMessageDislike": "How can we improve this feature?",
+ "RateFeatureLeaveMessageDislikeNamedFeature": "How can we improve %1$s?",
+ "RateFeatureLeaveMessageDislikeExtra": "Please let us know more about how we can do better so we can improve Matomo.",
+ "RateFeatureLeaveMessageDislikeExtraBugs": "We're sorry that you encountered issues, please let us know more about what didn't work.",
+ "RateFeatureLeaveMessageDislikeExtraSpeed":"Could you provide an indication of how slow this feature is for you? Could you share how many visits per month you would typically record?",
+ "RateFeatureLeaveMessageDislikeExtraMissing": "Which features are you missing?",
+ "RateFeatureLeaveMessageDislikeExtraEasier": "Was there a particular part of this feature you found difficult to use?",
+ "RateFeatureLeaveMessageLike": "What do you like most about this feature?",
+ "RateFeatureLeaveMessageLikeNamedFeature": "What do you like most about %1$s?",
+ "RateFeatureLeaveMessageLikeExtra": "Please let us know more about how you use this feature so we can improve Matomo further.",
+ "RateFeatureLeaveMessageLikeExtraUseful": "Can you let us know a bit about how you use this information and what you find most useful about it?",
+ "RateFeatureLeaveMessageLikeExtraEasy": "Is there anything else that could make Matomo easier to use or improve your experience?",
+ "RateFeatureLeaveMessageLikeExtraConfigurable": "Are there any configuration options you find particularly useful? Are there any other options you would like to see?",
"RateFeatureSendFeedbackInformation": "Your Matomo platform will send us (the Matomo team) an email (including your email address) so we can get in contact with you if you have any question.",
"RateFeatureThankYouTitle": "Thank you for rating '%s'!",
- "RateFeatureTitle": "Do you like the '%s' feature? Please rate and leave a comment",
+ "RateFeatureTitle": "Do you like the '%s' feature? Please let us know so we can improve Matomo.",
+ "RateFeatureUsefulInfo": "Useful information",
+ "RateFeatureEasyToUse": "Easy to use",
+ "RateFeatureConfigurable": "Configurable",
+ "RateFeatureDislikeAddMissingFeatures": "Add missing features",
+ "RateFeatureDislikeMakeEasier": "Make it easier to use",
+ "RateFeatureDislikeSpeedUp": "Improve speed",
+ "RateFeatureDislikeFixBugs": "Fix bugs",
+ "RateFeatureOtherReason": "Other reason",
"SendFeedback": "Send Feedback",
"ThankYou": "Thank you for helping us to make Matomo better!",
+ "ThankYouHeart": "Thank you for helping us to make Matomo better! %1$s",
+ "ThankYouForSpreading": "Thank you for spreading the word and creating a safer web",
"TopLinkTooltip": "Tell us what you think, or request Professional Support.",
"ViewAnswersToFAQ": "View answers to %1$sFrequently Asked Questions%2$s",
"FAQs": "FAQs",
@@ -32,7 +53,7 @@
"VisitTheForums": "Visit the %1$s Forums%2$s and get help from the community of Matomo users",
"Forums": "Forums",
"ReviewMatomoTitle": "Like Matomo?",
- "PleaseLeaveExternalReviewForMatomo": "Share your thoughts on one of these sites and inspire others to join our data revolution.",
+ "PleaseLeaveExternalReviewForMatomo": "We really appreciate your feedback. If you have a minute, please share your thoughts on one of these sites and inspire others to join our data revolution.",
"RemindMeLater": "Remind me later",
"NeverAskMeAgain": "Never ask me again",
"HowCanWeHelp": "How can we help?",
@@ -42,6 +63,14 @@
"PurgeOldData": "I want to remove some old data",
"SearchHelpResources": "Search matomo.org help resources",
"PopularHelpTopics": "Popular help topics",
+ "ReferMatomo": "Refer Matomo",
+ "ReferBannerTitle": "Believe in Matomo?",
+ "ReferBannerLonger": "Please help us spread the word about us so more people get control over their analytics data.",
+ "ReferBannerEmailShareSubject": "Refer them to Matomo Analytics now to take back control!",
+ "ReferBannerEmailShareBody": "I choose Matomo, an ethical alternative to Google Analytics that gives me 100%% data ownership and protects the data of my website visitors.\r\nI’m sharing this message in the hope that you too will take back the power from Google and get complete ownership of your own data.\r\n\r\nCheck out Matomo at https://matomo.org",
+ "ReferBannerSocialShareText": "If you’re using Google Analytics, stay in control by switching to an ethical alternative like Matomo now!",
+ "FormNotEnoughFeedbackText": "Please don't forget to share your feedback below.",
+ "AppreciateFeedback": "We really appreciate your feedback",
"WontShowAgain": "We won't show this message again.",
"Question0": "What are your biggest problems or pain points with Matomo and why?",
"Question1": "What is the one thing you’d like to see improved in Matomo and why?",
@@ -54,4 +83,4 @@
"Policy": "Your message and your email address will be sent to us by submitting this form. The information will be only used to improve our products and services. Your data will be processed by us, our hosting provider, and our support ticket provider. For more information have a look at %1$sMatomo's Privacy Policy%2$s.",
"MessageBodyValidationError": "The message body is too short (minimum is 10 characters)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Feedback/tests/UI/RateFeature_spec.js b/plugins/Feedback/tests/UI/RateFeature_spec.js
new file mode 100644
index 0000000000..829e656550
--- /dev/null
+++ b/plugins/Feedback/tests/UI/RateFeature_spec.js
@@ -0,0 +1,88 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * UsersManager screenshot tests.
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("RateFeature", function () {
+ this.timeout(0);
+
+ var url = "?module=CoreHome&action=index&idSite=1&period=day&date=yesterday#?idSite=1&period=day&date=yesterday&segment=&category=General_Visitors&subcategory=General_Overview";
+
+ before(async function() {
+ await page.webpage.setViewport({
+ width: 1250,
+ height: 768
+ });
+ });
+
+ it('should display the like feature popup', async function () {
+ await page.goto(url);
+ await page.waitForNetworkIdle();
+
+ const like = await page.$('.like-icon');
+ await like.evaluate(b => b.click());
+
+ var modal = await page.waitForSelector('.modal.open', { visible: true });
+
+ await page.waitForTimeout(1000);
+
+ expect(await modal.screenshot()).to.matchImage('rate_feature_like_questions');
+ });
+
+ it('should accept like feedback', async function () {
+
+ const useful = await page.$('#useful');
+ await useful.evaluate(b => b.click());
+
+ await page.type('#feedbacktext', 'test');
+
+ const submit = await page.$('a.modal-action:nth-child(1)');
+ await submit.click();
+ await page.waitForNetworkIdle();
+
+ var modal = await page.waitForSelector('.modal.open', { visible: true });
+ expect(await modal.screenshot()).to.matchImage('rate_feature_like_submit');
+ });
+
+ it('should display the dislike feature popup', async function () {
+ await page.goto(url);
+ await page.waitForNetworkIdle();
+
+ const like = await page.$('.dislike-icon');
+ await like.evaluate(b => b.click());
+
+ var modal = await page.waitForSelector('.modal.open', { visible: true });
+
+ await page.waitForTimeout(1000);
+
+ expect(await modal.screenshot()).to.matchImage('rate_feature_dislike_questions');
+ });
+
+ it('should accept dislike feedback', async function () {
+
+ const useful = await page.$('#missingfeatures');
+ await useful.evaluate(b => b.click());
+
+ await page.type('#feedbacktext', 'test');
+
+ const submit = await page.$('a.modal-action:nth-child(1)');
+ await submit.click();
+ await page.waitForNetworkIdle();
+
+ var modal = await page.waitForSelector('.modal.open', { visible: true });
+ expect(await modal.screenshot()).to.matchImage('rate_feature_dislike_submit');
+ });
+
+ function delay(interval) {
+ return it('should delay', done =>
+ {
+ setTimeout(() => done(), interval)
+ }).timeout(interval + 100);
+ }
+
+
+});
diff --git a/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_questions.png b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_questions.png
new file mode 100644
index 0000000000..25284e5e08
--- /dev/null
+++ b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_questions.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0740df6c25fc9e54c468f60cacfecb012285f40a7e317d92cf19a63e32bd96d3
+size 23521
diff --git a/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_submit.png b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_submit.png
new file mode 100644
index 0000000000..1520c52004
--- /dev/null
+++ b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_dislike_submit.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1e4aa120799b510a349c6772ef725db93b1ba181f7007899102f699e38bb8ee1
+size 11859
diff --git a/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_questions.png b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_questions.png
new file mode 100644
index 0000000000..f5446c33f6
--- /dev/null
+++ b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_questions.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd45b8f1ef3ae54c87779ac722d144cd4ec7cf4851ee38c7faa416e06e52e9db
+size 21922
diff --git a/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_submit.png b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_submit.png
new file mode 100644
index 0000000000..27f2f2bc30
--- /dev/null
+++ b/plugins/Feedback/tests/UI/expected-screenshots/RateFeature_rate_feature_like_submit.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:84eda11b8aad6af6fe793e2bfd8bf8b6f054a8449c8c8c3e188196195420fa21
+size 32793
diff --git a/plugins/Feedback/vue/dist/Feedback.umd.js b/plugins/Feedback/vue/dist/Feedback.umd.js
index fca5e1f1d8..7d41be7b43 100644
--- a/plugins/Feedback/vue/dist/Feedback.umd.js
+++ b/plugins/Feedback/vue/dist/Feedback.umd.js
@@ -118,6 +118,7 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
__webpack_require__.r(__webpack_exports__);
// EXPORTS
+__webpack_require__.d(__webpack_exports__, "ReviewLinks", function() { return /* reexport */ ReviewLinks; });
__webpack_require__.d(__webpack_exports__, "RateFeature", function() { return /* reexport */ RateFeature; });
__webpack_require__.d(__webpack_exports__, "FeedbackQuestion", function() { return /* reexport */ FeedbackQuestion; });
@@ -143,7 +144,7 @@ var external_CoreHome_ = __webpack_require__("19dc");
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// 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/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=10cf2a3c
+// 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/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=ce49e788
var _hoisted_1 = ["title"];
var _hoisted_2 = {
@@ -153,26 +154,142 @@ var _hoisted_3 = {
key: 0
};
var _hoisted_4 = {
+ key: 0
+};
+var _hoisted_5 = {
key: 1
};
-var _hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var _hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_6 = {
- class: "messageContainer"
+var _hoisted_7 = {
+ class: "row"
+};
+var _hoisted_8 = {
+ style: {
+ "text-align": "left",
+ "margin-top": "16px"
+ }
};
-var _hoisted_7 = ["title", "value"];
-var _hoisted_8 = ["value"];
var _hoisted_9 = {
+ for: "useful",
+ class: "ratelabel"
+};
+
+var _hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_11 = {
+ for: "easy",
+ class: "ratelabel"
+};
+
+var _hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_13 = {
+ for: "configurable",
+ class: "ratelabel"
+};
+
+var _hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_15 = {
+ for: "likeother",
+ class: "ratelabel"
+};
+var _hoisted_16 = {
+ key: 1
+};
+var _hoisted_17 = {
+ key: 0
+};
+var _hoisted_18 = {
+ key: 1
+};
+
+var _hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_20 = {
+ class: "row"
+};
+var _hoisted_21 = {
+ style: {
+ "text-align": "left"
+ }
+};
+var _hoisted_22 = {
+ for: "missingfeatures",
+ class: "ratelabel"
+};
+
+var _hoisted_23 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_24 = {
+ for: "makeeasier",
+ class: "ratelabel"
+};
+
+var _hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_26 = {
+ for: "speedup",
+ class: "ratelabel"
+};
+
+var _hoisted_27 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_28 = {
+ for: "fixbugs",
+ class: "ratelabel"
+};
+
+var _hoisted_29 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_30 = {
+ for: "dislikeother",
+ class: "ratelabel"
+};
+
+var _hoisted_31 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_32 = {
+ key: 2,
+ class: "messageContainer",
+ style: {
+ "text-align": "left"
+ }
+};
+var _hoisted_33 = ["innerHTML"];
+var _hoisted_34 = ["innerHTML"];
+var _hoisted_35 = ["innerHTML"];
+var _hoisted_36 = ["innerHTML"];
+var _hoisted_37 = ["innerHTML"];
+var _hoisted_38 = ["innerHTML"];
+var _hoisted_39 = ["innerHTML"];
+var _hoisted_40 = ["innerHTML"];
+var _hoisted_41 = ["innerHTML"];
+var _hoisted_42 = {
+ key: 9,
+ class: "error-text"
+};
+var _hoisted_43 = ["innerHTML"];
+var _hoisted_44 = ["title", "value"];
+var _hoisted_45 = ["value"];
+var _hoisted_46 = {
class: "ui-confirm ratefeatureDialog"
};
-var _hoisted_10 = {
+var _hoisted_47 = ["innerHTML"];
+var _hoisted_48 = {
key: 0
};
-var _hoisted_11 = ["value"];
+var _hoisted_49 = {
+ key: 1
+};
+var _hoisted_50 = ["value"];
function render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_MatomoDialog = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("MatomoDialog");
+ var _component_ReviewLinks = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ReviewLinks");
+
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
title: _ctx.translate('Feedback_RateFeatureTitle', _ctx.$sanitize(_ctx.title)),
class: "ratefeature"
@@ -187,97 +304,275 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
onClick: _cache[0] || (_cache[0] = function ($event) {
_ctx.likeFeature();
-
- _ctx.showFeedbackForm = true;
}),
class: "like-icon",
src: "plugins/Feedback/vue/src/RateFeature/thumbs-up.png"
- }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
onClick: _cache[1] || (_cache[1] = function ($event) {
_ctx.dislikeFeature();
-
- _ctx.showFeedbackForm = true;
}),
class: "dislike-icon",
src: "plugins/Feedback/vue/src/RateFeature/thumbs-down.png"
- }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.expanded]])], 32), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MatomoDialog, {
+ })], 32), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MatomoDialog, {
modelValue: _ctx.showFeedbackForm,
- "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ "onUpdate:modelValue": _cache[14] || (_cache[14] = function ($event) {
return _ctx.showFeedbackForm = $event;
}),
- onYes: _cache[6] || (_cache[6] = function ($event) {
+ onYes: _cache[15] || (_cache[15] = function ($event) {
+ return _ctx.sendFeedback();
+ }),
+ onValidation: _cache[16] || (_cache[16] = function ($event) {
return _ctx.sendFeedback();
})
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureThankYouTitle', _ctx.title)), 1), _ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageLike')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislike')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [_ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_3, [_ctx.title ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", _hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageLikeNamedFeature', _ctx.title)), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.title ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageLike')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "useful",
+ value: "useful",
"onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.likeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.likeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureUsefulInfo')), 1)]), _hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "easy",
+ value: "easy",
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.likeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.likeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureEasyToUse')), 1)]), _hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "configurable",
+ value: "configurable",
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.likeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.likeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureConfigurable')), 1)]), _hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "likeother",
+ value: "likeother",
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.likeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.likeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureOtherReason')), 1)])])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_16, [_ctx.title ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislikeNamedFeature', _ctx.title)), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.title ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", _hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislike')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_21, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_22, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "missingfeatures",
+ value: "missingfeatures",
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
+ return _ctx.dislikeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.dislikeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureDislikeAddMissingFeatures')), 1)]), _hoisted_23, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "makeeasier",
+ value: "makeeasier",
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
+ return _ctx.dislikeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.dislikeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureDislikeMakeEasier')), 1)]), _hoisted_25, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_26, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "speedup",
+ value: "speedup",
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = function ($event) {
+ return _ctx.dislikeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.dislikeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureDislikeSpeedUp')), 1)]), _hoisted_27, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_28, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "fixbugs",
+ value: "fixbugs",
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = function ($event) {
+ return _ctx.dislikeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.dislikeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureDislikeFixBugs')), 1)]), _hoisted_29, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "radio",
+ id: "dislikeother",
+ value: "dislikeother",
+ "onUpdate:modelValue": _cache[12] || (_cache[12] = function ($event) {
+ return _ctx.dislikeReason = $event;
+ }),
+ class: "rateradio"
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.dislikeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureOtherReason')), 1)]), _hoisted_31])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason || _ctx.dislikeReason ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_32, [_ctx.likeReason && _ctx.likeReason == 'useful' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 0,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraUseful')
+ }, null, 8, _hoisted_33)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason == 'easy' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 1,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraEasy')
+ }, null, 8, _hoisted_34)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason == 'configurable' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 2,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraConfigurable')
+ }, null, 8, _hoisted_35)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason == 'likeother' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 3,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtra')
+ }, null, 8, _hoisted_36)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'missingfeatures' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 4,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraMissing')
+ }, null, 8, _hoisted_37)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'makeeasier' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 5,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraEasier')
+ }, null, 8, _hoisted_38)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'fixbugs' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 6,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraBugs')
+ }, null, 8, _hoisted_39)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'speedup' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 7,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraSpeed')
+ }, null, 8, _hoisted_40)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'dislikeother' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 8,
+ innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtra')
+ }, null, 8, _hoisted_41)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.errorMessage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_42, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.errorMessage), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", {
+ ref: "feedbackText",
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["materialize-textarea", {
+ 'has-error': _ctx.errorMessage
+ }]),
+ id: "feedbacktext",
+ "onUpdate:modelValue": _cache[13] || (_cache[13] = function ($event) {
return _ctx.feedbackMessage = $event;
})
- }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.feedbackMessage]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.feedbackMessage]]), _ctx.likeReason || _ctx.dislikeReason ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ key: 10,
+ innerHTML: _ctx.translate('Feedback_Policy', "\n <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>", '</a>')
+ }, null, 8, _hoisted_43)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ class: "btn",
type: "button",
+ role: "validation",
title: _ctx.translate('Feedback_RateFeatureSendFeedbackInformation'),
- value: _ctx.translate('Feedback_SendFeedback'),
- role: "yes"
- }, null, 8, _hoisted_7), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ value: _ctx.translate('Feedback_SendFeedback')
+ }, null, 8, _hoisted_44), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
role: "cancel",
value: _ctx.translate('General_Cancel')
- }, null, 8, _hoisted_8)])];
+ }, null, 8, _hoisted_45)])];
}),
_: 1
}, 8, ["modelValue"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MatomoDialog, {
modelValue: _ctx.ratingDone,
- "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ "onUpdate:modelValue": _cache[17] || (_cache[17] = function ($event) {
return _ctx.ratingDone = $event;
})
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_ThankYou', _ctx.title)), 1), _ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_10)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_46, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", {
+ innerHTML: _ctx.translate('Feedback_ThankYouHeart', "<i class='icon-heart red-text'></i>")
+ }, null, 8, _hoisted_47), _ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_48, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ReviewLinks)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_49, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_AppreciateFeedback')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
- value: _ctx.translate('General_Ok'),
+ value: _ctx.translate('General_Close'),
role: "yes"
- }, null, 8, _hoisted_11)])];
+ }, null, 8, _hoisted_50)])];
}),
_: 1
}, 8, ["modelValue"])], 8, _hoisted_1);
}
-// CONCATENATED MODULE: ./plugins/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=10cf2a3c
+// CONCATENATED MODULE: ./plugins/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=ce49e788
+
+// 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/Feedback/vue/src/ReviewLinks/ReviewLinks.vue?vue&type=template&id=9a880eb6
+
+var ReviewLinksvue_type_template_id_9a880eb6_hoisted_1 = {
+ class: "requestReview"
+};
+
+var ReviewLinksvue_type_template_id_9a880eb6_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createStaticVNode"])("<br><br><div class=\"review-links\"><div class=\"review-link\"><a href=\"https://www.capterra.com/p/182627/Matomo-Analytics/\" target=\"_blank\"><div class=\"image\"><img loading=\"lazy\" src=\"plugins/Feedback/images/capterra.svg\"></div><div class=\"link\">Capterra</div></a></div><div class=\"review-link\"><a href=\"https://www.g2crowd.com/products/matomo-formerly-piwik/details\" target=\"_blank\"><div class=\"image\"><img loading=\"lazy\" src=\"plugins/Feedback/images/g2crowd.svg\"></div><div class=\"link\">G2 Crowd</div></a></div><div class=\"review-link\"><a href=\"https://www.producthunt.com/posts/matomo-2\" target=\"_blank\"><div class=\"image\"><img loading=\"lazy\" src=\"plugins/Feedback/images/producthunt.svg\"></div><div class=\"link\">Product Hunt</div></a></div><div class=\"review-link\"><a href=\"https://www.saasworthy.com/product/matomo\" target=\"_blank\"><div class=\"image\"><img loading=\"lazy\" src=\"plugins/Feedback/images/saasworthy.png\"></div><div class=\"link\">SaaSworthy</div></a></div><div class=\"review-link\"><a href=\"https://www.trustradius.com/products/matomo/reviews\" target=\"_blank\"><div class=\"image\"><img loading=\"lazy\" src=\"plugins/Feedback/images/trustradius.svg\"></div><div class=\"link\">TrustRadius</div></a></div></div>", 3);
+
+function ReviewLinksvue_type_template_id_9a880eb6_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReviewLinksvue_type_template_id_9a880eb6_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_PleaseLeaveExternalReviewForMatomo')), 1), ReviewLinksvue_type_template_id_9a880eb6_hoisted_2]);
+}
+// CONCATENATED MODULE: ./plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue?vue&type=template&id=9a880eb6
+
+// 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/Feedback/vue/src/ReviewLinks/ReviewLinks.vue?vue&type=script&lang=ts
+
+/* harmony default export */ var ReviewLinksvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({}));
+// CONCATENATED MODULE: ./plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue
+
+
+ReviewLinksvue_type_script_lang_ts.render = ReviewLinksvue_type_template_id_9a880eb6_render
+
+/* harmony default export */ var ReviewLinks = (ReviewLinksvue_type_script_lang_ts);
// 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/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=script&lang=ts
+
+var _window = window,
+ $ = _window.$;
/* harmony default export */ var RateFeaturevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
props: {
title: String
},
components: {
- MatomoDialog: external_CoreHome_["MatomoDialog"]
+ MatomoDialog: external_CoreHome_["MatomoDialog"],
+ ReviewLinks: ReviewLinks
},
data: function data() {
return {
like: false,
+ likeReason: null,
+ dislikeReason: null,
ratingDone: false,
expanded: false,
showFeedbackForm: false,
- feedbackMessage: ''
+ feedbackMessage: '',
+ errorMessage: null
};
},
+ watch: {
+ likeReason: 'doFocusInput',
+ dislikeReason: 'doFocusInput'
+ },
methods: {
dislikeFeature: function dislikeFeature() {
+ this.ratingDone = false;
this.like = false;
+ this.showFeedbackForm = true;
+ this.errorMessage = null;
+ this.likeReason = null;
+ this.dislikeReason = null;
+ this.feedbackMessage = '';
},
likeFeature: function likeFeature() {
+ this.ratingDone = false;
this.like = true;
+ this.showFeedbackForm = true;
+ this.errorMessage = null;
+ this.likeReason = null;
+ this.dislikeReason = null;
+ this.feedbackMessage = '';
},
- sendFeedback: function sendFeedback() {
- external_CoreHome_["AjaxHelper"].fetch({
+ doFocusInput: function doFocusInput() {
+ var _this = this;
+
+ this.$nextTick(function () {
+ _this.focusInput();
+ });
+ },
+ focusInput: function focusInput() {
+ if (this.$refs.feedbackText != null) {
+ this.$refs.feedbackText.focus();
+ }
+ },
+ sendFeedback: async function sendFeedback() {
+ this.errorMessage = null;
+ var res = await external_CoreHome_["AjaxHelper"].fetch({
method: 'Feedback.sendFeedbackForFeature',
featureName: this.title,
like: this.like ? '1' : '0',
+ choice: this.like ? this.likeReason : this.dislikeReason,
message: this.feedbackMessage
});
- this.ratingDone = true;
+
+ if (res.value === 'success') {
+ $('.modal').modal('close');
+ this.ratingDone = true;
+ this.feedbackMessage = '';
+ } else {
+ this.errorMessage = res.value;
+ }
}
}
}));
@@ -344,14 +639,14 @@ var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_10 = {
var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_12 = ["innerHTML"];
-var _hoisted_13 = ["value"];
-var _hoisted_14 = ["value"];
-var _hoisted_15 = {
+var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_12 = ["innerHTML"];
+var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_13 = ["value"];
+var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_14 = ["value"];
+var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_15 = {
class: "ui-confirm ratefeatureDialog"
};
-var _hoisted_16 = ["innerHTML"];
-var _hoisted_17 = ["value"];
+var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_16 = ["innerHTML"];
+var FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_17 = ["value"];
function FeedbackQuestionvue_type_template_id_2d5e9885_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_MatomoDialog = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("MatomoDialog");
@@ -387,15 +682,15 @@ function FeedbackQuestionvue_type_template_id_2d5e9885_render(_ctx, _cache, $pro
})
}, null, 2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.feedbackMessage]])]), FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
innerHTML: _ctx.translate('Feedback_Policy', "<a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>", '</a>')
- }, null, 8, _hoisted_12), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_12), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
role: "validation",
value: _ctx.translate('Feedback_SendFeedback')
- }, null, 8, _hoisted_13), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_13), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
role: "cancel",
value: _ctx.translate('General_Cancel')
- }, null, 8, _hoisted_14)])];
+ }, null, 8, FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_14)])];
}),
_: 1
}, 8, ["modelValue"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MatomoDialog, {
@@ -405,13 +700,13 @@ function FeedbackQuestionvue_type_template_id_2d5e9885_render(_ctx, _cache, $pro
})
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_ThankYou")), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_ThankYou")), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
innerHTML: _ctx.translate('Feedback_ThankYourForFeedback', "<i class='icon-heart red-text'></i>")
- }, null, 8, _hoisted_16), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_16), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
role: "cancel",
value: _ctx.translate('General_Close')
- }, null, 8, _hoisted_17)])];
+ }, null, 8, FeedbackQuestionvue_type_template_id_2d5e9885_hoisted_17)])];
}),
_: 1
}, 8, ["modelValue"])])]);
@@ -421,8 +716,8 @@ function FeedbackQuestionvue_type_template_id_2d5e9885_render(_ctx, _cache, $pro
// 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/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue?vue&type=script&lang=ts
-var _window = window,
- $ = _window.$;
+var FeedbackQuestionvue_type_script_lang_ts_window = window,
+ FeedbackQuestionvue_type_script_lang_ts_$ = FeedbackQuestionvue_type_script_lang_ts_window.$;
var cookieName = 'feedback-question';
/* harmony default export */ var FeedbackQuestionvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
props: {
@@ -459,7 +754,7 @@ var cookieName = 'feedback-question';
if (val) {
setInterval(function () {
- $('#message').focus();
+ FeedbackQuestionvue_type_script_lang_ts_$('#message').focus();
}, 500);
}
}
@@ -508,7 +803,7 @@ var cookieName = 'feedback-question';
});
if (res.value === 'success') {
- $('.modal').modal('close');
+ FeedbackQuestionvue_type_script_lang_ts_$('.modal').modal('close');
this.feedbackDone = true;
this.hide = true;
} else {
@@ -555,6 +850,7 @@ FeedbackQuestionvue_type_script_lang_ts.render = FeedbackQuestionvue_type_templa
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/Feedback/vue/dist/Feedback.umd.min.js b/plugins/Feedback/vue/dist/Feedback.umd.min.js
index 690932aefa..b911fa82de 100644
--- a/plugins/Feedback/vue/dist/Feedback.umd.min.js
+++ b/plugins/Feedback/vue/dist/Feedback.umd.min.js
@@ -1,14 +1,14 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["Feedback"]=t(require("CoreHome"),require("vue")):e["Feedback"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Feedback/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"RateFeature",(function(){return F})),n.d(t,"FeedbackQuestion",(function(){return U})),"undefined"!==typeof window){var a=window.document.currentScript,o=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var r=n("19dc"),c=n("8bbf"),l=["title"],i={class:"ui-confirm ratefeatureDialog"},s={key:0},u={key:1},d=Object(c["createElementVNode"])("br",null,null,-1),b={class:"messageContainer"},m=["title","value"],f=["value"],k={class:"ui-confirm ratefeatureDialog"},p={key:0},j=["value"];function O(e,t,n,a,o,r){var O=Object(c["resolveComponent"])("MatomoDialog");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{title:e.translate("Feedback_RateFeatureTitle",e.$sanitize(e.title)),class:"ratefeature"},[Object(c["createElementVNode"])("div",{class:"iconContainer",onMouseenter:t[2]||(t[2]=function(t){return e.expanded=!0}),onMouseleave:t[3]||(t[3]=function(t){return e.expanded=!1})},[Object(c["createElementVNode"])("img",{onClick:t[0]||(t[0]=function(t){e.likeFeature(),e.showFeedbackForm=!0}),class:"like-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-up.png"}),Object(c["withDirectives"])(Object(c["createElementVNode"])("img",{onClick:t[1]||(t[1]=function(t){e.dislikeFeature(),e.showFeedbackForm=!0}),class:"dislike-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-down.png"},null,512),[[c["vShow"],e.expanded]])],32),Object(c["createVNode"])(O,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showFeedbackForm=t}),onYes:t[6]||(t[6]=function(t){return e.sendFeedback()})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",i,[Object(c["createElementVNode"])("h2",null,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureThankYouTitle",e.title)),1),e.like?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",s,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLike")),1)):Object(c["createCommentVNode"])("",!0),e.like?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",u,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislike")),1)),d,Object(c["createElementVNode"])("div",b,[Object(c["withDirectives"])(Object(c["createElementVNode"])("textarea",{"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.feedbackMessage=t})},null,512),[[c["vModelText"],e.feedbackMessage]])]),Object(c["createElementVNode"])("input",{type:"button",title:e.translate("Feedback_RateFeatureSendFeedbackInformation"),value:e.translate("Feedback_SendFeedback"),role:"yes"},null,8,m),Object(c["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,f)])]})),_:1},8,["modelValue"]),Object(c["createVNode"])(O,{modelValue:e.ratingDone,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.ratingDone=t})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",k,[Object(c["createElementVNode"])("h2",null,Object(c["toDisplayString"])(e.translate("Feedback_ThankYou",e.title)),1),e.like?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",p)):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("input",{type:"button",value:e.translate("General_Ok"),role:"yes"},null,8,j)])]})),_:1},8,["modelValue"])],8,l)}var h=Object(c["defineComponent"])({props:{title:String},components:{MatomoDialog:r["MatomoDialog"]},data:function(){return{like:!1,ratingDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:""}},methods:{dislikeFeature:function(){this.like=!1},likeFeature:function(){this.like=!0},sendFeedback:function(){r["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForFeature",featureName:this.title,like:this.like?"1":"0",message:this.feedbackMessage}),this.ratingDone=!0}}});h.render=O;var F=h,g=(Object(r["createAngularJsAdapter"])({component:F,scope:{title:{angularJsBind:"@"}},directiveName:"piwikRateFeature"}),{key:0,class:"bannerHeader"}),v=Object(c["createElementVNode"])("i",{class:"icon-heart red-text"},null,-1),V=Object(c["createElementVNode"])("i",{class:"icon-close white-text"},null,-1),y=[V],N={class:"ratefeature"},w={class:"ui-confirm ratefeatureDialog"},M=["innerHTML"],E=Object(c["createElementVNode"])("br",null,null,-1),x={class:"messageContainer"},D={key:0,class:"error-text"},C=Object(c["createElementVNode"])("br",null,null,-1),_=["innerHTML"],S=["value"],B=["value"],T={class:"ui-confirm ratefeatureDialog"},q=["innerHTML"],H=["value"];
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["Feedback"]=t(require("CoreHome"),require("vue")):e["Feedback"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var l=t[n]={i:n,l:!1,exports:{}};return e[n].call(l.exports,l,l.exports,a),l.l=!0,l.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)a.d(n,l,function(t){return e[t]}.bind(null,l));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="plugins/Feedback/vue/dist/",a(a.s="fae3")}({"19dc":function(t,a){t.exports=e},"8bbf":function(e,a){e.exports=t},fae3:function(e,t,a){"use strict";if(a.r(t),a.d(t,"ReviewLinks",(function(){return ce})),a.d(t,"RateFeature",(function(){return be})),a.d(t,"FeedbackQuestion",(function(){return Te})),"undefined"!==typeof window){var n=window.document.currentScript,l=n&&n.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);l&&(a.p=l[1])}var o=a("19dc"),r=a("8bbf"),i=["title"],c={class:"ui-confirm ratefeatureDialog"},s={key:0},d={key:0},u={key:1},b=Object(r["createElementVNode"])("br",null,null,-1),k={class:"row"},m={style:{"text-align":"left","margin-top":"16px"}},p={for:"useful",class:"ratelabel"},j=Object(r["createElementVNode"])("br",null,null,-1),O={for:"easy",class:"ratelabel"},f=Object(r["createElementVNode"])("br",null,null,-1),v={for:"configurable",class:"ratelabel"},g=Object(r["createElementVNode"])("br",null,null,-1),h={for:"likeother",class:"ratelabel"},F={key:1},V={key:0},y={key:1},N=Object(r["createElementVNode"])("br",null,null,-1),E={class:"row"},R={style:{"text-align":"left"}},M={for:"missingfeatures",class:"ratelabel"},w=Object(r["createElementVNode"])("br",null,null,-1),x={for:"makeeasier",class:"ratelabel"},D=Object(r["createElementVNode"])("br",null,null,-1),B={for:"speedup",class:"ratelabel"},_=Object(r["createElementVNode"])("br",null,null,-1),C={for:"fixbugs",class:"ratelabel"},T=Object(r["createElementVNode"])("br",null,null,-1),L={for:"dislikeother",class:"ratelabel"},H=Object(r["createElementVNode"])("br",null,null,-1),S={key:2,class:"messageContainer",style:{"text-align":"left"}},U=["innerHTML"],q=["innerHTML"],Q=["innerHTML"],I=["innerHTML"],A=["innerHTML"],z=["innerHTML"],P=["innerHTML"],$=["innerHTML"],G=["innerHTML"],J={key:9,class:"error-text"},Y=["innerHTML"],K=["title","value"],W=["value"],X={class:"ui-confirm ratefeatureDialog"},Z=["innerHTML"],ee={key:0},te={key:1},ae=["value"];function ne(e,t,a,n,l,o){var ne=Object(r["resolveComponent"])("MatomoDialog"),le=Object(r["resolveComponent"])("ReviewLinks");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",{title:e.translate("Feedback_RateFeatureTitle",e.$sanitize(e.title)),class:"ratefeature"},[Object(r["createElementVNode"])("div",{class:"iconContainer",onMouseenter:t[2]||(t[2]=function(t){return e.expanded=!0}),onMouseleave:t[3]||(t[3]=function(t){return e.expanded=!1})},[Object(r["createElementVNode"])("img",{onClick:t[0]||(t[0]=function(t){e.likeFeature()}),class:"like-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-up.png"}),Object(r["createElementVNode"])("img",{onClick:t[1]||(t[1]=function(t){e.dislikeFeature()}),class:"dislike-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-down.png"})],32),Object(r["createVNode"])(ne,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[14]||(t[14]=function(t){return e.showFeedbackForm=t}),onYes:t[15]||(t[15]=function(t){return e.sendFeedback()}),onValidation:t[16]||(t[16]=function(t){return e.sendFeedback()})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",c,[e.like?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",s,[e.title?(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",d,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLikeNamedFeature",e.title)),1)):Object(r["createCommentVNode"])("",!0),e.title?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",u,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLike")),1)),b,Object(r["createElementVNode"])("div",k,[Object(r["createElementVNode"])("div",m,[Object(r["createElementVNode"])("label",p,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"useful",value:"useful","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureUsefulInfo")),1)]),j,Object(r["createElementVNode"])("label",O,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"easy",value:"easy","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureEasyToUse")),1)]),f,Object(r["createElementVNode"])("label",v,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"configurable",value:"configurable","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureConfigurable")),1)]),g,Object(r["createElementVNode"])("label",h,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"likeother",value:"likeother","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureOtherReason")),1)])])])])):Object(r["createCommentVNode"])("",!0),e.like?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",F,[e.title?(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",V,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeNamedFeature",e.title)),1)):Object(r["createCommentVNode"])("",!0),e.title?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",y,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislike")),1)),N,Object(r["createElementVNode"])("div",E,[Object(r["createElementVNode"])("div",R,[Object(r["createElementVNode"])("label",M,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"missingfeatures",value:"missingfeatures","onUpdate:modelValue":t[8]||(t[8]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeAddMissingFeatures")),1)]),w,Object(r["createElementVNode"])("label",x,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"makeeasier",value:"makeeasier","onUpdate:modelValue":t[9]||(t[9]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeMakeEasier")),1)]),D,Object(r["createElementVNode"])("label",B,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"speedup",value:"speedup","onUpdate:modelValue":t[10]||(t[10]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeSpeedUp")),1)]),_,Object(r["createElementVNode"])("label",C,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"fixbugs",value:"fixbugs","onUpdate:modelValue":t[11]||(t[11]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeFixBugs")),1)]),T,Object(r["createElementVNode"])("label",L,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"dislikeother",value:"dislikeother","onUpdate:modelValue":t[12]||(t[12]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureOtherReason")),1)]),H])])])),e.likeReason||e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",S,[e.likeReason&&"useful"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:0,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtraUseful")},null,8,U)):Object(r["createCommentVNode"])("",!0),e.likeReason&&"easy"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:1,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtraEasy")},null,8,q)):Object(r["createCommentVNode"])("",!0),e.likeReason&&"configurable"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:2,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtraConfigurable")},null,8,Q)):Object(r["createCommentVNode"])("",!0),e.likeReason&&"likeother"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:3,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtra")},null,8,I)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"missingfeatures"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:4,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraMissing")},null,8,A)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"makeeasier"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:5,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraEasier")},null,8,z)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"fixbugs"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:6,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraBugs")},null,8,P)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"speedup"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:7,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraSpeed")},null,8,$)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"dislikeother"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:8,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtra")},null,8,G)):Object(r["createCommentVNode"])("",!0),e.errorMessage?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",J,Object(r["toDisplayString"])(e.errorMessage),1)):Object(r["createCommentVNode"])("",!0),Object(r["withDirectives"])(Object(r["createElementVNode"])("textarea",{ref:"feedbackText",class:Object(r["normalizeClass"])(["materialize-textarea",{"has-error":e.errorMessage}]),id:"feedbacktext","onUpdate:modelValue":t[13]||(t[13]=function(t){return e.feedbackMessage=t})},null,2),[[r["vModelText"],e.feedbackMessage]]),e.likeReason||e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:10,innerHTML:e.translate("Feedback_Policy","\n <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>","</a>")},null,8,Y)):Object(r["createCommentVNode"])("",!0)])):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("input",{class:"btn",type:"button",role:"validation",title:e.translate("Feedback_RateFeatureSendFeedbackInformation"),value:e.translate("Feedback_SendFeedback")},null,8,K),Object(r["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,W)])]})),_:1},8,["modelValue"]),Object(r["createVNode"])(ne,{modelValue:e.ratingDone,"onUpdate:modelValue":t[17]||(t[17]=function(t){return e.ratingDone=t})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",X,[Object(r["createElementVNode"])("h2",{innerHTML:e.translate("Feedback_ThankYouHeart","<i class='icon-heart red-text'></i>")},null,8,Z),e.like?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",ee,[Object(r["createVNode"])(le)])):Object(r["createCommentVNode"])("",!0),e.like?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",te,Object(r["toDisplayString"])(e.translate("Feedback_AppreciateFeedback")),1)),Object(r["createElementVNode"])("input",{type:"button",value:e.translate("General_Close"),role:"yes"},null,8,ae)])]})),_:1},8,["modelValue"])],8,i)}var le={class:"requestReview"},oe=Object(r["createStaticVNode"])('<br><br><div class="review-links"><div class="review-link"><a href="https://www.capterra.com/p/182627/Matomo-Analytics/" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/capterra.svg"></div><div class="link">Capterra</div></a></div><div class="review-link"><a href="https://www.g2crowd.com/products/matomo-formerly-piwik/details" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/g2crowd.svg"></div><div class="link">G2 Crowd</div></a></div><div class="review-link"><a href="https://www.producthunt.com/posts/matomo-2" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/producthunt.svg"></div><div class="link">Product Hunt</div></a></div><div class="review-link"><a href="https://www.saasworthy.com/product/matomo" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/saasworthy.png"></div><div class="link">SaaSworthy</div></a></div><div class="review-link"><a href="https://www.trustradius.com/products/matomo/reviews" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/trustradius.svg"></div><div class="link">TrustRadius</div></a></div></div>',3);function re(e,t,a,n,l,o){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",le,[Object(r["createElementVNode"])("p",null,Object(r["toDisplayString"])(e.translate("Feedback_PleaseLeaveExternalReviewForMatomo")),1),oe])}var ie=Object(r["defineComponent"])({});ie.render=re;var ce=ie,se=window,de=se.$,ue=Object(r["defineComponent"])({props:{title:String},components:{MatomoDialog:o["MatomoDialog"],ReviewLinks:ce},data:function(){return{like:!1,likeReason:null,dislikeReason:null,ratingDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:"",errorMessage:null}},watch:{likeReason:"doFocusInput",dislikeReason:"doFocusInput"},methods:{dislikeFeature:function(){this.ratingDone=!1,this.like=!1,this.showFeedbackForm=!0,this.errorMessage=null,this.likeReason=null,this.dislikeReason=null,this.feedbackMessage=""},likeFeature:function(){this.ratingDone=!1,this.like=!0,this.showFeedbackForm=!0,this.errorMessage=null,this.likeReason=null,this.dislikeReason=null,this.feedbackMessage=""},doFocusInput:function(){var e=this;this.$nextTick((function(){e.focusInput()}))},focusInput:function(){null!=this.$refs.feedbackText&&this.$refs.feedbackText.focus()},sendFeedback:async function(){this.errorMessage=null;var e=await o["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForFeature",featureName:this.title,like:this.like?"1":"0",choice:this.like?this.likeReason:this.dislikeReason,message:this.feedbackMessage});"success"===e.value?(de(".modal").modal("close"),this.ratingDone=!0,this.feedbackMessage=""):this.errorMessage=e.value}}});ue.render=ne;var be=ue,ke=(Object(o["createAngularJsAdapter"])({component:be,scope:{title:{angularJsBind:"@"}},directiveName:"piwikRateFeature"}),{key:0,class:"bannerHeader"}),me=Object(r["createElementVNode"])("i",{class:"icon-heart red-text"},null,-1),pe=Object(r["createElementVNode"])("i",{class:"icon-close white-text"},null,-1),je=[pe],Oe={class:"ratefeature"},fe={class:"ui-confirm ratefeatureDialog"},ve=["innerHTML"],ge=Object(r["createElementVNode"])("br",null,null,-1),he={class:"messageContainer"},Fe={key:0,class:"error-text"},Ve=Object(r["createElementVNode"])("br",null,null,-1),ye=["innerHTML"],Ne=["value"],Ee=["value"],Re={class:"ui-confirm ratefeatureDialog"},Me=["innerHTML"],we=["value"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function R(e,t,n,a,o,r){var l=Object(c["resolveComponent"])("MatomoDialog");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",null,[e.isHidden?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",g,[Object(c["createElementVNode"])("span",null,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("Feedback_FeedbackTitle"))+" ",1),v]),Object(c["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(){return e.showQuestion&&e.showQuestion.apply(e,arguments)}),class:"btn"},Object(c["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(c["createElementVNode"])("a",{class:"close-btn",onClick:t[1]||(t[1]=function(){return e.disableReminder&&e.disableReminder.apply(e,arguments)})},y)])),Object(c["createElementVNode"])("div",N,[Object(c["createVNode"])(l,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.showFeedbackForm=t}),onValidation:t[4]||(t[4]=function(t){return e.sendFeedback()})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",w,[Object(c["createElementVNode"])("h2",null,Object(c["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(c["createElementVNode"])("p",{innerHTML:e.translate("Feedback_FeedbackSubtitle","<i class='icon-heart red-text'></i>")},null,8,M),E,Object(c["createElementVNode"])("div",x,[e.errorMessage?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",D,Object(c["toDisplayString"])(e.errorMessage),1)):Object(c["createCommentVNode"])("",!0),Object(c["withDirectives"])(Object(c["createElementVNode"])("textarea",{id:"message",class:Object(c["normalizeClass"])({"has-error":e.errorMessage}),"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.feedbackMessage=t})},null,2),[[c["vModelText"],e.feedbackMessage]])]),C,Object(c["createElementVNode"])("p",{innerHTML:e.translate("Feedback_Policy","<a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>","</a>")},null,8,_),Object(c["createElementVNode"])("input",{type:"button",role:"validation",value:e.translate("Feedback_SendFeedback")},null,8,S),Object(c["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,B)])]})),_:1},8,["modelValue"]),Object(c["createVNode"])(l,{modelValue:e.feedbackDone,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.feedbackDone=t})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",T,[Object(c["createElementVNode"])("h2",null,Object(c["toDisplayString"])(e.translate("Feedback_ThankYou")),1),Object(c["createElementVNode"])("p",{innerHTML:e.translate("Feedback_ThankYourForFeedback","<i class='icon-heart red-text'></i>")},null,8,q),Object(c["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Close")},null,8,H)])]})),_:1},8,["modelValue"])])])}var Q=window,L=Q.$,A="feedback-question",P=Object(c["defineComponent"])({props:{showQuestionBanner:String},components:{MatomoDialog:r["MatomoDialog"]},computed:{isHidden:function(){return"0"===this.showQuestionBanner||!!this.hide}},data:function(){return{questionText:"",question:0,hide:null,feedbackDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:null,errorMessage:null}},watch:{showFeedbackForm:function(e){this.questionText=Object(r["translate"])("Feedback_Question".concat(this.question)),e&&setInterval((function(){L("#message").focus()}),500)}},created:function(){"0"!==this.showQuestionBanner&&this.initQuestion()},methods:{initQuestion:function(){Object(r["getCookie"])(A)?this.question=parseInt(Object(r["getCookie"])(A)):this.question=this.getRandomIntBetween(0,4);var e=(this.question+1)%4,t=6048e5;Object(r["setCookie"])(A,e,t)},getRandomIntBetween:function(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1)+e)},showQuestion:function(){this.showFeedbackForm=!0,this.errorMessage=null},disableReminder:function(){r["AjaxHelper"].fetch({method:"Feedback.updateFeedbackReminderDate"}),this.hide=!0},sendFeedback:async function(){this.errorMessage=null;var e=await r["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForSurvey",question:this.questionText,message:this.feedbackMessage});"success"===e.value?(L(".modal").modal("close"),this.feedbackDone=!0,this.hide=!0):this.errorMessage=e.value}}});P.render=R;var U=P;
+ */function xe(e,t,a,n,l,o){var i=Object(r["resolveComponent"])("MatomoDialog");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[e.isHidden?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",ke,[Object(r["createElementVNode"])("span",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.translate("Feedback_FeedbackTitle"))+" ",1),me]),Object(r["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(){return e.showQuestion&&e.showQuestion.apply(e,arguments)}),class:"btn"},Object(r["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(r["createElementVNode"])("a",{class:"close-btn",onClick:t[1]||(t[1]=function(){return e.disableReminder&&e.disableReminder.apply(e,arguments)})},je)])),Object(r["createElementVNode"])("div",Oe,[Object(r["createVNode"])(i,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.showFeedbackForm=t}),onValidation:t[4]||(t[4]=function(t){return e.sendFeedback()})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",fe,[Object(r["createElementVNode"])("h2",null,Object(r["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(r["createElementVNode"])("p",{innerHTML:e.translate("Feedback_FeedbackSubtitle","<i class='icon-heart red-text'></i>")},null,8,ve),ge,Object(r["createElementVNode"])("div",he,[e.errorMessage?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",Fe,Object(r["toDisplayString"])(e.errorMessage),1)):Object(r["createCommentVNode"])("",!0),Object(r["withDirectives"])(Object(r["createElementVNode"])("textarea",{id:"message",class:Object(r["normalizeClass"])({"has-error":e.errorMessage}),"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.feedbackMessage=t})},null,2),[[r["vModelText"],e.feedbackMessage]])]),Ve,Object(r["createElementVNode"])("p",{innerHTML:e.translate("Feedback_Policy","<a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>","</a>")},null,8,ye),Object(r["createElementVNode"])("input",{type:"button",role:"validation",value:e.translate("Feedback_SendFeedback")},null,8,Ne),Object(r["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,Ee)])]})),_:1},8,["modelValue"]),Object(r["createVNode"])(i,{modelValue:e.feedbackDone,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.feedbackDone=t})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",Re,[Object(r["createElementVNode"])("h2",null,Object(r["toDisplayString"])(e.translate("Feedback_ThankYou")),1),Object(r["createElementVNode"])("p",{innerHTML:e.translate("Feedback_ThankYourForFeedback","<i class='icon-heart red-text'></i>")},null,8,Me),Object(r["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Close")},null,8,we)])]})),_:1},8,["modelValue"])])])}var De=window,Be=De.$,_e="feedback-question",Ce=Object(r["defineComponent"])({props:{showQuestionBanner:String},components:{MatomoDialog:o["MatomoDialog"]},computed:{isHidden:function(){return"0"===this.showQuestionBanner||!!this.hide}},data:function(){return{questionText:"",question:0,hide:null,feedbackDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:null,errorMessage:null}},watch:{showFeedbackForm:function(e){this.questionText=Object(o["translate"])("Feedback_Question".concat(this.question)),e&&setInterval((function(){Be("#message").focus()}),500)}},created:function(){"0"!==this.showQuestionBanner&&this.initQuestion()},methods:{initQuestion:function(){Object(o["getCookie"])(_e)?this.question=parseInt(Object(o["getCookie"])(_e)):this.question=this.getRandomIntBetween(0,4);var e=(this.question+1)%4,t=6048e5;Object(o["setCookie"])(_e,e,t)},getRandomIntBetween:function(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1)+e)},showQuestion:function(){this.showFeedbackForm=!0,this.errorMessage=null},disableReminder:function(){o["AjaxHelper"].fetch({method:"Feedback.updateFeedbackReminderDate"}),this.hide=!0},sendFeedback:async function(){this.errorMessage=null;var e=await o["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForSurvey",question:this.questionText,message:this.feedbackMessage});"success"===e.value?(Be(".modal").modal("close"),this.feedbackDone=!0,this.hide=!0):this.errorMessage=e.value}}});Ce.render=xe;var Te=Ce;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:U,scope:{showQuestionBanner:{angularJsBind:"@"}},directiveName:"piwikFeedbackQuestion"})}})}));
+ */Object(o["createAngularJsAdapter"])({component:Te,scope:{showQuestionBanner:{angularJsBind:"@"}},directiveName:"piwikFeedbackQuestion"})}})}));
//# sourceMappingURL=Feedback.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Feedback/vue/src/RateFeature/RateFeature.less b/plugins/Feedback/vue/src/RateFeature/RateFeature.less
index 83abd8970b..524c8ce2e5 100644
--- a/plugins/Feedback/vue/src/RateFeature/RateFeature.less
+++ b/plugins/Feedback/vue/src/RateFeature/RateFeature.less
@@ -27,4 +27,27 @@
opacity: 0.9;
}
}
+}
+
+.rateradio {
+ opacity: unset !important;
+ position:unset !important;
+}
+
+.ratelabel {
+ font-size: 18px;
+ color: unset !important;
+ margin-bottom:11px;
+ display: inline-block;
+}
+
+.modal {
+ .has-error {
+ border: 1px red solid;
+ }
+
+ .error-text {
+ float: left;
+ color: red;
+ }
} \ No newline at end of file
diff --git a/plugins/Feedback/vue/src/RateFeature/RateFeature.vue b/plugins/Feedback/vue/src/RateFeature/RateFeature.vue
index ba90382e55..f6ce311b15 100644
--- a/plugins/Feedback/vue/src/RateFeature/RateFeature.vue
+++ b/plugins/Feedback/vue/src/RateFeature/RateFeature.vue
@@ -15,37 +15,152 @@
v-on:mouseleave="expanded = false"
>
<img
- v-on:click="likeFeature();showFeedbackForm=true"
+ v-on:click="likeFeature();"
class="like-icon"
src="plugins/Feedback/vue/src/RateFeature/thumbs-up.png"
/>
<img
- v-on:click="dislikeFeature();showFeedbackForm=true"
+ v-on:click="dislikeFeature();"
class="dislike-icon"
- v-show="expanded"
src="plugins/Feedback/vue/src/RateFeature/thumbs-down.png"
/>
</div>
<MatomoDialog
v-model="showFeedbackForm"
@yes="sendFeedback()"
+ @validation = "sendFeedback()"
>
<div
class="ui-confirm ratefeatureDialog"
>
- <h2>{{ translate('Feedback_RateFeatureThankYouTitle', title) }}</h2>
- <p v-if="like">{{ translate('Feedback_RateFeatureLeaveMessageLike') }}</p>
- <p v-if="!like">{{ translate('Feedback_RateFeatureLeaveMessageDislike') }}</p>
- <br />
- <div class="messageContainer">
- <textarea v-model="feedbackMessage" />
+ <div
+ v-if="like"
+ >
+ <h2 v-if="title" >{{ translate('Feedback_RateFeatureLeaveMessageLikeNamedFeature',
+ title) }}</h2>
+ <h2 v-if="!title" >{{ translate('Feedback_RateFeatureLeaveMessageLike') }}</h2>
+ <br />
+ <div class="row">
+ <div style="text-align:left; margin-top: 16px">
+ <label for="useful" class="ratelabel">
+ <input type="radio" id="useful" value="useful" v-model="likeReason"
+ class="rateradio">
+ {{ translate('Feedback_RateFeatureUsefulInfo') }}
+ </label>
+ <br />
+ <label for="easy" class="ratelabel">
+ <input type="radio" id="easy" value="easy" v-model="likeReason" class="rateradio">
+ {{ translate('Feedback_RateFeatureEasyToUse') }}
+ </label>
+ <br />
+ <label for="configurable" class="ratelabel">
+ <input type="radio" id="configurable" value="configurable" v-model="likeReason"
+ class="rateradio">
+ {{ translate('Feedback_RateFeatureConfigurable') }}
+ </label>
+ <br />
+ <label for="likeother" class="ratelabel">
+ <input type="radio" id="likeother" value="likeother" v-model="likeReason"
+ class="rateradio">
+ {{ translate('Feedback_RateFeatureOtherReason') }}
+ </label>
+ </div>
+ </div>
+
+ </div>
+ <div
+ v-if="!like"
+ >
+ <h2 v-if="title">{{ translate('Feedback_RateFeatureLeaveMessageDislikeNamedFeature',
+ title) }}</h2>
+ <h2 v-if="!title">{{ translate('Feedback_RateFeatureLeaveMessageDislike') }}</h2>
+ <br />
+ <div class="row">
+ <div style="text-align:left">
+ <label for="missingfeatures" class="ratelabel">
+ <input type="radio" id="missingfeatures" value="missingfeatures"
+ v-model="dislikeReason" class="rateradio">
+ {{ translate('Feedback_RateFeatureDislikeAddMissingFeatures') }}
+ </label>
+ <br />
+ <label for="makeeasier" class="ratelabel">
+ <input type="radio" id="makeeasier" value="makeeasier" v-model="dislikeReason"
+ class="rateradio">
+ {{ translate('Feedback_RateFeatureDislikeMakeEasier') }}
+ </label>
+ <br />
+ <label for="speedup" class="ratelabel">
+ <input type="radio" id="speedup" value="speedup" v-model="dislikeReason"
+ class="rateradio">
+ {{ translate('Feedback_RateFeatureDislikeSpeedUp') }}
+ </label>
+ <br />
+ <label for="fixbugs" class="ratelabel">
+ <input type="radio" id="fixbugs" value="fixbugs" v-model="dislikeReason"
+ class="rateradio">
+ {{ translate('Feedback_RateFeatureDislikeFixBugs') }}
+ </label>
+ <br />
+ <label for="dislikeother" class="ratelabel">
+ <input type="radio" id="dislikeother" value="dislikeother" v-model="dislikeReason"
+ class="rateradio">
+ {{ translate('Feedback_RateFeatureOtherReason') }}
+ </label>
+ <br />
+ </div>
+ </div>
+
</div>
+
+ <div v-if="likeReason || dislikeReason" class="messageContainer" style="text-align:left">
+
+ <p v-if="likeReason && likeReason == 'useful'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtraUseful')">
+ </p>
+ <p v-if="likeReason && likeReason == 'easy'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtraEasy')">
+ </p>
+ <p v-if="likeReason && likeReason == 'configurable'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtraConfigurable')">
+ </p>
+ <p v-if="likeReason && likeReason == 'likeother'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtra')">
+ </p>
+
+ <p v-if="dislikeReason && dislikeReason == 'missingfeatures'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraMissing')">
+ </p>
+ <p v-if="dislikeReason && dislikeReason == 'makeeasier'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraEasier')">
+ </p>
+ <p v-if="dislikeReason && dislikeReason == 'fixbugs'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraBugs')">
+ </p>
+ <p v-if="dislikeReason && dislikeReason == 'speedup'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraSpeed')">
+ </p>
+ <p v-if="dislikeReason && dislikeReason == 'dislikeother'"
+ v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtra')">
+ </p>
+
+ <div class="error-text" v-if="errorMessage">{{ errorMessage }}</div>
+ <textarea ref="feedbackText" class="materialize-textarea" id="feedbacktext"
+ :class="{'has-error':errorMessage}"
+ v-model="feedbackMessage"/>
+ <p v-if="likeReason || dislikeReason"
+ v-html="translate('Feedback_Policy',`
+ <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>`,'</a>')">
+ </p>
+ </div>
+
<input
+ class="btn"
type="button"
+ role="validation"
:title="translate('Feedback_RateFeatureSendFeedbackInformation')"
:value="translate('Feedback_SendFeedback')"
- role="yes"
/>
+
<input
type="button"
role="cancel"
@@ -53,20 +168,23 @@
/>
</div>
</MatomoDialog>
+
<MatomoDialog
v-model="ratingDone"
>
<div
class="ui-confirm ratefeatureDialog"
>
- <h2>{{ translate('Feedback_ThankYou', title) }}</h2>
+ <h2 v-html="translate('Feedback_ThankYouHeart',`<i class='icon-heart red-text'></i>`)"></h2>
<div
v-if="like"
>
+ <ReviewLinks/>
</div>
+ <p v-if="!like">{{ translate('Feedback_AppreciateFeedback') }}</p>
<input
type="button"
- :value="translate('General_Ok')"
+ :value="translate('General_Close')"
role="yes"
/>
</div>
@@ -77,6 +195,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { MatomoDialog, AjaxHelper } from 'CoreHome';
+import ReviewLinks from '../ReviewLinks/ReviewLinks.vue';
+
+const { $ } = window;
export default defineComponent({
props: {
@@ -84,31 +205,70 @@ export default defineComponent({
},
components: {
MatomoDialog,
+ ReviewLinks,
},
data() {
return {
like: false,
+ likeReason: null,
+ dislikeReason: null,
ratingDone: false,
expanded: false,
showFeedbackForm: false,
feedbackMessage: '',
+ errorMessage: null,
};
},
+ watch: {
+ likeReason: 'doFocusInput',
+ dislikeReason: 'doFocusInput',
+ },
methods: {
dislikeFeature() {
+ this.ratingDone = false;
this.like = false;
+ this.showFeedbackForm = true;
+ this.errorMessage = null;
+ this.likeReason = null;
+ this.dislikeReason = null;
+ this.feedbackMessage = '';
},
likeFeature() {
+ this.ratingDone = false;
this.like = true;
+ this.showFeedbackForm = true;
+ this.errorMessage = null;
+ this.likeReason = null;
+ this.dislikeReason = null;
+ this.feedbackMessage = '';
+ },
+ doFocusInput() {
+ this.$nextTick(() => {
+ this.focusInput();
+ });
},
- sendFeedback() {
- AjaxHelper.fetch({
+ focusInput() {
+ if (this.$refs.feedbackText != null) {
+ this.$refs.feedbackText.focus();
+ }
+ },
+ async sendFeedback() {
+ this.errorMessage = null;
+ const res = await AjaxHelper.fetch({
method: 'Feedback.sendFeedbackForFeature',
featureName: this.title,
like: this.like ? '1' : '0',
+ choice: this.like ? this.likeReason : this.dislikeReason,
message: this.feedbackMessage,
});
- this.ratingDone = true;
+
+ if (res.value === 'success') {
+ $('.modal').modal('close');
+ this.ratingDone = true;
+ this.feedbackMessage = '';
+ } else {
+ this.errorMessage = res.value;
+ }
},
},
});
diff --git a/plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.less b/plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.less
new file mode 100644
index 0000000000..25aa00154c
--- /dev/null
+++ b/plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.less
@@ -0,0 +1,25 @@
+.requestReview {
+ .review-links {
+ display: flex;
+ }
+
+ .review-link {
+ width: 20%;
+
+ div {
+ width: 100%;
+ }
+
+ div.image {
+ height: 80px;
+ }
+
+ div.link {
+ font-size: 13px;
+ }
+
+ img {
+ max-width: 60px;
+ }
+ }
+}
diff --git a/plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue b/plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue
new file mode 100644
index 0000000000..ca6b4a9cbf
--- /dev/null
+++ b/plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue
@@ -0,0 +1,89 @@
+<!--
+ 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 class="requestReview">
+ <p>{{ translate('Feedback_PleaseLeaveExternalReviewForMatomo') }}</p><br><br>
+ <div class="review-links">
+ <div class="review-link">
+ <a
+ href="https://www.capterra.com/p/182627/Matomo-Analytics/"
+ target="_blank"
+ >
+ <div class="image">
+ <img
+ loading="lazy"
+ src="plugins/Feedback/images/capterra.svg"
+ />
+ </div>
+ <div class="link">Capterra</div>
+ </a>
+ </div>
+ <div class="review-link">
+ <a
+ href="https://www.g2crowd.com/products/matomo-formerly-piwik/details"
+ target="_blank"
+ >
+ <div class="image">
+ <img
+ loading="lazy"
+ src="plugins/Feedback/images/g2crowd.svg"
+ />
+ </div>
+ <div class="link">G2 Crowd</div>
+ </a>
+ </div>
+ <div class="review-link">
+ <a
+ href="https://www.producthunt.com/posts/matomo-2"
+ target="_blank"
+ >
+ <div class="image">
+ <img
+ loading="lazy"
+ src="plugins/Feedback/images/producthunt.svg"
+ />
+ </div>
+ <div class="link">Product Hunt</div>
+ </a>
+ </div>
+ <div class="review-link">
+ <a
+ href="https://www.saasworthy.com/product/matomo"
+ target="_blank"
+ >
+ <div class="image">
+ <img
+ loading="lazy"
+ src="plugins/Feedback/images/saasworthy.png"
+ />
+ </div>
+ <div class="link">SaaSworthy</div>
+ </a>
+ </div>
+ <div class="review-link">
+ <a
+ href="https://www.trustradius.com/products/matomo/reviews"
+ target="_blank"
+ >
+ <div class="image">
+ <img
+ loading="lazy"
+ src="plugins/Feedback/images/trustradius.svg"
+ />
+ </div>
+ <div class="link">TrustRadius</div>
+ </a>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+
+export default defineComponent({});
+</script>
diff --git a/plugins/Feedback/vue/src/index.ts b/plugins/Feedback/vue/src/index.ts
index d4018200f8..6605f2fbac 100644
--- a/plugins/Feedback/vue/src/index.ts
+++ b/plugins/Feedback/vue/src/index.ts
@@ -8,5 +8,6 @@
import './RateFeature/RateFeature.adapter';
import './FeedbackQuestion/FeedbackQuestion.adapter';
+export { default as ReviewLinks } from './ReviewLinks/ReviewLinks.vue';
export { default as RateFeature } from './RateFeature/RateFeature.vue';
export { default as FeedbackQuestion } from './FeedbackQuestion/FeedbackQuestion.vue';
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_2_segment_editor_update.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_2_segment_editor_update.png
index 1387199ca0..02f6078410 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_2_segment_editor_update.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_2_segment_editor_update.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a343494053418bdb2420a79ede4312d44c811507fce7186e2323b735c7152517
-size 35210
+oid sha256:f1af531786856e6064f1d5eee92cfcf6ff4bb55f8350425c9e6782b422609746
+size 35679
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_3_segment_editor_edit_name.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_3_segment_editor_edit_name.png
index 6045c53a35..efa680e625 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_3_segment_editor_edit_name.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_3_segment_editor_edit_name.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8ced9db25b6ede23ee8dc592b0d7339727a5a39378e1e77db190c1fd8641f008
-size 35736
+oid sha256:925e595dae3a1788bf5c186f3f095cc3a30a86e17b0d135c3a51584013fbdb2e
+size 36194
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png
index f0e121c5a8..d09882fd5b 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_8_segment_editor_create.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:947ace71f336490f42b5a02b0c75b3e2640dd04ce6d32e3804bc9624c09c626d
-size 31637
+oid sha256:ec2fad0f9a7066854d9d7f6ee2e9355040be0383ec5e8e6be36803c0e077f832
+size 32105
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_and_condition.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_and_condition.png
index 31d898093c..b21b22ed55 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_and_condition.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_and_condition.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:711be5b80eec70d3a4feab174c7d3d7cdb0e229bd73c2fa4e6154fe76cee91ec
-size 46109
+oid sha256:10a54070979f44fbd99d8b187d1a1b05f56cb7af64a7d8db0bdf0601b44bc7f1
+size 46579
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_or_condition.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_or_condition.png
index f6c1394717..aa6c1c075e 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_or_condition.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_add_new_or_condition.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d2820216977a737bc67d1d44faf103f9d63b640d991a62e562988ec2d9fd58e2
-size 36194
+oid sha256:94a882f9f53d2c3b42c68a7a83eda6c3be1e3db752786cca402157b5577c7dc9
+size 36648
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png
index eac36cdc07..0ddfb54d2c 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_dimension_drag_drop.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:76752106a18b1be7ea6d5a96ee1c5506af9f255b94441c5b24bb094349e683de
-size 31049
+oid sha256:513ff434840a18cd7d82f522b8248eb24f901289db1426b445d971d2afbe7e06
+size 31521
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png
index 330f3e7437..e8568f2aa5 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_and_condition.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c9f1a841123a3281357ae4f481df580bcbc368cc9f8281ffe6c7aed7746a3743
-size 45783
+oid sha256:0d3ede82d7d001ee700275ed89b065f6306a31a61228105e2da6e07f64bdd49c
+size 46251
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png
index 0ad8146a11..b3f4b3877e 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_drag_or_condition.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:70d9647ebbdb0157c645c15d655b53fa5a0b447de76adf8144c6002d7cd33d66
-size 35828
+oid sha256:4204d09e0ac02d269be1bb5bba981593cadb18dc68b3f96306c80140ec7c887e
+size 36277
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_enabled_create_realtime_segments.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_enabled_create_realtime_segments.png
index a0a23c54a1..647bb78d44 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_enabled_create_realtime_segments.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_enabled_create_realtime_segments.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3b294dab4b6bc3518291c385c834b61151cdc62affd1eb5a356db2d18a60ed90
-size 28894
+oid sha256:fa9d1073467701e4755ba3496592b2fdb6ab0d49e21b23aa22878e8c1c12a568
+size 29349
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png
index e8a3180048..ef30bc3f15 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_saved_details.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:eff8a925c8f9c1b072c294125eede776df828a7c33ee10307c68282249f3f330
-size 48182
+oid sha256:a169e356afc2a3921ec670773062b224386d9df64fd3ec49702433d9a8080646
+size 48665
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_suggested_values.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_suggested_values.png
index eaa19a1b7a..fb135e75b0 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_suggested_values.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_suggested_values.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e45b89ce929777b85711946e420be9abf9fd0d56ba20c64fbfc81e9f75d75582
-size 57402
+oid sha256:f123753378ce7a80459a436eff08e5bf9345b86d1246733451c8e2e314bb6f42
+size 57881
diff --git a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png
index 313b2d6383..b216380560 100644
--- a/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png
+++ b/plugins/SegmentEditor/tests/UI/expected-screenshots/SegmentSelectorEditorTest_updated_details.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:37addc9332cacff2437a75dbee040de53ddaf4cd1d304f1055672f25e96904aa
-size 48952
+oid sha256:842a1946a1f3557abe9d51d617289846fd851652fecbe300aa794ff1e78fcdaa
+size 49513