ngx-bootstrap-ci
Version:
Native Angular Bootstrap Components
2 lines • 17.1 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("rxjs"),require("ngx-bootstrap/mini-ngrx"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-bootstrap/timepicker",["exports","@angular/core","rxjs","ngx-bootstrap/mini-ngrx","@angular/forms","@angular/common"],n):n((e["ngx-bootstrap"]=e["ngx-bootstrap"]||{},e["ngx-bootstrap"].timepicker={}),e.ng.core,e.rxjs,e.miniNgrx,e.ng.forms,e.ng.common)}(this,function(e,o,s,r,n,t){"use strict";var u=function(){function n(){}return n.prototype.writeValue=function(e){return{type:n.WRITE_VALUE,payload:e}},n.prototype.changeHours=function(e){return{type:n.CHANGE_HOURS,payload:e}},n.prototype.changeMinutes=function(e){return{type:n.CHANGE_MINUTES,payload:e}},n.prototype.changeSeconds=function(e){return{type:n.CHANGE_SECONDS,payload:e}},n.prototype.setTime=function(e){return{type:n.SET_TIME_UNIT,payload:e}},n.prototype.updateControls=function(e){return{type:n.UPDATE_CONTROLS,payload:e}},n.WRITE_VALUE="[timepicker] write value from ng model",n.CHANGE_HOURS="[timepicker] change hours",n.CHANGE_MINUTES="[timepicker] change minutes",n.CHANGE_SECONDS="[timepicker] change seconds",n.SET_TIME_UNIT="[timepicker] set time unit",n.UPDATE_CONTROLS="[timepicker] update controls",n.decorators=[{type:o.Injectable}],n}(),a=function(e,n){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)};var i=10,c=24,d=12,p=60,h=60;function l(e){return!!e&&(!(e instanceof Date&&isNaN(e.getHours()))&&("string"!=typeof e||l(new Date(e))))}function m(e,n){return!(e.min&&n<e.min)&&!(e.max&&n>e.max)}function f(e){return"number"==typeof e?e:parseInt(e,i)}function g(e,n){void 0===n&&(n=!1);var t=f(e);return isNaN(t)||t<0||(n?d:c)<t?NaN:t}function b(e){var n=f(e);return isNaN(n)||n<0||p<n?NaN:n}function y(e){var n=f(e);return isNaN(n)||n<0||h<n?NaN:n}function v(e){return"string"==typeof e?new Date(e):e}function w(e,n){if(!e)return w(S(new Date,0,0,0),n);var t=e.getHours(),i=e.getMinutes(),s=e.getSeconds();return n.hour&&(t=(t+f(n.hour))%c)<0&&(t+=c),n.minute&&(i+=f(n.minute)),n.seconds&&(s+=f(n.seconds)),S(e,t,i,s)}function S(e,n,t,i){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),n,t,i,e.getMilliseconds())}function x(e){var n=e.toString();return 1<n.length?n:"0"+n}function M(e,n){return!isNaN(g(e,n))}function I(e){return!isNaN(b(e))}function k(e){return!isNaN(y(e))}function _(e,n,t,i){return void 0===n&&(n="0"),void 0===t&&(t="0"),M(e,i)&&I(n)&&k(t)}function N(e,n){if(e.readonlyInput||e.disabled)return!1;if(n){if("wheel"===n.source&&!e.mousewheel)return!1;if("key"===n.source&&!e.arrowkeys)return!1}return!0}function H(e){return{hourStep:e.hourStep,minuteStep:e.minuteStep,secondsStep:e.secondsStep,readonlyInput:e.readonlyInput,disabled:e.disabled,mousewheel:e.mousewheel,arrowkeys:e.arrowkeys,showSpinners:e.showSpinners,showMeridian:e.showMeridian,showSeconds:e.showSeconds,meridians:e.meridians,min:e.min,max:e.max}}var D=function(){function e(){this.hourStep=1,this.minuteStep=5,this.secondsStep=10,this.showMeridian=!0,this.meridians=["AM","PM"],this.readonlyInput=!1,this.disabled=!1,this.mousewheel=!0,this.arrowkeys=!0,this.showSpinners=!0,this.showSeconds=!1,this.showMinutes=!0}return e.decorators=[{type:o.Injectable}],e}(),E={value:null,config:new D,controls:{canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0}};function T(e,n){switch(void 0===e&&(e=E),n.type){case u.WRITE_VALUE:return Object.assign({},e,{value:n.payload});case u.CHANGE_HOURS:if(!N(e.config,n.payload)||!function o(e,n){return!(!e.step||0<e.step&&!n.canIncrementHours||e.step<0&&!n.canDecrementHours)}(n.payload,e.controls))return e;var t=w(e.value,{hour:n.payload.step});return!e.config.max&&!e.config.min||m(e.config,t)?Object.assign({},e,{value:t}):e;case u.CHANGE_MINUTES:if(!N(e.config,n.payload)||!function r(e,n){return!(!e.step||0<e.step&&!n.canIncrementMinutes||e.step<0&&!n.canDecrementMinutes)}(n.payload,e.controls))return e;t=w(e.value,{minute:n.payload.step});return!e.config.max&&!e.config.min||m(e.config,t)?Object.assign({},e,{value:t}):e;case u.CHANGE_SECONDS:if(!N(e.config,n.payload)||!function a(e,n){return!(!e.step||0<e.step&&!n.canIncrementSeconds||e.step<0&&!n.canDecrementSeconds)}(n.payload,e.controls))return e;t=w(e.value,{seconds:n.payload.step});return!e.config.max&&!e.config.min||m(e.config,t)?Object.assign({},e,{value:t}):e;case u.SET_TIME_UNIT:if(!N(e.config))return e;t=function c(e,n){var t=g(n.hour),i=b(n.minute),s=y(n.seconds)||0;return n.isPM&&(t+=d),e?isNaN(t)||isNaN(i)?e:S(e,t,i,s):isNaN(t)||isNaN(i)?e:S(new Date,t,i,s)}(e.value,n.payload);return Object.assign({},e,{value:t});case u.UPDATE_CONTROLS:var i=function h(e,n){var t=n.min,i=n.max,s=n.hourStep,o=n.minuteStep,r=n.secondsStep,a=n.showSeconds,c={canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0};if(!e)return c;if(i){var u=w(e,{hour:s});if(c.canIncrementHours=u<i,!c.canIncrementHours){var d=w(e,{minute:o});c.canIncrementMinutes=a?d<i:d<=i}if(!c.canIncrementMinutes){var p=w(e,{seconds:r});c.canIncrementSeconds=p<=i}e.getHours()<12&&(c.canToggleMeridian=w(e,{hour:12})<i)}t&&(u=w(e,{hour:-s}),c.canDecrementHours=t<u,c.canDecrementHours||(d=w(e,{minute:-o}),c.canDecrementMinutes=a?t<d:t<=d),c.canDecrementMinutes||(p=w(e,{seconds:-r}),c.canDecrementSeconds=t<=p),12<=e.getHours()&&(c.canToggleMeridian=w(e,{hour:-12})>t));return c}(e.value,n.payload),s={value:e.value,config:n.payload,controls:i};return e.config.showMeridian!==s.config.showMeridian&&e.value&&(s.value=new Date(e.value)),Object.assign({},e,s);default:return e}}var C=function(t){function e(){var e=new s.BehaviorSubject({type:"[mini-ngrx] dispatcher init"}),n=new r.MiniState(E,e,T);return t.call(this,e,T,n)||this}return function i(e,n){function t(){this.constructor=e}a(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}(e,t),e.decorators=[{type:o.Injectable}],e.ctorParameters=function(){return[]},e}(r.MiniStore),A={provide:n.NG_VALUE_ACCESSOR,useExisting:o.forwardRef(function(){return O}),multi:!0},O=function(){function e(e,n,t,i){var s=this;this._cd=n,this._store=t,this._timepickerActions=i,this.isValid=new o.EventEmitter,this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1,this.onChange=Function.prototype,this.onTouched=Function.prototype,Object.assign(this,e),this.timepickerSub=t.select(function(e){return e.value}).subscribe(function(e){s._renderTime(e),s.onChange(e),s._store.dispatch(s._timepickerActions.updateControls(H(s)))}),t.select(function(e){return e.controls}).subscribe(function(e){s.isValid.emit(_(s.hours,s.minutes,s.seconds,s.isPM())),Object.assign(s,e),n.markForCheck()})}return Object.defineProperty(e.prototype,"isSpinnersVisible",{get:function(){return this.showSpinners&&!this.readonlyInput},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isEditable",{get:function(){return!(this.readonlyInput||this.disabled)},enumerable:!0,configurable:!0}),e.prototype.resetValidation=function(){this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1},e.prototype.isPM=function(){return this.showMeridian&&this.meridian===this.meridians[1]},e.prototype.prevDef=function(e){e.preventDefault()},e.prototype.wheelSign=function(e){return-1*Math.sign(e.deltaY)},e.prototype.ngOnChanges=function(e){this._store.dispatch(this._timepickerActions.updateControls(H(this)))},e.prototype.changeHours=function(e,n){void 0===n&&(n=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeHours({step:e,source:n}))},e.prototype.changeMinutes=function(e,n){void 0===n&&(n=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeMinutes({step:e,source:n}))},e.prototype.changeSeconds=function(e,n){void 0===n&&(n=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeSeconds({step:e,source:n}))},e.prototype.updateHours=function(e){if(this.resetValidation(),this.hours=e,!(M(this.hours,this.isPM())&&this.isValidLimit()))return this.invalidHours=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},e.prototype.updateMinutes=function(e){if(this.resetValidation(),this.minutes=e,!(I(this.minutes)&&this.isValidLimit()))return this.invalidMinutes=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},e.prototype.updateSeconds=function(e){if(this.resetValidation(),this.seconds=e,!(k(this.seconds)&&this.isValidLimit()))return this.invalidSeconds=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},e.prototype.isValidLimit=function(){return function s(e,n,t){var i=w(new Date,e);return!(n&&n<i||t&&i<t)}({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()},this.max,this.min)},e.prototype._updateTime=function(){var e=this.showSeconds?this.seconds:void 0,n=this.showMinutes?this.minutes:void 0;if(!_(this.hours,n,e,this.isPM()))return this.isValid.emit(!1),void this.onChange(null);this._store.dispatch(this._timepickerActions.setTime({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()}))},e.prototype.toggleMeridian=function(){if(this.showMeridian&&this.isEditable){this._store.dispatch(this._timepickerActions.changeHours({step:12,source:""}))}},e.prototype.writeValue=function(e){l(e)?this._store.dispatch(this._timepickerActions.writeValue(v(e))):null==e&&this._store.dispatch(this._timepickerActions.writeValue(null))},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this.disabled=e,this._cd.markForCheck()},e.prototype.ngOnDestroy=function(){this.timepickerSub.unsubscribe()},e.prototype._renderTime=function(e){if(!l(e))return this.hours="",this.minutes="",this.seconds="",void(this.meridian=this.meridians[0]);var n=v(e),t=n.getHours();this.showMeridian&&(this.meridian=this.meridians[12<=t?1:0],0===(t%=12)&&(t=12)),this.hours=x(t),this.minutes=x(n.getMinutes()),this.seconds=x(n.getUTCSeconds())},e.decorators=[{type:o.Component,args:[{selector:"timepicker",changeDetection:o.ChangeDetectionStrategy.OnPush,providers:[A,C],template:'<table>\n <tbody>\n <tr class="text-center" [hidden]="!showSpinners">\n \x3c!-- increment hours button--\x3e\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 \x3c!-- divider --\x3e\n <td *ngIf="showMinutes"> </td>\n \x3c!-- increment minutes button --\x3e\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 \x3c!-- divider --\x3e\n <td *ngIf="showSeconds"> </td>\n \x3c!-- increment seconds button --\x3e\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 \x3c!-- space between --\x3e\n <td *ngIf="showMeridian"> </td>\n \x3c!-- meridian placeholder--\x3e\n <td *ngIf="showMeridian"></td>\n </tr>\n <tr>\n \x3c!-- hours --\x3e\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="HH"\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 \x3c!-- divider --\x3e\n <td *ngIf="showMinutes"> : </td>\n \x3c!-- minutes --\x3e\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="MM"\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 \x3c!-- divider --\x3e\n <td *ngIf="showSeconds"> : </td>\n \x3c!-- seconds --\x3e\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="SS"\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 \x3c!-- space between --\x3e\n <td *ngIf="showMeridian"> </td>\n \x3c!-- meridian --\x3e\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 \x3c!-- decrement hours button--\x3e\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 \x3c!-- divider --\x3e\n <td *ngIf="showMinutes"> </td>\n \x3c!-- decrement minutes button--\x3e\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 \x3c!-- divider --\x3e\n <td *ngIf="showSeconds"> </td>\n \x3c!-- decrement seconds button--\x3e\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 \x3c!-- space between --\x3e\n <td *ngIf="showMeridian"> </td>\n \x3c!-- meridian placeholder--\x3e\n <td *ngIf="showMeridian"></td>\n </tr>\n </tbody>\n</table>\n',encapsulation:o.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 }\n "]}]}],e.ctorParameters=function(){return[{type:D},{type:o.ChangeDetectorRef},{type:C},{type:u}]},e.propDecorators={hourStep:[{type:o.Input}],minuteStep:[{type:o.Input}],secondsStep:[{type:o.Input}],readonlyInput:[{type:o.Input}],disabled:[{type:o.Input}],mousewheel:[{type:o.Input}],arrowkeys:[{type:o.Input}],showSpinners:[{type:o.Input}],showMeridian:[{type:o.Input}],showMinutes:[{type:o.Input}],showSeconds:[{type:o.Input}],meridians:[{type:o.Input}],min:[{type:o.Input}],max:[{type:o.Input}],isValid:[{type:o.Output}]},e}(),V=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[D,u,C]}},e.decorators=[{type:o.NgModule,args:[{imports:[t.CommonModule],declarations:[O],exports:[O]}]}],e}();e.TimepickerComponent=O,e.TimepickerActions=u,e.TimepickerStore=C,e.TimepickerConfig=D,e.TimepickerModule=V,e.ɵa=A,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-bootstrap-timepicker.umd.min.js.map