UNPKG

8.31 kBSource Map (JSON)View Raw
1{"version":3,"file":"bmat-angular-forms-moment-in-bound.js","sources":["ng://@bmat/angular/forms/moment-in-bound/lib/moment-in-bound.component.ts","ng://@bmat/angular/forms/moment-in-bound/lib/moment-in-bound.constants.ts","ng://@bmat/angular/forms/moment-in-bound/lib/moment-in-bound.component.module.ts"],"sourcesContent":["import { getLocaleFirstDayOfWeek } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n LOCALE_ID,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n explicitToImplicitTz,\n implicitToExplicitTz,\n} from '@bmat/angular-luxon';\nimport { DateTime, Zone } from 'luxon';\nimport { OwlDateTimeComponent } from 'ng-pick-datetime';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface DateTimeChangeEvent {\n input: HTMLInputElement;\n source: OwlDateTimeComponent<Date>;\n value: Date;\n}\n\nexport type InnerValue = Date | null;\n\nfunction coerceDate(v: string, zone: string | Zone = 'utc'): InnerValue {\n if (!v) {\n return null;\n }\n\n const instant = DateTime.fromISO(v, { zone });\n if (!instant.isValid) {\n return null;\n }\n\n return explicitToImplicitTz(instant);\n}\n\n// dateTimeChange\n@Component({\n selector: 'bm-moment-in-bound',\n templateUrl: 'moment-in-bound.component.html',\n styleUrls: ['moment-in-bound.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line:no-forward-ref\n useExisting: forwardRef(() => MomentInBoundComponent),\n multi: true,\n },\n ],\n // tslint:disable-next-line:use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * Status Filter\n */\nexport class MomentInBoundComponent implements ControlValueAccessor {\n public innerValue$ = new BehaviorSubject<InnerValue>(null);\n\n @Input() public set value(v: string) {\n this.innerValue$.next(coerceDate(v, this.timezone));\n }\n\n // Input HTMLElement values\n @Input('aria-label') public ariaLabel!: string;\n @Input('aria-labelledby') public ariaLabelledby!: string;\n @Input() public disabled!: boolean;\n @Input() public name!: string;\n @Input() public readonly!: boolean;\n @Input() public required!: string;\n @Input() public timezone!: string | Zone;\n\n @Input() public set startTime(v: string) {\n const next = new Date(v);\n if (!Number.isNaN(next.getTime())) {\n this.calendarMin = next;\n }\n }\n\n @Input() public set endTime(v: string) {\n const next = new Date(v);\n if (!Number.isNaN(next.getTime())) {\n this.calendarMax = next;\n }\n }\n\n /**\n * Emit a RFC 3339 Datetime string\n */\n @Output() public momentSelect = new EventEmitter<null | string>();\n\n public firstDayOfWeek: number;\n public calendarMin!: Date;\n public calendarMax!: Date;\n\n private _onChangeCb!: (_: string | null) => void;\n private _onTouchedCb!: () => void;\n\n constructor(@Inject(LOCALE_ID) locale: string) {\n this.firstDayOfWeek = getLocaleFirstDayOfWeek(locale);\n }\n\n public onDateTimeChange(e: DateTimeChangeEvent) {\n let nextValue: null | string = null;\n if (e.value && !Number.isNaN(e.value.getTime())) {\n nextValue = implicitToExplicitTz(e.value, this.timezone || 'utc').toISO();\n }\n\n if (this._onChangeCb) {\n this._onChangeCb(nextValue);\n }\n\n this.momentSelect.emit(nextValue);\n }\n\n // ControlValueAccessor Methods\n public writeValue(v: string) {\n this.innerValue$.next(coerceDate(v, this.timezone));\n }\n\n public registerOnChange(fn: (_: string | null) => void) {\n this._onChangeCb = fn;\n }\n\n public registerOnTouched(fn: () => void) {\n this._onTouchedCb = fn;\n }\n\n public setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n\n // Other methods\n public onFocusin() {\n if (this._onTouchedCb) {\n this._onTouchedCb();\n }\n }\n}\n","/**\n * OWL Datetime config\n */\nexport const MY_NATIVE_FORMATS = {\n fullPickerInput: {\n year: '2-digit',\n month: '2-digit',\n day: '2-digit',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n datePickerInput: { year: '2-digit', month: 'numeric', day: 'numeric' },\n timePickerInput: { hour: 'numeric', minute: 'numeric' },\n monthYearLabel: { year: '2-digit', month: 'short' },\n dateA11yLabel: { year: '2-digit', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: '2-digit', month: 'long' },\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n} from 'ng-pick-datetime';\n\nimport { MomentInBoundComponent } from './moment-in-bound.component';\nimport { MY_NATIVE_FORMATS } from './moment-in-bound.constants';\n\n@NgModule({\n imports: [CommonModule, OwlDateTimeModule, OwlNativeDateTimeModule],\n declarations: [MomentInBoundComponent],\n exports: [MomentInBoundComponent],\n providers: [{ provide: OWL_DATE_TIME_FORMATS, useValue: MY_NATIVE_FORMATS }],\n})\nexport class MomentInBoundComponentModule {}\n"],"names":[],"mappings":"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"}
\No newline at end of file