UNPKG

bridebook-ui-library

Version:
164 lines (139 loc) 5.13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.computeSectionValue = exports.createCheckbox = exports.createRadio = exports.createTextInput = exports.resetSectionValueTo = exports.numCheckboxesChecked = exports.setDisabled = exports.composeItemData = exports.maybeCreateEmptyObject = exports.nodeToJs = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _components = require('../../components'); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Function takes in React node and converts it into object. * @function * @param item {Node} - React node. * @returns {Object} - Relevant properties extracted from node. */ var nodeToJs = exports.nodeToJs = function nodeToJs(item) { var _item$props = item.props, field = _item$props.field, title = _item$props.title, url = _item$props.url; return { field: field, title: title, url: url }; }; /** * Creates empty object if current value is invalid (null, undefined, string). * * @function * @param {object} value - Supposedly nice object, will be replaced by newly created one if invalid. * @returns {object} - Original object if it's actually an object or empty one. */ var maybeCreateEmptyObject = exports.maybeCreateEmptyObject = function maybeCreateEmptyObject(value) { if (value !== null && value !== undefined && 'object' === (typeof value === 'undefined' ? 'undefined' : _typeof(value))) { return value; } else { return {}; } }; /** * Curried takes in data from group and data from item and composes it * to create data that can be fed to actual input component. This is curried * function: `(groupData) => (itemData) => Result`. * @function * @param groupData {Object} - Data from group. * @param itemData {Object} - Data specific to item. * @returns {Object} - Composed data. */ var composeItemData = exports.composeItemData = function composeItemData(groupData) { return function (itemData) { var url = itemData.url; var gv = groupData.value; var field = itemData.field; var value = gv.hasOwnProperty(field) ? gv[field] : null; return { action: groupData.action, group: groupData.group, field: field, title: itemData.title, value: value, url: url }; }; }; var setDisabled = exports.setDisabled = function setDisabled(disabled) { return function (item) { return (0, _objectAssign2.default)({ disabled: disabled }, item); }; }; var numCheckboxesChecked = exports.numCheckboxesChecked = function numCheckboxesChecked(sectionValue) { return Object.keys(sectionValue).map(function (itemName) { return sectionValue[itemName]; }).filter(function (itemValue) { return itemValue === true; }).length; }; var resetSectionValueTo = exports.resetSectionValueTo = function resetSectionValueTo(sectionValue, desiredValue) { var result = (0, _objectAssign2.default)({}, sectionValue); Object.keys(result).forEach(function (key) { return result[key] = desiredValue; }); return result; }; var createTextInput = exports.createTextInput = function createTextInput(data, index) { var action = data.action, field = data.field, title = data.title, value = data.value, url = data.url; return _react2.default.createElement(_components.Text, { action: action, name: field, title: title, value: value, key: index, url: url }); }; var createRadio = exports.createRadio = function createRadio(data, index) { var action = data.action, field = data.field, title = data.title, value = data.value, group = data.group; return _react2.default.createElement(_components.Radio, { action: action, title: title, value: value, key: index, group: group, field: field }); }; var createCheckbox = exports.createCheckbox = function createCheckbox(data, index) { var action = data.action, field = data.field, title = data.title, value = data.value, disabled = data.disabled; return _react2.default.createElement(_components.Checkbox, { action: action, name: field, title: title, value: value, disabled: disabled && value !== true, key: index }); }; var computeSectionValue = exports.computeSectionValue = function computeSectionValue(value) { return Object.keys(value).map(function (itemName) { return { key: itemName, value: value[itemName] }; }).filter(function (item) { return item.value === true; }).reduce(function (container, property) { container[property.key] = property.value; return container; }, {}); }; //# sourceMappingURL=utils.js.map