New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@tager/admin-mail

Package Overview
Dependencies
Maintainers
2
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tager/admin-mail - npm Package Compare versions

Comparing version 0.2.0 to 0.2.1

0

CHANGELOG.md

@@ -0,0 +0,0 @@ # [0.0.2] (2020-06-06)

16

dist/index.esm.js

@@ -9,4 +9,4 @@ import Vue from 'vue';

}
function getTemplate(alias) {
return request.get({ path: '/admin/mail/templates', params: { alias } });
function getTemplate(templateId) {
return request.get({ path: `/admin/mail/templates/${templateId}` });
}

@@ -303,7 +303,7 @@ function updateTemplate(alias, payload) {

if (!inject) return
inject("data-v-5edcf0f2_0", { source: "\n\n/*# sourceMappingURL=EmailTemplateList.vue.map */", map: {"version":3,"sources":["EmailTemplateList.vue"],"names":[],"mappings":";;AAEA,gDAAgD","file":"EmailTemplateList.vue"}, media: undefined });
inject("data-v-579c10c8_0", { source: "\n\n/*# sourceMappingURL=EmailTemplateList.vue.map */", map: {"version":3,"sources":["EmailTemplateList.vue"],"names":[],"mappings":";;AAEA,gDAAgD","file":"EmailTemplateList.vue"}, media: undefined });
};
/* scoped */
const __vue_scope_id__ = "data-v-5edcf0f2";
const __vue_scope_id__ = "data-v-579c10c8";
/* module identifier */

@@ -544,7 +544,7 @@ const __vue_module_identifier__ = undefined;

if (!inject) return
inject("data-v-c4fda376_0", { source: ".legend-vars h4[data-v-c4fda376] {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul[data-v-c4fda376] {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li[data-v-c4fda376]:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button[data-v-c4fda376] {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */", map: {"version":3,"sources":["D:\\Work\\tager-admin-mail\\src\\views\\EmailTemplateForm.vue","EmailTemplateForm.vue"],"names":[],"mappings":"AA0KA;EACA,qBAAA;ACzKA;AD2KA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;ACzKA;AD2KA;EACA,6BAAA;ACzKA;AD6KA;EACA,mBAAA;AC3KA;;AAEA,gDAAgD","file":"EmailTemplateForm.vue","sourcesContent":["<template>\n <page\n :title=\"pageTitle\"\n :is-content-loading=\"isInitialLoading\"\n :footer=\"{\n backHref: templateListRoutePath,\n onSubmit: submitForm,\n isSubmitting: isSubmitting,\n }\"\n >\n <form novalidate @submit.prevent>\n <form-field\n v-model=\"values.subject\"\n name=\"subject\"\n :error=\"errors.subject\"\n label=\"Subject\"\n />\n\n <form-field\n v-model=\"values.recipients\"\n name=\"recipients\"\n :error=\"errors.recipients\"\n label=\"Recipients\"\n />\n\n <form-field-rich-text-input\n v-model=\"values.body\"\n name=\"body\"\n :error=\"errors.body\"\n label=\"Body\"\n />\n\n <div\n v-if=\"emailTemplate && emailTemplate.variables.length > 0\"\n class=\"legend-vars\"\n >\n <h4 class=\"title\">Template variables</h4>\n <ul>\n <li v-for=\"variable of emailTemplate.variables\" :key=\"variable.key\">\n <span>{{ variable.label }}</span> -\n <span>\n {{ getKeyTemplate(variable.key) }}\n </span>\n <base-button\n variant=\"icon\"\n title=\"Copy\"\n @click=\"copyVarTemplate(variable.key)\"\n >\n <svg-icon name=\"contentCopy\" />\n </base-button>\n </li>\n </ul>\n </div>\n </form>\n </page>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue';\nimport { convertRequestErrorToMap, Nullable } from '@tager/admin-services';\n\nimport {\n getTemplate,\n TemplateUpdatePayload,\n updateTemplate,\n} from '../services/requests';\nimport { EmailTemplate } from '../typings/model';\nimport { getEmailTemplateListUrl } from '../utils/paths';\n\ntype FormValues = { subject: string; body: string; recipients: string };\n\nexport default Vue.extend({\n name: 'EmailTemplateForm',\n data(): {\n emailTemplate: Nullable<EmailTemplate>;\n values: FormValues;\n errors: Record<string, string>;\n isSubmitting: boolean;\n isInitialLoading: boolean;\n templateListRoutePath: string;\n } {\n return {\n emailTemplate: null,\n values: { subject: '', body: '', recipients: '' },\n errors: {},\n isSubmitting: false,\n isInitialLoading: false,\n templateListRoutePath: getEmailTemplateListUrl(),\n };\n },\n computed: {\n templateId(): string {\n return this.$route.params.templateId;\n },\n pageTitle(): string {\n return this.emailTemplate\n ? `E-Mail template \"${this.emailTemplate.name}\"`\n : 'E-Mail template';\n },\n },\n mounted(): void {\n this.isInitialLoading = true;\n\n getTemplate(this.templateId)\n .then((response) => {\n this.values = this.convertEmailTemplateToFormValues(response.data);\n this.emailTemplate = response.data;\n })\n .catch(console.error)\n .finally(() => {\n this.isInitialLoading = false;\n });\n },\n methods: {\n convertEmailTemplateToFormValues(template: EmailTemplate): FormValues {\n return {\n subject: template.subject,\n body: template.body,\n recipients: template.recipients.join(','),\n };\n },\n submitForm() {\n this.isSubmitting = true;\n\n const body: TemplateUpdatePayload = {\n ...this.values,\n recipients: this.values.recipients\n .split(',')\n .map((recipient) => recipient.trim())\n .filter(Boolean),\n };\n\n updateTemplate(this.templateId, body)\n .then(() => {\n this.errors = {};\n this.$router.push(getEmailTemplateListUrl());\n\n this.$toast({\n variant: 'success',\n title: 'Success',\n body: 'Template has been successfully updated',\n });\n })\n .catch((error) => {\n console.error(error);\n this.errors = convertRequestErrorToMap(error);\n this.$toast({\n variant: 'danger',\n title: 'Error',\n body: 'Template update has been failed',\n });\n })\n .finally(() => {\n this.isSubmitting = false;\n });\n },\n getKeyTemplate(key: string): string {\n return `{{${key}}}`;\n },\n copyVarTemplate(key: string) {\n navigator.clipboard\n .writeText(this.getKeyTemplate(key))\n .catch(console.error);\n },\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n.legend-vars {\n h4 {\n margin-bottom: 0.5rem;\n }\n ul {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n\n li:not(:last-child) {\n border-bottom: 1px solid #eee;\n }\n }\n\n button {\n margin-left: 0.5rem;\n }\n}\n</style>\n",".legend-vars h4 {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */"]}, media: undefined });
inject("data-v-20871140_0", { source: ".legend-vars h4[data-v-20871140] {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul[data-v-20871140] {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li[data-v-20871140]:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button[data-v-20871140] {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */", map: {"version":3,"sources":["C:\\Work\\tager-admin-mail\\src\\views\\EmailTemplateForm.vue","EmailTemplateForm.vue"],"names":[],"mappings":"AA0KA;EACA,qBAAA;ACzKA;AD2KA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;ACzKA;AD2KA;EACA,6BAAA;ACzKA;AD6KA;EACA,mBAAA;AC3KA;;AAEA,gDAAgD","file":"EmailTemplateForm.vue","sourcesContent":["<template>\r\n <page\r\n :title=\"pageTitle\"\r\n :is-content-loading=\"isInitialLoading\"\r\n :footer=\"{\r\n backHref: templateListRoutePath,\r\n onSubmit: submitForm,\r\n isSubmitting: isSubmitting,\r\n }\"\r\n >\r\n <form novalidate @submit.prevent>\r\n <form-field\r\n v-model=\"values.subject\"\r\n name=\"subject\"\r\n :error=\"errors.subject\"\r\n label=\"Subject\"\r\n />\r\n\r\n <form-field\r\n v-model=\"values.recipients\"\r\n name=\"recipients\"\r\n :error=\"errors.recipients\"\r\n label=\"Recipients\"\r\n />\r\n\r\n <form-field-rich-text-input\r\n v-model=\"values.body\"\r\n name=\"body\"\r\n :error=\"errors.body\"\r\n label=\"Body\"\r\n />\r\n\r\n <div\r\n v-if=\"emailTemplate && emailTemplate.variables.length > 0\"\r\n class=\"legend-vars\"\r\n >\r\n <h4 class=\"title\">Template variables</h4>\r\n <ul>\r\n <li v-for=\"variable of emailTemplate.variables\" :key=\"variable.key\">\r\n <span>{{ variable.label }}</span> -\r\n <span>\r\n {{ getKeyTemplate(variable.key) }}\r\n </span>\r\n <base-button\r\n variant=\"icon\"\r\n title=\"Copy\"\r\n @click=\"copyVarTemplate(variable.key)\"\r\n >\r\n <svg-icon name=\"contentCopy\" />\r\n </base-button>\r\n </li>\r\n </ul>\r\n </div>\r\n </form>\r\n </page>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from 'vue';\r\nimport { convertRequestErrorToMap, Nullable } from '@tager/admin-services';\r\n\r\nimport {\r\n getTemplate,\r\n TemplateUpdatePayload,\r\n updateTemplate,\r\n} from '../services/requests';\r\nimport { EmailTemplate } from '../typings/model';\r\nimport { getEmailTemplateListUrl } from '../utils/paths';\r\n\r\ntype FormValues = { subject: string; body: string; recipients: string };\r\n\r\nexport default Vue.extend({\r\n name: 'EmailTemplateForm',\r\n data(): {\r\n emailTemplate: Nullable<EmailTemplate>;\r\n values: FormValues;\r\n errors: Record<string, string>;\r\n isSubmitting: boolean;\r\n isInitialLoading: boolean;\r\n templateListRoutePath: string;\r\n } {\r\n return {\r\n emailTemplate: null,\r\n values: { subject: '', body: '', recipients: '' },\r\n errors: {},\r\n isSubmitting: false,\r\n isInitialLoading: false,\r\n templateListRoutePath: getEmailTemplateListUrl(),\r\n };\r\n },\r\n computed: {\r\n templateId(): string {\r\n return this.$route.params.templateId;\r\n },\r\n pageTitle(): string {\r\n return this.emailTemplate\r\n ? `E-Mail template \"${this.emailTemplate.name}\"`\r\n : 'E-Mail template';\r\n },\r\n },\r\n mounted(): void {\r\n this.isInitialLoading = true;\r\n\r\n getTemplate(this.templateId)\r\n .then((response) => {\r\n this.values = this.convertEmailTemplateToFormValues(response.data);\r\n this.emailTemplate = response.data;\r\n })\r\n .catch(console.error)\r\n .finally(() => {\r\n this.isInitialLoading = false;\r\n });\r\n },\r\n methods: {\r\n convertEmailTemplateToFormValues(template: EmailTemplate): FormValues {\r\n return {\r\n subject: template.subject,\r\n body: template.body,\r\n recipients: template.recipients.join(','),\r\n };\r\n },\r\n submitForm() {\r\n this.isSubmitting = true;\r\n\r\n const body: TemplateUpdatePayload = {\r\n ...this.values,\r\n recipients: this.values.recipients\r\n .split(',')\r\n .map((recipient) => recipient.trim())\r\n .filter(Boolean),\r\n };\r\n\r\n updateTemplate(this.templateId, body)\r\n .then(() => {\r\n this.errors = {};\r\n this.$router.push(getEmailTemplateListUrl());\r\n\r\n this.$toast({\r\n variant: 'success',\r\n title: 'Success',\r\n body: 'Template has been successfully updated',\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n this.errors = convertRequestErrorToMap(error);\r\n this.$toast({\r\n variant: 'danger',\r\n title: 'Error',\r\n body: 'Template update has been failed',\r\n });\r\n })\r\n .finally(() => {\r\n this.isSubmitting = false;\r\n });\r\n },\r\n getKeyTemplate(key: string): string {\r\n return `{{${key}}}`;\r\n },\r\n copyVarTemplate(key: string) {\r\n navigator.clipboard\r\n .writeText(this.getKeyTemplate(key))\r\n .catch(console.error);\r\n },\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.legend-vars {\r\n h4 {\r\n margin-bottom: 0.5rem;\r\n }\r\n ul {\r\n display: inline-block;\r\n padding-left: 1.2rem;\r\n list-style-type: decimal;\r\n\r\n li:not(:last-child) {\r\n border-bottom: 1px solid #eee;\r\n }\r\n }\r\n\r\n button {\r\n margin-left: 0.5rem;\r\n }\r\n}\r\n</style>\r\n",".legend-vars h4 {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */"]}, media: undefined });
};
/* scoped */
const __vue_scope_id__$1 = "data-v-c4fda376";
const __vue_scope_id__$1 = "data-v-20871140";
/* module identifier */

