UNPKG

22.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"timepicker.component.js","sourceRoot":"","sources":["../../src/timepicker/timepicker.component.ts"],"names":[],"mappings":"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","sourcesContent":["// tslint:disable max-file-line-count\nimport { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TimepickerConfig } from './timepicker.config';\n\nexport const TIMEPICKER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimepickerComponent),\n multi: true\n};\n\n// todo: refactor directive has to many functions! (extract to stateless helper)\n// todo: use moment js?\n// todo: implement `time` validator\n// todo: replace increment/decrement blockers with getters, or extract\n// todo: unify work with selected\nfunction isDefined(value: any): boolean {\n return typeof value !== 'undefined';\n}\n\nfunction addMinutes(date: any, minutes: number): Date {\n let dt = new Date(date.getTime() + minutes * 60000);\n let newDate = new Date(date);\n newDate.setHours(dt.getHours(), dt.getMinutes());\n return newDate;\n}\n\n\nexport class TimepickerComponent implements ControlValueAccessor, OnInit {\n /** hours change step */\n public hourStep: number;\n /** hours change step */\n public minuteStep: number;\n /** if true hours and minutes fields will be readonly */\n public readonlyInput: boolean;\n /** if true scroll inside hours and minutes inputs will change time */\n public mousewheel: boolean;\n /** if true up/down arrowkeys inside hours and minutes inputs will change time */\n public arrowkeys: boolean;\n /** if true spinner arrows above and below the inputs will be shown */\n public showSpinners: boolean;\n /** minimum time user can select */\n public min: Date;\n /** maximum time user can select */\n public max: Date;\n /** meridian labels based on locale */\n public meridians: string[];\n\n /** if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM */\n \n public get showMeridian(): boolean {\n return this._showMeridian;\n }\n\n public set showMeridian(value: boolean) {\n this._showMeridian = value;\n // || !this.$error.time\n // if (true) {\n this.updateTemplate();\n return;\n // }\n // Evaluate from template\n /*let hours = this.getHoursFromTemplate();\n let minutes = this.getMinutesFromTemplate();\n if (isDefined(hours) && isDefined(minutes)) {\n this.selected.setHours(hours);\n this.refresh();\n }*/\n }\n\n public onChange: any = Function.prototype;\n public onTouched: any = Function.prototype;\n\n // input values\n public hours: string;\n public minutes: string;\n\n // validation\n public invalidHours: any;\n public invalidMinutes: any;\n\n public meridian: any; // ??\n\n // result value\n protected _selected: Date = new Date();\n protected _showMeridian: boolean;\n\n protected get selected(): Date {\n return this._selected;\n }\n\n protected set selected(v: Date) {\n if (v) {\n this._selected = v;\n this.updateTemplate();\n this.onChange(this.selected);\n }\n }\n\n protected config: TimepickerConfig;\n\n public constructor(_config: TimepickerConfig) {\n this.config = _config;\n Object.assign(this, _config);\n }\n\n // todo: add formatter value to Date object\n public ngOnInit(): void {\n // todo: take in account $locale.DATETIME_FORMATS.AMPMS;\n if (this.mousewheel) {\n // this.setupMousewheelEvents();\n }\n\n if (this.arrowkeys) {\n // this.setupArrowkeyEvents();\n }\n\n // this.setupInputEvents();\n }\n\n public writeValue(v: any): void {\n if (v === this.selected) {\n return;\n }\n if (v && v instanceof Date) {\n this.selected = v;\n return;\n }\n this.selected = v ? new Date(v) : void 0;\n }\n\n public registerOnChange(fn: (_: any) => {}): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.readonlyInput = isDisabled;\n }\n\n public updateHours(): void {\n if (this.readonlyInput) {\n return;\n }\n\n let hours = this.getHoursFromTemplate();\n let minutes = this.getMinutesFromTemplate();\n this.invalidHours = !isDefined(hours);\n this.invalidMinutes = !isDefined(minutes);\n\n if (this.invalidHours || this.invalidMinutes) {\n // TODO: needed a validation functionality.\n return;\n // todo: validation?\n // invalidate(true);\n }\n\n this.selected.setHours(hours);\n this.invalidHours = (this.selected < this.min || this.selected > this.max);\n if (this.invalidHours) {\n // todo: validation?\n // invalidate(true);\n return;\n } else {\n this.refresh(/*'h'*/);\n }\n }\n\n public hoursOnBlur(): void {\n if (this.readonlyInput) {\n return;\n }\n\n // todo: binded with validation\n if (!this.invalidHours && parseInt(this.hours, 10) < 10) {\n this.hours = this.pad(this.hours);\n }\n }\n\n public updateMinutes(): void {\n if (this.readonlyInput) {\n return;\n }\n\n let minutes = this.getMinutesFromTemplate();\n let hours = this.getHoursFromTemplate();\n this.invalidMinutes = !isDefined(minutes);\n this.invalidHours = !isDefined(hours);\n\n if (this.invalidMinutes || this.invalidHours) {\n // TODO: needed a validation functionality.\n return;\n // todo: validation\n // invalidate(undefined, true);\n }\n\n this.selected.setMinutes(minutes);\n this.invalidMinutes = (this.selected < this.min || this.selected > this.max);\n if (this.invalidMinutes) {\n // todo: validation\n // invalidate(undefined, true);\n return;\n } else {\n this.refresh(/*'m'*/);\n }\n }\n\n public minutesOnBlur(): void {\n if (this.readonlyInput) {\n return;\n }\n\n if (!this.invalidMinutes && parseInt(this.minutes, 10) < 10) {\n this.minutes = this.pad(this.minutes);\n }\n }\n\n public incrementHours(): void {\n if (!this.noIncrementHours()) {\n this.addMinutesToSelected(this.hourStep * 60);\n }\n }\n\n public decrementHours(): void {\n if (!this.noDecrementHours()) {\n this.addMinutesToSelected(-this.hourStep * 60);\n }\n }\n\n public incrementMinutes(): void {\n if (!this.noIncrementMinutes()) {\n this.addMinutesToSelected(this.minuteStep);\n }\n }\n\n public decrementMinutes(): void {\n if (!this.noDecrementMinutes()) {\n this.addMinutesToSelected(-this.minuteStep);\n }\n }\n\n public noIncrementHours(): boolean {\n let incrementedSelected = addMinutes(this.selected, this.hourStep * 60);\n return incrementedSelected > this.max ||\n (incrementedSelected < this.selected && incrementedSelected < this.min);\n }\n\n public noDecrementHours(): boolean {\n let decrementedSelected = addMinutes(this.selected, -this.hourStep * 60);\n return decrementedSelected < this.min ||\n (decrementedSelected > this.selected && decrementedSelected > this.max);\n }\n\n public noIncrementMinutes(): boolean {\n let incrementedSelected = addMinutes(this.selected, this.minuteStep);\n return incrementedSelected > this.max ||\n (incrementedSelected < this.selected && incrementedSelected < this.min);\n }\n\n public noDecrementMinutes(): boolean {\n let decrementedSelected = addMinutes(this.selected, -this.minuteStep);\n return decrementedSelected < this.min ||\n (decrementedSelected > this.selected && decrementedSelected > this.max);\n\n }\n\n public toggleMeridian(): void {\n if (!this.noToggleMeridian()) {\n let sign = this.selected.getHours() < 12 ? 1 : -1;\n this.addMinutesToSelected(12 * 60 * sign);\n }\n }\n\n public noToggleMeridian(): boolean {\n if (this.readonlyInput) {\n return true;\n }\n\n if (this.selected.getHours() < 13) {\n return addMinutes(this.selected, 12 * 60) > this.max;\n } else {\n return addMinutes(this.selected, -12 * 60) < this.min;\n }\n }\n\n protected refresh(/*type?:string*/): void {\n // this.makeValid();\n this.updateTemplate();\n this.onChange(this.selected);\n }\n\n protected updateTemplate(/*keyboardChange?:any*/): void {\n let hours = this.selected.getHours();\n let minutes = this.selected.getMinutes();\n\n if (this.showMeridian) {\n // Convert 24 to 12 hour system\n hours = (hours === 0 || hours === 12) ? 12 : hours % 12;\n }\n\n // this.hours = keyboardChange === 'h' ? hours : this.pad(hours);\n // if (keyboardChange !== 'm') {\n // this.minutes = this.pad(minutes);\n // }\n this.hours = this.pad(hours);\n this.minutes = this.pad(minutes);\n\n if (!this.meridians) {\n this.meridians = this.config.meridians;\n }\n\n this.meridian = this.selected.getHours() < 12\n ? this.meridians[0]\n : this.meridians[1];\n }\n\n protected getHoursFromTemplate(): number {\n let hours = parseInt(this.hours, 10);\n let valid = this.showMeridian\n ? (hours > 0 && hours < 13)\n : (hours >= 0 && hours < 24);\n if (!valid) {\n return void 0;\n }\n\n if (this.showMeridian) {\n if (hours === 12) {\n hours = 0;\n }\n if (this.meridian === this.meridians[1]) {\n hours = hours + 12;\n }\n }\n return hours;\n }\n\n protected getMinutesFromTemplate(): number {\n let minutes = parseInt(this.minutes, 10);\n return (minutes >= 0 && minutes < 60) ? minutes : undefined;\n }\n\n protected pad(value: string|number): string {\n return (isDefined(value) && value.toString().length < 2)\n ? '0' + value\n : value.toString();\n }\n\n protected addMinutesToSelected(minutes: any): void {\n this.selected = addMinutes(this.selected, minutes);\n this.refresh();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n selector: 'timepicker',\n template: `\n <table>\n <tbody>\n <tr class=\"text-center\" [ngClass]=\"{hidden: !showSpinners || readonlyInput}\">\n <td><a (click)=\"incrementHours()\" [ngClass]=\"{disabled: noIncrementHours()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n <td>&nbsp;</td>\n <td><a (click)=\"incrementMinutes()\" [ngClass]=\"{disabled: noIncrementMinutes()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n <td [ngClass]=\"{hidden: !showMeridian}\" *ngIf=\"showMeridian\"></td>\n </tr>\n <tr>\n <td class=\"form-group\" [ngClass]=\"{'has-error': invalidHours}\">\n <input style=\"width:50px;\" type=\"text\" [(ngModel)]=\"hours\" (change)=\"updateHours()\" class=\"form-control text-center\" [readonly]=\"readonlyInput\" (blur)=\"hoursOnBlur()\" maxlength=\"2\">\n </td>\n <td>:</td>\n <td class=\"form-group\" [ngClass]=\"{'has-error': invalidMinutes}\">\n <input style=\"width:50px;\" type=\"text\" [(ngModel)]=\"minutes\" (change)=\"updateMinutes()\" class=\"form-control text-center\" [readonly]=\"readonlyInput\" (blur)=\"minutesOnBlur()\" maxlength=\"2\">\n </td>\n <td [ngClass]=\"{hidden: !showMeridian}\" *ngIf=\"showMeridian\"><button type=\"button\" [ngClass]=\"{disabled: noToggleMeridian() || readonlyInput}\" class=\"btn btn-default text-center\" (click)=\"toggleMeridian()\">{{meridian}}</button></td>\n </tr>\n <tr class=\"text-center\" [ngClass]=\"{hidden: !showSpinners || readonlyInput}\">\n <td><a (click)=\"decrementHours()\" [ngClass]=\"{disabled: noDecrementHours()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n <td>&nbsp;</td>\n <td><a (click)=\"decrementMinutes()\" [ngClass]=\"{disabled: noDecrementMinutes()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n <td [ngClass]=\"{hidden: !showMeridian}\" *ngIf=\"showMeridian\"></td>\n </tr>\n </tbody>\n </table>\n `,\n providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR]\n}, ] },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: TimepickerConfig, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'hourStep': [{ type: Input },],\n'minuteStep': [{ type: Input },],\n'readonlyInput': [{ type: Input },],\n'mousewheel': [{ type: Input },],\n'arrowkeys': [{ type: Input },],\n'showSpinners': [{ type: Input },],\n'min': [{ type: Input },],\n'max': [{ type: Input },],\n'meridians': [{ type: Input },],\n'showMeridian': [{ type: Input },],\n};\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
\No newline at end of file