vue-socials
Version:
Social media share buttons and counts for Vue.js
77 lines (69 loc) • 2.28 kB
JavaScript
import { defineComponent, h } from 'vue';
import getSerialisedParams from '../../utils/getSerialisedParams.js';
import getSeparatedList from '../../utils/getSeparatedList.js';
/**
* Hey!
*
* SEmail component used for sending Email via an HTML link
* @example mailto:google@gmail.com?subject=Subject&body=Hello%0AWorld&cc=google1%40gmail.com&bcc=google2%40gmail.com
*/
/**
* Share parameters for link
* @link https://tools.ietf.org/html/rfc2368
* @link https://css-tricks.com/snippets/html/mailto-links/
* @description cc – carbon copy
* @description bcc – blind carbon copy
*/
var SEmail = /* #__PURE__ */defineComponent({
name: 'SEmail',
props: {
/**
* Share parameters for Email
*/
shareOptions: {
type: Object,
required: true
}
},
computed: {
networkURL: function networkURL() {
var BASE_URL = 'mailto:';
var shareOptions = this.shareOptions;
var mail = shareOptions.mail,
subject = shareOptions.subject,
body = shareOptions.body,
cc = shareOptions.cc,
bcc = shareOptions.bcc;
var serialisedParams = getSerialisedParams({
subject: subject,
body: body,
cc: getSeparatedList(cc, ', '),
bcc: getSeparatedList(bcc, ', ')
});
return "".concat(BASE_URL).concat(mail).concat(serialisedParams);
},
ariaLabel: function ariaLabel() {
var shareOptions = this.shareOptions;
var mail = shareOptions.mail,
cc = shareOptions.cc,
bcc = shareOptions.bcc;
var LABELS = ["Send an e-mail to ".concat(mail)];
if (cc) {
LABELS.push("add a carbon copy for ".concat(getSeparatedList(cc, ', ')));
}
if (bcc) {
LABELS.push("add a blind carbon copy for ".concat(getSeparatedList(bcc, ', ')));
}
return "".concat(LABELS.join(' and '), ".");
}
},
render: function render() {
var _this$$slots$default, _this$$slots;
return h('a', {
href: this.networkURL,
rel: 'noopener noreferrer',
'aria-label': this.ariaLabel
}, (_this$$slots$default = (_this$$slots = this.$slots).default) === null || _this$$slots$default === void 0 ? void 0 : _this$$slots$default.call(_this$$slots));
}
});
export default SEmail;