sb-element
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.1. It is a component library constructed around the SCSS library [Sb-Theming](https://github.com/SeverinBuchser/SbTheming) and supports [Angular Schematics]
158 lines • 17.4 kB
JavaScript
import * as fns from "date-fns";
export class MarkedDates {
constructor(dateOrStart, end) {
this.start = dateOrStart;
this.end = end;
}
get isRange() {
if (this.start && this.end) {
return this.start != this.end;
}
else
return false;
}
get isRangeDays() {
if (this.start && this.end) {
if (this.start != this.end) {
return !fns.isSameDay(this.start, this.end);
}
else
return false;
}
else
return false;
}
get isRangeMonths() {
if (this.start && this.end) {
if (this.start != this.end) {
return !fns.isSameMonth(this.start, this.end);
}
else
return false;
}
else
return false;
}
get isRangeYears() {
if (this.start && this.end) {
if (this.start != this.end) {
return !fns.isSameYear(this.start, this.end);
}
else
return false;
}
else
return false;
}
get start() { return this._start; }
set start(start) { this._start = start; }
get date() { return this._start; }
set date(date) { this._start = date; }
get end() { return this._end ? this._end : this._start; }
set end(end) { this._end = end; }
isStart(date) {
if (this.start)
return fns.isEqual(date, this.start);
else
return false;
}
isStartSameDay(date) {
if (this.start)
return fns.isSameDay(date, this.start);
else
return false;
}
isStartSameMonth(date) {
if (this.start)
return fns.isSameMonth(date, this.start);
else
return false;
}
isStartSameYear(date) {
if (this.start)
return fns.isSameYear(date, this.start);
else
return false;
}
isEnd(date) {
if (this.end)
return fns.isEqual(date, this.end);
else
return false;
}
isEndSameDay(date) {
if (this.end)
return fns.isSameDay(date, this.end);
return false;
}
isEndSameMonth(date) {
if (this.end)
return fns.isSameMonth(date, this.end);
else
return false;
}
isEndSameYear(date) {
if (this.end)
return fns.isSameYear(date, this.end);
else
return false;
}
isBetween(date) {
if (this.start && this.end) {
if (fns.isEqual(this.start, this.end))
return false;
return fns.isAfter(date, this.start) && fns.isBefore(date, this.end);
}
else
return false;
}
isBetweenDays(date) {
if (this.start && this.end) {
if (fns.isSameDay(this.start, this.end))
return false;
let dateStartOfDay = fns.startOfDay(date);
let startStartOfDay = fns.startOfDay(this.start);
let endStartOfDay = fns.startOfDay(this.end);
return fns.isAfter(dateStartOfDay, startStartOfDay) &&
fns.isBefore(dateStartOfDay, endStartOfDay);
}
else
return false;
}
isBetweenMonths(date) {
if (this.start && this.end) {
if (fns.isSameMonth(this.start, this.end))
return false;
let dateStartOfMonth = fns.startOfMonth(date);
let startStartOfMonth = fns.startOfMonth(this.start);
let endStartOfMonth = fns.startOfMonth(this.end);
return fns.isAfter(dateStartOfMonth, startStartOfMonth) &&
fns.isBefore(dateStartOfMonth, endStartOfMonth);
}
else
return false;
}
isBetweenYears(date) {
if (this.start && this.end) {
if (fns.isSameYear(this.start, this.end))
return false;
let dateStartOfMonth = fns.startOfYear(date);
let startStartOfMonth = fns.startOfYear(this.start);
let endStartOfMonth = fns.startOfYear(this.end);
return fns.isAfter(dateStartOfMonth, startStartOfMonth) &&
fns.isBefore(dateStartOfMonth, endStartOfMonth);
}
else
return false;
}
sort() {
if (this.isRange && this.start && this.end) {
if (fns.isAfter(this.start, this.end)) {
let startCopy = this.start;
this.start = this.end;
this.end = startCopy;
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VkLWRhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc2ItZWxlbWVudC9zcmMvbGliL2NhbGVuZGFyL21hcmtlZC1kYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUVoQyxNQUFNLE9BQU8sV0FBVztJQTZDdEIsWUFBWSxXQUFrQixFQUFFLEdBQVU7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQTVDRCxJQUFJLE9BQU87UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUMvQjs7WUFBTSxPQUFPLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzdDOztnQkFBTSxPQUFPLEtBQUssQ0FBQztTQUNyQjs7WUFBTSxPQUFPLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxL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QUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQztnQkFDckQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztTQUNuRDs7WUFBTSxPQUFPLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmbnMgZnJvbSBcImRhdGUtZm5zXCI7XG5cbmV4cG9ydCBjbGFzcyBNYXJrZWREYXRlcyB7XG4gIHByaXZhdGUgX3N0YXJ0OiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9lbmQ6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IGlzUmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc3RhcnQgJiYgdGhpcy5lbmQpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0ICE9IHRoaXMuZW5kO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNSYW5nZURheXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc3RhcnQgJiYgdGhpcy5lbmQpIHtcbiAgICAgIGlmICh0aGlzLnN0YXJ0ICE9IHRoaXMuZW5kKSB7XG4gICAgICAgIHJldHVybiAhZm5zLmlzU2FtZURheSh0aGlzLnN0YXJ0LCB0aGlzLmVuZCk7XG4gICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNSYW5nZU1vbnRocygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zdGFydCAmJiB0aGlzLmVuZCkge1xuICAgICAgaWYgKHRoaXMuc3RhcnQgIT0gdGhpcy5lbmQpIHtcbiAgICAgICAgcmV0dXJuICFmbnMuaXNTYW1lTW9udGgodGhpcy5zdGFydCwgdGhpcy5lbmQpO1xuICAgICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzUmFuZ2VZZWFycygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zdGFydCAmJiB0aGlzLmVuZCkge1xuICAgICAgaWYgKHRoaXMuc3RhcnQgIT0gdGhpcy5lbmQpIHtcbiAgICAgICAgcmV0dXJuICFmbnMuaXNTYW1lWWVhcih0aGlzLnN0YXJ0LCB0aGlzLmVuZCk7XG4gICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgc3RhcnQoKTogRGF0ZSB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9zdGFydCB9XG4gIHNldCBzdGFydChzdGFydDogRGF0ZSB8IHVuZGVmaW5lZCkgeyB0aGlzLl9zdGFydCA9IHN0YXJ0IH1cbiAgZ2V0IGRhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9zdGFydCB9XG4gIHNldCBkYXRlKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpIHsgdGhpcy5fc3RhcnQgPSBkYXRlIH1cblxuICBnZXQgZW5kKCk6IERhdGUgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZW5kID8gdGhpcy5fZW5kIDogdGhpcy5fc3RhcnQgfVxuICBzZXQgZW5kKGVuZDogRGF0ZSB8IHVuZGVmaW5lZCkgeyB0aGlzLl9lbmQgPSBlbmQgfVxuXG4gIGNvbnN0cnVjdG9yKCk7XG4gIGNvbnN0cnVjdG9yKGRhdGU6IERhdGUpO1xuICBjb25zdHJ1Y3RvcihzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTtcbiAgY29uc3RydWN0b3IoZGF0ZU9yU3RhcnQ/OiBEYXRlLCBlbmQ/OiBEYXRlKSB7XG4gICAgdGhpcy5zdGFydCA9IGRhdGVPclN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICB9XG5cbiAgcHVibGljIGlzU3RhcnQoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnN0YXJ0KSByZXR1cm4gZm5zLmlzRXF1YWwoZGF0ZSwgdGhpcy5zdGFydCk7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNTdGFydFNhbWVEYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnN0YXJ0KSByZXR1cm4gZm5zLmlzU2FtZURheShkYXRlLCB0aGlzLnN0YXJ0KTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1N0YXJ0U2FtZU1vbnRoKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zdGFydCkgcmV0dXJuIGZucy5pc1NhbWVNb250aChkYXRlLCB0aGlzLnN0YXJ0KTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1N0YXJ0U2FtZVllYXIoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnN0YXJ0KSByZXR1cm4gZm5zLmlzU2FtZVllYXIoZGF0ZSwgdGhpcy5zdGFydCk7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNFbmQoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmVuZCkgcmV0dXJuIGZucy5pc0VxdWFsKGRhdGUsIHRoaXMuZW5kKTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VuZFNhbWVEYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmVuZCkgcmV0dXJuIGZucy5pc1NhbWVEYXkoZGF0ZSwgdGhpcy5lbmQpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VuZFNhbWVNb250aChkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZW5kKSByZXR1cm4gZm5zLmlzU2FtZU1vbnRoKGRhdGUsIHRoaXMuZW5kKTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VuZFNhbWVZZWFyKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5lbmQpIHJldHVybiBmbnMuaXNTYW1lWWVhcihkYXRlLCB0aGlzLmVuZCk7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNCZXR3ZWVuKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zdGFydCAmJiB0aGlzLmVuZCkge1xuICAgICAgaWYgKGZucy5pc0VxdWFsKHRoaXMuc3RhcnQsIHRoaXMuZW5kKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIGZucy5pc0FmdGVyKGRhdGUsIHRoaXMuc3RhcnQpICYmIGZucy5pc0JlZm9yZShkYXRlLCB0aGlzLmVuZCk7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0JldHdlZW5EYXlzKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zdGFydCAmJiB0aGlzLmVuZCkge1xuICAgICAgaWYgKGZucy5pc1NhbWVEYXkodGhpcy5zdGFydCwgdGhpcy5lbmQpKSByZXR1cm4gZmFsc2U7XG4gICAgICBsZXQgZGF0ZVN0YXJ0T2ZEYXkgPSBmbnMuc3RhcnRPZkRheShkYXRlKTtcbiAgICAgIGxldCBzdGFydFN0YXJ0T2ZEYXkgPSBmbnMuc3RhcnRPZkRheSh0aGlzLnN0YXJ0KTtcbiAgICAgIGxldCBlbmRTdGFydE9mRGF5ID0gZm5zLnN0YXJ0T2ZEYXkodGhpcy5lbmQpO1xuICAgICAgcmV0dXJuIGZucy5pc0FmdGVyKGRhdGVTdGFydE9mRGF5LCBzdGFydFN0YXJ0T2ZEYXkpICYmXG4gICAgICAgIGZucy5pc0JlZm9yZShkYXRlU3RhcnRPZkRheSwgZW5kU3RhcnRPZkRheSk7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0JldHdlZW5Nb250aHMoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnN0YXJ0ICYmIHRoaXMuZW5kKSB7XG4gICAgICBpZiAoZm5zLmlzU2FtZU1vbnRoKHRoaXMuc3RhcnQsIHRoaXMuZW5kKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgbGV0IGRhdGVTdGFydE9mTW9udGggPSBmbnMuc3RhcnRPZk1vbnRoKGRhdGUpO1xuICAgICAgbGV0IHN0YXJ0U3RhcnRPZk1vbnRoID0gZm5zLnN0YXJ0T2ZNb250aCh0aGlzLnN0YXJ0KTtcbiAgICAgIGxldCBlbmRTdGFydE9mTW9udGggPSBmbnMuc3RhcnRPZk1vbnRoKHRoaXMuZW5kKTtcbiAgICAgIHJldHVybiBmbnMuaXNBZnRlcihkYXRlU3RhcnRPZk1vbnRoLCBzdGFydFN0YXJ0T2ZNb250aCkgJiZcbiAgICAgICAgZm5zLmlzQmVmb3JlKGRhdGVTdGFydE9mTW9udGgsIGVuZFN0YXJ0T2ZNb250aCk7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0JldHdlZW5ZZWFycyhkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc3RhcnQgJiYgdGhpcy5lbmQpIHtcbiAgICAgIGlmIChmbnMuaXNTYW1lWWVhcih0aGlzLnN0YXJ0LCB0aGlzLmVuZCkpIHJldHVybiBmYWxzZTtcbiAgICAgIGxldCBkYXRlU3RhcnRPZk1vbnRoID0gZm5zLnN0YXJ0T2ZZZWFyKGRhdGUpO1xuICAgICAgbGV0IHN0YXJ0U3RhcnRPZk1vbnRoID0gZm5zLnN0YXJ0T2ZZZWFyKHRoaXMuc3RhcnQpO1xuICAgICAgbGV0IGVuZFN0YXJ0T2ZNb250aCA9IGZucy5zdGFydE9mWWVhcih0aGlzLmVuZCk7XG4gICAgICByZXR1cm4gZm5zLmlzQWZ0ZXIoZGF0ZVN0YXJ0T2ZNb250aCwgc3RhcnRTdGFydE9mTW9udGgpICYmXG4gICAgICAgIGZucy5pc0JlZm9yZShkYXRlU3RhcnRPZk1vbnRoLCBlbmRTdGFydE9mTW9udGgpO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc29ydCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1JhbmdlICYmIHRoaXMuc3RhcnQgJiYgdGhpcy5lbmQpIHtcbiAgICAgIGlmIChmbnMuaXNBZnRlcih0aGlzLnN0YXJ0LCB0aGlzLmVuZCkpIHtcbiAgICAgICAgbGV0IHN0YXJ0Q29weSA9IHRoaXMuc3RhcnQ7XG4gICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLmVuZDtcbiAgICAgICAgdGhpcy5lbmQgPSBzdGFydENvcHk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=