UNPKG

bnbservice-checkout-embed

Version:

Embeddable app to facilitate the request of a service instance

141 lines (123 loc) 4.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PriceBreakdown = exports.WidgetList = exports.RenderWidget = undefined; var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _reduxForm = require("redux-form"); var _bnbserviceBaseForm = require("bnbservice-base-form"); var _client = require("../core-input-types/client"); var _client2 = _interopRequireDefault(_client); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var values = require('object.values'); if (!Object.values) { values.shim(); } var PriceOperation = function PriceOperation(props) { var input = props.input; return _react2.default.createElement( "select", input, _react2.default.createElement( "option", { value: "add" }, "Add" ), _react2.default.createElement( "option", { value: "subtract" }, "Subtract" ), _react2.default.createElement( "option", { value: "divide" }, "Percent Decrease" ), _react2.default.createElement( "option", { value: "multiply" }, "Percent Increase" ) ); }; var RenderWidget = function RenderWidget(props) { var showPrice = props.showPrice, member = props.member, widgetType = props.widgetType, configValue = props.configValue, defaultWidgetValue = props.defaultWidgetValue; var widget = (0, _client2.default)().find(function (widgetToCheck) { return widgetToCheck.type === widgetType; }); if (!widget) { console.error("widget does not exist ", widgetType); } return _react2.default.createElement( "div", null, _react2.default.createElement( _reduxForm.FormSection, { name: member + ".config" }, widget.config && _react2.default.createElement(_reduxForm.Field, { name: "value", component: widget.config }), widget.pricing && showPrice && _react2.default.createElement( "div", { className: "addon-widget-has-pricing" }, _react2.default.createElement( _reduxForm.FormSection, { name: "pricing" }, _react2.default.createElement(_reduxForm.Field, { name: "operation", component: _bnbserviceBaseForm.selectField, label: "Apply Price Change", options: [{ id: "add", name: "Add to base price" }, { id: "subtract", name: "Subtract from base price" }, { id: "multiply", name: "Percent add to base price" }, { id: "divide", name: "Percent off from base price" }] }), _react2.default.createElement( "div", { className: "addon-widget-pricing-inputs-wrapper" }, _react2.default.createElement( "label", { className: "control-label form-label-flex-md addon-widget-pricing-input-label" }, "Add-On Pricing" ), _react2.default.createElement(_reduxForm.Field, { name: "value", configValue: configValue, component: widget.pricing }) ) ) ) ), widget.widget && _react2.default.createElement(_reduxForm.Field, { name: member + ".data.value", configValue: configValue, component: widget.widget }) ); }; var PriceBreakdown = function PriceBreakdown(props) { var inputs = props.inputs; var widgets = (0, _client2.default)().reduce(function (acc, widget) { acc[widget.type] = widget; return acc; }, {}); var breakdown = inputs.reduce(function (acc, input) { if (input.config && input.config.pricing && widgets[input.type].handler.priceHandler) { acc.push(_react2.default.createElement( "div", null, input.prop_label, " - ", input.config.pricing.operation, "- ", widgets[input.type].handler.priceHandler(input.data, input.config) )); } return acc; }, []); if (breakdown.length == 0) { breakdown = _react2.default.createElement("div", null); } return _react2.default.createElement( "div", null, breakdown ); }; var WidgetList = function WidgetList(props) { return _react2.default.createElement(_reduxForm.Field, { name: props.name, id: props.name, component: _bnbserviceBaseForm.selectField, options: (0, _client2.default)(), valueKey: "type", labelKey: "label" }); }; exports.RenderWidget = RenderWidget; exports.WidgetList = WidgetList; exports.PriceBreakdown = PriceBreakdown;