UNPKG

@mopinion/survey

Version:

Collect customer feedback with the Mopinion survey library

137 lines (136 loc) 6.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = BlockInput; var _preact = require("preact"); var _hooks = require("preact/hooks"); var _constants = require("../../../constants"); var _utils = require("../../../utils"); var _SelectList = _interopRequireDefault(require("../../elements/components/SelectList")); var _Rating = _interopRequireDefault(require("../../elements/components/Rating")); var _Contact = _interopRequireDefault(require("../../elements/components/Contact")); var _ExternalData = _interopRequireDefault(require("../../elements/components/ExternalData")); var _Multimedia = _interopRequireDefault(require("../../elements/components/Multimedia")); var _Screenshot = _interopRequireDefault(require("../../elements/components/Screenshot")); var _ErrorMessage = _interopRequireDefault(require("../../elements/components/ErrorMessage")); var _HoneyBot = _interopRequireDefault(require("../../elements/components/HoneyBot")); var _CommentBar = _interopRequireDefault(require("./CommentBar")); var _useWcagKeyboardEvents = _interopRequireDefault(require("../hooks/useWcagKeyboardEvents")); var _utils2 = require("../utils"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function findFirstFocusableElement(el) { return (0, _utils.nodeListToArray)(el.querySelectorAll('*')).filter(isFocusable)[0]; } function isFocusable(element) { if (element.tabIndex < 0 || element.offsetParent === null) { return false; } switch (element.tagName) { case 'A': return !!element.href; case 'INPUT': return element.type !== 'hidden' && !element.disabled; case 'SELECT': case 'TEXTAREA': case 'BUTTON': return !element.disabled; default: return false; } } var blockMap = _defineProperty({ textarea: _CommentBar["default"], input: _CommentBar["default"], name: _CommentBar["default"], email: _CommentBar["default"], phone: _CommentBar["default"], radio: _SelectList["default"], category: _SelectList["default"], checkbox: _SelectList["default"], rating: _Rating["default"], nps: _Rating["default"], ces: _Rating["default"], gcr: _SelectList["default"], thumbs: _SelectList["default"], contact: _Contact["default"], website_data: _ExternalData["default"], multimedia: _Multimedia["default"], screenshot: _Screenshot["default"] }, _constants.honeyBotTypeName, _HoneyBot["default"]); function showErrorComponent() { var _block$properties, _block$properties2; var block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (['email', 'phone'].indexOf(block.typeName) > -1) { return true; } return _constants.textInputBlocks.indexOf(block.typeName) > -1 && (((_block$properties = block.properties) === null || _block$properties === void 0 ? void 0 : _block$properties.required) || ['email', 'phone'].indexOf((_block$properties2 = block.properties) === null || _block$properties2 === void 0 ? void 0 : _block$properties2.format) > -1); } function BlockInput(_ref) { var _block$properties3, _text$skipText, _text$skipText2; var _ref$state = _ref.state, state = _ref$state === void 0 ? {} : _ref$state, _ref$block = _ref.block, block = _ref$block === void 0 ? {} : _ref$block, errorMessage = _ref.errorMessage, setValue = _ref.setValue, setNestedValue = _ref.setNestedValue, setHoneyBotValue = _ref.setHoneyBotValue, skipQuestion = _ref.skipQuestion, text = _ref.text, elementIndex = _ref.elementIndex, _id = _ref._id; var BlockComponent = blockMap[block.typeName]; var skipRef = (0, _hooks.useRef)(null); var _useWcagKeyboardEvent = (0, _useWcagKeyboardEvents["default"])({ onArrowKeyRight: function onArrowKeyRight(e, target) { var el = findFirstFocusableElement(target); (0, _utils.tryFocus)(el); } }), _onKeyDown = _useWcagKeyboardEvent.onKeyDown; if (!BlockComponent) return null; var showSkip = !((_block$properties3 = block.properties) !== null && _block$properties3 !== void 0 && _block$properties3.required) && block.typeName !== _constants.honeyBotTypeName; return (0, _preact.h)("div", { className: (0, _utils.makeClassName)('block-wrap', showSkip && 'show-skip') }, showSkip && (0, _preact.h)("button", { ref: skipRef, className: (0, _utils.makeClassName)({ prefix: false, className: 'btn' }, 'skip', { prefix: false, className: 'wcag' }), onClick: skipQuestion, id: "skip-".concat(block.id), "aria-label": "".concat(block.title, ", ").concat((_text$skipText = text === null || text === void 0 ? void 0 : text.skipText) !== null && _text$skipText !== void 0 ? _text$skipText : 'Skip'), onKeyDown: function onKeyDown(e) { var _skipRef$current; _onKeyDown(e, skipRef === null || skipRef === void 0 || (_skipRef$current = skipRef.current) === null || _skipRef$current === void 0 ? void 0 : _skipRef$current.nextElementSibling); } }, (_text$skipText2 = text === null || text === void 0 ? void 0 : text.skipText) !== null && _text$skipText2 !== void 0 ? _text$skipText2 : 'Skip'), (0, _preact.h)("div", { className: (0, _utils.makeClassName)('block-inner') }, (0, _preact.h)(BlockComponent, { block: block, state: state, setValue: setValue, setNestedValue: setNestedValue, setHoneyBotValue: setHoneyBotValue, skipQuestion: skipQuestion, text: text, elementIndex: elementIndex, _id: _id }), showErrorComponent(block) && (0, _preact.h)(_ErrorMessage["default"], { id: "error-message-".concat(block.id), showErrors: (0, _utils2.showConversationalError)({ block: block, state: state }) }, errorMessage))); } //# sourceMappingURL=BlockInput.js.map