@@ -749,7 +749,7 @@ const __vue_module_identifier__$1 = undefined;

if (!inject) return
inject("data-v-6bdb94c4_0", { source: ".error-cell[data-v-6bdb94c4] {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p[data-v-6bdb94c4] {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */", map: {"version":3,"sources":["D:\\Work\\tager-admin-mail\\src\\views\\EmailLogList.vue","EmailLogList.vue"],"names":[],"mappings":"AA8HA;EACA,eAAA;EACA,YAAA;AC7HA;AD+HA;EACA,gBAAA;EACA,sBAAA;AC7HA;;AAEA,2CAA2C","file":"EmailLogList.vue","sourcesContent":["<template>\n <page title=\"E-Mail Logs\">\n <template v-slot:content>\n <base-table\n :column-defs=\"columnDefs\"\n :row-data=\"rowData\"\n :loading=\"isRowDataLoading\"\n :error-message=\"errorMessage\"\n >\n <template v-slot:cell(body)=\"{ row }\">\n <p v-html=\"row.body\" />\n </template>\n <template v-slot:cell(error)=\"{ row }\">\n <td class=\"error-cell\" @click=\"toggleError(row.id)\">\n <p\n v-if=\"row.error\"\n :class=\"{ open: rowIdsWithOpenErrors.includes(row.id) }\"\n >\n {{\n formatError(row.error, rowIdsWithOpenErrors.includes(row.id))\n }}\n </p>\n </td>\n </template>\n </base-table>\n </template>\n </page>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue';\nimport { ColumnDefinition, formatBoolean } from '@tager/admin-ui';\nimport { Nullable } from '@tager/admin-services';\n\nimport { EmailLog } from '../typings/model';\nimport { getLogList } from '../services/requests';\nimport { capitalizeWord } from '../utils/common';\n\nconst COLUMN_DEFS: Array<ColumnDefinition<EmailLog>> = [\n {\n id: 1,\n name: 'ID',\n field: 'id',\n style: { width: '50px', textAlign: 'center' },\n headStyle: { width: '50px', textAlign: 'center' },\n },\n { id: 2, name: 'Template', field: 'template' },\n { id: 3, name: 'Recipient', field: 'recipient' },\n { id: 4, name: 'Subject', field: 'subject' },\n { id: 5, name: 'Body', field: 'body' },\n {\n id: 6,\n name: 'Status',\n field: 'status',\n format: ({ row }) => capitalizeWord(row.status),\n },\n { id: 7, name: 'Date', field: 'createdAt', type: 'datetime' },\n {\n id: 8,\n name: 'Is debug?',\n field: 'isDebug',\n format: ({ row }) => formatBoolean(row.isDebug),\n },\n {\n id: 9,\n name: 'Error',\n field: 'error',\n useCustomDataCell: true,\n headStyle: { width: '300px' },\n },\n];\n\nexport default Vue.extend({\n name: 'EmailTemplateList',\n data(): {\n columnDefs: Array<ColumnDefinition<EmailLog>>;\n rowData: Array<EmailLog>;\n isRowDataLoading: boolean;\n errorMessage: Nullable<string>;\n rowIdsWithOpenErrors: Array<number>;\n } {\n return {\n columnDefs: COLUMN_DEFS,\n rowData: [],\n isRowDataLoading: false,\n errorMessage: null,\n rowIdsWithOpenErrors: [],\n };\n },\n mounted(): void {\n this.refreshLogList();\n },\n methods: {\n refreshLogList(): Promise<void> {\n this.isRowDataLoading = true;\n\n return getLogList()\n .then((response) => {\n this.rowData = response.data;\n })\n .catch(console.error)\n .finally(() => {\n this.isRowDataLoading = false;\n });\n },\n toggleError(rowId: number) {\n if (this.rowIdsWithOpenErrors.includes(rowId)) {\n this.rowIdsWithOpenErrors = this.rowIdsWithOpenErrors.filter(\n (id) => id !== rowId\n );\n } else {\n this.rowIdsWithOpenErrors.push(rowId);\n }\n },\n formatError(error: string, isOpen: boolean) {\n if (error.length > 80 && !isOpen) {\n return error.slice(0, 80) + '...';\n }\n\n return error;\n },\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n.error-cell {\n cursor: pointer;\n width: 300px;\n\n p {\n max-width: 250px;\n word-break: break-word;\n }\n}\n</style>\n",".error-cell {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */"]}, media: undefined });
inject("data-v-62078166_0", { source: ".error-cell[data-v-62078166] {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p[data-v-62078166] {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */", map: {"version":3,"sources":["C:\\Work\\tager-admin-mail\\src\\views\\EmailLogList.vue","EmailLogList.vue"],"names":[],"mappings":"AA8HA;EACA,eAAA;EACA,YAAA;AC7HA;AD+HA;EACA,gBAAA;EACA,sBAAA;AC7HA;;AAEA,2CAA2C","file":"EmailLogList.vue","sourcesContent":["<template>\r\n <page title=\"E-Mail Logs\">\r\n <template v-slot:content>\r\n <base-table\r\n :column-defs=\"columnDefs\"\r\n :row-data=\"rowData\"\r\n :loading=\"isRowDataLoading\"\r\n :error-message=\"errorMessage\"\r\n >\r\n <template v-slot:cell(body)=\"{ row }\">\r\n <p v-html=\"row.body\" />\r\n </template>\r\n <template v-slot:cell(error)=\"{ row }\">\r\n <td class=\"error-cell\" @click=\"toggleError(row.id)\">\r\n <p\r\n v-if=\"row.error\"\r\n :class=\"{ open: rowIdsWithOpenErrors.includes(row.id) }\"\r\n >\r\n {{\r\n formatError(row.error, rowIdsWithOpenErrors.includes(row.id))\r\n }}\r\n </p>\r\n </td>\r\n </template>\r\n </base-table>\r\n </template>\r\n </page>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from 'vue';\r\nimport { ColumnDefinition, formatBoolean } from '@tager/admin-ui';\r\nimport { Nullable } from '@tager/admin-services';\r\n\r\nimport { EmailLog } from '../typings/model';\r\nimport { getLogList } from '../services/requests';\r\nimport { capitalizeWord } from '../utils/common';\r\n\r\nconst COLUMN_DEFS: Array<ColumnDefinition<EmailLog>> = [\r\n {\r\n id: 1,\r\n name: 'ID',\r\n field: 'id',\r\n style: { width: '50px', textAlign: 'center' },\r\n headStyle: { width: '50px', textAlign: 'center' },\r\n },\r\n { id: 2, name: 'Template', field: 'template' },\r\n { id: 3, name: 'Recipient', field: 'recipient' },\r\n { id: 4, name: 'Subject', field: 'subject' },\r\n { id: 5, name: 'Body', field: 'body' },\r\n {\r\n id: 6,\r\n name: 'Status',\r\n field: 'status',\r\n format: ({ row }) => capitalizeWord(row.status),\r\n },\r\n { id: 7, name: 'Date', field: 'createdAt', type: 'datetime' },\r\n {\r\n id: 8,\r\n name: 'Is debug?',\r\n field: 'isDebug',\r\n format: ({ row }) => formatBoolean(row.isDebug),\r\n },\r\n {\r\n id: 9,\r\n name: 'Error',\r\n field: 'error',\r\n useCustomDataCell: true,\r\n headStyle: { width: '300px' },\r\n },\r\n];\r\n\r\nexport default Vue.extend({\r\n name: 'EmailTemplateList',\r\n data(): {\r\n columnDefs: Array<ColumnDefinition<EmailLog>>;\r\n rowData: Array<EmailLog>;\r\n isRowDataLoading: boolean;\r\n errorMessage: Nullable<string>;\r\n rowIdsWithOpenErrors: Array<number>;\r\n } {\r\n return {\r\n columnDefs: COLUMN_DEFS,\r\n rowData: [],\r\n isRowDataLoading: false,\r\n errorMessage: null,\r\n rowIdsWithOpenErrors: [],\r\n };\r\n },\r\n mounted(): void {\r\n this.refreshLogList();\r\n },\r\n methods: {\r\n refreshLogList(): Promise<void> {\r\n this.isRowDataLoading = true;\r\n\r\n return getLogList()\r\n .then((response) => {\r\n this.rowData = response.data;\r\n })\r\n .catch(console.error)\r\n .finally(() => {\r\n this.isRowDataLoading = false;\r\n });\r\n },\r\n toggleError(rowId: number) {\r\n if (this.rowIdsWithOpenErrors.includes(rowId)) {\r\n this.rowIdsWithOpenErrors = this.rowIdsWithOpenErrors.filter(\r\n (id) => id !== rowId\r\n );\r\n } else {\r\n this.rowIdsWithOpenErrors.push(rowId);\r\n }\r\n },\r\n formatError(error: string, isOpen: boolean) {\r\n if (error.length > 80 && !isOpen) {\r\n return error.slice(0, 80) + '...';\r\n }\r\n\r\n return error;\r\n },\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.error-cell {\r\n cursor: pointer;\r\n width: 300px;\r\n\r\n p {\r\n max-width: 250px;\r\n word-break: break-word;\r\n }\r\n}\r\n</style>\r\n",".error-cell {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */"]}, media: undefined });
};
/* scoped */
const __vue_scope_id__$2 = "data-v-6bdb94c4";
const __vue_scope_id__$2 = "data-v-62078166";
/* module identifier */

