@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
JavaScript
'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;
}
});