UNPKG

react-period-of-stay-input

Version:

React.js component for entering a period of stay in a hotel: check-in + check-out date

67 lines (66 loc) 2.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Day_1 = require("./Day"); var MAX_NIGHTS_COUNT = 27; var Model = /** @class */ (function () { function Model(checkInDate, checkOutDate) { if (checkOutDate.toMoment().isBefore(checkInDate.toMoment())) { throw new Error("Check-out date can't be before check-in. Got " + checkInDate + ", " + checkOutDate); } this._checkInDate = checkInDate; this._checkOutDate = checkOutDate; } Object.defineProperty(Model.prototype, "checkInDate", { get: function () { return this._checkInDate; }, enumerable: true, configurable: true }); Object.defineProperty(Model.prototype, "checkOutDate", { get: function () { return this._checkOutDate; }, enumerable: true, configurable: true }); Model.prototype.newCheckIn = function (checkInDate, environment) { var mCheckOut = this._checkOutDate.toMoment(); var checkIn = new Day_1.default(checkInDate); var mCheckIn = checkIn.toMoment(); if (mCheckIn.isBefore(environment.minCheckInDate.toMoment())) { return this; } if (itsOk(mCheckIn, mCheckOut, environment)) { return new Model(checkIn, checkIn.next()); } return new Model(checkIn, this._checkOutDate); }; Model.prototype.newCheckOut = function (checkOutDate, environment) { var mCheckIn = this.checkInDate.toMoment(); var checkOut = new Day_1.default(checkOutDate); var mCheckOut = checkOut.toMoment(); var mMinCheckInDate = environment.minCheckInDate.toMoment(); if (mCheckOut.isBefore(mMinCheckInDate) || (!environment.zeroNightsAllowed && mCheckOut.isSame(mMinCheckInDate, 'day'))) { return this; } if (environment.zeroNightsAllowed && mCheckOut.isSame(mMinCheckInDate, 'day')) { return new Model(checkOut, checkOut); } if (itsOk(mCheckIn, mCheckOut, environment)) { return new Model(checkOut.previous(), checkOut); } return new Model(this._checkInDate, checkOut); }; Model.prototype.nightsCount = function () { return this._checkOutDate.toMoment().diff(this._checkInDate.toMoment(), 'days'); }; return Model; }()); exports.default = Model; function itsOk(mCheckIn, mCheckOut, environment) { return (mCheckOut.isBefore(mCheckIn) || (!environment.zeroNightsAllowed && mCheckIn.isSame(mCheckOut, 'day')) || (mCheckOut.diff(mCheckIn, 'days') > MAX_NIGHTS_COUNT)); }