UNPKG

@mopinion/survey

Version:

Collect customer feedback with the Mopinion survey library

94 lines (93 loc) 5.02 kB
"use strict"; 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