| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241 |
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('rxjs'), require('ngx-bootstrap/mini-ngrx'), require('@angular/common')) :
- typeof define === 'function' && define.amd ? define('ngx-bootstrap/timepicker', ['exports', '@angular/core', '@angular/forms', 'rxjs', 'ngx-bootstrap/mini-ngrx', '@angular/common'], factory) :
- (global = global || self, factory((global['ngx-bootstrap'] = global['ngx-bootstrap'] || {}, global['ngx-bootstrap'].timepicker = {}), global.ng.core, global.ng.forms, global.rxjs, global.miniNgrx, global.ng.common));
- }(this, function (exports, core, forms, rxjs, miniNgrx, common) { 'use strict';
- /*! *****************************************************************************
- Copyright (c) Microsoft Corporation. All rights reserved.
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of the
- License at http://www.apache.org/licenses/LICENSE-2.0
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
- MERCHANTABLITY OR NON-INFRINGEMENT.
- See the Apache Version 2.0 License for specific language governing permissions
- and limitations under the License.
- ***************************************************************************** */
- /* global Reflect, Promise */
- var extendStatics = function(d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- function __extends(d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- }
- /**
- * @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: core.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: core.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 rxjs.BehaviorSubject({
- type: '[mini-ngrx] dispatcher init'
- });
- /** @type {?} */
- var state = new miniNgrx.MiniState(initialState, _dispatcher, timepickerReducer);
- _this = _super.call(this, _dispatcher, timepickerReducer, state) || this;
- return _this;
- }
- TimepickerStore.decorators = [
- { type: core.Injectable }
- ];
- /** @nocollapse */
- TimepickerStore.ctorParameters = function () { return []; };
- return TimepickerStore;
- }(miniNgrx.MiniStore));
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- var TIMEPICKER_CONTROL_VALUE_ACCESSOR = {
- provide: forms.NG_VALUE_ACCESSOR,
- /* tslint:disable-next-line: no-use-before-declare */
- useExisting: core.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 core.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: core.Component, args: [{
- selector: 'timepicker',
- changeDetection: core.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: core.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: core.ChangeDetectorRef },
- { type: TimepickerStore },
- { type: TimepickerActions }
- ]; };
- TimepickerComponent.propDecorators = {
- hourStep: [{ type: core.Input }],
- minuteStep: [{ type: core.Input }],
- secondsStep: [{ type: core.Input }],
- readonlyInput: [{ type: core.Input }],
- disabled: [{ type: core.Input }],
- mousewheel: [{ type: core.Input }],
- arrowkeys: [{ type: core.Input }],
- showSpinners: [{ type: core.Input }],
- showMeridian: [{ type: core.Input }],
- showMinutes: [{ type: core.Input }],
- showSeconds: [{ type: core.Input }],
- meridians: [{ type: core.Input }],
- min: [{ type: core.Input }],
- max: [{ type: core.Input }],
- hoursPlaceholder: [{ type: core.Input }],
- minutesPlaceholder: [{ type: core.Input }],
- secondsPlaceholder: [{ type: core.Input }],
- isValid: [{ type: core.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: core.NgModule, args: [{
- imports: [common.CommonModule],
- declarations: [TimepickerComponent],
- exports: [TimepickerComponent]
- },] }
- ];
- return TimepickerModule;
- }());
- exports.TimepickerActions = TimepickerActions;
- exports.TimepickerComponent = TimepickerComponent;
- exports.TimepickerConfig = TimepickerConfig;
- exports.TimepickerModule = TimepickerModule;
- exports.TimepickerStore = TimepickerStore;
- exports.ɵa = TIMEPICKER_CONTROL_VALUE_ACCESSOR;
- Object.defineProperty(exports, '__esModule', { value: true });
- }));
- //# sourceMappingURL=ngx-bootstrap-timepicker.umd.js.map
|