UNPKG

@xiag-stc/react-basket

Version:

Order basket view: period of stay blocks containing the hotel blocks containing the room blocks; guest data forms with variations for Airline- and Airport-TO-s

129 lines (110 loc) 4.83 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactIntl = require('react-intl'); var _reactGuestDataForm = require('@xiag-stc/react-guest-data-form'); var _ratePlan = require('@stc-b2b/rate-plan'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _react2.default.createClass({ displayName: 'GuestDataContainer', mixins: [_reactIntl.IntlMixin], propTypes: { tourOperatorType: _react2.default.PropTypes.string.isRequired, hotelId: _react2.default.PropTypes.string.isRequired, room: _react2.default.PropTypes.shape({ uniqueToken: _react2.default.PropTypes.string.isRequired, guestData: _react2.default.PropTypes.object.isRequired, showGuestData: _react2.default.PropTypes.bool.isRequired }).isRequired, showRegisterForPickUp: _react2.default.PropTypes.bool, onOpenGuestData: _react2.default.PropTypes.func.isRequired, onCloseGuestData: _react2.default.PropTypes.func.isRequired, saveGuestData: _react2.default.PropTypes.func.isRequired, saveGuestDataForAllRooms: _react2.default.PropTypes.func.isRequired }, render: function render() { return _react2.default.createElement( 'tr', null, _react2.default.createElement( 'td', { className: 'guestContainer', colSpan: '100' }, _react2.default.createElement( 'div', null, _react2.default.createElement( 'button', { type: 'button', className: this.buttonCssClass(), onClick: this.handleToggle }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.room.clientDetails') }), ' ', _react2.default.createElement('span', { className: 'glyphicon glyphicon-' + this.buttonGlyphIcon() }) ), ' ', _react2.default.createElement( 'span', { className: 'lead-guest-name' }, this.leadGuestName() ), ' ', this.mealsInfo() ), this.form() ) ); }, buttonCssClass: function buttonCssClass() { var validate = (0, _reactGuestDataForm.validator)(this.props.tourOperatorType); return 'toggle-guest-data btn ' + (validate(this.props.room.guestData) ? 'btn-default' : 'btn-primary'); }, buttonGlyphIcon: function buttonGlyphIcon() { return this.props.room.showGuestData ? 'menu-up' : 'menu-down'; }, leadGuestName: function leadGuestName() { var _props$room$guestData = this.props.room.guestData.guests[0], firstName = _props$room$guestData.firstName, lastName = _props$room$guestData.lastName; return firstName + ' ' + lastName; }, mealsInfo: function mealsInfo() { if (!this.props.room.guestData.mealsPerPerson) { return null; } var content = this.props.room.guestData.mealsPerPerson + ' x ' + { '20.00': 'Y CHF 20.00', '30.00': 'C/F CHF 30.00' }[this.props.room.guestData.mealPriceChf]; return _react2.default.createElement( 'span', { className: 'meals-info' }, content ); }, form: function form() { var GuestDataForm = (0, _reactGuestDataForm.klass)(this.props.tourOperatorType); return this.props.room.showGuestData ? _react2.default.createElement(GuestDataForm, { ref: 'form', uniqueRoomToken: this.props.room.uniqueToken, isHotelShuttleAvailable: (0, _ratePlan.isHotelShuttleAvailable)(this.props.hotelId), showRegisterForPickUp: this.props.showRegisterForPickUp, guestData: this.props.room.guestData, save: this.handleSave, saveForAll: this.props.saveGuestDataForAllRooms }) : null; }, handleToggle: function handleToggle() { if (this.props.room.showGuestData) { this.props.onCloseGuestData(this.props.room.uniqueToken); } else { this.props.onOpenGuestData(this.props.room.uniqueToken); } }, handleSave: function handleSave(values) { this.props.saveGuestData(this.props.room.uniqueToken, values); } });