@shopgate/engage
Version:
Shopgate's ENGAGE library.
10 lines • 2.09 kB
JavaScript
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import{ELEMENT_TYPE_CHECKBOX,ELEMENT_TYPE_SELECT}from"../Builder.constants";/**
* Prepare state of formData for form builder
* @param {Object} formElements form elements
* @param {Object} defaults form defaults
* @returns {Object}
*/export default(function(){var formElements=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var defaults=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var formDefaults={};// Take only those defaults from props, that are actually represented by an element
formElements.forEach(function(element){var defaultState=element.type===ELEMENT_TYPE_CHECKBOX?false:'';if(element.type===ELEMENT_TYPE_SELECT&&!element["default"]){var _Object$keys=Object.keys(element.options);var _Object$keys2=_slicedToArray(_Object$keys,1);defaultState=_Object$keys2[0];}// Use default from element config as a base
if(element["default"]!==undefined&&element["default"]!==null){defaultState=element["default"];}// Take defaults from "customAttributes" property or from the higher level, based on element
if(element.custom&&defaults.customAttributes!==undefined){if(defaults.customAttributes[element.id]!==undefined){defaultState=defaults.customAttributes[element.id];}}else if(!element.custom&&defaults[element.id]!==undefined){defaultState=defaults[element.id];}// Save default into the form state and into defaults property if one was set
if(defaultState!==undefined){formDefaults[element.id]=defaultState;}});return formDefaults;});