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

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordizzy <diosmosis@users.noreply.github.com>2022-04-08 15:45:34 +0300
committerGitHub <noreply@github.com>2022-04-08 15:45:34 +0300
commit821734c769fb012fc2ee5994b56937988150bc0f (patch)
treed5f7536f9507dd1def2cca0f2e7ff207771b1b26 /plugins/MobileMessaging
parent0087d178e516d16d3346c20f30685fd10d9fe84d (diff)
[Vue] migrate scheduled reports management from twig/angularjs to vue (#19012)
* finish initial migration pass * get changes to build * delete angularjs and twig * extract select phone numbers macro to vue and make sure angularjs directives are initialized in scheduled reports event content * fixing several issues + getting report addition extending working * fix UI tests * possibly provide some BC for inline script use * fix several bugs, use better approach for accessing report in event child vue components, provide backwards compatibility for angularjs/inline javascript potentially used by third party plugins * apply review fixes * decode scheduled report description as it is stored escaped in the DB + remove some vue warnings Co-authored-by: sgiehl <stefan@matomo.org>
Diffstat (limited to 'plugins/MobileMessaging')
-rw-r--r--plugins/MobileMessaging/MobileMessaging.php7
-rw-r--r--plugins/MobileMessaging/templates/macros.twig31
-rw-r--r--plugins/MobileMessaging/templates/reportParametersScheduledReports.twig34
-rw-r--r--plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js284
-rw-r--r--plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js10
-rw-r--r--plugins/MobileMessaging/vue/dist/umd.metadata.json3
-rw-r--r--plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue6
-rw-r--r--plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue79
-rw-r--r--plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.adapter.ts60
-rw-r--r--plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue66
-rw-r--r--plugins/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue16
-rw-r--r--plugins/MobileMessaging/vue/src/index.ts3
12 files changed, 511 insertions, 88 deletions
diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php
index 7bce744459..1468cebb6f 100644
--- a/plugins/MobileMessaging/MobileMessaging.php
+++ b/plugins/MobileMessaging/MobileMessaging.php
@@ -76,7 +76,7 @@ class MobileMessaging extends \Piwik\Plugin
'ScheduledReports.allowMultipleReports' => 'allowMultipleReports',
'ScheduledReports.sendReport' => 'sendReport',
'Template.reportParametersScheduledReports' => 'template_reportParametersScheduledReports',
- 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys'
+ 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
);
}
@@ -115,6 +115,11 @@ class MobileMessaging extends \Piwik\Plugin
$translationKeys[] = 'MobileMessaging_Settings_ManagePhoneNumbers';
$translationKeys[] = 'MobileMessaging_Settings_VerificationCodeJustSent';
$translationKeys[] = 'MobileMessaging_Settings_ValidatePhoneNumber';
+ $translationKeys[] = 'MobileMessaging_MobileReport_NoPhoneNumbers';
+ $translationKeys[] = 'MobileMessaging_MobileReport_AdditionalPhoneNumbers';
+ $translationKeys[] = 'MobileMessaging_MobileReport_MobileMessagingSettingsLink';
+ $translationKeys[] = 'ScheduledReports_SendReportTo';
+ $translationKeys[] = 'MobileMessaging_PhoneNumbers';
}
public function validateReportParameters(&$parameters, $reportType)
diff --git a/plugins/MobileMessaging/templates/macros.twig b/plugins/MobileMessaging/templates/macros.twig
index a21f2f3be3..24f4dee65c 100644
--- a/plugins/MobileMessaging/templates/macros.twig
+++ b/plugins/MobileMessaging/templates/macros.twig
@@ -11,29 +11,10 @@
{% endmacro %}
{% macro selectPhoneNumbers(phoneNumbers, angularContext, value, withIntroduction) %}
- <div id="mobilePhoneNumbersHelp" class="inline-help-node">
- <span class="icon-info"></span>
-
- {% if phoneNumbers|length == 0 %}
- {{ 'MobileMessaging_MobileReport_NoPhoneNumbers'|translate }}
- {% else %}
- {{ 'MobileMessaging_MobileReport_AdditionalPhoneNumbers'|translate|e('html_attr') }}
- {% endif %}
- <a href="{{ linkTo({'module':"MobileMessaging", 'action': 'index', 'updated':null}) }}">{{ 'MobileMessaging_MobileReport_MobileMessagingSettingsLink'|translate }}</a>
- </div>
-
- <div class='mobile'
- piwik-field uicontrol="checkbox"
- var-type="array"
- name="phoneNumbers"
- ng-model="{{ angularContext }}.report.phoneNumbers"
- {% if withIntroduction %}
- introduction="{{ 'ScheduledReports_SendReportTo'|translate|e('html_attr') }}"
- {% endif %}
- data-title="{{ 'MobileMessaging_PhoneNumbers'|translate|e('html_attr') }}"
- {% if phoneNumbers|length == 0 %}disabled="true"{% endif %}
- options="{{ phoneNumbers|json_encode }}"
- inline-help="#mobilePhoneNumbersHelp"
- {% if value %}value="{{ value|json_encode }}"{% endif %}>
- </div>
+ <div matomo-select-phone-numbers
+ phone-numbers="{{ phoneNumbers|json_encode|e('html_attr') }}"
+ ng-model="{{ angularContext }}.report.phoneNumbers"
+ with-introduction="{{ withIntroduction|json_encode|e('html_attr') }}"
+ {% if value %}value="{{ value|json_encode|e('html_attr') }}"{% endif %}
+ ></div>
{% endmacro %} \ No newline at end of file
diff --git a/plugins/MobileMessaging/templates/reportParametersScheduledReports.twig b/plugins/MobileMessaging/templates/reportParametersScheduledReports.twig
index 5ca96fa9fb..21c75099ed 100644
--- a/plugins/MobileMessaging/templates/reportParametersScheduledReports.twig
+++ b/plugins/MobileMessaging/templates/reportParametersScheduledReports.twig
@@ -1,30 +1,4 @@
-{% import '@MobileMessaging/macros.twig' as macro %}
-
-<div ng-show="manageScheduledReport.report.type == 'mobile'">
- {{ macro.selectPhoneNumbers(phoneNumbers, 'manageScheduledReport', '', true) }}
-</div>
-
-<script>
-$(function () {
- resetReportParametersFunctions['mobile'] = function (report) {
- report.phoneNumbers = [];
- report.formatmobile = 'sms';
- };
-
- updateReportParametersFunctions['mobile'] = function (report) {
- if (report.parameters && report.parameters.phoneNumbers) {
- report.phoneNumbers = report.parameters.phoneNumbers;
- }
- report.formatmobile = 'sms';
- };
-
- getReportParametersFunctions['mobile'] = function (report) {
- var parameters = {};
-
- // returning [''] when no phone numbers are selected avoids the "please provide a value for 'parameters'" error message
- parameters.phoneNumbers = report.phoneNumbers && report.phoneNumbers.length > 0 ? report.phoneNumbers : [''];
-
- return parameters;
- };
-});
-</script> \ No newline at end of file
+<div
+ vue-entry="MobileMessaging.ReportParameters"
+ phone-numbers="{{ phoneNumbers|default([])|json_encode|e('html_attr') }}"
+></div>
diff --git a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js
index ce80a64e2d..412aa834c5 100644
--- a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js
+++ b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js
@@ -125,10 +125,12 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
__webpack_require__.r(__webpack_exports__);
// EXPORTS
+__webpack_require__.d(__webpack_exports__, "ReportParameters", function() { return /* reexport */ ReportParameters; });
__webpack_require__.d(__webpack_exports__, "ManageSmsProvider", function() { return /* reexport */ ManageSmsProvider; });
__webpack_require__.d(__webpack_exports__, "SmsProviderCredentials", function() { return /* reexport */ SmsProviderCredentials; });
__webpack_require__.d(__webpack_exports__, "DelegateMobileMessagingSettings", function() { return /* reexport */ DelegateMobileMessagingSettings; });
__webpack_require__.d(__webpack_exports__, "ManageMobilePhoneNumbers", function() { return /* reexport */ ManageMobilePhoneNumbers; });
+__webpack_require__.d(__webpack_exports__, "SelectPhoneNumbers", function() { return /* reexport */ SelectPhoneNumbers; });
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
@@ -152,7 +154,7 @@ var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
// EXTERNAL MODULE: external "CoreHome"
var external_CoreHome_ = __webpack_require__("19dc");
-// 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/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue?vue&type=template&id=71256e6a
+// 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/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue?vue&type=template&id=e5a63bc6
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -177,7 +179,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}, null, 8, ["uicontrol", "name", "model-value", "onUpdate:modelValue", "title"]);
}), 128))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true);
}
-// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue?vue&type=template&id=71256e6a
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue?vue&type=template&id=e5a63bc6
// EXTERNAL MODULE: external "CorePluginsAdmin"
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
@@ -193,10 +195,7 @@ var allFieldsByProvider = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["
type: String,
required: true
},
- modelValue: {
- type: Object,
- required: true
- }
+ modelValue: Object
},
emits: ['update:modelValue'],
components: {
@@ -205,7 +204,7 @@ var allFieldsByProvider = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["
watch: {
provider: function provider() {
// unset credentials when new provider is chosen
- this.$emit('update:modelValue', {}); // fetch fields for provider
+ this.$emit('update:modelValue', null); // fetch fields for provider
this.getCredentialFields();
}
@@ -218,6 +217,9 @@ var allFieldsByProvider = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["
var _this = this;
if (allFieldsByProvider[this.provider]) {
+ this.$emit('update:modelValue', Object.fromEntries(allFieldsByProvider[this.provider].map(function (f) {
+ return [f.name, null];
+ })));
return;
}
@@ -226,6 +228,10 @@ var allFieldsByProvider = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["
action: 'getCredentialFields',
provider: this.provider
}).then(function (fields) {
+ _this.$emit('update:modelValue', Object.fromEntries(fields.map(function (f) {
+ return [f.name, null];
+ })));
+
allFieldsByProvider[_this.provider] = fields;
});
}
@@ -313,27 +319,262 @@ SmsProviderCredentialsvue_type_script_lang_ts.render = render
}
}
}));
-// 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/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=d55b293c
+// 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/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue?vue&type=template&id=12d83df9
+
+var SelectPhoneNumbersvue_type_template_id_12d83df9_hoisted_1 = {
+ class: "mobile"
+};
+var _hoisted_2 = {
+ id: "mobilePhoneNumbersHelp",
+ class: "inline-help-node"
+};
+
+var _hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-info",
+ style: {
+ "margin-right": "3.5px"
+ }
+}, null, -1);
+
+var _hoisted_4 = {
+ key: 0,
+ style: {
+ "margin-right": "3.5px"
+ }
+};
+var _hoisted_5 = {
+ key: 1,
+ style: {
+ "margin-right": "3.5px"
+ }
+};
+var _hoisted_6 = ["href"];
+function SelectPhoneNumbersvue_type_template_id_12d83df9_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SelectPhoneNumbersvue_type_template_id_12d83df9_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ "var-type": "array",
+ name: "phoneNumbers",
+ "model-value": _ctx.modelValue,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.$emit('update:modelValue', $event);
+ }),
+ introduction: _ctx.withIntroduction ? _ctx.translate('ScheduledReports_SendReportTo') : undefined,
+ title: _ctx.translate('MobileMessaging_PhoneNumbers'),
+ disabled: _ctx.phoneNumbers.length === 0,
+ options: _ctx.phoneNumbers
+ }, {
+ "inline-help": Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [_hoisted_3, _ctx.phoneNumbers.length === 0 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_MobileReport_NoPhoneNumbers')), 1)) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_MobileReport_AdditionalPhoneNumbers')), 1)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ href: _ctx.linkTo({
+ module: 'MobileMessaging',
+ action: 'index',
+ updated: null
+ })
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_MobileReport_MobileMessagingSettingsLink')), 9, _hoisted_6)])];
+ }),
+ _: 1
+ }, 8, ["model-value", "introduction", "title", "disabled", "options"])]);
+}
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue?vue&type=template&id=12d83df9
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./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/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue?vue&type=script&lang=ts
-var ManageSmsProvidervue_type_template_id_d55b293c_hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+
+
+/* harmony default export */ var SelectPhoneNumbersvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ modelValue: Array,
+ phoneNumbers: {
+ type: [Array, Object],
+ required: true
+ },
+ withIntroduction: Boolean
+ },
+ emits: ['update:modelValue'],
+ components: {
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ methods: {
+ linkTo: function linkTo(params) {
+ return "?".concat(external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), params)));
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue
+
+
+
+SelectPhoneNumbersvue_type_script_lang_ts.render = SelectPhoneNumbersvue_type_template_id_12d83df9_render
+
+/* harmony default export */ var SelectPhoneNumbers = (SelectPhoneNumbersvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+/* harmony default export */ var SelectPhoneNumbers_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: SelectPhoneNumbers,
+ require: '?ngModel',
+ scope: {
+ phoneNumbers: {
+ angularJsBind: '<'
+ },
+ withIntroduction: {
+ angularJsBind: '<'
+ },
+ value: {
+ angularJsBind: '<',
+ vue: 'modelValue'
+ }
+ },
+ $inject: ['$timeout'],
+ directiveName: 'matomoSelectPhoneNumbers',
+ events: {
+ 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, ngModel, $timeout) {
+ if (!ngModel) {
+ return;
+ }
+
+ if (newValue !== ngModel.$viewValue) {
+ $timeout(function () {
+ ngModel.$setViewValue(newValue);
+ ngModel.$render(); // not detected by the watch for some reason
+ });
+ }
+ }
+ },
+ postCreate: function postCreate(vm, scope, element, attrs, controller) {
+ var ngModel = controller; // ngModel being used
+
+ ngModel.$render = function () {
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ vm.modelValue = Object(external_CoreHome_["removeAngularJsSpecificProperties"])(ngModel.$viewValue);
+ });
+ };
+
+ if (typeof scope.value !== 'undefined') {
+ ngModel.$setViewValue(scope.value);
+ } else {
+ ngModel.$setViewValue(vm.modelValue);
+ }
+ }
+}));
+// 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/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue?vue&type=template&id=5f520e2e
+
+var ReportParametersvue_type_template_id_5f520e2e_hoisted_1 = {
+ key: 0
+};
+function ReportParametersvue_type_template_id_5f520e2e_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_SelectPhoneNumbers = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SelectPhoneNumbers");
+
+ return _ctx.report && _ctx.report.type === 'mobile' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReportParametersvue_type_template_id_5f520e2e_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SelectPhoneNumbers, {
+ "phone-numbers": _ctx.phoneNumbers,
+ "with-introduction": true,
+ "model-value": _ctx.report.phoneNumbers,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.$emit('change', 'phoneNumbers', $event);
+ })
+ }, null, 8, ["phone-numbers", "model-value"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true);
+}
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue?vue&type=template&id=5f520e2e
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./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/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue?vue&type=script&lang=ts
+
+
+var REPORT_TYPE = 'mobile';
+/* harmony default export */ var ReportParametersvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ report: {
+ type: Object,
+ required: true
+ },
+ phoneNumbers: {
+ type: [Array, Object],
+ required: true
+ }
+ },
+ components: {
+ SelectPhoneNumbers: SelectPhoneNumbers
+ },
+ emits: ['change'],
+ created: function created() {
+ var _window = window,
+ resetReportParametersFunctions = _window.resetReportParametersFunctions,
+ updateReportParametersFunctions = _window.updateReportParametersFunctions,
+ getReportParametersFunctions = _window.getReportParametersFunctions;
+
+ if (!resetReportParametersFunctions[REPORT_TYPE]) {
+ resetReportParametersFunctions[REPORT_TYPE] = function (report) {
+ report.phoneNumbers = [];
+ report.formatmobile = 'sms';
+ };
+ }
+
+ if (!updateReportParametersFunctions[REPORT_TYPE]) {
+ updateReportParametersFunctions[REPORT_TYPE] = function (report) {
+ if (!(report !== null && report !== void 0 && report.parameters)) {
+ return;
+ }
+
+ if (report.parameters && report.parameters.phoneNumbers) {
+ report.phoneNumbers = report.parameters.phoneNumbers;
+ }
+
+ report.formatmobile = 'sms';
+ };
+ }
+
+ if (!getReportParametersFunctions[REPORT_TYPE]) {
+ getReportParametersFunctions[REPORT_TYPE] = function (report) {
+ // returning [''] when no phone numbers are selected avoids the "please provide a value
+ // for 'parameters'" error message
+ var phoneNumbers = report.phoneNumbers;
+ return {
+ phoneNumbers: phoneNumbers || ['']
+ };
+ };
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue
+
+
+
+ReportParametersvue_type_script_lang_ts.render = ReportParametersvue_type_template_id_5f520e2e_render
+
+/* harmony default export */ var ReportParameters = (ReportParametersvue_type_script_lang_ts);
+// 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/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=6fdded90
+
+
+var ManageSmsProvidervue_type_template_id_6fdded90_hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
id: "ajaxErrorManageSmsProviderSettings"
}, null, -1);
-var _hoisted_2 = {
+var ManageSmsProvidervue_type_template_id_6fdded90_hoisted_2 = {
key: 0
};
-var _hoisted_3 = {
+var ManageSmsProvidervue_type_template_id_6fdded90_hoisted_3 = {
key: 0
};
-var _hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageSmsProvidervue_type_template_id_6fdded90_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_5 = {
+var ManageSmsProvidervue_type_template_id_6fdded90_hoisted_5 = {
key: 1
};
-var _hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageSmsProvidervue_type_template_id_6fdded90_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
var _hoisted_7 = ["innerHTML"];
var _hoisted_8 = {
@@ -343,7 +584,7 @@ var _hoisted_9 = {
id: "accountForm"
};
var _hoisted_10 = ["innerHTML"];
-function ManageSmsProvidervue_type_template_id_d55b293c_render(_ctx, _cache, $props, $setup, $data, $options) {
+function ManageSmsProvidervue_type_template_id_6fdded90_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
@@ -356,7 +597,7 @@ function ManageSmsProvidervue_type_template_id_d55b293c_render(_ctx, _cache, $pr
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.isDeletingAccount
- }, null, 8, ["loading"]), ManageSmsProvidervue_type_template_id_d55b293c_hoisted_1, _ctx.credentialSupplied ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_2, [_ctx.credentialError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialInvalid', _ctx.provider)), 1), _hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.credentialError), 1)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialProvided', _ctx.provider)) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.creditLeft), 1)), _hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, ["loading"]), ManageSmsProvidervue_type_template_id_6fdded90_hoisted_1, _ctx.credentialSupplied ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", ManageSmsProvidervue_type_template_id_6fdded90_hoisted_2, [_ctx.credentialError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageSmsProvidervue_type_template_id_6fdded90_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialInvalid', _ctx.provider)), 1), ManageSmsProvidervue_type_template_id_6fdded90_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.credentialError), 1)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageSmsProvidervue_type_template_id_6fdded90_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialProvided', _ctx.provider)) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.creditLeft), 1)), ManageSmsProvidervue_type_template_id_6fdded90_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.updateOrDeleteAccountText),
onClick: _cache[0] || (_cache[0] = function ($event) {
return _ctx.onUpdateOrDeleteClick($event);
@@ -392,7 +633,7 @@ function ManageSmsProvidervue_type_template_id_d55b293c_render(_ctx, _cache, $pr
innerHTML: _ctx.$sanitize(_ctx.currentProviderDescription)
}, null, 8, _hoisted_10)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.credentialSupplied || _ctx.showAccountForm], [_directive_form]])]);
}
-// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=d55b293c
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=6fdded90
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./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/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=script&lang=ts
@@ -428,7 +669,7 @@ function ManageSmsProvidervue_type_template_id_d55b293c_render(_ctx, _cache, $pr
isDeletingAccount: false,
isUpdatingAccount: false,
showAccountForm: false,
- credentials: {},
+ credentials: null,
smsProvider: this.provider
};
},
@@ -501,7 +742,7 @@ function ManageSmsProvidervue_type_template_id_d55b293c_render(_ctx, _cache, $pr
computed: {
isUpdateAccountPossible: function isUpdateAccountPossible() {
// possible if smsProvider is set and all credential field values are set to something
- return !!this.smsProvider && Object.keys(this.credentials).length > 0 && Object.values(this.credentials).every(function (v) {
+ return !!this.smsProvider && this.credentials !== null && Object.values(this.credentials).every(function (v) {
return !!v;
});
},
@@ -523,7 +764,7 @@ function ManageSmsProvidervue_type_template_id_d55b293c_render(_ctx, _cache, $pr
-ManageSmsProvidervue_type_script_lang_ts.render = ManageSmsProvidervue_type_template_id_d55b293c_render
+ManageSmsProvidervue_type_script_lang_ts.render = ManageSmsProvidervue_type_template_id_6fdded90_render
/* harmony default export */ var ManageSmsProvider = (ManageSmsProvidervue_type_script_lang_ts);
// 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/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue?vue&type=template&id=8e4eafcc
@@ -930,6 +1171,9 @@ ManageMobilePhoneNumbersvue_type_script_lang_ts.render = ManageMobilePhoneNumber
+
+
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js
index b023258275..f761c45737 100644
--- a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js
+++ b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js
@@ -1,10 +1,16 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["MobileMessaging"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["MobileMessaging"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},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 o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},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/MobileMessaging/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ManageSmsProvider",(function(){return y})),n.d(t,"SmsProviderCredentials",(function(){return b})),n.d(t,"DelegateMobileMessagingSettings",(function(){return E})),n.d(t,"ManageMobilePhoneNumbers",(function(){return ee})),"undefined"!==typeof window){var o=window.document.currentScript,i=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("8bbf"),l=n("19dc");function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var c={key:0};function s(e,t,n,o,i,l){var s=Object(r["resolveComponent"])("Field");return e.fields?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",c,[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.fields,(function(t){var n;return Object(r["openBlock"])(),Object(r["createBlock"])(s,{key:t.name,uicontrol:t.type,name:t.name,"model-value":null===(n=e.modelValue)||void 0===n?void 0:n[t.name],"onUpdate:modelValue":function(n){return e.$emit("update:modelValue",Object.assign(Object.assign({},e.modelValue),{},a({},t.name,n)))},title:e.translate(t.title)},null,8,["uicontrol","name","model-value","onUpdate:modelValue","title"])})),128))])):Object(r["createCommentVNode"])("",!0)}var d=n("a5a2"),u=Object(r["reactive"])({}),m=Object(r["defineComponent"])({props:{provider:{type:String,required:!0},modelValue:{type:Object,required:!0}},emits:["update:modelValue"],components:{Field:d["Field"]},watch:{provider:function(){this.$emit("update:modelValue",{}),this.getCredentialFields()}},created:function(){this.getCredentialFields()},methods:{getCredentialFields:function(){var e=this;u[this.provider]||l["AjaxHelper"].fetch({module:"MobileMessaging",action:"getCredentialFields",provider:this.provider}).then((function(t){u[e.provider]=t}))}},computed:{fields:function(){return u[this.provider]}}});m.render=s;var b=m,p=(Object(l["createAngularJsAdapter"])({component:b,scope:{provider:{angularJsBind:"="},credentials:{angularJsBind:"=value"}},directiveName:"smsProviderCredentials",transclude:!0,events:{"update:modelValue":function(e,t,n,o,i,r,l){var a=r?r.$viewValue:n.value;e!==a&&l((function(){r?(r.$setViewValue(e),r.$render()):n.value=e}))}},postCreate:function(e,t,n,o,i){var a=i;a?(a.$render=function(){Object(r["nextTick"])((function(){e.modelValue=Object(l["removeAngularJsSpecificProperties"])(a.$viewValue)}))},"undefined"!==typeof t.value?a.$setViewValue(t.value):a.$setViewValue(e.modelValue)):t.$watch("value",(function(t){t!==e.modelValue&&Object(r["nextTick"])((function(){e.modelValue=t}))}))}}),Object(r["createElementVNode"])("div",{id:"ajaxErrorManageSmsProviderSettings"},null,-1)),g={key:0},v={key:0},f=Object(r["createElementVNode"])("br",null,null,-1),h={key:1},j=Object(r["createElementVNode"])("br",null,null,-1),O=["innerHTML"],N={key:1},C={id:"accountForm"},M=["innerHTML"];
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["MobileMessaging"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["MobileMessaging"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},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 o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},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/MobileMessaging/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ReportParameters",(function(){return P})),n.d(t,"ManageSmsProvider",(function(){return T})),n.d(t,"SmsProviderCredentials",(function(){return b})),n.d(t,"DelegateMobileMessagingSettings",(function(){return L})),n.d(t,"ManageMobilePhoneNumbers",(function(){return pe})),n.d(t,"SelectPhoneNumbers",(function(){return V})),"undefined"!==typeof window){var o=window.document.currentScript,r=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("8bbf"),l=n("19dc");function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var c={key:0};function s(e,t,n,o,r,l){var s=Object(i["resolveComponent"])("Field");return e.fields?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",c,[(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.fields,(function(t){var n;return Object(i["openBlock"])(),Object(i["createBlock"])(s,{key:t.name,uicontrol:t.type,name:t.name,"model-value":null===(n=e.modelValue)||void 0===n?void 0:n[t.name],"onUpdate:modelValue":function(n){return e.$emit("update:modelValue",Object.assign(Object.assign({},e.modelValue),{},a({},t.name,n)))},title:e.translate(t.title)},null,8,["uicontrol","name","model-value","onUpdate:modelValue","title"])})),128))])):Object(i["createCommentVNode"])("",!0)}var d=n("a5a2"),u=Object(i["reactive"])({}),m=Object(i["defineComponent"])({props:{provider:{type:String,required:!0},modelValue:Object},emits:["update:modelValue"],components:{Field:d["Field"]},watch:{provider:function(){this.$emit("update:modelValue",null),this.getCredentialFields()}},created:function(){this.getCredentialFields()},methods:{getCredentialFields:function(){var e=this;u[this.provider]?this.$emit("update:modelValue",Object.fromEntries(u[this.provider].map((function(e){return[e.name,null]})))):l["AjaxHelper"].fetch({module:"MobileMessaging",action:"getCredentialFields",provider:this.provider}).then((function(t){e.$emit("update:modelValue",Object.fromEntries(t.map((function(e){return[e.name,null]})))),u[e.provider]=t}))}},computed:{fields:function(){return u[this.provider]}}});m.render=s;var b=m,p=(Object(l["createAngularJsAdapter"])({component:b,scope:{provider:{angularJsBind:"="},credentials:{angularJsBind:"=value"}},directiveName:"smsProviderCredentials",transclude:!0,events:{"update:modelValue":function(e,t,n,o,r,i,l){var a=i?i.$viewValue:n.value;e!==a&&l((function(){i?(i.$setViewValue(e),i.$render()):n.value=e}))}},postCreate:function(e,t,n,o,r){var a=r;a?(a.$render=function(){Object(i["nextTick"])((function(){e.modelValue=Object(l["removeAngularJsSpecificProperties"])(a.$viewValue)}))},"undefined"!==typeof t.value?a.$setViewValue(t.value):a.$setViewValue(e.modelValue)):t.$watch("value",(function(t){t!==e.modelValue&&Object(i["nextTick"])((function(){e.modelValue=t}))}))}}),{class:"mobile"}),g={id:"mobilePhoneNumbersHelp",class:"inline-help-node"},v=Object(i["createElementVNode"])("span",{class:"icon-info",style:{"margin-right":"3.5px"}},null,-1),h={key:0,style:{"margin-right":"3.5px"}},f={key:1,style:{"margin-right":"3.5px"}},j=["href"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function V(e,t,n,o,i,l){var a=Object(r["resolveComponent"])("ActivityIndicator"),c=Object(r["resolveComponent"])("Field"),s=Object(r["resolveComponent"])("SmsProviderCredentials"),d=Object(r["resolveComponent"])("SaveButton"),u=Object(r["resolveDirective"])("form");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[Object(r["createVNode"])(a,{loading:e.isDeletingAccount},null,8,["loading"]),p,e.credentialSupplied?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",g,[e.credentialError?(Object(r["openBlock"])(),Object(r["createElementBlock"])("span",v,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialInvalid",e.provider)),1),f,Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.credentialError),1)])):(Object(r["openBlock"])(),Object(r["createElementBlock"])("span",h,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialProvided",e.provider))+" "+Object(r["toDisplayString"])(e.creditLeft),1)),j,Object(r["createElementVNode"])("span",{innerHTML:e.$sanitize(e.updateOrDeleteAccountText),onClick:t[0]||(t[0]=function(t){return e.onUpdateOrDeleteClick(t)})},null,8,O)])):(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",N,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PleaseSignUp")),1)),Object(r["withDirectives"])(Object(r["createElementVNode"])("div",C,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(c,{uicontrol:"select",name:"smsProviders",modelValue:e.smsProvider,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.smsProvider=t}),title:e.translate("MobileMessaging_Settings_SMSProvider"),options:e.smsProviderOptions,value:e.provider},null,8,["modelValue","title","options","value"])]),Object(r["createVNode"])(s,{provider:e.smsProvider,modelValue:e.credentials,"onUpdate:modelValue":[t[2]||(t[2]=function(t){return e.credentials=t}),t[3]||(t[3]=function(t){e.credentials=t})],"model-value":e.credentials},null,8,["provider","modelValue","model-value"]),Object(r["createVNode"])(d,{id:"apiAccountSubmit",disabled:!e.isUpdateAccountPossible,saving:e.isUpdatingAccount,onConfirm:t[4]||(t[4]=function(t){return e.updateAccount()})},null,8,["disabled","saving"]),Object(r["createElementVNode"])("div",{class:"providerDescription",innerHTML:e.$sanitize(e.currentProviderDescription)},null,8,M)],512),[[r["vShow"],!e.credentialSupplied||e.showAccountForm],[u]])])}var S=Object(r["defineComponent"])({props:{credentialSupplied:Boolean,credentialError:String,provider:String,creditLeft:[Number,String],smsProviderOptions:{type:Object,required:!0},smsProviders:{type:Object,required:!0}},components:{ActivityIndicator:l["ActivityIndicator"],Field:d["Field"],SaveButton:d["SaveButton"],SmsProviderCredentials:b},directives:{Form:d["Form"]},data:function(){return{isDeletingAccount:!1,isUpdatingAccount:!1,showAccountForm:!1,credentials:{},smsProvider:this.provider}},methods:{deleteApiAccount:function(){var e=this;this.isDeletingAccount=!0,l["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){l["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))},showUpdateAccount:function(){this.showAccountForm=!0},updateAccount:function(){var e=this;this.isUpdateAccountPossible&&(this.isUpdatingAccount=!0,l["AjaxHelper"].post({method:"MobileMessaging.setSMSAPICredential"},{provider:this.smsProvider,credentials:this.credentials},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){l["Matomo"].helper.redirect()})).finally((function(){e.isUpdatingAccount=!1})))},deleteAccount:function(){var e=this;l["Matomo"].helper.modalConfirm("#confirmDeleteAccount",{yes:function(){e.isDeletingAccount=!0,l["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){e.isDeletingAccount=!1,l["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))}})},onUpdateOrDeleteClick:function(e){var t=e.target;"displayAccountForm"===t.id?this.showUpdateAccount():"deleteAccount"===t.id&&this.deleteAccount()}},computed:{isUpdateAccountPossible:function(){return!!this.smsProvider&&Object.keys(this.credentials).length>0&&Object.values(this.credentials).every((function(e){return!!e}))},updateOrDeleteAccountText:function(){return Object(l["translate"])("MobileMessaging_Settings_UpdateOrDeleteAccount",'<a id="displayAccountForm">',"</a>",'<a id="deleteAccount">',"</a>")},currentProviderDescription:function(){return this.smsProvider&&this.smsProviders?this.smsProviders[this.smsProvider]:""}}});S.render=V;var y=S;function P(e,t,n,o,i,l){var a=Object(r["resolveComponent"])("Field"),c=Object(r["resolveComponent"])("SaveButton");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"radio",name:"delegatedManagement",title:e.translate("MobileMessaging_Settings_LetUsersManageAPICredential"),modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),"full-width":!0,options:e.delegateManagementOptions},null,8,["title","modelValue","options"])]),Object(r["createVNode"])(c,{onConfirm:t[1]||(t[1]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])])}var A=Object(r["defineComponent"])({props:{delegateManagementOptions:{type:Array,required:!0},delegatedManagement:[Number,Boolean]},components:{Field:d["Field"],SaveButton:d["SaveButton"]},data:function(){return{isLoading:!1,enabled:this.delegatedManagement?1:0}},methods:{save:function(){var e=this;this.isLoading=!0,l["AjaxHelper"].post({method:"MobileMessaging.setDelegatedManagement"},{delegatedManagement:this.enabled&&"0"!==this.enabled?"true":"false"}).then((function(){var e=l["NotificationsStore"].show({message:Object(l["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"mobileMessagingSettings",type:"transient",context:"success"});l["NotificationsStore"].scrollToNotification(e),l["Matomo"].helper.redirect()})).finally((function(){e.isLoading=!1}))}}});A.render=P;var E=A,_={key:0},k={class:"row"},x={class:"col s12"},B={class:"form-group row"},w={class:"col s12 m6"},D={class:"col s12 m6 form-help"},U={class:"form-group row addPhoneNumber"},F={class:"col s12 m6"},H={class:"countryCode left"},T=Object(r["createElementVNode"])("span",{class:"countryCodeSymbol"},"+",-1),q={class:"phoneNumber left"},I={class:"addNumber left valign-wrapper"},L={class:"col s12 m6 form-help"},$=Object(r["createElementVNode"])("div",{id:"ajaxErrorAddPhoneNumber"},null,-1),J={key:1,class:"row"},z={class:"col s12"},G={class:"col s12 m6"},R={class:"phoneNumber"},Y=["onUpdate:modelValue","placeholder"],K={key:0,class:"form-help col s12 m6"},Q=Object(r["createTextVNode"])("   "),W=Object(r["createElementVNode"])("div",{id:"invalidVerificationCodeAjaxError",style:{display:"none"}},null,-1);function X(e,t,n,o,i,l){var a=Object(r["resolveComponent"])("Field"),c=Object(r["resolveComponent"])("SaveButton"),s=Object(r["resolveComponent"])("Alert"),d=Object(r["resolveComponent"])("ActivityIndicator");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[Object(r["createElementVNode"])("p",null,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_Help")),1),e.isSuperUser?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",_,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_DelegatedPhoneNumbersOnlyUsedByYou")),1)):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("div",k,[Object(r["createElementVNode"])("h3",x,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_Add")),1)]),Object(r["createElementVNode"])("div",B,[Object(r["createElementVNode"])("div",w,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"select",name:"countryCodeSelect",title:e.translate("MobileMessaging_Settings_SelectCountry"),modelValue:e.countryCallingCode,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.countryCallingCode=t}),"full-width":!0,options:e.countries},null,8,["title","modelValue","options"])])]),Object(r["createElementVNode"])("div",D,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_CountryCode_Help")),1)]),Object(r["createElementVNode"])("div",U,[Object(r["createElementVNode"])("div",F,[Object(r["createElementVNode"])("div",H,[T,Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"text",name:"countryCallingCode",title:e.translate("MobileMessaging_Settings_CountryCode"),modelValue:e.countryCallingCode,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.countryCallingCode=t}),"full-width":!0,maxlength:4},null,8,["title","modelValue"])])]),Object(r["createElementVNode"])("div",q,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"text",name:"newPhoneNumber",modelValue:e.newPhoneNumber,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.newPhoneNumber=t}),title:e.translate("MobileMessaging_Settings_PhoneNumber"),"full-width":!0,maxlength:80},null,8,["modelValue","title"])])]),Object(r["createElementVNode"])("div",I,[Object(r["createVNode"])(c,{class:"valign",disabled:!e.canAddNumber||e.isAddingPhonenumber,onConfirm:t[3]||(t[3]=function(t){return e.addPhoneNumber()}),value:e.translate("General_Add")},null,8,["disabled","value"])]),Object(r["withDirectives"])(Object(r["createVNode"])(s,{severity:"warning",id:"suspiciousPhoneNumber"},{default:Object(r["withCtx"])((function(){return[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_SuspiciousPhoneNumber","54184032")),1)]})),_:1},512),[[r["vShow"],e.showSuspiciousPhoneNumber]])]),Object(r["createElementVNode"])("div",L,Object(r["toDisplayString"])(e.strHelpAddPhone),1)]),$,Object(r["createVNode"])(d,{loading:e.isAddingPhonenumber},null,8,["loading"]),Object.keys(e.phoneNumbers||{}).length>0?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",J,[Object(r["createElementVNode"])("h3",z,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_ManagePhoneNumbers")),1)])):Object(r["createCommentVNode"])("",!0),(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.phoneNumbers||[],(function(t,n,o){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",{class:"form-group row",key:o},[Object(r["createElementVNode"])("div",G,[Object(r["createElementVNode"])("span",R,Object(r["toDisplayString"])(n),1),t||e.isActivated[o]?Object(r["createCommentVNode"])("",!0):Object(r["withDirectives"])((Object(r["openBlock"])(),Object(r["createElementBlock"])("input",{key:0,type:"text",class:"verificationCode","onUpdate:modelValue":function(t){return e.validationCode[o]=t},placeholder:e.translate("MobileMessaging_Settings_EnterActivationCode"),style:{"margin-right":"3.5px"}},null,8,Y)),[[r["vModelText"],e.validationCode[o]]]),t||e.isActivated[o]?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createBlock"])(c,{key:1,disabled:!e.validationCode[o]||e.isChangingPhoneNumber,onConfirm:function(t){return e.validateActivationCode(n,o)},value:e.translate("MobileMessaging_Settings_ValidatePhoneNumber")},null,8,["disabled","onConfirm","value"])),Object(r["createVNode"])(c,{disabled:e.isChangingPhoneNumber,onConfirm:function(t){return e.removePhoneNumber(n)},value:e.translate("General_Remove"),style:{"margin-left":"3.5px"}},null,8,["disabled","onConfirm","value"])]),t||e.isActivated[o]?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",K,[Object(r["createElementVNode"])("div",null,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_VerificationCodeJustSent")),1),Q]))])})),128)),W,Object(r["createVNode"])(d,{loading:e.isChangingPhoneNumber},null,8,["loading"])])}var Z=Object(r["defineComponent"])({props:{isSuperUser:Boolean,defaultCallingCode:String,countries:{type:Array,required:!0},strHelpAddPhone:{type:String,required:!0},phoneNumbers:Object},components:{Field:d["Field"],SaveButton:d["SaveButton"],Alert:l["Alert"],ActivityIndicator:l["ActivityIndicator"]},data:function(){return{isAddingPhonenumber:!1,isChangingPhoneNumber:!1,isActivated:{},countryCallingCode:this.defaultCallingCode||"",newPhoneNumber:"",validationCode:{}}},methods:{validateActivationCode:function(e,t){var n=this;if(this.validationCode[t]){var o=this.validationCode[t];this.isChangingPhoneNumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.validatePhoneNumber"},{phoneNumber:e,verificationCode:o},{errorElement:"#invalidVerificationCodeAjaxError"}).then((function(e){var o;if(n.isChangingPhoneNumber=!1,e&&e.value){var i=Object(l["translate"])("MobileMessaging_Settings_PhoneActivated");o=l["NotificationsStore"].show({message:i,context:"success",id:"MobileMessaging_ValidatePhoneNumber",type:"transient"}),n.isActivated[t]=!0}else{var r=Object(l["translate"])("MobileMessaging_Settings_InvalidActivationCode");o=l["NotificationsStore"].show({message:r,context:"error",id:"MobileMessaging_ValidatePhoneNumber",type:"transient"})}l["NotificationsStore"].scrollToNotification(o)})).finally((function(){n.isChangingPhoneNumber=!1}))}},removePhoneNumber:function(e){var t=this;e&&(this.isChangingPhoneNumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.removePhoneNumber"},{phoneNumber:e},{errorElement:"#invalidVerificationCodeAjaxError"}).then((function(){t.isChangingPhoneNumber=!1,l["Matomo"].helper.redirect()})).finally((function(){t.isChangingPhoneNumber=!1})))},addPhoneNumber:function(){var e=this,t="+".concat(this.countryCallingCode).concat(this.newPhoneNumber);this.canAddNumber&&t.length>1&&(this.isAddingPhonenumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.addPhoneNumber"},{phoneNumber:t},{errorElement:"#ajaxErrorAddPhoneNumber"}).then((function(){e.isAddingPhonenumber=!1,l["Matomo"].helper.redirect()})).finally((function(){e.isAddingPhonenumber=!1})))}},computed:{showSuspiciousPhoneNumber:function(){return 0===this.newPhoneNumber.trim().lastIndexOf("0",0)},canAddNumber:function(){return!!this.newPhoneNumber&&""!==this.newPhoneNumber}}});Z.render=X;var ee=Z;
+ */function O(e,t,n,o,r,l){var a=Object(i["resolveComponent"])("Field");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",p,[Object(i["createVNode"])(a,{uicontrol:"checkbox","var-type":"array",name:"phoneNumbers","model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t)}),introduction:e.withIntroduction?e.translate("ScheduledReports_SendReportTo"):void 0,title:e.translate("MobileMessaging_PhoneNumbers"),disabled:0===e.phoneNumbers.length,options:e.phoneNumbers},{"inline-help":Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",g,[v,0===e.phoneNumbers.length?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",h,Object(i["toDisplayString"])(e.translate("MobileMessaging_MobileReport_NoPhoneNumbers")),1)):(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",f,Object(i["toDisplayString"])(e.translate("MobileMessaging_MobileReport_AdditionalPhoneNumbers")),1)),Object(i["createElementVNode"])("a",{href:e.linkTo({module:"MobileMessaging",action:"index",updated:null})},Object(i["toDisplayString"])(e.translate("MobileMessaging_MobileReport_MobileMessagingSettingsLink")),9,j)])]})),_:1},8,["model-value","introduction","title","disabled","options"])])}var N=Object(i["defineComponent"])({props:{modelValue:Array,phoneNumbers:{type:[Array,Object],required:!0},withIntroduction:Boolean},emits:["update:modelValue"],components:{Field:d["Field"]},methods:{linkTo:function(e){return"?".concat(l["MatomoUrl"].stringify(Object.assign(Object.assign({},l["MatomoUrl"].urlParsed.value),e)))}}});N.render=O;var V=N,M=(Object(l["createAngularJsAdapter"])({component:V,require:"?ngModel",scope:{phoneNumbers:{angularJsBind:"<"},withIntroduction:{angularJsBind:"<"},value:{angularJsBind:"<",vue:"modelValue"}},$inject:["$timeout"],directiveName:"matomoSelectPhoneNumbers",events:{"update:modelValue":function(e,t,n,o,r,i,l){i&&e!==i.$viewValue&&l((function(){i.$setViewValue(e),i.$render()}))}},postCreate:function(e,t,n,o,r){var a=r;a.$render=function(){Object(i["nextTick"])((function(){e.modelValue=Object(l["removeAngularJsSpecificProperties"])(a.$viewValue)}))},"undefined"!==typeof t.value?a.$setViewValue(t.value):a.$setViewValue(e.modelValue)}}),{key:0});
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function y(e,t,n,o,r,l){var a=Object(i["resolveComponent"])("SelectPhoneNumbers");return e.report&&"mobile"===e.report.type?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",M,[Object(i["createVNode"])(a,{"phone-numbers":e.phoneNumbers,"with-introduction":!0,"model-value":e.report.phoneNumbers,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("change","phoneNumbers",t)})},null,8,["phone-numbers","model-value"])])):Object(i["createCommentVNode"])("",!0)}var C="mobile",S=Object(i["defineComponent"])({props:{report:{type:Object,required:!0},phoneNumbers:{type:[Array,Object],required:!0}},components:{SelectPhoneNumbers:V},emits:["change"],created:function(){var e=window,t=e.resetReportParametersFunctions,n=e.updateReportParametersFunctions,o=e.getReportParametersFunctions;t[C]||(t[C]=function(e){e.phoneNumbers=[],e.formatmobile="sms"}),n[C]||(n[C]=function(e){null!==e&&void 0!==e&&e.parameters&&(e.parameters&&e.parameters.phoneNumbers&&(e.phoneNumbers=e.parameters.phoneNumbers),e.formatmobile="sms")}),o[C]||(o[C]=function(e){var t=e.phoneNumbers;return{phoneNumbers:t||[""]}})}});S.render=y;var P=S,A=Object(i["createElementVNode"])("div",{id:"ajaxErrorManageSmsProviderSettings"},null,-1),E={key:0},k={key:0},_=Object(i["createElementVNode"])("br",null,null,-1),B={key:1},w=Object(i["createElementVNode"])("br",null,null,-1),x=["innerHTML"],D={key:1},F={id:"accountForm"},U=["innerHTML"];function $(e,t,n,o,r,l){var a=Object(i["resolveComponent"])("ActivityIndicator"),c=Object(i["resolveComponent"])("Field"),s=Object(i["resolveComponent"])("SmsProviderCredentials"),d=Object(i["resolveComponent"])("SaveButton"),u=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createVNode"])(a,{loading:e.isDeletingAccount},null,8,["loading"]),A,e.credentialSupplied?(Object(i["openBlock"])(),Object(i["createElementBlock"])("p",E,[e.credentialError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialInvalid",e.provider)),1),_,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.credentialError),1)])):(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",B,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialProvided",e.provider))+" "+Object(i["toDisplayString"])(e.creditLeft),1)),w,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.updateOrDeleteAccountText),onClick:t[0]||(t[0]=function(t){return e.onUpdateOrDeleteClick(t)})},null,8,x)])):(Object(i["openBlock"])(),Object(i["createElementBlock"])("p",D,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_PleaseSignUp")),1)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(c,{uicontrol:"select",name:"smsProviders",modelValue:e.smsProvider,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.smsProvider=t}),title:e.translate("MobileMessaging_Settings_SMSProvider"),options:e.smsProviderOptions,value:e.provider},null,8,["modelValue","title","options","value"])]),Object(i["createVNode"])(s,{provider:e.smsProvider,modelValue:e.credentials,"onUpdate:modelValue":[t[2]||(t[2]=function(t){return e.credentials=t}),t[3]||(t[3]=function(t){e.credentials=t})],"model-value":e.credentials},null,8,["provider","modelValue","model-value"]),Object(i["createVNode"])(d,{id:"apiAccountSubmit",disabled:!e.isUpdateAccountPossible,saving:e.isUpdatingAccount,onConfirm:t[4]||(t[4]=function(t){return e.updateAccount()})},null,8,["disabled","saving"]),Object(i["createElementVNode"])("div",{class:"providerDescription",innerHTML:e.$sanitize(e.currentProviderDescription)},null,8,U)],512),[[i["vShow"],!e.credentialSupplied||e.showAccountForm],[u]])])}var H=Object(i["defineComponent"])({props:{credentialSupplied:Boolean,credentialError:String,provider:String,creditLeft:[Number,String],smsProviderOptions:{type:Object,required:!0},smsProviders:{type:Object,required:!0}},components:{ActivityIndicator:l["ActivityIndicator"],Field:d["Field"],SaveButton:d["SaveButton"],SmsProviderCredentials:b},directives:{Form:d["Form"]},data:function(){return{isDeletingAccount:!1,isUpdatingAccount:!1,showAccountForm:!1,credentials:null,smsProvider:this.provider}},methods:{deleteApiAccount:function(){var e=this;this.isDeletingAccount=!0,l["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){l["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))},showUpdateAccount:function(){this.showAccountForm=!0},updateAccount:function(){var e=this;this.isUpdateAccountPossible&&(this.isUpdatingAccount=!0,l["AjaxHelper"].post({method:"MobileMessaging.setSMSAPICredential"},{provider:this.smsProvider,credentials:this.credentials},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){l["Matomo"].helper.redirect()})).finally((function(){e.isUpdatingAccount=!1})))},deleteAccount:function(){var e=this;l["Matomo"].helper.modalConfirm("#confirmDeleteAccount",{yes:function(){e.isDeletingAccount=!0,l["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){e.isDeletingAccount=!1,l["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))}})},onUpdateOrDeleteClick:function(e){var t=e.target;"displayAccountForm"===t.id?this.showUpdateAccount():"deleteAccount"===t.id&&this.deleteAccount()}},computed:{isUpdateAccountPossible:function(){return!!this.smsProvider&&null!==this.credentials&&Object.values(this.credentials).every((function(e){return!!e}))},updateOrDeleteAccountText:function(){return Object(l["translate"])("MobileMessaging_Settings_UpdateOrDeleteAccount",'<a id="displayAccountForm">',"</a>",'<a id="deleteAccount">',"</a>")},currentProviderDescription:function(){return this.smsProvider&&this.smsProviders?this.smsProviders[this.smsProvider]:""}}});H.render=$;var T=H;function q(e,t,n,o,r,l){var a=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(a,{uicontrol:"radio",name:"delegatedManagement",title:e.translate("MobileMessaging_Settings_LetUsersManageAPICredential"),modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),"full-width":!0,options:e.delegateManagementOptions},null,8,["title","modelValue","options"])]),Object(i["createVNode"])(c,{onConfirm:t[1]||(t[1]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])])}var I=Object(i["defineComponent"])({props:{delegateManagementOptions:{type:Array,required:!0},delegatedManagement:[Number,Boolean]},components:{Field:d["Field"],SaveButton:d["SaveButton"]},data:function(){return{isLoading:!1,enabled:this.delegatedManagement?1:0}},methods:{save:function(){var e=this;this.isLoading=!0,l["AjaxHelper"].post({method:"MobileMessaging.setDelegatedManagement"},{delegatedManagement:this.enabled&&"0"!==this.enabled?"true":"false"}).then((function(){var e=l["NotificationsStore"].show({message:Object(l["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"mobileMessagingSettings",type:"transient",context:"success"});l["NotificationsStore"].scrollToNotification(e),l["Matomo"].helper.redirect()})).finally((function(){e.isLoading=!1}))}}});I.render=q;var L=I,J={key:0},R={class:"row"},z={class:"col s12"},G={class:"form-group row"},Y={class:"col s12 m6"},K={class:"col s12 m6 form-help"},Q={class:"form-group row addPhoneNumber"},W={class:"col s12 m6"},X={class:"countryCode left"},Z=Object(i["createElementVNode"])("span",{class:"countryCodeSymbol"},"+",-1),ee={class:"phoneNumber left"},te={class:"addNumber left valign-wrapper"},ne={class:"col s12 m6 form-help"},oe=Object(i["createElementVNode"])("div",{id:"ajaxErrorAddPhoneNumber"},null,-1),re={key:1,class:"row"},ie={class:"col s12"},le={class:"col s12 m6"},ae={class:"phoneNumber"},ce=["onUpdate:modelValue","placeholder"],se={key:0,class:"form-help col s12 m6"},de=Object(i["createTextVNode"])("   "),ue=Object(i["createElementVNode"])("div",{id:"invalidVerificationCodeAjaxError",style:{display:"none"}},null,-1);function me(e,t,n,o,r,l){var a=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("Alert"),d=Object(i["resolveComponent"])("ActivityIndicator");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_Help")),1),e.isSuperUser?(Object(i["openBlock"])(),Object(i["createElementBlock"])("p",J,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_DelegatedPhoneNumbersOnlyUsedByYou")),1)):Object(i["createCommentVNode"])("",!0),Object(i["createElementVNode"])("div",R,[Object(i["createElementVNode"])("h3",z,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_Add")),1)]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",Y,[Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(a,{uicontrol:"select",name:"countryCodeSelect",title:e.translate("MobileMessaging_Settings_SelectCountry"),modelValue:e.countryCallingCode,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.countryCallingCode=t}),"full-width":!0,options:e.countries},null,8,["title","modelValue","options"])])]),Object(i["createElementVNode"])("div",K,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_CountryCode_Help")),1)]),Object(i["createElementVNode"])("div",Q,[Object(i["createElementVNode"])("div",W,[Object(i["createElementVNode"])("div",X,[Z,Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(a,{uicontrol:"text",name:"countryCallingCode",title:e.translate("MobileMessaging_Settings_CountryCode"),modelValue:e.countryCallingCode,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.countryCallingCode=t}),"full-width":!0,maxlength:4},null,8,["title","modelValue"])])]),Object(i["createElementVNode"])("div",ee,[Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(a,{uicontrol:"text",name:"newPhoneNumber",modelValue:e.newPhoneNumber,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.newPhoneNumber=t}),title:e.translate("MobileMessaging_Settings_PhoneNumber"),"full-width":!0,maxlength:80},null,8,["modelValue","title"])])]),Object(i["createElementVNode"])("div",te,[Object(i["createVNode"])(c,{class:"valign",disabled:!e.canAddNumber||e.isAddingPhonenumber,onConfirm:t[3]||(t[3]=function(t){return e.addPhoneNumber()}),value:e.translate("General_Add")},null,8,["disabled","value"])]),Object(i["withDirectives"])(Object(i["createVNode"])(s,{severity:"warning",id:"suspiciousPhoneNumber"},{default:Object(i["withCtx"])((function(){return[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_SuspiciousPhoneNumber","54184032")),1)]})),_:1},512),[[i["vShow"],e.showSuspiciousPhoneNumber]])]),Object(i["createElementVNode"])("div",ne,Object(i["toDisplayString"])(e.strHelpAddPhone),1)]),oe,Object(i["createVNode"])(d,{loading:e.isAddingPhonenumber},null,8,["loading"]),Object.keys(e.phoneNumbers||{}).length>0?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",re,[Object(i["createElementVNode"])("h3",ie,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_ManagePhoneNumbers")),1)])):Object(i["createCommentVNode"])("",!0),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.phoneNumbers||[],(function(t,n,o){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"form-group row",key:o},[Object(i["createElementVNode"])("div",le,[Object(i["createElementVNode"])("span",ae,Object(i["toDisplayString"])(n),1),t||e.isActivated[o]?Object(i["createCommentVNode"])("",!0):Object(i["withDirectives"])((Object(i["openBlock"])(),Object(i["createElementBlock"])("input",{key:0,type:"text",class:"verificationCode","onUpdate:modelValue":function(t){return e.validationCode[o]=t},placeholder:e.translate("MobileMessaging_Settings_EnterActivationCode"),style:{"margin-right":"3.5px"}},null,8,ce)),[[i["vModelText"],e.validationCode[o]]]),t||e.isActivated[o]?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createBlock"])(c,{key:1,disabled:!e.validationCode[o]||e.isChangingPhoneNumber,onConfirm:function(t){return e.validateActivationCode(n,o)},value:e.translate("MobileMessaging_Settings_ValidatePhoneNumber")},null,8,["disabled","onConfirm","value"])),Object(i["createVNode"])(c,{disabled:e.isChangingPhoneNumber,onConfirm:function(t){return e.removePhoneNumber(n)},value:e.translate("General_Remove"),style:{"margin-left":"3.5px"}},null,8,["disabled","onConfirm","value"])]),t||e.isActivated[o]?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",se,[Object(i["createElementVNode"])("div",null,Object(i["toDisplayString"])(e.translate("MobileMessaging_Settings_VerificationCodeJustSent")),1),de]))])})),128)),ue,Object(i["createVNode"])(d,{loading:e.isChangingPhoneNumber},null,8,["loading"])])}var be=Object(i["defineComponent"])({props:{isSuperUser:Boolean,defaultCallingCode:String,countries:{type:Array,required:!0},strHelpAddPhone:{type:String,required:!0},phoneNumbers:Object},components:{Field:d["Field"],SaveButton:d["SaveButton"],Alert:l["Alert"],ActivityIndicator:l["ActivityIndicator"]},data:function(){return{isAddingPhonenumber:!1,isChangingPhoneNumber:!1,isActivated:{},countryCallingCode:this.defaultCallingCode||"",newPhoneNumber:"",validationCode:{}}},methods:{validateActivationCode:function(e,t){var n=this;if(this.validationCode[t]){var o=this.validationCode[t];this.isChangingPhoneNumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.validatePhoneNumber"},{phoneNumber:e,verificationCode:o},{errorElement:"#invalidVerificationCodeAjaxError"}).then((function(e){var o;if(n.isChangingPhoneNumber=!1,e&&e.value){var r=Object(l["translate"])("MobileMessaging_Settings_PhoneActivated");o=l["NotificationsStore"].show({message:r,context:"success",id:"MobileMessaging_ValidatePhoneNumber",type:"transient"}),n.isActivated[t]=!0}else{var i=Object(l["translate"])("MobileMessaging_Settings_InvalidActivationCode");o=l["NotificationsStore"].show({message:i,context:"error",id:"MobileMessaging_ValidatePhoneNumber",type:"transient"})}l["NotificationsStore"].scrollToNotification(o)})).finally((function(){n.isChangingPhoneNumber=!1}))}},removePhoneNumber:function(e){var t=this;e&&(this.isChangingPhoneNumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.removePhoneNumber"},{phoneNumber:e},{errorElement:"#invalidVerificationCodeAjaxError"}).then((function(){t.isChangingPhoneNumber=!1,l["Matomo"].helper.redirect()})).finally((function(){t.isChangingPhoneNumber=!1})))},addPhoneNumber:function(){var e=this,t="+".concat(this.countryCallingCode).concat(this.newPhoneNumber);this.canAddNumber&&t.length>1&&(this.isAddingPhonenumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.addPhoneNumber"},{phoneNumber:t},{errorElement:"#ajaxErrorAddPhoneNumber"}).then((function(){e.isAddingPhonenumber=!1,l["Matomo"].helper.redirect()})).finally((function(){e.isAddingPhonenumber=!1})))}},computed:{showSuspiciousPhoneNumber:function(){return 0===this.newPhoneNumber.trim().lastIndexOf("0",0)},canAddNumber:function(){return!!this.newPhoneNumber&&""!==this.newPhoneNumber}}});be.render=me;var pe=be;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/MobileMessaging/vue/dist/umd.metadata.json b/plugins/MobileMessaging/vue/dist/umd.metadata.json
index dce4477a3c..b0a1ba0ec5 100644
--- a/plugins/MobileMessaging/vue/dist/umd.metadata.json
+++ b/plugins/MobileMessaging/vue/dist/umd.metadata.json
@@ -1,6 +1,7 @@
{
"dependsOn": [
"CoreHome",
- "CorePluginsAdmin"
+ "CorePluginsAdmin",
+ "ScheduledReports"
]
} \ No newline at end of file
diff --git a/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue b/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue
index d2c415575f..cdf62c5469 100644
--- a/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue
+++ b/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue
@@ -76,7 +76,7 @@ interface ManageSmsProviderState {
isDeletingAccount: boolean;
isUpdatingAccount: boolean;
showAccountForm: boolean;
- credentials: Record<string, unknown>;
+ credentials: Record<string, unknown>|null;
smsProvider?: string;
}
@@ -109,7 +109,7 @@ export default defineComponent({
isDeletingAccount: false,
isUpdatingAccount: false,
showAccountForm: false,
- credentials: {},
+ credentials: null,
smsProvider: this.provider,
};
},
@@ -187,7 +187,7 @@ export default defineComponent({
isUpdateAccountPossible() {
// possible if smsProvider is set and all credential field values are set to something
return !!this.smsProvider
- && Object.keys(this.credentials).length > 0
+ && this.credentials !== null
&& Object.values(this.credentials as Record<string, string>).every((v) => !!v);
},
updateOrDeleteAccountText() {
diff --git a/plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue b/plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue
new file mode 100644
index 0000000000..d0c067265d
--- /dev/null
+++ b/plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue
@@ -0,0 +1,79 @@
+<!--
+ 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 v-if="report && report.type === 'mobile'">
+ <SelectPhoneNumbers
+ :phone-numbers="phoneNumbers"
+ :with-introduction="true"
+ :model-value="report.phoneNumbers"
+ @update:model-value="$emit('change', 'phoneNumbers', $event)"
+ />
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { Report } from 'ScheduledReports';
+import SelectPhoneNumbers from '../SelectPhoneNumbers/SelectPhoneNumbers.vue';
+
+const REPORT_TYPE = 'mobile';
+
+export default defineComponent({
+ props: {
+ report: {
+ type: Object,
+ required: true,
+ },
+ phoneNumbers: {
+ type: [Array, Object],
+ required: true,
+ },
+ },
+ components: {
+ SelectPhoneNumbers,
+ },
+ emits: ['change'],
+ created() {
+ const {
+ resetReportParametersFunctions,
+ updateReportParametersFunctions,
+ getReportParametersFunctions,
+ } = window;
+
+ if (!resetReportParametersFunctions[REPORT_TYPE]) {
+ resetReportParametersFunctions[REPORT_TYPE] = (report: Report) => {
+ report.phoneNumbers = [];
+ report.formatmobile = 'sms';
+ };
+ }
+
+ if (!updateReportParametersFunctions[REPORT_TYPE]) {
+ updateReportParametersFunctions[REPORT_TYPE] = (report: Report) => {
+ if (!report?.parameters) {
+ return;
+ }
+
+ if (report.parameters && report.parameters.phoneNumbers) {
+ report.phoneNumbers = report.parameters.phoneNumbers;
+ }
+ report.formatmobile = 'sms';
+ };
+ }
+
+ if (!getReportParametersFunctions[REPORT_TYPE]) {
+ getReportParametersFunctions[REPORT_TYPE] = (report: Report) => {
+ // returning [''] when no phone numbers are selected avoids the "please provide a value
+ // for 'parameters'" error message
+ const phoneNumbers: string[]|undefined = report.phoneNumbers as string[]|undefined;
+ return {
+ phoneNumbers: phoneNumbers || [''],
+ };
+ };
+ }
+ },
+});
+</script>
diff --git a/plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.adapter.ts b/plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.adapter.ts
new file mode 100644
index 0000000000..c1b79d5c56
--- /dev/null
+++ b/plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.adapter.ts
@@ -0,0 +1,60 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { INgModelController, ITimeoutService } from 'angular';
+import { nextTick } from 'vue';
+import { createAngularJsAdapter, removeAngularJsSpecificProperties } from 'CoreHome';
+import SelectPhoneNumbers from './SelectPhoneNumbers.vue';
+
+export default createAngularJsAdapter<[ITimeoutService]>({
+ component: SelectPhoneNumbers,
+ require: '?ngModel',
+ scope: {
+ phoneNumbers: {
+ angularJsBind: '<',
+ },
+ withIntroduction: {
+ angularJsBind: '<',
+ },
+ value: {
+ angularJsBind: '<',
+ vue: 'modelValue',
+ },
+ },
+ $inject: ['$timeout'],
+ directiveName: 'matomoSelectPhoneNumbers',
+ events: {
+ 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel, $timeout) => {
+ if (!ngModel) {
+ return;
+ }
+
+ if (newValue !== (ngModel as INgModelController).$viewValue) {
+ $timeout(() => {
+ (ngModel as INgModelController).$setViewValue(newValue);
+ (ngModel as INgModelController).$render(); // not detected by the watch for some reason
+ });
+ }
+ },
+ },
+ postCreate(vm, scope, element, attrs, controller) {
+ const ngModel = controller as INgModelController;
+
+ // ngModel being used
+ ngModel.$render = () => {
+ nextTick(() => {
+ vm.modelValue = removeAngularJsSpecificProperties(ngModel.$viewValue);
+ });
+ };
+
+ if (typeof scope.value !== 'undefined') {
+ (ngModel as INgModelController).$setViewValue(scope.value);
+ } else {
+ ngModel.$setViewValue(vm.modelValue);
+ }
+ },
+});
diff --git a/plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue b/plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue
new file mode 100644
index 0000000000..15a34dcd7e
--- /dev/null
+++ b/plugins/MobileMessaging/vue/src/SelectPhoneNumbers/SelectPhoneNumbers.vue
@@ -0,0 +1,66 @@
+<!--
+ 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='mobile'>
+ <Field
+ uicontrol="checkbox"
+ var-type="array"
+ name="phoneNumbers"
+ :model-value="modelValue"
+ @update:model-value="$emit('update:modelValue', $event)"
+ :introduction="withIntroduction ? translate('ScheduledReports_SendReportTo') : undefined"
+ :title="translate('MobileMessaging_PhoneNumbers')"
+ :disabled="phoneNumbers.length === 0"
+ :options="phoneNumbers"
+ >
+ <template v-slot:inline-help>
+ <div id="mobilePhoneNumbersHelp" class="inline-help-node">
+ <span class="icon-info" style="margin-right:3.5px"></span>
+
+ <span v-if="phoneNumbers.length === 0" style="margin-right:3.5px">
+ {{ translate('MobileMessaging_MobileReport_NoPhoneNumbers') }}
+ </span>
+ <span v-else style="margin-right:3.5px">
+ {{ translate('MobileMessaging_MobileReport_AdditionalPhoneNumbers') }}
+ </span>
+ <a :href="linkTo({ module: 'MobileMessaging', action: 'index', updated: null })">
+ {{ translate('MobileMessaging_MobileReport_MobileMessagingSettingsLink') }}
+ </a>
+ </div>
+ </template>
+ </Field>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { MatomoUrl } from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+
+export default defineComponent({
+ props: {
+ modelValue: Array,
+ phoneNumbers: {
+ type: [Array, Object],
+ required: true,
+ },
+ withIntroduction: Boolean,
+ },
+ emits: ['update:modelValue'],
+ components: {
+ Field,
+ },
+ methods: {
+ linkTo(params: QueryParameters) {
+ return `?${MatomoUrl.stringify({
+ ...MatomoUrl.urlParsed.value,
+ ...params,
+ })}`;
+ },
+ },
+});
+</script>
diff --git a/plugins/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue b/plugins/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue
index 34a6d8b8ff..7762eaecd2 100644
--- a/plugins/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue
+++ b/plugins/MobileMessaging/vue/src/SmsProviderCredentials/SmsProviderCredentials.vue
@@ -37,10 +37,7 @@ export default defineComponent({
type: String,
required: true,
},
- modelValue: {
- type: Object,
- required: true,
- },
+ modelValue: Object,
},
emits: ['update:modelValue'],
components: {
@@ -49,7 +46,7 @@ export default defineComponent({
watch: {
provider() {
// unset credentials when new provider is chosen
- this.$emit('update:modelValue', {});
+ this.$emit('update:modelValue', null);
// fetch fields for provider
this.getCredentialFields();
@@ -61,14 +58,21 @@ export default defineComponent({
methods: {
getCredentialFields() {
if (allFieldsByProvider[this.provider]) {
+ this.$emit(
+ 'update:modelValue',
+ Object.fromEntries(
+ (allFieldsByProvider[this.provider] as FieldInfo[]).map((f) => [f.name, null]),
+ ),
+ );
return;
}
- AjaxHelper.fetch({
+ AjaxHelper.fetch<FieldInfo[]>({
module: 'MobileMessaging',
action: 'getCredentialFields',
provider: this.provider,
}).then((fields) => {
+ this.$emit('update:modelValue', Object.fromEntries(fields.map((f) => [f.name, null])));
allFieldsByProvider[this.provider] = fields;
});
},
diff --git a/plugins/MobileMessaging/vue/src/index.ts b/plugins/MobileMessaging/vue/src/index.ts
index a26a2b9526..335b7ee0fc 100644
--- a/plugins/MobileMessaging/vue/src/index.ts
+++ b/plugins/MobileMessaging/vue/src/index.ts
@@ -6,8 +6,11 @@
*/
import './SmsProviderCredentials/SmsProviderCredentials.adapter';
+import './SelectPhoneNumbers/SelectPhoneNumbers.adapter';
+export { default as ReportParameters } from './ReportParameters/ReportParameters.vue';
export { default as ManageSmsProvider } from './ManageSmsProvider/ManageSmsProvider.vue';
export { default as SmsProviderCredentials } from './SmsProviderCredentials/SmsProviderCredentials.vue';
export { default as DelegateMobileMessagingSettings } from './DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue';
export { default as ManageMobilePhoneNumbers } from './ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue';
+export { default as SelectPhoneNumbers } from './SelectPhoneNumbers/SelectPhoneNumbers.vue';