| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204 |
- import { Injectable, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, Input, Output, EventEmitter, NgModule } from '@angular/core';
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
- import { __extends } from 'tslib';
- import { BehaviorSubject } from 'rxjs';
- import { MiniState, MiniStore } from 'ngx-bootstrap/mini-ngrx';
- import { CommonModule } from '@angular/common';
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var TimepickerActions = /** @class */ (function () {
- function TimepickerActions() {
- }
- /**
- * @param {?} value
- * @return {?}
- */
- TimepickerActions.prototype.writeValue = /**
- * @param {?} value
- * @return {?}
- */
- function (value) {
- return {
- type: TimepickerActions.WRITE_VALUE,
- payload: value
- };
- };
- /**
- * @param {?} event
- * @return {?}
- */
- TimepickerActions.prototype.changeHours = /**
- * @param {?} event
- * @return {?}
- */
- function (event) {
- return {
- type: TimepickerActions.CHANGE_HOURS,
- payload: event
- };
- };
- /**
- * @param {?} event
- * @return {?}
- */
- TimepickerActions.prototype.changeMinutes = /**
- * @param {?} event
- * @return {?}
- */
- function (event) {
- return {
- type: TimepickerActions.CHANGE_MINUTES,
- payload: event
- };
- };
- /**
- * @param {?} event
- * @return {?}
- */
- TimepickerActions.prototype.changeSeconds = /**
- * @param {?} event
- * @return {?}
- */
- function (event) {
- return {
- type: TimepickerActions.CHANGE_SECONDS,
- payload: event
- };
- };
- /**
- * @param {?} value
- * @return {?}
- */
- TimepickerActions.prototype.setTime = /**
- * @param {?} value
- * @return {?}
- */
- function (value) {
- return {
- type: TimepickerActions.SET_TIME_UNIT,
- payload: value
- };
- };
- /**
- * @param {?} value
- * @return {?}
- */
- TimepickerActions.prototype.updateControls = /**
- * @param {?} value
- * @return {?}
- */
- function (value) {
- return {
- type: TimepickerActions.UPDATE_CONTROLS,
- payload: value
- };
- };
- TimepickerActions.WRITE_VALUE = '[timepicker] write value from ng model';
- TimepickerActions.CHANGE_HOURS = '[timepicker] change hours';
- TimepickerActions.CHANGE_MINUTES = '[timepicker] change minutes';
- TimepickerActions.CHANGE_SECONDS = '[timepicker] change seconds';
- TimepickerActions.SET_TIME_UNIT = '[timepicker] set time unit';
- TimepickerActions.UPDATE_CONTROLS = '[timepicker] update controls';
- TimepickerActions.decorators = [
- { type: Injectable }
- ];
- return TimepickerActions;
- }());
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- var dex = 10;
- /** @type {?} */
- var hoursPerDay = 24;
- /** @type {?} */
- var hoursPerDayHalf = 12;
- /** @type {?} */
- var minutesPerHour = 60;
- /** @type {?} */
- var secondsPerMinute = 60;
- /**
- * @param {?=} value
- * @return {?}
- */
- function isValidDate(value) {
- if (!value) {
- return false;
- }
- if (value instanceof Date && isNaN(value.getHours())) {
- return false;
- }
- if (typeof value === 'string') {
- return isValidDate(new Date(value));
- }
- return true;
- }
- /**
- * @param {?} controls
- * @param {?} newDate
- * @return {?}
- */
- function isValidLimit(controls, newDate) {
- if (controls.min && newDate < controls.min) {
- return false;
- }
- if (controls.max && newDate > controls.max) {
- return false;
- }
- return true;
- }
- /**
- * @param {?} value
- * @return {?}
- */
- function toNumber(value) {
- if (typeof value === 'number') {
- return value;
- }
- return parseInt(value, dex);
- }
- /**
- * @param {?} value
- * @param {?=} isPM
- * @return {?}
- */
- function parseHours(value, isPM) {
- if (isPM === void 0) { isPM = false; }
- /** @type {?} */
- var hour = toNumber(value);
- if (isNaN(hour) ||
- hour < 0 ||
- hour > (isPM ? hoursPerDayHalf : hoursPerDay)) {
- return NaN;
- }
- return hour;
- }
- /**
- * @param {?} value
- * @return {?}
- */
- function parseMinutes(value) {
- /** @type {?} */
- var minute = toNumber(value);
- if (isNaN(minute) || minute < 0 || minute > minutesPerHour) {
- return NaN;
- }
- return minute;
- }
- /**
- * @param {?} value
- * @return {?}
- */
- function parseSeconds(value) {
- /** @type {?} */
- var seconds = toNumber(value);
- if (isNaN(seconds) || seconds < 0 || seconds > secondsPerMinute) {
- return NaN;
- }
- return seconds;
- }
- /**
- * @param {?} value
- * @return {?}
- */
- function parseTime(value) {
- if (typeof value === 'string') {
- return new Date(value);
- }
- return value;
- }
- /**
- * @param {?} value
- * @param {?} diff
- * @return {?}
- */
- function changeTime(value, diff) {
- if (!value) {
- return changeTime(createDate(new Date(), 0, 0, 0), diff);
- }
- /** @type {?} */
- var hour = value.getHours();
- /** @type {?} */
- var minutes = value.getMinutes();
- /** @type {?} */
- var seconds = value.getSeconds();
- if (diff.hour) {
- hour = (hour + toNumber(diff.hour)) % hoursPerDay;
- if (hour < 0) {
- hour += hoursPerDay;
- }
- }
- if (diff.minute) {
- minutes = minutes + toNumber(diff.minute);
- }
- if (diff.seconds) {
- seconds = seconds + toNumber(diff.seconds);
- }
- return createDate(value, hour, minutes, seconds);
- }
- /**
- * @param {?} value
- * @param {?} opts
- * @return {?}
- */
- function setTime(value, opts) {
- /** @type {?} */
- var hour = parseHours(opts.hour);
- /** @type {?} */
- var minute = parseMinutes(opts.minute);
- /** @type {?} */
- var seconds = parseSeconds(opts.seconds) || 0;
- if (opts.isPM && hour !== 12) {
- hour += hoursPerDayHalf;
- }
- if (!value) {
- if (!isNaN(hour) && !isNaN(minute)) {
- return createDate(new Date(), hour, minute, seconds);
- }
- return value;
- }
- if (isNaN(hour) || isNaN(minute)) {
- return value;
- }
- return createDate(value, hour, minute, seconds);
- }
- /**
- * @param {?} value
- * @param {?} hours
- * @param {?} minutes
- * @param {?} seconds
- * @return {?}
- */
- function createDate(value, hours, minutes, seconds) {
- return new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, seconds, value.getMilliseconds());
- }
- /**
- * @param {?} value
- * @return {?}
- */
- function padNumber(value) {
- /** @type {?} */
- var _value = value.toString();
- if (_value.length > 1) {
- return _value;
- }
- return "0" + _value;
- }
- /**
- * @param {?} hours
- * @param {?} isPM
- * @return {?}
- */
- function isHourInputValid(hours, isPM) {
- return !isNaN(parseHours(hours, isPM));
- }
- /**
- * @param {?} minutes
- * @return {?}
- */
- function isMinuteInputValid(minutes) {
- return !isNaN(parseMinutes(minutes));
- }
- /**
- * @param {?} seconds
- * @return {?}
- */
- function isSecondInputValid(seconds) {
- return !isNaN(parseSeconds(seconds));
- }
- /**
- * @param {?} diff
- * @param {?} max
- * @param {?} min
- * @return {?}
- */
- function isInputLimitValid(diff, max, min) {
- /** @type {?} */
- var newDate = setTime(new Date(), diff);
- if (max && newDate > max) {
- return false;
- }
- if (min && newDate < min) {
- return false;
- }
- return true;
- }
- /**
- * @param {?} hours
- * @param {?=} minutes
- * @param {?=} seconds
- * @param {?=} isPM
- * @return {?}
- */
- function isInputValid(hours, minutes, seconds, isPM) {
- if (minutes === void 0) { minutes = '0'; }
- if (seconds === void 0) { seconds = '0'; }
- return isHourInputValid(hours, isPM)
- && isMinuteInputValid(minutes)
- && isSecondInputValid(seconds);
- }
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * @param {?} state
- * @param {?=} event
- * @return {?}
- */
- function canChangeValue(state, event) {
- if (state.readonlyInput || state.disabled) {
- return false;
- }
- if (event) {
- if (event.source === 'wheel' && !state.mousewheel) {
- return false;
- }
- if (event.source === 'key' && !state.arrowkeys) {
- return false;
- }
- }
- return true;
- }
- /**
- * @param {?} event
- * @param {?} controls
- * @return {?}
- */
- function canChangeHours(event, controls) {
- if (!event.step) {
- return false;
- }
- if (event.step > 0 && !controls.canIncrementHours) {
- return false;
- }
- if (event.step < 0 && !controls.canDecrementHours) {
- return false;
- }
- return true;
- }
- /**
- * @param {?} event
- * @param {?} controls
- * @return {?}
- */
- function canChangeMinutes(event, controls) {
- if (!event.step) {
- return false;
- }
- if (event.step > 0 && !controls.canIncrementMinutes) {
- return false;
- }
- if (event.step < 0 && !controls.canDecrementMinutes) {
- return false;
- }
- return true;
- }
- /**
- * @param {?} event
- * @param {?} controls
- * @return {?}
- */
- function canChangeSeconds(event, controls) {
- if (!event.step) {
- return false;
- }
- if (event.step > 0 && !controls.canIncrementSeconds) {
- return false;
- }
- if (event.step < 0 && !controls.canDecrementSeconds) {
- return false;
- }
- return true;
- }
- /**
- * @param {?} state
- * @return {?}
- */
- function getControlsValue(state) {
- var hourStep = state.hourStep, minuteStep = state.minuteStep, secondsStep = state.secondsStep, readonlyInput = state.readonlyInput, disabled = state.disabled, mousewheel = state.mousewheel, arrowkeys = state.arrowkeys, showSpinners = state.showSpinners, showMeridian = state.showMeridian, showSeconds = state.showSeconds, meridians = state.meridians, min = state.min, max = state.max;
- return {
- hourStep: hourStep,
- minuteStep: minuteStep,
- secondsStep: secondsStep,
- readonlyInput: readonlyInput,
- disabled: disabled,
- mousewheel: mousewheel,
- arrowkeys: arrowkeys,
- showSpinners: showSpinners,
- showMeridian: showMeridian,
- showSeconds: showSeconds,
- meridians: meridians,
- min: min,
- max: max
- };
- }
- /**
- * @param {?} value
- * @param {?} state
- * @return {?}
- */
- function timepickerControls(value, state) {
- /** @type {?} */
- var hoursPerDayHalf = 12;
- var min = state.min, max = state.max, hourStep = state.hourStep, minuteStep = state.minuteStep, secondsStep = state.secondsStep, showSeconds = state.showSeconds;
- /** @type {?} */
- var res = {
- canIncrementHours: true,
- canIncrementMinutes: true,
- canIncrementSeconds: true,
- canDecrementHours: true,
- canDecrementMinutes: true,
- canDecrementSeconds: true,
- canToggleMeridian: true
- };
- if (!value) {
- return res;
- }
- // compare dates
- if (max) {
- /** @type {?} */
- var _newHour = changeTime(value, { hour: hourStep });
- res.canIncrementHours = max > _newHour;
- if (!res.canIncrementHours) {
- /** @type {?} */
- var _newMinutes = changeTime(value, { minute: minuteStep });
- res.canIncrementMinutes = showSeconds
- ? max > _newMinutes
- : max >= _newMinutes;
- }
- if (!res.canIncrementMinutes) {
- /** @type {?} */
- var _newSeconds = changeTime(value, { seconds: secondsStep });
- res.canIncrementSeconds = max >= _newSeconds;
- }
- if (value.getHours() < hoursPerDayHalf) {
- res.canToggleMeridian = changeTime(value, { hour: hoursPerDayHalf }) < max;
- }
- }
- if (min) {
- /** @type {?} */
- var _newHour = changeTime(value, { hour: -hourStep });
- res.canDecrementHours = min < _newHour;
- if (!res.canDecrementHours) {
- /** @type {?} */
- var _newMinutes = changeTime(value, { minute: -minuteStep });
- res.canDecrementMinutes = showSeconds
- ? min < _newMinutes
- : min <= _newMinutes;
- }
- if (!res.canDecrementMinutes) {
- /** @type {?} */
- var _newSeconds = changeTime(value, { seconds: -secondsStep });
- res.canDecrementSeconds = min <= _newSeconds;
- }
- if (value.getHours() >= hoursPerDayHalf) {
- res.canToggleMeridian = changeTime(value, { hour: -hoursPerDayHalf }) > min;
- }
- }
- return res;
- }
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * Provides default configuration values for timepicker
- */
- var TimepickerConfig = /** @class */ (function () {
- function TimepickerConfig() {
- /**
- * hours change step
- */
- this.hourStep = 1;
- /**
- * hours change step
- */
- this.minuteStep = 5;
- /**
- * seconds changes step
- */
- this.secondsStep = 10;
- /**
- * if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM
- */
- this.showMeridian = true;
- /**
- * meridian labels based on locale
- */
- this.meridians = ['AM', 'PM'];
- /**
- * if true hours and minutes fields will be readonly
- */
- this.readonlyInput = false;
- /**
- * if true hours and minutes fields will be disabled
- */
- this.disabled = false;
- /**
- * if true scroll inside hours and minutes inputs will change time
- */
- this.mousewheel = true;
- /**
- * if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard
- */
- this.arrowkeys = true;
- /**
- * if true spinner arrows above and below the inputs will be shown
- */
- this.showSpinners = true;
- /**
- * show seconds in timepicker
- */
- this.showSeconds = false;
- /**
- * show minutes in timepicker
- */
- this.showMinutes = true;
- /**
- * placeholder for hours field in timepicker
- */
- this.hoursPlaceholder = 'HH';
- /**
- * placeholder for minutes field in timepicker
- */
- this.minutesPlaceholder = 'MM';
- /**
- * placeholder for seconds field in timepicker
- */
- this.secondsPlaceholder = 'SS';
- }
- TimepickerConfig.decorators = [
- { type: Injectable }
- ];
- return TimepickerConfig;
- }());
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- var initialState = {
- value: null,
- config: new TimepickerConfig(),
- controls: {
- canIncrementHours: true,
- canIncrementMinutes: true,
- canIncrementSeconds: true,
- canDecrementHours: true,
- canDecrementMinutes: true,
- canDecrementSeconds: true,
- canToggleMeridian: true
- }
- };
- // tslint:disable-next-line:cyclomatic-complexity
- /**
- * @param {?=} state
- * @param {?=} action
- * @return {?}
- */
- function timepickerReducer(state, action) {
- if (state === void 0) { state = initialState; }
- switch (action.type) {
- case TimepickerActions.WRITE_VALUE: {
- return Object.assign({}, state, { value: action.payload });
- }
- case TimepickerActions.CHANGE_HOURS: {
- if (!canChangeValue(state.config, action.payload) ||
- !canChangeHours(action.payload, state.controls)) {
- return state;
- }
- /** @type {?} */
- var _newTime = changeTime(state.value, { hour: action.payload.step });
- if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
- return state;
- }
- return Object.assign({}, state, { value: _newTime });
- }
- case TimepickerActions.CHANGE_MINUTES: {
- if (!canChangeValue(state.config, action.payload) ||
- !canChangeMinutes(action.payload, state.controls)) {
- return state;
- }
- /** @type {?} */
- var _newTime = changeTime(state.value, { minute: action.payload.step });
- if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
- return state;
- }
- return Object.assign({}, state, { value: _newTime });
- }
- case TimepickerActions.CHANGE_SECONDS: {
- if (!canChangeValue(state.config, action.payload) ||
- !canChangeSeconds(action.payload, state.controls)) {
- return state;
- }
- /** @type {?} */
- var _newTime = changeTime(state.value, {
- seconds: action.payload.step
- });
- if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
- return state;
- }
- return Object.assign({}, state, { value: _newTime });
- }
- case TimepickerActions.SET_TIME_UNIT: {
- if (!canChangeValue(state.config)) {
- return state;
- }
- /** @type {?} */
- var _newTime = setTime(state.value, action.payload);
- return Object.assign({}, state, { value: _newTime });
- }
- case TimepickerActions.UPDATE_CONTROLS: {
- /** @type {?} */
- var _newControlsState = timepickerControls(state.value, action.payload);
- /** @type {?} */
- var _newState = {
- value: state.value,
- config: action.payload,
- controls: _newControlsState
- };
- if (state.config.showMeridian !== _newState.config.showMeridian) {
- if (state.value) {
- _newState.value = new Date(state.value);
- }
- }
- return Object.assign({}, state, _newState);
- }
- default:
- return state;
- }
- }
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var TimepickerStore = /** @class */ (function (_super) {
- __extends(TimepickerStore, _super);
- function TimepickerStore() {
- var _this = this;
- /** @type {?} */
- var _dispatcher = new BehaviorSubject({
- type: '[mini-ngrx] dispatcher init'
- });
- /** @type {?} */
- var state = new MiniState(initialState, _dispatcher, timepickerReducer);
- _this = _super.call(this, _dispatcher, timepickerReducer, state) || this;
- return _this;
- }
- TimepickerStore.decorators = [
- { type: Injectable }
- ];
- /** @nocollapse */
- TimepickerStore.ctorParameters = function () { return []; };
- return TimepickerStore;
- }(MiniStore));
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- var TIMEPICKER_CONTROL_VALUE_ACCESSOR = {
- provide: NG_VALUE_ACCESSOR,
- /* tslint:disable-next-line: no-use-before-declare */
- useExisting: forwardRef((/**
- * @return {?}
- */
- function () { return TimepickerComponent; })),
- multi: true
- };
- var TimepickerComponent = /** @class */ (function () {
- function TimepickerComponent(_config, _cd, _store, _timepickerActions) {
- var _this = this;
- this._cd = _cd;
- this._store = _store;
- this._timepickerActions = _timepickerActions;
- /**
- * emits true if value is a valid date
- */
- this.isValid = new EventEmitter();
- // min\max validation for input fields
- this.invalidHours = false;
- this.invalidMinutes = false;
- this.invalidSeconds = false;
- // control value accessor methods
- // tslint:disable-next-line:no-any
- this.onChange = Function.prototype;
- // tslint:disable-next-line:no-any
- this.onTouched = Function.prototype;
- Object.assign(this, _config);
- this.timepickerSub = _store
- .select((/**
- * @param {?} state
- * @return {?}
- */
- function (state) { return state.value; }))
- .subscribe((/**
- * @param {?} value
- * @return {?}
- */
- function (value) {
- // update UI values if date changed
- _this._renderTime(value);
- _this.onChange(value);
- _this._store.dispatch(_this._timepickerActions.updateControls(getControlsValue(_this)));
- }));
- _store
- .select((/**
- * @param {?} state
- * @return {?}
- */
- function (state) { return state.controls; }))
- .subscribe((/**
- * @param {?} controlsState
- * @return {?}
- */
- function (controlsState) {
- _this.isValid.emit(isInputValid(_this.hours, _this.minutes, _this.seconds, _this.isPM()));
- Object.assign(_this, controlsState);
- _cd.markForCheck();
- }));
- }
- Object.defineProperty(TimepickerComponent.prototype, "isSpinnersVisible", {
- /** @deprecated - please use `isEditable` instead */
- get: /**
- * @deprecated - please use `isEditable` instead
- * @return {?}
- */
- function () {
- return this.showSpinners && !this.readonlyInput;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(TimepickerComponent.prototype, "isEditable", {
- get: /**
- * @return {?}
- */
- function () {
- return !(this.readonlyInput || this.disabled);
- },
- enumerable: true,
- configurable: true
- });
- /**
- * @return {?}
- */
- TimepickerComponent.prototype.resetValidation = /**
- * @return {?}
- */
- function () {
- this.invalidHours = false;
- this.invalidMinutes = false;
- this.invalidSeconds = false;
- };
- /**
- * @return {?}
- */
- TimepickerComponent.prototype.isPM = /**
- * @return {?}
- */
- function () {
- return this.showMeridian && this.meridian === this.meridians[1];
- };
- /**
- * @param {?} $event
- * @return {?}
- */
- TimepickerComponent.prototype.prevDef = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- };
- /**
- * @param {?} $event
- * @return {?}
- */
- TimepickerComponent.prototype.wheelSign = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- return Math.sign($event.deltaY) * -1;
- };
- /**
- * @param {?} changes
- * @return {?}
- */
- TimepickerComponent.prototype.ngOnChanges = /**
- * @param {?} changes
- * @return {?}
- */
- function (changes) {
- this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));
- };
- /**
- * @param {?} step
- * @param {?=} source
- * @return {?}
- */
- TimepickerComponent.prototype.changeHours = /**
- * @param {?} step
- * @param {?=} source
- * @return {?}
- */
- function (step, source) {
- if (source === void 0) { source = ''; }
- this.resetValidation();
- this._store.dispatch(this._timepickerActions.changeHours({ step: step, source: source }));
- };
- /**
- * @param {?} step
- * @param {?=} source
- * @return {?}
- */
- TimepickerComponent.prototype.changeMinutes = /**
- * @param {?} step
- * @param {?=} source
- * @return {?}
- */
- function (step, source) {
- if (source === void 0) { source = ''; }
- this.resetValidation();
- this._store.dispatch(this._timepickerActions.changeMinutes({ step: step, source: source }));
- };
- /**
- * @param {?} step
- * @param {?=} source
- * @return {?}
- */
- TimepickerComponent.prototype.changeSeconds = /**
- * @param {?} step
- * @param {?=} source
- * @return {?}
- */
- function (step, source) {
- if (source === void 0) { source = ''; }
- this.resetValidation();
- this._store.dispatch(this._timepickerActions.changeSeconds({ step: step, source: source }));
- };
- /**
- * @param {?} hours
- * @return {?}
- */
- TimepickerComponent.prototype.updateHours = /**
- * @param {?} hours
- * @return {?}
- */
- function (hours) {
- this.resetValidation();
- this.hours = hours;
- /** @type {?} */
- var isValid = isHourInputValid(this.hours, this.isPM()) && this.isValidLimit();
- if (!isValid) {
- this.invalidHours = true;
- this.isValid.emit(false);
- this.onChange(null);
- return;
- }
- this._updateTime();
- };
- /**
- * @param {?} minutes
- * @return {?}
- */
- TimepickerComponent.prototype.updateMinutes = /**
- * @param {?} minutes
- * @return {?}
- */
- function (minutes) {
- this.resetValidation();
- this.minutes = minutes;
- /** @type {?} */
- var isValid = isMinuteInputValid(this.minutes) && this.isValidLimit();
- if (!isValid) {
- this.invalidMinutes = true;
- this.isValid.emit(false);
- this.onChange(null);
- return;
- }
- this._updateTime();
- };
- /**
- * @param {?} seconds
- * @return {?}
- */
- TimepickerComponent.prototype.updateSeconds = /**
- * @param {?} seconds
- * @return {?}
- */
- function (seconds) {
- this.resetValidation();
- this.seconds = seconds;
- /** @type {?} */
- var isValid = isSecondInputValid(this.seconds) && this.isValidLimit();
- if (!isValid) {
- this.invalidSeconds = true;
- this.isValid.emit(false);
- this.onChange(null);
- return;
- }
- this._updateTime();
- };
- /**
- * @return {?}
- */
- TimepickerComponent.prototype.isValidLimit = /**
- * @return {?}
- */
- function () {
- return isInputLimitValid({
- hour: this.hours,
- minute: this.minutes,
- seconds: this.seconds,
- isPM: this.isPM()
- }, this.max, this.min);
- };
- /**
- * @return {?}
- */
- TimepickerComponent.prototype._updateTime = /**
- * @return {?}
- */
- function () {
- /** @type {?} */
- var _seconds = this.showSeconds ? this.seconds : void 0;
- /** @type {?} */
- var _minutes = this.showMinutes ? this.minutes : void 0;
- if (!isInputValid(this.hours, _minutes, _seconds, this.isPM())) {
- this.isValid.emit(false);
- this.onChange(null);
- return;
- }
- this._store.dispatch(this._timepickerActions.setTime({
- hour: this.hours,
- minute: this.minutes,
- seconds: this.seconds,
- isPM: this.isPM()
- }));
- };
- /**
- * @return {?}
- */
- TimepickerComponent.prototype.toggleMeridian = /**
- * @return {?}
- */
- function () {
- if (!this.showMeridian || !this.isEditable) {
- return;
- }
- /** @type {?} */
- var _hoursPerDayHalf = 12;
- this._store.dispatch(this._timepickerActions.changeHours({
- step: _hoursPerDayHalf,
- source: ''
- }));
- };
- /**
- * Write a new value to the element.
- */
- /**
- * Write a new value to the element.
- * @param {?} obj
- * @return {?}
- */
- TimepickerComponent.prototype.writeValue = /**
- * Write a new value to the element.
- * @param {?} obj
- * @return {?}
- */
- function (obj) {
- if (isValidDate(obj)) {
- this._store.dispatch(this._timepickerActions.writeValue(parseTime(obj)));
- }
- else if (obj == null) {
- this._store.dispatch(this._timepickerActions.writeValue(null));
- }
- };
- /**
- * Set the function to be called when the control receives a change event.
- */
- // tslint:disable-next-line:no-any
- /**
- * Set the function to be called when the control receives a change event.
- * @param {?} fn
- * @return {?}
- */
- // tslint:disable-next-line:no-any
- TimepickerComponent.prototype.registerOnChange = /**
- * Set the function to be called when the control receives a change event.
- * @param {?} fn
- * @return {?}
- */
- // tslint:disable-next-line:no-any
- function (fn) {
- this.onChange = fn;
- };
- /**
- * Set the function to be called when the control receives a touch event.
- */
- /**
- * Set the function to be called when the control receives a touch event.
- * @param {?} fn
- * @return {?}
- */
- TimepickerComponent.prototype.registerOnTouched = /**
- * Set the function to be called when the control receives a touch event.
- * @param {?} fn
- * @return {?}
- */
- function (fn) {
- this.onTouched = fn;
- };
- /**
- * This function is called when the control status changes to or from "disabled".
- * Depending on the value, it will enable or disable the appropriate DOM element.
- *
- * @param isDisabled
- */
- /**
- * This function is called when the control status changes to or from "disabled".
- * Depending on the value, it will enable or disable the appropriate DOM element.
- *
- * @param {?} isDisabled
- * @return {?}
- */
- TimepickerComponent.prototype.setDisabledState = /**
- * This function is called when the control status changes to or from "disabled".
- * Depending on the value, it will enable or disable the appropriate DOM element.
- *
- * @param {?} isDisabled
- * @return {?}
- */
- function (isDisabled) {
- this.disabled = isDisabled;
- this._cd.markForCheck();
- };
- /**
- * @return {?}
- */
- TimepickerComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.timepickerSub.unsubscribe();
- };
- /**
- * @private
- * @param {?} value
- * @return {?}
- */
- TimepickerComponent.prototype._renderTime = /**
- * @private
- * @param {?} value
- * @return {?}
- */
- function (value) {
- if (!isValidDate(value)) {
- this.hours = '';
- this.minutes = '';
- this.seconds = '';
- this.meridian = this.meridians[0];
- return;
- }
- /** @type {?} */
- var _value = parseTime(value);
- /** @type {?} */
- var _hoursPerDayHalf = 12;
- /** @type {?} */
- var _hours = _value.getHours();
- if (this.showMeridian) {
- this.meridian = this.meridians[_hours >= _hoursPerDayHalf ? 1 : 0];
- _hours = _hours % _hoursPerDayHalf;
- // should be 12 PM, not 00 PM
- if (_hours === 0) {
- _hours = _hoursPerDayHalf;
- }
- }
- this.hours = padNumber(_hours);
- this.minutes = padNumber(_value.getMinutes());
- this.seconds = padNumber(_value.getUTCSeconds());
- };
- TimepickerComponent.decorators = [
- { type: Component, args: [{
- selector: 'timepicker',
- changeDetection: ChangeDetectionStrategy.OnPush,
- providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore],
- template: "<table>\n <tbody>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- increment hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\"\n (click)=\"changeHours(hourStep)\"\n ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\"> </td>\n <!-- increment minutes button -->\n <td *ngIf=\"showMinutes\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\"\n (click)=\"changeMinutes(minuteStep)\"\n ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\"> </td>\n <!-- increment seconds button -->\n <td *ngIf=\"showSeconds\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\"\n (click)=\"changeSeconds(secondsStep)\">\n <span class=\"bs-chevron bs-chevron-up\"></span>\n </a>\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\"> </td>\n <!-- meridian placeholder-->\n <td *ngIf=\"showMeridian\"></td>\n </tr>\n <tr>\n <!-- hours -->\n <td class=\"form-group\" [class.has-error]=\"invalidHours\">\n <input type=\"text\" [class.is-invalid]=\"invalidHours\"\n class=\"form-control text-center bs-timepicker-field\"\n [placeholder]=\"hoursPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"hours\"\n (wheel)=\"prevDef($event);changeHours(hourStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeHours(hourStep, 'key')\"\n (keydown.ArrowDown)=\"changeHours(-hourStep, 'key')\"\n (change)=\"updateHours($event.target.value)\"></td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\"> : </td>\n <!-- minutes -->\n <td class=\"form-group\" *ngIf=\"showMinutes\" [class.has-error]=\"invalidMinutes\">\n <input type=\"text\" [class.is-invalid]=\"invalidMinutes\"\n class=\"form-control text-center bs-timepicker-field\"\n [placeholder]=\"minutesPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"minutes\"\n (wheel)=\"prevDef($event);changeMinutes(minuteStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeMinutes(minuteStep, 'key')\"\n (keydown.ArrowDown)=\"changeMinutes(-minuteStep, 'key')\"\n (change)=\"updateMinutes($event.target.value)\">\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\"> : </td>\n <!-- seconds -->\n <td class=\"form-group\" *ngIf=\"showSeconds\" [class.has-error]=\"invalidSeconds\">\n <input type=\"text\" [class.is-invalid]=\"invalidSeconds\"\n class=\"form-control text-center bs-timepicker-field\"\n [placeholder]=\"secondsPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"seconds\"\n (wheel)=\"prevDef($event);changeSeconds(secondsStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeSeconds(secondsStep, 'key')\"\n (keydown.ArrowDown)=\"changeSeconds(-secondsStep, 'key')\"\n (change)=\"updateSeconds($event.target.value)\">\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\"> </td>\n <!-- meridian -->\n <td *ngIf=\"showMeridian\">\n <button type=\"button\" class=\"btn btn-default text-center\"\n [disabled]=\"!isEditable || !canToggleMeridian\"\n [class.disabled]=\"!isEditable || !canToggleMeridian\"\n (click)=\"toggleMeridian()\"\n >{{ meridian }}\n </button>\n </td>\n </tr>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- decrement hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\"\n (click)=\"changeHours(-hourStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\"> </td>\n <!-- decrement minutes button-->\n <td *ngIf=\"showMinutes\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\"\n (click)=\"changeMinutes(-minuteStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\"> </td>\n <!-- decrement seconds button-->\n <td *ngIf=\"showSeconds\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\"\n (click)=\"changeSeconds(-secondsStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\"> </td>\n <!-- meridian placeholder-->\n <td *ngIf=\"showMeridian\"></td>\n </tr>\n </tbody>\n</table>\n",
- encapsulation: ViewEncapsulation.None,
- styles: ["\n .bs-chevron {\n border-style: solid;\n display: block;\n width: 9px;\n height: 9px;\n position: relative;\n border-width: 3px 0px 0 3px;\n }\n\n .bs-chevron-up {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n top: 2px;\n }\n\n .bs-chevron-down {\n -webkit-transform: rotate(-135deg);\n transform: rotate(-135deg);\n top: -2px;\n }\n\n .bs-timepicker-field {\n width: 50px;\n padding: .375rem .55rem;\n }\n "]
- }] }
- ];
- /** @nocollapse */
- TimepickerComponent.ctorParameters = function () { return [
- { type: TimepickerConfig },
- { type: ChangeDetectorRef },
- { type: TimepickerStore },
- { type: TimepickerActions }
- ]; };
- TimepickerComponent.propDecorators = {
- hourStep: [{ type: Input }],
- minuteStep: [{ type: Input }],
- secondsStep: [{ type: Input }],
- readonlyInput: [{ type: Input }],
- disabled: [{ type: Input }],
- mousewheel: [{ type: Input }],
- arrowkeys: [{ type: Input }],
- showSpinners: [{ type: Input }],
- showMeridian: [{ type: Input }],
- showMinutes: [{ type: Input }],
- showSeconds: [{ type: Input }],
- meridians: [{ type: Input }],
- min: [{ type: Input }],
- max: [{ type: Input }],
- hoursPlaceholder: [{ type: Input }],
- minutesPlaceholder: [{ type: Input }],
- secondsPlaceholder: [{ type: Input }],
- isValid: [{ type: Output }]
- };
- return TimepickerComponent;
- }());
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var TimepickerModule = /** @class */ (function () {
- function TimepickerModule() {
- }
- /**
- * @return {?}
- */
- TimepickerModule.forRoot = /**
- * @return {?}
- */
- function () {
- return {
- ngModule: TimepickerModule,
- providers: [TimepickerConfig, TimepickerActions, TimepickerStore]
- };
- };
- TimepickerModule.decorators = [
- { type: NgModule, args: [{
- imports: [CommonModule],
- declarations: [TimepickerComponent],
- exports: [TimepickerComponent]
- },] }
- ];
- return TimepickerModule;
- }());
- export { TimepickerActions, TimepickerComponent, TimepickerConfig, TimepickerModule, TimepickerStore, TIMEPICKER_CONTROL_VALUE_ACCESSOR as ɵa };
- //# sourceMappingURL=ngx-bootstrap-timepicker.js.map
|