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

163 lines (136 loc) 7.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactIntl = require('react-intl'); var _reactTaxes = require('@stc-b2b/react-taxes'); var _Room = require('./Room'); var _Room2 = _interopRequireDefault(_Room); var _PrepayTaxesInputRow = require('./PrepayTaxesInputRow'); var _PrepayTaxesInputRow2 = _interopRequireDefault(_PrepayTaxesInputRow); var _GuestDataContainer = require('./GuestDataContainer'); var _GuestDataContainer2 = _interopRequireDefault(_GuestDataContainer); var _pickAndMerge = require('./pickAndMerge'); var _pickAndMerge2 = _interopRequireDefault(_pickAndMerge); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _react2.default.createClass({ displayName: 'Rooms', mixins: [_reactIntl.IntlMixin], propTypes: { tourOperatorType: _react.PropTypes.string.isRequired, periodOfStay: _react.PropTypes.object.isRequired, hotelId: _react.PropTypes.string.isRequired, rooms: _react.PropTypes.arrayOf(_react.PropTypes.shape({ occupancyRoomCounts: _react.PropTypes.object.isRequired, prepayTaxes: _react.PropTypes.bool.isRequired, bookingFailed: _react.PropTypes.bool.isRequired })).isRequired, showRegisterForPickUp: _react.PropTypes.bool, onRoomOccupancyChange: _react.PropTypes.func.isRequired, doPrepayTaxes: _react.PropTypes.func.isRequired, dontPrepayTaxes: _react.PropTypes.func.isRequired, onRoomRemove: _react.PropTypes.func.isRequired, restoreRoomInAvailableHotels: _react.PropTypes.func.isRequired, onOpenGuestData: _react.PropTypes.func.isRequired, onCloseGuestData: _react.PropTypes.func.isRequired, saveGuestData: _react.PropTypes.func.isRequired, saveGuestDataForAllRooms: _react.PropTypes.func.isRequired }, render: function render() { return _react2.default.createElement( 'table', { width: '100%' }, _react2.default.createElement( 'tbody', { className: 'rooms-columns-headers' }, _react2.default.createElement( 'tr', null, _react2.default.createElement( 'td', { className: 'titleTable rooms-columns-headers-room-type' }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.roomColumn.roomType') }) ), _react2.default.createElement( 'td', { className: 'titleTable rooms-columns-headers-meals' }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.roomColumn.meals') }) ), _react2.default.createElement( 'td', { className: 'titleTable rooms-columns-headers-occupancy' }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.roomColumn.occupancy') }) ), _react2.default.createElement( 'td', { className: 'titleTable rooms-columns-headers-total', colSpan: 3 }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.roomColumn.total') }) ), _react2.default.createElement( 'td', { className: 'titleTable rooms-columns-headers-cancellation-policy' }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.roomColumn.cancellationPolicy') }) ), _react2.default.createElement('td', { className: 'titleTable rooms-columns-headers-control', width: '1%' }) ) ), this.roomsWithGuestData() ); }, roomsWithGuestData: function roomsWithGuestData() { var _this = this; var guestDataContainerPropsMerge = _pickAndMerge2.default.bind(null, ['tourOperatorType', 'hotelId', 'onOpenGuestData', 'onCloseGuestData', 'saveGuestData', 'saveGuestDataForAllRooms', 'showRegisterForPickUp'], this.props); return this.props.rooms.map(function (room, i) { var roomProps = { room: room, ref: 'room' + i, onOccupancyChange: _this.props.onRoomOccupancyChange, restoreRoomInAvailableHotels: _this.props.restoreRoomInAvailableHotels, onRemove: _this.props.onRoomRemove }; return _react2.default.createElement( 'tbody', { className: _this.roomsColumnsTbodyClass(room), key: 'k' + i }, _react2.default.createElement(_Room2.default, roomProps), _this.prepayTaxesInput(room, i), _this.bookingFailedMessage(room), _react2.default.createElement(_GuestDataContainer2.default, guestDataContainerPropsMerge({ room: room, ref: 'guestData' + i })) ); }); }, roomsColumnsTbodyClass: function roomsColumnsTbodyClass(room) { return 'rooms-columns' + (room.bookingFailed ? ' book_error' : ''); }, prepayTaxesInput: function prepayTaxesInput(room, index) { if (!(0, _reactTaxes.displayTaxes)(this.props.tourOperatorType, this.props.periodOfStay) || room.ratePlan.excludedTaxes.length === 0) { return null; } var prepayTaxesInputProps = { ref: 'prepayTaxesInput' + index, prepayTaxes: room.prepayTaxes, totalTax: (0, _reactTaxes.totalTax)(this.props.periodOfStay, room.occupancyRoomCounts, room.ratePlan.excludedTaxes), doPrepayTaxes: this.props.doPrepayTaxes.bind(null, room.uniqueToken), dontPrepayTaxes: this.props.dontPrepayTaxes.bind(null, room.uniqueToken) }; return _react2.default.createElement(_PrepayTaxesInputRow2.default, prepayTaxesInputProps); }, bookingFailedMessage: function bookingFailedMessage(room) { return room.bookingFailed ? _react2.default.createElement( 'tr', { className: 'book_error' }, _react2.default.createElement( 'td', { colSpan: '100', className: 'book_error_text' }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.bookingFailed') }) ) ) : null; } });