UNPKG

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
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=