@mopinion/survey
Version:
Collect customer feedback with the Mopinion survey library
52 lines (51 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = useValidatedBlocks;
var _hooks = require("preact/hooks");
var _BlockStore = require("../stores/BlockStore");
var _ConfigStore = require("../stores/ConfigStore");
function useValidatedBlocks() {
var blockIdArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var showErrors = arguments.length > 1 ? arguments[1] : undefined;
var blockState = (0, _BlockStore.useBlockStore)();
var _useConfigStore = (0, _ConfigStore.useConfigStore)(),
blocks = _useConfigStore.blocks;
var firstInvalid = (0, _hooks.useRef)(null);
var pageValid = blockIdArray.every(function (blockId) {
var _blocks$blockId;
var state = blockState[blockId];
var block = (_blocks$blockId = blocks[blockId]) !== null && _blocks$blockId !== void 0 ? _blocks$blockId : {};
if (!(state !== null && state !== void 0 && state.isVisible)) {
return true;
}
if (block.typeName === 'contact') {
var contactValid = Object.keys(block.properties.elements).every(function (elementKey) {
var _state$element$data_f;
var element = block.properties.elements[elementKey];
if (element.subelements) {
return Object.keys(element.subelements).every(function (subElementKey) {
var _state$subElement$dat;
var subElement = element.subelements[subElementKey];
return !((_state$subElement$dat = state[subElement.data_field]) !== null && _state$subElement$dat !== void 0 && _state$subElement$dat.showError);
});
}
return !((_state$element$data_f = state[element.data_field]) !== null && _state$element$data_f !== void 0 && _state$element$data_f.showError);
});
if (showErrors && !contactValid && !firstInvalid.current) {
firstInvalid.current = Number(block.id);
}
return contactValid;
}
if (showErrors && state.showError && !state.value && !firstInvalid.current) {
firstInvalid.current = Number(block.id);
}
return !state.showError;
});
return {
pageValid: pageValid,
firstInvalid: firstInvalid.current
};
}
//# sourceMappingURL=useValidatedBlocks.js.map