@@ -756,0 +756,0 @@ const __vue_module_identifier__$2 = undefined;

@@ -12,4 +12,4 @@ (function (global, factory) {

}
function getTemplate(alias) {
return adminServices.request.get({ path: '/admin/mail/templates', params: { alias } });
function getTemplate(templateId) {
return adminServices.request.get({ path: `/admin/mail/templates/${templateId}` });
}

@@ -306,7 +306,7 @@ function updateTemplate(alias, payload) {

if (!inject) return
inject("data-v-5edcf0f2_0", { source: "\n\n/*# sourceMappingURL=EmailTemplateList.vue.map */", map: {"version":3,"sources":["EmailTemplateList.vue"],"names":[],"mappings":";;AAEA,gDAAgD","file":"EmailTemplateList.vue"}, media: undefined });
inject("data-v-579c10c8_0", { source: "\n\n/*# sourceMappingURL=EmailTemplateList.vue.map */", map: {"version":3,"sources":["EmailTemplateList.vue"],"names":[],"mappings":";;AAEA,gDAAgD","file":"EmailTemplateList.vue"}, media: undefined });
};
/* scoped */
const __vue_scope_id__ = "data-v-5edcf0f2";
const __vue_scope_id__ = "data-v-579c10c8";
/* module identifier */

@@ -547,7 +547,7 @@ const __vue_module_identifier__ = undefined;

if (!inject) return
inject("data-v-c4fda376_0", { source: ".legend-vars h4[data-v-c4fda376] {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul[data-v-c4fda376] {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li[data-v-c4fda376]:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button[data-v-c4fda376] {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */", map: {"version":3,"sources":["D:\\Work\\tager-admin-mail\\src\\views\\EmailTemplateForm.vue","EmailTemplateForm.vue"],"names":[],"mappings":"AA0KA;EACA,qBAAA;ACzKA;AD2KA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;ACzKA;AD2KA;EACA,6BAAA;ACzKA;AD6KA;EACA,mBAAA;AC3KA;;AAEA,gDAAgD","file":"EmailTemplateForm.vue","sourcesContent":["<template>\n <page\n :title=\"pageTitle\"\n :is-content-loading=\"isInitialLoading\"\n :footer=\"{\n backHref: templateListRoutePath,\n onSubmit: submitForm,\n isSubmitting: isSubmitting,\n }\"\n >\n <form novalidate @submit.prevent>\n <form-field\n v-model=\"values.subject\"\n name=\"subject\"\n :error=\"errors.subject\"\n label=\"Subject\"\n />\n\n <form-field\n v-model=\"values.recipients\"\n name=\"recipients\"\n :error=\"errors.recipients\"\n label=\"Recipients\"\n />\n\n <form-field-rich-text-input\n v-model=\"values.body\"\n name=\"body\"\n :error=\"errors.body\"\n label=\"Body\"\n />\n\n <div\n v-if=\"emailTemplate && emailTemplate.variables.length > 0\"\n class=\"legend-vars\"\n >\n <h4 class=\"title\">Template variables</h4>\n <ul>\n <li v-for=\"variable of emailTemplate.variables\" :key=\"variable.key\">\n <span>{{ variable.label }}</span> -\n <span>\n {{ getKeyTemplate(variable.key) }}\n </span>\n <base-button\n variant=\"icon\"\n title=\"Copy\"\n @click=\"copyVarTemplate(variable.key)\"\n >\n <svg-icon name=\"contentCopy\" />\n </base-button>\n </li>\n </ul>\n </div>\n </form>\n </page>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue';\nimport { convertRequestErrorToMap, Nullable } from '@tager/admin-services';\n\nimport {\n getTemplate,\n TemplateUpdatePayload,\n updateTemplate,\n} from '../services/requests';\nimport { EmailTemplate } from '../typings/model';\nimport { getEmailTemplateListUrl } from '../utils/paths';\n\ntype FormValues = { subject: string; body: string; recipients: string };\n\nexport default Vue.extend({\n name: 'EmailTemplateForm',\n data(): {\n emailTemplate: Nullable<EmailTemplate>;\n values: FormValues;\n errors: Record<string, string>;\n isSubmitting: boolean;\n isInitialLoading: boolean;\n templateListRoutePath: string;\n } {\n return {\n emailTemplate: null,\n values: { subject: '', body: '', recipients: '' },\n errors: {},\n isSubmitting: false,\n isInitialLoading: false,\n templateListRoutePath: getEmailTemplateListUrl(),\n };\n },\n computed: {\n templateId(): string {\n return this.$route.params.templateId;\n },\n pageTitle(): string {\n return this.emailTemplate\n ? `E-Mail template \"${this.emailTemplate.name}\"`\n : 'E-Mail template';\n },\n },\n mounted(): void {\n this.isInitialLoading = true;\n\n getTemplate(this.templateId)\n .then((response) => {\n this.values = this.convertEmailTemplateToFormValues(response.data);\n this.emailTemplate = response.data;\n })\n .catch(console.error)\n .finally(() => {\n this.isInitialLoading = false;\n });\n },\n methods: {\n convertEmailTemplateToFormValues(template: EmailTemplate): FormValues {\n return {\n subject: template.subject,\n body: template.body,\n recipients: template.recipients.join(','),\n };\n },\n submitForm() {\n this.isSubmitting = true;\n\n const body: TemplateUpdatePayload = {\n ...this.values,\n recipients: this.values.recipients\n .split(',')\n .map((recipient) => recipient.trim())\n .filter(Boolean),\n };\n\n updateTemplate(this.templateId, body)\n .then(() => {\n this.errors = {};\n this.$router.push(getEmailTemplateListUrl());\n\n this.$toast({\n variant: 'success',\n title: 'Success',\n body: 'Template has been successfully updated',\n });\n })\n .catch((error) => {\n console.error(error);\n this.errors = convertRequestErrorToMap(error);\n this.$toast({\n variant: 'danger',\n title: 'Error',\n body: 'Template update has been failed',\n });\n })\n .finally(() => {\n this.isSubmitting = false;\n });\n },\n getKeyTemplate(key: string): string {\n return `{{${key}}}`;\n },\n copyVarTemplate(key: string) {\n navigator.clipboard\n .writeText(this.getKeyTemplate(key))\n .catch(console.error);\n },\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n.legend-vars {\n h4 {\n margin-bottom: 0.5rem;\n }\n ul {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n\n li:not(:last-child) {\n border-bottom: 1px solid #eee;\n }\n }\n\n button {\n margin-left: 0.5rem;\n }\n}\n</style>\n",".legend-vars h4 {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */"]}, media: undefined });
inject("data-v-20871140_0", { source: ".legend-vars h4[data-v-20871140] {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul[data-v-20871140] {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li[data-v-20871140]:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button[data-v-20871140] {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */", map: {"version":3,"sources":["C:\\Work\\tager-admin-mail\\src\\views\\EmailTemplateForm.vue","EmailTemplateForm.vue"],"names":[],"mappings":"AA0KA;EACA,qBAAA;ACzKA;AD2KA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;ACzKA;AD2KA;EACA,6BAAA;ACzKA;AD6KA;EACA,mBAAA;AC3KA;;AAEA,gDAAgD","file":"EmailTemplateForm.vue","sourcesContent":["<template>\r\n <page\r\n :title=\"pageTitle\"\r\n :is-content-loading=\"isInitialLoading\"\r\n :footer=\"{\r\n backHref: templateListRoutePath,\r\n onSubmit: submitForm,\r\n isSubmitting: isSubmitting,\r\n }\"\r\n >\r\n <form novalidate @submit.prevent>\r\n <form-field\r\n v-model=\"values.subject\"\r\n name=\"subject\"\r\n :error=\"errors.subject\"\r\n label=\"Subject\"\r\n />\r\n\r\n <form-field\r\n v-model=\"values.recipients\"\r\n name=\"recipients\"\r\n :error=\"errors.recipients\"\r\n label=\"Recipients\"\r\n />\r\n\r\n <form-field-rich-text-input\r\n v-model=\"values.body\"\r\n name=\"body\"\r\n :error=\"errors.body\"\r\n label=\"Body\"\r\n />\r\n\r\n <div\r\n v-if=\"emailTemplate && emailTemplate.variables.length > 0\"\r\n class=\"legend-vars\"\r\n >\r\n <h4 class=\"title\">Template variables</h4>\r\n <ul>\r\n <li v-for=\"variable of emailTemplate.variables\" :key=\"variable.key\">\r\n <span>{{ variable.label }}</span> -\r\n <span>\r\n {{ getKeyTemplate(variable.key) }}\r\n </span>\r\n <base-button\r\n variant=\"icon\"\r\n title=\"Copy\"\r\n @click=\"copyVarTemplate(variable.key)\"\r\n >\r\n <svg-icon name=\"contentCopy\" />\r\n </base-button>\r\n </li>\r\n </ul>\r\n </div>\r\n </form>\r\n </page>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from 'vue';\r\nimport { convertRequestErrorToMap, Nullable } from '@tager/admin-services';\r\n\r\nimport {\r\n getTemplate,\r\n TemplateUpdatePayload,\r\n updateTemplate,\r\n} from '../services/requests';\r\nimport { EmailTemplate } from '../typings/model';\r\nimport { getEmailTemplateListUrl } from '../utils/paths';\r\n\r\ntype FormValues = { subject: string; body: string; recipients: string };\r\n\r\nexport default Vue.extend({\r\n name: 'EmailTemplateForm',\r\n data(): {\r\n emailTemplate: Nullable<EmailTemplate>;\r\n values: FormValues;\r\n errors: Record<string, string>;\r\n isSubmitting: boolean;\r\n isInitialLoading: boolean;\r\n templateListRoutePath: string;\r\n } {\r\n return {\r\n emailTemplate: null,\r\n values: { subject: '', body: '', recipients: '' },\r\n errors: {},\r\n isSubmitting: false,\r\n isInitialLoading: false,\r\n templateListRoutePath: getEmailTemplateListUrl(),\r\n };\r\n },\r\n computed: {\r\n templateId(): string {\r\n return this.$route.params.templateId;\r\n },\r\n pageTitle(): string {\r\n return this.emailTemplate\r\n ? `E-Mail template \"${this.emailTemplate.name}\"`\r\n : 'E-Mail template';\r\n },\r\n },\r\n mounted(): void {\r\n this.isInitialLoading = true;\r\n\r\n getTemplate(this.templateId)\r\n .then((response) => {\r\n this.values = this.convertEmailTemplateToFormValues(response.data);\r\n this.emailTemplate = response.data;\r\n })\r\n .catch(console.error)\r\n .finally(() => {\r\n this.isInitialLoading = false;\r\n });\r\n },\r\n methods: {\r\n convertEmailTemplateToFormValues(template: EmailTemplate): FormValues {\r\n return {\r\n subject: template.subject,\r\n body: template.body,\r\n recipients: template.recipients.join(','),\r\n };\r\n },\r\n submitForm() {\r\n this.isSubmitting = true;\r\n\r\n const body: TemplateUpdatePayload = {\r\n ...this.values,\r\n recipients: this.values.recipients\r\n .split(',')\r\n .map((recipient) => recipient.trim())\r\n .filter(Boolean),\r\n };\r\n\r\n updateTemplate(this.templateId, body)\r\n .then(() => {\r\n this.errors = {};\r\n this.$router.push(getEmailTemplateListUrl());\r\n\r\n this.$toast({\r\n variant: 'success',\r\n title: 'Success',\r\n body: 'Template has been successfully updated',\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n this.errors = convertRequestErrorToMap(error);\r\n this.$toast({\r\n variant: 'danger',\r\n title: 'Error',\r\n body: 'Template update has been failed',\r\n });\r\n })\r\n .finally(() => {\r\n this.isSubmitting = false;\r\n });\r\n },\r\n getKeyTemplate(key: string): string {\r\n return `{{${key}}}`;\r\n },\r\n copyVarTemplate(key: string) {\r\n navigator.clipboard\r\n .writeText(this.getKeyTemplate(key))\r\n .catch(console.error);\r\n },\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.legend-vars {\r\n h4 {\r\n margin-bottom: 0.5rem;\r\n }\r\n ul {\r\n display: inline-block;\r\n padding-left: 1.2rem;\r\n list-style-type: decimal;\r\n\r\n li:not(:last-child) {\r\n border-bottom: 1px solid #eee;\r\n }\r\n }\r\n\r\n button {\r\n margin-left: 0.5rem;\r\n }\r\n}\r\n</style>\r\n",".legend-vars h4 {\n margin-bottom: 0.5rem;\n}\n.legend-vars ul {\n display: inline-block;\n padding-left: 1.2rem;\n list-style-type: decimal;\n}\n.legend-vars ul li:not(:last-child) {\n border-bottom: 1px solid #eee;\n}\n.legend-vars button {\n margin-left: 0.5rem;\n}\n\n/*# sourceMappingURL=EmailTemplateForm.vue.map */"]}, media: undefined });
};
/* scoped */
const __vue_scope_id__$1 = "data-v-c4fda376";
const __vue_scope_id__$1 = "data-v-20871140";
/* module identifier */

@@ -752,7 +752,7 @@ const __vue_module_identifier__$1 = undefined;

if (!inject) return
inject("data-v-6bdb94c4_0", { source: ".error-cell[data-v-6bdb94c4] {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p[data-v-6bdb94c4] {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */", map: {"version":3,"sources":["D:\\Work\\tager-admin-mail\\src\\views\\EmailLogList.vue","EmailLogList.vue"],"names":[],"mappings":"AA8HA;EACA,eAAA;EACA,YAAA;AC7HA;AD+HA;EACA,gBAAA;EACA,sBAAA;AC7HA;;AAEA,2CAA2C","file":"EmailLogList.vue","sourcesContent":["<template>\n <page title=\"E-Mail Logs\">\n <template v-slot:content>\n <base-table\n :column-defs=\"columnDefs\"\n :row-data=\"rowData\"\n :loading=\"isRowDataLoading\"\n :error-message=\"errorMessage\"\n >\n <template v-slot:cell(body)=\"{ row }\">\n <p v-html=\"row.body\" />\n </template>\n <template v-slot:cell(error)=\"{ row }\">\n <td class=\"error-cell\" @click=\"toggleError(row.id)\">\n <p\n v-if=\"row.error\"\n :class=\"{ open: rowIdsWithOpenErrors.includes(row.id) }\"\n >\n {{\n formatError(row.error, rowIdsWithOpenErrors.includes(row.id))\n }}\n </p>\n </td>\n </template>\n </base-table>\n </template>\n </page>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue';\nimport { ColumnDefinition, formatBoolean } from '@tager/admin-ui';\nimport { Nullable } from '@tager/admin-services';\n\nimport { EmailLog } from '../typings/model';\nimport { getLogList } from '../services/requests';\nimport { capitalizeWord } from '../utils/common';\n\nconst COLUMN_DEFS: Array<ColumnDefinition<EmailLog>> = [\n {\n id: 1,\n name: 'ID',\n field: 'id',\n style: { width: '50px', textAlign: 'center' },\n headStyle: { width: '50px', textAlign: 'center' },\n },\n { id: 2, name: 'Template', field: 'template' },\n { id: 3, name: 'Recipient', field: 'recipient' },\n { id: 4, name: 'Subject', field: 'subject' },\n { id: 5, name: 'Body', field: 'body' },\n {\n id: 6,\n name: 'Status',\n field: 'status',\n format: ({ row }) => capitalizeWord(row.status),\n },\n { id: 7, name: 'Date', field: 'createdAt', type: 'datetime' },\n {\n id: 8,\n name: 'Is debug?',\n field: 'isDebug',\n format: ({ row }) => formatBoolean(row.isDebug),\n },\n {\n id: 9,\n name: 'Error',\n field: 'error',\n useCustomDataCell: true,\n headStyle: { width: '300px' },\n },\n];\n\nexport default Vue.extend({\n name: 'EmailTemplateList',\n data(): {\n columnDefs: Array<ColumnDefinition<EmailLog>>;\n rowData: Array<EmailLog>;\n isRowDataLoading: boolean;\n errorMessage: Nullable<string>;\n rowIdsWithOpenErrors: Array<number>;\n } {\n return {\n columnDefs: COLUMN_DEFS,\n rowData: [],\n isRowDataLoading: false,\n errorMessage: null,\n rowIdsWithOpenErrors: [],\n };\n },\n mounted(): void {\n this.refreshLogList();\n },\n methods: {\n refreshLogList(): Promise<void> {\n this.isRowDataLoading = true;\n\n return getLogList()\n .then((response) => {\n this.rowData = response.data;\n })\n .catch(console.error)\n .finally(() => {\n this.isRowDataLoading = false;\n });\n },\n toggleError(rowId: number) {\n if (this.rowIdsWithOpenErrors.includes(rowId)) {\n this.rowIdsWithOpenErrors = this.rowIdsWithOpenErrors.filter(\n (id) => id !== rowId\n );\n } else {\n this.rowIdsWithOpenErrors.push(rowId);\n }\n },\n formatError(error: string, isOpen: boolean) {\n if (error.length > 80 && !isOpen) {\n return error.slice(0, 80) + '...';\n }\n\n return error;\n },\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n.error-cell {\n cursor: pointer;\n width: 300px;\n\n p {\n max-width: 250px;\n word-break: break-word;\n }\n}\n</style>\n",".error-cell {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */"]}, media: undefined });
inject("data-v-62078166_0", { source: ".error-cell[data-v-62078166] {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p[data-v-62078166] {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */", map: {"version":3,"sources":["C:\\Work\\tager-admin-mail\\src\\views\\EmailLogList.vue","EmailLogList.vue"],"names":[],"mappings":"AA8HA;EACA,eAAA;EACA,YAAA;AC7HA;AD+HA;EACA,gBAAA;EACA,sBAAA;AC7HA;;AAEA,2CAA2C","file":"EmailLogList.vue","sourcesContent":["<template>\r\n <page title=\"E-Mail Logs\">\r\n <template v-slot:content>\r\n <base-table\r\n :column-defs=\"columnDefs\"\r\n :row-data=\"rowData\"\r\n :loading=\"isRowDataLoading\"\r\n :error-message=\"errorMessage\"\r\n >\r\n <template v-slot:cell(body)=\"{ row }\">\r\n <p v-html=\"row.body\" />\r\n </template>\r\n <template v-slot:cell(error)=\"{ row }\">\r\n <td class=\"error-cell\" @click=\"toggleError(row.id)\">\r\n <p\r\n v-if=\"row.error\"\r\n :class=\"{ open: rowIdsWithOpenErrors.includes(row.id) }\"\r\n >\r\n {{\r\n formatError(row.error, rowIdsWithOpenErrors.includes(row.id))\r\n }}\r\n </p>\r\n </td>\r\n </template>\r\n </base-table>\r\n </template>\r\n </page>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport Vue from 'vue';\r\nimport { ColumnDefinition, formatBoolean } from '@tager/admin-ui';\r\nimport { Nullable } from '@tager/admin-services';\r\n\r\nimport { EmailLog } from '../typings/model';\r\nimport { getLogList } from '../services/requests';\r\nimport { capitalizeWord } from '../utils/common';\r\n\r\nconst COLUMN_DEFS: Array<ColumnDefinition<EmailLog>> = [\r\n {\r\n id: 1,\r\n name: 'ID',\r\n field: 'id',\r\n style: { width: '50px', textAlign: 'center' },\r\n headStyle: { width: '50px', textAlign: 'center' },\r\n },\r\n { id: 2, name: 'Template', field: 'template' },\r\n { id: 3, name: 'Recipient', field: 'recipient' },\r\n { id: 4, name: 'Subject', field: 'subject' },\r\n { id: 5, name: 'Body', field: 'body' },\r\n {\r\n id: 6,\r\n name: 'Status',\r\n field: 'status',\r\n format: ({ row }) => capitalizeWord(row.status),\r\n },\r\n { id: 7, name: 'Date', field: 'createdAt', type: 'datetime' },\r\n {\r\n id: 8,\r\n name: 'Is debug?',\r\n field: 'isDebug',\r\n format: ({ row }) => formatBoolean(row.isDebug),\r\n },\r\n {\r\n id: 9,\r\n name: 'Error',\r\n field: 'error',\r\n useCustomDataCell: true,\r\n headStyle: { width: '300px' },\r\n },\r\n];\r\n\r\nexport default Vue.extend({\r\n name: 'EmailTemplateList',\r\n data(): {\r\n columnDefs: Array<ColumnDefinition<EmailLog>>;\r\n rowData: Array<EmailLog>;\r\n isRowDataLoading: boolean;\r\n errorMessage: Nullable<string>;\r\n rowIdsWithOpenErrors: Array<number>;\r\n } {\r\n return {\r\n columnDefs: COLUMN_DEFS,\r\n rowData: [],\r\n isRowDataLoading: false,\r\n errorMessage: null,\r\n rowIdsWithOpenErrors: [],\r\n };\r\n },\r\n mounted(): void {\r\n this.refreshLogList();\r\n },\r\n methods: {\r\n refreshLogList(): Promise<void> {\r\n this.isRowDataLoading = true;\r\n\r\n return getLogList()\r\n .then((response) => {\r\n this.rowData = response.data;\r\n })\r\n .catch(console.error)\r\n .finally(() => {\r\n this.isRowDataLoading = false;\r\n });\r\n },\r\n toggleError(rowId: number) {\r\n if (this.rowIdsWithOpenErrors.includes(rowId)) {\r\n this.rowIdsWithOpenErrors = this.rowIdsWithOpenErrors.filter(\r\n (id) => id !== rowId\r\n );\r\n } else {\r\n this.rowIdsWithOpenErrors.push(rowId);\r\n }\r\n },\r\n formatError(error: string, isOpen: boolean) {\r\n if (error.length > 80 && !isOpen) {\r\n return error.slice(0, 80) + '...';\r\n }\r\n\r\n return error;\r\n },\r\n },\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.error-cell {\r\n cursor: pointer;\r\n width: 300px;\r\n\r\n p {\r\n max-width: 250px;\r\n word-break: break-word;\r\n }\r\n}\r\n</style>\r\n",".error-cell {\n cursor: pointer;\n width: 300px;\n}\n.error-cell p {\n max-width: 250px;\n word-break: break-word;\n}\n\n/*# sourceMappingURL=EmailLogList.vue.map */"]}, media: undefined });
};
/* scoped */
const __vue_scope_id__$2 = "data-v-6bdb94c4";
const __vue_scope_id__$2 = "data-v-62078166";
/* module identifier */

