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

187 lines (163 loc) 7.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactIntl = require('react-intl'); var _ratePlan = require('@stc-b2b/rate-plan'); var _RoomOccupancy = require('./RoomOccupancy'); var _RoomOccupancy2 = _interopRequireDefault(_RoomOccupancy); var _RatePlanIcon = require('./RatePlanIcon'); var _RatePlanIcon2 = _interopRequireDefault(_RatePlanIcon); var _roomCost = require('./roomCost'); var _roomCost2 = _interopRequireDefault(_roomCost); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function costShape() { return _react.PropTypes.shape({ currency: _react.PropTypes.string.isRequired, amount: _react.PropTypes.string.isRequired }); } exports.default = _react2.default.createClass({ displayName: 'Room', mixins: [_reactIntl.IntlMixin], propTypes: { room: _react.PropTypes.shape({ roomType: _react.PropTypes.shape({ code: _react.PropTypes.string.isRequired, shortDescriptionLocalized: _react.PropTypes.string.isRequired, longDescriptionLocalized: _react.PropTypes.string.isRequired, amenityDescriptionsLocalized: _react.PropTypes.arrayOf(_react.PropTypes.string).isRequired, bedTypeCode: _react.PropTypes.string.isRequired, occupancyConstraints: _react.PropTypes.object.isRequired }).isRequired, ratePlan: _react.PropTypes.shape({ mealPlanCode: _react.PropTypes.string.isRequired, occupancyTotals: _react.PropTypes.arrayOf(_react.PropTypes.shape({ occupancyCode: _react.PropTypes.string.isRequired, cost: costShape() })).isRequired, cancellationDeadline: _react.PropTypes.object.isRequired, excludedTaxes: _react.PropTypes.arrayOf(_react.PropTypes.shape({ code: _react.PropTypes.number.isRequired, chargeUnitCode: _react.PropTypes.number.isRequired, cost: costShape() })) }), occupancyRoomCounts: _react.PropTypes.object.isRequired, uniqueToken: _react.PropTypes.string.isRequired }).isRequired, onOccupancyChange: _react.PropTypes.func.isRequired, onRemove: _react.PropTypes.func.isRequired, restoreRoomInAvailableHotels: _react.PropTypes.func.isRequired }, render: function render() { return _react2.default.createElement( 'tr', { className: 'basket-room' }, _react2.default.createElement( 'td', { className: 'rooms-columns-room-type' }, _react2.default.createElement( 'a', { href: 'javascript:;', title: '', className: 'mode-popup' }, _react2.default.createElement('span', { className: 'glyphicon glyphicon-info-sign' }), _react2.default.createElement( 'div', { className: 'mode-popup__info' }, _react2.default.createElement( 'p', { className: 'room-type-description' }, this.props.room.roomType.longDescriptionLocalized ), _react2.default.createElement( 'p', { className: 'room-bed-type' }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-basket.room.bedType') }), ': ', _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-available-hotels.bedType'), type: this.props.room.roomType.bedTypeCode }) ), _react2.default.createElement( 'ul', null, this.amenities() ) ) ), ' ', this.props.room.roomType.shortDescriptionLocalized, ' (', this.props.room.roomType.code, ')' ), _react2.default.createElement( 'td', { className: 'rooms-columns-meals' }, _react2.default.createElement(_reactIntl.FormattedMessage, { message: this.getIntlMessage('react-available-hotels.mealPlan'), code: this.props.room.ratePlan.mealPlanCode }) ), _react2.default.createElement( 'td', { className: 'rooms-columns-occupancy' }, _react2.default.createElement(_RoomOccupancy2.default, { ref: 'occupancy', occupancyConstraints: this.props.room.roomType.occupancyConstraints, occupancyRoomCounts: this.props.room.occupancyRoomCounts, onChange: this.handleOccupancyChange }) ), _react2.default.createElement( 'td', { className: 'rooms-columns-total__currency' }, (0, _roomCost2.default)(this.props.room).currency ), _react2.default.createElement( 'td', { className: 'rooms-columns-total__price' }, (0, _roomCost2.default)(this.props.room).amount ), _react2.default.createElement( 'td', { className: 'rooms-columns-rate-plan-icon' }, _react2.default.createElement(_RatePlanIcon2.default, { ref: 'ratePlan', ratePlan: this.props.room.ratePlan }) ), _react2.default.createElement( 'td', { className: 'rooms-columns-cancellation-policy' }, (0, _ratePlan.cancellationDeadlineText)(this.getIntlMessage('react-basket.room.nonRefundableRate'), this.props.room.ratePlan) ), _react2.default.createElement( 'td', { className: 'rooms-columns-control' }, _react2.default.createElement( 'a', { className: 'btn btn-default', href: 'javascript:;', onClick: this.handleRemove }, _react2.default.createElement('span', { className: 'glyphicon glyphicon-remove' }) ) ) ); }, amenities: function amenities() { return this.props.room.roomType.amenityDescriptionsLocalized.map(function (a, i) { return _react2.default.createElement( 'li', { key: 'a' + i }, a ); }); }, handleOccupancyChange: function handleOccupancyChange(occupancyRoomCountsChange) { this.props.onOccupancyChange(this.props.room.uniqueToken, occupancyRoomCountsChange); }, handleRemove: function handleRemove() { this.props.restoreRoomInAvailableHotels(this.props.room.uniqueToken); this.props.onRemove(this.props.room.uniqueToken); } });