@mopinion/survey
Version:
Collect customer feedback with the Mopinion survey library
94 lines (93 loc) • 5.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = Link;
var _preact = require("preact");
var _utils = require("../../../utils");
var _form = require("../../form");
var _HandleTabIndex = _interopRequireDefault(require("./HandleTabIndex"));
var _excluded = ["children", "block"];
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
function Link(_ref) {
var children = _ref.children,
block = _ref.block,
props = _objectWithoutProperties(_ref, _excluded);
var _block$properties = block.properties,
properties = _block$properties === void 0 ? {} : _block$properties;
var _useProperties = (0, _form.useProperties)(),
conversational = _useProperties.conversational;
var _useBlockStore = (0, _form.useBlockStore)(),
blockStateActions = _useBlockStore.actions;
var _useFormStore = (0, _form.useFormStore)(),
contentDivRef = _useFormStore.contentDivRef,
formIsCompleted = _useFormStore.formIsCompleted,
actions = _useFormStore.actions,
currentConversationalFocusRef = _useFormStore.currentConversationalFocusRef;
var triggerEvent = (0, _form.useJsEvents)();
var integrations = (0, _form.useIntegrations)();
var parse = function parse() {
var linkStr = properties.hyperlinktext && properties.hyperlinktext.match(/\/\*(.*)\*\//gi) && properties.hyperlinktext.match(/\/\*(.*)\*\//gi)[0].replace('/*', '').replace('*/', '');
var linkAttr = {};
var linkIcon;
if (properties.linktype === 'function') {
linkAttr.onClick = function (e) {
e.preventDefault();
if (properties.linktype_function === 'next_page') {
actions.nextPage();
} else if (properties.linktype_function === 'prev_page') {
actions.prevPage();
} else if (['close_modal', 'close_embedded', 'close'].indexOf(properties.linktype_function) > -1) {
actions.toggleForm(false);
} else if (properties.linktype_function === 'start') {
if (!formIsCompleted) {
actions.startForm();
}
if (formIsCompleted || conversational) {
blockStateActions.reset();
}
(0, _utils.tryFocus)(contentDivRef.current);
}
};
if (!properties.show_as_buttons && properties.link_style !== 'button') {
linkAttr.role = 'button';
linkAttr.href = '#';
}
} else {
var _properties$target;
var linkUrl = properties.hyperlinkhref && (properties.hyperlinkhref.match(/((http(s?)))/gi) || properties.hyperlinkhref.charAt(0) === '/') ? properties.hyperlinkhref : "".concat(properties.hyperlinkprotocol).concat(properties.hyperlinkhref);
linkAttr.href = linkUrl;
linkAttr.target = (_properties$target = properties.target) !== null && _properties$target !== void 0 ? _properties$target : '_blank';
linkAttr.onClick = function () {
triggerEvent('redirect', {
url: linkUrl
});
integrations.sendEvent('redirect');
if (properties.close_on_linkclick) {
actions.toggleForm(false);
}
};
}
linkAttr["class"] = properties.show_as_panels ? 'panel' : properties.show_as_buttons || properties.link_style === 'button' ? 'btn' : '';
linkIcon = (properties.show_as_panels || properties.show_as_buttons || properties.link_style === 'button') && properties.icon ? (0, _preact.h)(_form.SvgIcon, {
icon: properties.icon
}) : '';
return (0, _preact.h)("span", null, properties.description.split(linkStr).reduce(function (prev, current, i) {
if (!i) {
return [current];
}
return prev.concat((0, _preact.h)(_HandleTabIndex["default"], _extends({
component: properties.show_as_buttons && properties.linktype === 'function' || properties.link_style === 'button' && properties.linktype === 'function' ? 'button' : 'a'
}, linkAttr), properties.iconAlignment !== 'right' ? [linkIcon, linkStr] : [linkStr, linkIcon]), current);
}, []));
};
return (0, _preact.h)("div", {
id: "link_".concat(block.id),
"class": "link_block",
ref: currentConversationalFocusRef
}, parse());
}
//# sourceMappingURL=Link.js.map