ngb-date.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import { isInteger } from '../util/util';
  6. /**
  7. * A simple class that represents a date that datepicker also uses internally.
  8. *
  9. * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,
  10. * like `.equals()`, `.before()`, etc.
  11. *
  12. * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.
  13. *
  14. * In many cases it is simpler to manipulate these objects together with
  15. * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.
  16. *
  17. * See the [date format overview](#/components/datepicker/overview#date-model) for more details.
  18. *
  19. * \@since 3.0.0
  20. */
  21. var /**
  22. * A simple class that represents a date that datepicker also uses internally.
  23. *
  24. * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,
  25. * like `.equals()`, `.before()`, etc.
  26. *
  27. * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.
  28. *
  29. * In many cases it is simpler to manipulate these objects together with
  30. * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.
  31. *
  32. * See the [date format overview](#/components/datepicker/overview#date-model) for more details.
  33. *
  34. * \@since 3.0.0
  35. */
  36. NgbDate = /** @class */ (function () {
  37. function NgbDate(year, month, day) {
  38. this.year = isInteger(year) ? year : null;
  39. this.month = isInteger(month) ? month : null;
  40. this.day = isInteger(day) ? day : null;
  41. }
  42. /**
  43. * A **static method** that creates a new date object from the `NgbDateStruct`,
  44. *
  45. * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.
  46. *
  47. * If the `date` is already of `NgbDate` type, the method will return the same object.
  48. */
  49. /**
  50. * A **static method** that creates a new date object from the `NgbDateStruct`,
  51. *
  52. * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.
  53. *
  54. * If the `date` is already of `NgbDate` type, the method will return the same object.
  55. * @param {?} date
  56. * @return {?}
  57. */
  58. NgbDate.from = /**
  59. * A **static method** that creates a new date object from the `NgbDateStruct`,
  60. *
  61. * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.
  62. *
  63. * If the `date` is already of `NgbDate` type, the method will return the same object.
  64. * @param {?} date
  65. * @return {?}
  66. */
  67. function (date) {
  68. if (date instanceof NgbDate) {
  69. return date;
  70. }
  71. return date ? new NgbDate(date.year, date.month, date.day) : null;
  72. };
  73. /**
  74. * Checks if the current date is equal to another date.
  75. */
  76. /**
  77. * Checks if the current date is equal to another date.
  78. * @param {?} other
  79. * @return {?}
  80. */
  81. NgbDate.prototype.equals = /**
  82. * Checks if the current date is equal to another date.
  83. * @param {?} other
  84. * @return {?}
  85. */
  86. function (other) {
  87. return other && this.year === other.year && this.month === other.month && this.day === other.day;
  88. };
  89. /**
  90. * Checks if the current date is before another date.
  91. */
  92. /**
  93. * Checks if the current date is before another date.
  94. * @param {?} other
  95. * @return {?}
  96. */
  97. NgbDate.prototype.before = /**
  98. * Checks if the current date is before another date.
  99. * @param {?} other
  100. * @return {?}
  101. */
  102. function (other) {
  103. if (!other) {
  104. return false;
  105. }
  106. if (this.year === other.year) {
  107. if (this.month === other.month) {
  108. return this.day === other.day ? false : this.day < other.day;
  109. }
  110. else {
  111. return this.month < other.month;
  112. }
  113. }
  114. else {
  115. return this.year < other.year;
  116. }
  117. };
  118. /**
  119. * Checks if the current date is after another date.
  120. */
  121. /**
  122. * Checks if the current date is after another date.
  123. * @param {?} other
  124. * @return {?}
  125. */
  126. NgbDate.prototype.after = /**
  127. * Checks if the current date is after another date.
  128. * @param {?} other
  129. * @return {?}
  130. */
  131. function (other) {
  132. if (!other) {
  133. return false;
  134. }
  135. if (this.year === other.year) {
  136. if (this.month === other.month) {
  137. return this.day === other.day ? false : this.day > other.day;
  138. }
  139. else {
  140. return this.month > other.month;
  141. }
  142. }
  143. else {
  144. return this.year > other.year;
  145. }
  146. };
  147. return NgbDate;
  148. }());
  149. /**
  150. * A simple class that represents a date that datepicker also uses internally.
  151. *
  152. * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,
  153. * like `.equals()`, `.before()`, etc.
  154. *
  155. * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.
  156. *
  157. * In many cases it is simpler to manipulate these objects together with
  158. * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.
  159. *
  160. * See the [date format overview](#/components/datepicker/overview#date-model) for more details.
  161. *
  162. * \@since 3.0.0
  163. */
  164. export { NgbDate };
  165. if (false) {
  166. /**
  167. * The year, for example 2016
  168. * @type {?}
  169. */
  170. NgbDate.prototype.year;
  171. /**
  172. * The month, for example 1=Jan ... 12=Dec as in ISO 8601
  173. * @type {?}
  174. */
  175. NgbDate.prototype.month;
  176. /**
  177. * The day of month, starting with 1
  178. * @type {?}
  179. */
  180. NgbDate.prototype.day;
  181. }
  182. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdiLWRhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC8iLCJzb3VyY2VzIjpbImRhdGVwaWNrZXIvbmdiLWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQnZDOzs7Ozs7Ozs7Ozs7Ozs7O0lBOEJFLGlCQUFZLElBQVksRUFBRSxLQUFhLEVBQUUsR0FBVztRQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBbEJEOzs7Ozs7T0FNRzs7Ozs7Ozs7OztJQUNJLFlBQUk7Ozs7Ozs7OztJQUFYLFVBQVksSUFBbUI7UUFDN0IsSUFBSSxJQUFJLFlBQVksT0FBTyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7SUFRRDs7T0FFRzs7Ozs7O0lBQ0gsd0JBQU07Ozs7O0lBQU4sVUFBTyxLQUFvQjtRQUN6QixPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNuRyxDQUFDO0lBRUQ7O09BRUc7Ozs7OztJQUNILHdCQUFNOzs7OztJQUFOLFVBQU8sS0FBb0I7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQzlEO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ2pDO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSCx1QkFBSzs7Ozs7SUFBTCxVQUFNLEtBQW9CO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUM5RDtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNqQztTQUNGO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztTQUMvQjtJQUNILENBQUM7SUFDSCxjQUFDO0FBQUQsQ0FBQyxBQS9FRCxJQStFQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTNFQyx1QkFBYTs7Ozs7SUFLYix3QkFBYzs7Ozs7SUFLZCxzQkFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuaW1wb3J0IHtpc0ludGVnZXJ9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbi8qKlxuICogQSBzaW1wbGUgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgZGF0ZSB0aGF0IGRhdGVwaWNrZXIgYWxzbyB1c2VzIGludGVybmFsbHkuXG4gKlxuICogSXQgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgTmdiRGF0ZVN0cnVjdGAgaW50ZXJmYWNlIHRoYXQgYWRkcyBzb21lIGNvbnZlbmllbmNlIG1ldGhvZHMsXG4gKiBsaWtlIGAuZXF1YWxzKClgLCBgLmJlZm9yZSgpYCwgZXRjLlxuICpcbiAqIEFsbCBkYXRlcGlja2VyIEFQSXMgY29uc3VtZSBgTmdiRGF0ZVN0cnVjdGAsIGJ1dCByZXR1cm4gYE5nYkRhdGVgLlxuICpcbiAqIEluIG1hbnkgY2FzZXMgaXQgaXMgc2ltcGxlciB0byBtYW5pcHVsYXRlIHRoZXNlIG9iamVjdHMgdG9nZXRoZXIgd2l0aFxuICogW2BOZ2JDYWxlbmRhcmBdKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JDYWxlbmRhcikgdGhhbiBuYXRpdmUgSlMgRGF0ZXMuXG4gKlxuICogU2VlIHRoZSBbZGF0ZSBmb3JtYXQgb3ZlcnZpZXddKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL292ZXJ2aWV3I2RhdGUtbW9kZWwpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHNpbmNlIDMuMC4wXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ2JEYXRlIGltcGxlbWVudHMgTmdiRGF0ZVN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgeWVhciwgZm9yIGV4YW1wbGUgMjAxNlxuICAgKi9cbiAgeWVhcjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9udGgsIGZvciBleGFtcGxlIDE9SmFuIC4uLiAxMj1EZWMgYXMgaW4gSVNPIDg2MDFcbiAgICovXG4gIG1vbnRoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXkgb2YgbW9udGgsIHN0YXJ0aW5nIHdpdGggMVxuICAgKi9cbiAgZGF5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgKipzdGF0aWMgbWV0aG9kKiogdGhhdCBjcmVhdGVzIGEgbmV3IGRhdGUgb2JqZWN0IGZyb20gdGhlIGBOZ2JEYXRlU3RydWN0YCxcbiAgICpcbiAgICogZXguIGBOZ2JEYXRlLmZyb20oe3llYXI6IDIwMDAsIG1vbnRoOiA1LCBkYXk6IDF9KWAuXG4gICAqXG4gICAqIElmIHRoZSBgZGF0ZWAgaXMgYWxyZWFkeSBvZiBgTmdiRGF0ZWAgdHlwZSwgdGhlIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgc2FtZSBvYmplY3QuXG4gICAqL1xuICBzdGF0aWMgZnJvbShkYXRlOiBOZ2JEYXRlU3RydWN0KTogTmdiRGF0ZSB7XG4gICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGUgPyBuZXcgTmdiRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5KSA6IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKSB7XG4gICAgdGhpcy55ZWFyID0gaXNJbnRlZ2VyKHllYXIpID8geWVhciA6IG51bGw7XG4gICAgdGhpcy5tb250aCA9IGlzSW50ZWdlcihtb250aCkgPyBtb250aCA6IG51bGw7XG4gICAgdGhpcy5kYXkgPSBpc0ludGVnZXIoZGF5KSA/IGRheSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGRhdGUgaXMgZXF1YWwgdG8gYW5vdGhlciBkYXRlLlxuICAgKi9cbiAgZXF1YWxzKG90aGVyOiBOZ2JEYXRlU3RydWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMueWVhciA9PT0gb3RoZXIueWVhciAmJiB0aGlzLm1vbnRoID09PSBvdGhlci5tb250aCAmJiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBkYXRlIGlzIGJlZm9yZSBhbm90aGVyIGRhdGUuXG4gICAqL1xuICBiZWZvcmUob3RoZXI6IE5nYkRhdGVTdHJ1Y3QpOiBib29sZWFuIHtcbiAgICBpZiAoIW90aGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMueWVhciA9PT0gb3RoZXIueWVhcikge1xuICAgICAgaWYgKHRoaXMubW9udGggPT09IG90aGVyLm1vbnRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5ID8gZmFsc2UgOiB0aGlzLmRheSA8IG90aGVyLmRheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoIDwgb3RoZXIubW9udGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnllYXIgPCBvdGhlci55ZWFyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZGF0ZSBpcyBhZnRlciBhbm90aGVyIGRhdGUuXG4gICAqL1xuICBhZnRlcihvdGhlcjogTmdiRGF0ZVN0cnVjdCk6IGJvb2xlYW4ge1xuICAgIGlmICghb3RoZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMueWVhciA9PT0gb3RoZXIueWVhcikge1xuICAgICAgaWYgKHRoaXMubW9udGggPT09IG90aGVyLm1vbnRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5ID8gZmFsc2UgOiB0aGlzLmRheSA+IG90aGVyLmRheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoID4gb3RoZXIubW9udGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnllYXIgPiBvdGhlci55ZWFyO1xuICAgIH1cbiAgfVxufVxuIl19