@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
90 lines (78 loc) • 3.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DATE_FORMAT_GUI = exports.DATE_FORMAT_RAW = undefined;
exports.dayText = dayText;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactIntl = require('react-intl');
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DATE_FORMAT_RAW = exports.DATE_FORMAT_RAW = 'YYYY-MM-DD';
var DATE_FORMAT_GUI = exports.DATE_FORMAT_GUI = 'DD.MM.YYYY';
function dayText(d) {
return (0, _moment2.default)(d, DATE_FORMAT_RAW).format(DATE_FORMAT_GUI);
}
exports.default = _react2.default.createClass({
displayName: 'DurationOfStay',
mixins: [_reactIntl.IntlMixin],
propTypes: {
periodOfStay: _react2.default.PropTypes.shape({
checkInDate: _react2.default.PropTypes.string.isRequired,
checkOutDate: _react2.default.PropTypes.string.isRequired
}).isRequired
},
render: function render() {
return _react2.default.createElement(
'div',
{ className: 'panel panel__search-query' },
_react2.default.createElement(
'div',
{ className: 'panel-body' },
_react2.default.createElement(
'h4',
null,
_react2.default.createElement(
'b',
{ className: 'title' },
_react2.default.createElement(_reactIntl.FormattedMessage, {
message: this.getIntlMessage('react-basket.durationOfStay') }),
':'
),
' ',
_react2.default.createElement(
'span',
{ className: 'period-of-stay' },
this.daysText(),
' (',
_react2.default.createElement(_reactIntl.FormattedMessage, {
message: this.getIntlMessage('react-basket.nightsCount'),
count: this.nightsCount() }),
')'
)
),
_react2.default.createElement(
'b',
{ className: 'legend-key' },
_react2.default.createElement(_reactIntl.FormattedMessage, {
message: this.getIntlMessage('react-basket.asteriskTotal') })
),
'\u2014',
_react2.default.createElement(
'span',
{ className: 'legend-meaning' },
_react2.default.createElement(_reactIntl.FormattedMessage, {
message: this.getIntlMessage('react-basket.totalColumnMeaning') })
)
)
);
},
daysText: function daysText() {
return [dayText(this.props.periodOfStay.checkInDate), '—', dayText(this.props.periodOfStay.checkOutDate)].join(' ');
},
nightsCount: function nightsCount() {
return (0, _moment2.default)(this.props.periodOfStay.checkOutDate, DATE_FORMAT_RAW).diff((0, _moment2.default)(this.props.periodOfStay.checkInDate, DATE_FORMAT_RAW), 'days');
}
});