@@ -759,0 +759,0 @@ const __vue_module_identifier__$2 = undefined;

import { ResponseBody } from '@tager/admin-services';
import { EmailLog, EmailTemplate } from '../typings/model';
export declare function getTemplateList(): Promise<ResponseBody<Array<EmailTemplate>>>;
export declare function getTemplate(alias: string): Promise<ResponseBody<EmailTemplate>>;
export declare function getTemplate(templateId: number | string): Promise<ResponseBody<EmailTemplate>>;
export declare type TemplateUpdatePayload = {

@@ -6,0 +6,0 @@ subject: string;

{
"name": "@tager/admin-mail",
"version": "0.2.0",
"version": "0.2.1",
"license": "MIT",

@@ -5,0 +5,0 @@ "main": "dist/index.umd.js",

@@ -0,0 +0,0 @@ {

@@ -0,0 +0,0 @@ import { MenuItemType } from '@tager/admin-layout';

@@ -0,0 +0,0 @@ export const EMAIL_ROUTE_PATHS = {

@@ -0,0 +0,0 @@ import { CustomRouteConfig } from '@tager/admin-layout';

@@ -0,0 +0,0 @@ import Vue from 'vue';

const EN = {};
export default EN;
const RU = {};
export default RU;

@@ -10,5 +10,5 @@ import { request, ResponseBody } from '@tager/admin-services';

export function getTemplate(
alias: string
templateId: number | string
): Promise<ResponseBody<EmailTemplate>> {
return request.get({ path: '/admin/mail/templates', params: { alias } });
return request.get({ path: `/admin/mail/templates/${templateId}` });
}

@@ -15,0 +15,0 @@

@@ -0,0 +0,0 @@ import { Nullable } from '@tager/admin-services';

@@ -0,0 +0,0 @@ /** Reference: https://stackoverflow.com/a/53999913 */

@@ -0,0 +0,0 @@ import Vue, { VNode } from 'vue';

@@ -0,0 +0,0 @@ declare module '*.vue' {

@@ -0,0 +0,0 @@ import { compile } from 'path-to-regexp';

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc