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]

72 lines 10.9 kB
import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import * as fns from "date-fns"; import { mixinColor, mixinClassName, Color, mixinTabindex, mixinDisable } from "../../core"; import { MarkedDates } from "../marked-dates"; import * as i0 from "@angular/core"; import * as i1 from "../../core"; const SbCalendarDateCore = mixinDisable(mixinTabindex(mixinColor(mixinClassName(class { constructor(_elementRef, _themeService) { this._elementRef = _elementRef; this._themeService = _themeService; } }, 'sb-calendar-date'), Color.PRIMARY), 0)); export class SbCalendarDateComponent extends SbCalendarDateCore { constructor(elementRef, themeService) { super(elementRef, themeService); this.select = new EventEmitter(); this.markedDates = new MarkedDates(); } get isMarked() { return this.markedDates.isRange && (this.markedDates.isBetweenDays(this.date) || this.markedDates.isStartSameDay(this.date) || this.markedDates.isEndSameDay(this.date)) || !this.markedDates.isRange && (this.markedDates.isStartSameDay(this.date) && this.markedDates.isEndSameDay(this.date)); } get isStart() { return this.markedDates.isRangeDays && this.markedDates.isStartSameDay(this.date); } get isEnd() { return this.markedDates.isRangeDays && this.markedDates.isEndSameDay(this.date); } get isBetween() { return this.markedDates.isRangeDays && this.markedDates.isBetweenDays(this.date); } get isNotInMonth() { return !fns.isSameMonth(this.showingMonthStart, this.date); } get dateFormatted() { return fns.format(this.date, 'dd'); } handleClick() { if (!this.disabled) { this.select.emit(this.date); } } } SbCalendarDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: SbCalendarDateComponent, deps: [{ token: i0.ElementRef }, { token: i1.SbThemeService }], target: i0.ɵɵFactoryTarget.Component }); SbCalendarDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: SbCalendarDateComponent, selector: "sb-calendar-date", inputs: { color: "color", disabled: "disabled", date: "date", markedDates: "markedDates", showingMonthStart: "showingMonthStart" }, outputs: { select: "select" }, host: { listeners: { "click": "handleClick()" }, properties: { "class.marked": "isMarked", "class.start": "isStart", "class.end": "isEnd", "class.between": "isBetween", "class.not-in-month": "isNotInMonth", "class.disabled": "disabled" } }, usesInheritance: true, ngImport: i0, template: "<span>{{ dateFormatted }}</span>\n<div class=\"mark\"></div>\n", encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: SbCalendarDateComponent, decorators: [{ type: Component, args: [{ selector: 'sb-calendar-date', encapsulation: ViewEncapsulation.None, host: { '[class.marked]': 'isMarked', '[class.start]': 'isStart', '[class.end]': 'isEnd', '[class.between]': 'isBetween', '[class.not-in-month]': 'isNotInMonth', '[class.disabled]': 'disabled', '(click)': 'handleClick()' }, inputs: [ 'color', 'disabled' ], template: "<span>{{ dateFormatted }}</span>\n<div class=\"mark\"></div>\n" }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.SbThemeService }]; }, propDecorators: { select: [{ type: Output }], date: [{ type: Input }], markedDates: [{ type: Input }], showingMonthStart: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zYi1lbGVtZW50L3NyYy9saWIvY2FsZW5kYXIvZGF0ZS9jYWxlbmRhci1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NiLWVsZW1lbnQvc3JjL2xpYi9jYWxlbmRhci9kYXRlL2NhbGVuZGFyLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQWtCLFVBQVUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFOUMsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQ3JDLGFBQWEsQ0FDWCxVQUFVLENBQ1IsY0FBYyxDQUNaO0lBQ0UsWUFDUyxXQUF1QixFQUN2QixhQUE2QjtRQUQ3QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7SUFBRyxDQUFDO0NBQ3pDLEVBQUUsa0JBQWtCLENBQ3hCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FDakIsRUFBRSxDQUFDLENBQ0wsQ0FDRixDQUFDO0FBb0JGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxrQkFBa0I7SUE4QzdELFlBQ0UsVUFBc0IsRUFDdEIsWUFBNEI7UUFFNUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQS9DM0IsV0FBTSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBTXRELGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7SUEwQ3BELENBQUM7SUFyQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sSUFBSSxDQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUN6QztZQUNELENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFTTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7O29IQXpEVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixtZUNyQ3BDLGdFQUVBOzJGRG1DYSx1QkFBdUI7a0JBbEJuQyxTQUFTOytCQUNFLGtCQUFrQixpQkFFYixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLGdCQUFnQixFQUFFLFVBQVU7d0JBQzVCLGVBQWUsRUFBRSxTQUFTO3dCQUMxQixhQUFhLEVBQUUsT0FBTzt3QkFDdEIsaUJBQWlCLEVBQUUsV0FBVzt3QkFDOUIsc0JBQXNCLEVBQUUsY0FBYzt3QkFDdEMsa0JBQWtCLEVBQUUsVUFBVTt3QkFDOUIsU0FBUyxFQUFFLGVBQWU7cUJBQzNCLFVBQ087d0JBQ04sT0FBTzt3QkFDUCxVQUFVO3FCQUNYOzhIQUtNLE1BQU07c0JBRFosTUFBTTtnQkFJQSxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGZucyBmcm9tIFwiZGF0ZS1mbnNcIjtcbmltcG9ydCB7IFNiVGhlbWVTZXJ2aWNlLCBtaXhpbkNvbG9yLCBtaXhpbkNsYXNzTmFtZSwgQ29sb3IsIG1peGluVGFiaW5kZXgsIG1peGluRGlzYWJsZSB9IGZyb20gXCIuLi8uLi9jb3JlXCI7XG5pbXBvcnQgeyBNYXJrZWREYXRlcyB9IGZyb20gXCIuLi9tYXJrZWQtZGF0ZXNcIjtcblxuY29uc3QgU2JDYWxlbmRhckRhdGVDb3JlID0gbWl4aW5EaXNhYmxlKFxuICBtaXhpblRhYmluZGV4KFxuICAgIG1peGluQ29sb3IoXG4gICAgICBtaXhpbkNsYXNzTmFtZShcbiAgICAgICAgY2xhc3Mge1xuICAgICAgICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAgICAgcHVibGljIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgcHVibGljIF90aGVtZVNlcnZpY2U6IFNiVGhlbWVTZXJ2aWNlKSB7fVxuICAgICAgICAgIH0sICdzYi1jYWxlbmRhci1kYXRlJ1xuICAgICAgKSwgQ29sb3IuUFJJTUFSWVxuICAgICksIDBcbiAgKVxuKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ItY2FsZW5kYXItZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MubWFya2VkXSc6ICdpc01hcmtlZCcsXG4gICAgJ1tjbGFzcy5zdGFydF0nOiAnaXNTdGFydCcsXG4gICAgJ1tjbGFzcy5lbmRdJzogJ2lzRW5kJyxcbiAgICAnW2NsYXNzLmJldHdlZW5dJzogJ2lzQmV0d2VlbicsXG4gICAgJ1tjbGFzcy5ub3QtaW4tbW9udGhdJzogJ2lzTm90SW5Nb250aCcsXG4gICAgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICcoY2xpY2spJzogJ2hhbmRsZUNsaWNrKCknXG4gIH0sXG4gIGlucHV0czogW1xuICAgICdjb2xvcicsXG4gICAgJ2Rpc2FibGVkJ1xuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTYkNhbGVuZGFyRGF0ZUNvbXBvbmVudCBleHRlbmRzIFNiQ2FsZW5kYXJEYXRlQ29yZSB7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZSE6IERhdGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1hcmtlZERhdGVzOiBNYXJrZWREYXRlcyA9IG5ldyBNYXJrZWREYXRlcygpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93aW5nTW9udGhTdGFydCE6IERhdGU7XG5cbiAgZ2V0IGlzTWFya2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1hcmtlZERhdGVzLmlzUmFuZ2UgJiYgKFxuICAgICAgdGhpcy5tYXJrZWREYXRlcy5pc0JldHdlZW5EYXlzKHRoaXMuZGF0ZSkgfHxcbiAgICAgIHRoaXMubWFya2VkRGF0ZXMuaXNTdGFydFNhbWVEYXkodGhpcy5kYXRlKSB8fFxuICAgICAgdGhpcy5tYXJrZWREYXRlcy5pc0VuZFNhbWVEYXkodGhpcy5kYXRlKVxuICAgICkgfHxcbiAgICAhdGhpcy5tYXJrZWREYXRlcy5pc1JhbmdlICYmIChcbiAgICAgIHRoaXMubWFya2VkRGF0ZXMuaXNTdGFydFNhbWVEYXkodGhpcy5kYXRlKSAmJlxuICAgICAgdGhpcy5tYXJrZWREYXRlcy5pc0VuZFNhbWVEYXkodGhpcy5kYXRlKVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNTdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXJrZWREYXRlcy5pc1JhbmdlRGF5cyAmJiB0aGlzLm1hcmtlZERhdGVzLmlzU3RhcnRTYW1lRGF5KHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgaXNFbmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWFya2VkRGF0ZXMuaXNSYW5nZURheXMgJiYgdGhpcy5tYXJrZWREYXRlcy5pc0VuZFNhbWVEYXkodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBpc0JldHdlZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWFya2VkRGF0ZXMuaXNSYW5nZURheXMgJiYgdGhpcy5tYXJrZWREYXRlcy5pc0JldHdlZW5EYXlzKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgaXNOb3RJbk1vbnRoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhZm5zLmlzU2FtZU1vbnRoKHRoaXMuc2hvd2luZ01vbnRoU3RhcnQsIHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgZGF0ZUZvcm1hdHRlZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBmbnMuZm9ybWF0KHRoaXMuZGF0ZSwgJ2RkJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHRoZW1lU2VydmljZTogU2JUaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgdGhlbWVTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5kYXRlKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPHNwYW4+e3sgZGF0ZUZvcm1hdHRlZCB9fTwvc3Bhbj5cbjxkaXYgY2xhc3M9XCJtYXJrXCI+PC9kaXY+XG4iXX0=