@mopinion/survey
Version:
Collect customer feedback with the Mopinion survey library
50 lines (49 loc) • 2.06 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = Group;
var _preact = require("preact");
var _hooks = require("preact/hooks");
var _compat = require("preact/compat");
var _utils = require("../../../utils");
function Group(_ref) {
var _block$properties;
var children = _ref.children,
focusInvalid = _ref.focusInvalid,
index = _ref.index,
show = _ref.show,
_ref$block = _ref.block,
block = _ref$block === void 0 ? {} : _ref$block,
_ref$typeCount = _ref.typeCount,
typeCount = _ref$typeCount === void 0 ? 1 : _ref$typeCount,
_id = _ref._id;
var groupRef = (0, _hooks.useRef)(null);
var className = "control-group question ".concat(block.typeName !== 'rating' ? block.typeName : '', "-group ").concat(block.typeName, "-group-").concat(typeCount, " ").concat(block.tooltip ? 'has-tooltip' : '', " ").concat(block.typeName === 'screenshot' && (_block$properties = block.properties) !== null && _block$properties !== void 0 && _block$properties.bottomScreen ? 'section absolute' : '');
var id = "".concat(block.typeName, "-").concat(block.id).concat(block.typeName === 'special_input' ? "-".concat(_id) : '');
var WrappingComponent = ['select', 'textarea', 'input', 'special_input', 'contact', 'section_break'].indexOf(block.typeName) > -1 ? 'div' : 'fieldset';
(0, _hooks.useEffect)(function () {
if (focusInvalid) {
try {
groupRef.current.scrollIntoView({
behavior: 'smooth',
block: 'center'
});
} catch (e) {}
(0, _utils.tryFocus)(groupRef.current.querySelector('input, textarea, .ui-stars-star, .nice-select'));
}
}, [focusInvalid, groupRef]);
return (0, _preact.h)("section", {
className: className,
style: {
display: show ? 'block' : 'none'
},
"data-index": index,
key: id,
id: id,
ref: groupRef,
"data-testid": "".concat(block.typeName, "-group"),
tabIndex: "-1"
}, (0, _preact.h)(WrappingComponent, null, children));
}
//# sourceMappingURL=Group.js.map