UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

125 lines (120 loc) 6.14 kB
import * as i0 from '@angular/core'; import { forwardRef, Input, Component } from '@angular/core'; import { FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms'; import * as i2 from '@angular/common'; import { CommonModule } from '@angular/common'; import { BsDropdownModule } from 'ngx-bootstrap/dropdown'; import { A11yModule } from '@angular/cdk/a11y'; import { gettext } from '@c8y/ngx-components/gettext'; import * as i1 from '@ngx-translate/core'; const todayDate = new Date(); var TimeSpanInMs; (function (TimeSpanInMs) { TimeSpanInMs[TimeSpanInMs["MINUTE"] = 60000] = "MINUTE"; TimeSpanInMs[TimeSpanInMs["HOUR"] = 3600000] = "HOUR"; TimeSpanInMs[TimeSpanInMs["DAY"] = 86400000] = "DAY"; TimeSpanInMs[TimeSpanInMs["WEEK"] = 604800000] = "WEEK"; TimeSpanInMs[TimeSpanInMs["MONTH"] = todayDate.valueOf() - new Date(todayDate.setMonth(todayDate.getMonth() - 1)).valueOf()] = "MONTH"; })(TimeSpanInMs || (TimeSpanInMs = {})); const INTERVALS = [ { id: 'minutes', title: gettext('Last minute'), timespanInMs: TimeSpanInMs.MINUTE }, { id: 'hours', title: gettext('Last hour'), timespanInMs: TimeSpanInMs.HOUR }, { id: 'days', title: gettext('Last day'), timespanInMs: TimeSpanInMs.DAY }, { id: 'weeks', title: gettext('Last week'), timespanInMs: TimeSpanInMs.WEEK }, { id: 'months', title: gettext('Last month'), timespanInMs: TimeSpanInMs.MONTH }, { id: 'custom', title: gettext('Custom') } ]; const INTERVAL_TITLES = { minutes: gettext('Last minute'), hours: gettext('Last hour'), days: gettext('Last day'), weeks: gettext('Last week'), months: gettext('Last month'), custom: gettext('Custom') }; const INTERVAL_VALUES = Object.keys(INTERVAL_TITLES).reduce((acc, key) => ({ ...acc, [key]: key }), {}); class IntervalPickerComponent { constructor(translate) { this.translate = translate; this.INTERVALS = INTERVALS; this.touched = false; this.disabled = false; this.translatedIntervals = []; // eslint-disable-next-line @typescript-eslint/no-empty-function this.onChange = _ => { }; // eslint-disable-next-line @typescript-eslint/no-empty-function this.onTouched = () => { }; } ngOnInit() { this.translatedIntervals = this.INTERVALS.map(interval => ({ ...interval, title: this.translate.instant(interval.title) })); } writeValue(value) { this.value = value; } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(onTouched) { this.onTouched = onTouched; } markAsTouched() { if (!this.touched) { this.onTouched(); this.touched = true; } } setDisabledState(disabled) { this.disabled = disabled; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: IntervalPickerComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: IntervalPickerComponent, isStandalone: true, selector: "c8y-interval-picker", inputs: { INTERVALS: "INTERVALS" }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => IntervalPickerComponent), multi: true } ], ngImport: i0, template: "<li\n *ngFor=\"let interval of translatedIntervals\"\n [ngClass]=\"{\n active: interval.id === value\n }\"\n>\n <button\n type=\"button\"\n (click)=\"onChange(interval.id)\"\n >\n <span\n [ngClass]=\"{\n 'text-primary': interval.id === value\n }\"\n >\n <span\n c8yIcon=\"check\"\n [ngStyle]=\"{ visibility: interval.id === value ? 'visible' : 'hidden' }\"\n ></span>\n {{ interval.title }}\n </span>\n </button>\n</li>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: BsDropdownModule }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: IntervalPickerComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-interval-picker', standalone: true, imports: [CommonModule, FormsModule, A11yModule, ReactiveFormsModule, BsDropdownModule], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => IntervalPickerComponent), multi: true } ], template: "<li\n *ngFor=\"let interval of translatedIntervals\"\n [ngClass]=\"{\n active: interval.id === value\n }\"\n>\n <button\n type=\"button\"\n (click)=\"onChange(interval.id)\"\n >\n <span\n [ngClass]=\"{\n 'text-primary': interval.id === value\n }\"\n >\n <span\n c8yIcon=\"check\"\n [ngStyle]=\"{ visibility: interval.id === value ? 'visible' : 'hidden' }\"\n ></span>\n {{ interval.title }}\n </span>\n </button>\n</li>\n" }] }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { INTERVALS: [{ type: Input }] } }); /** * Generated bundle index. Do not edit. */ export { INTERVALS, INTERVAL_TITLES, INTERVAL_VALUES, IntervalPickerComponent, TimeSpanInMs }; //# sourceMappingURL=c8y-ngx-components-interval-picker.mjs.map