@agorapulse/ui-components 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/overlay'), require('@angular/flex-layout'), require('@angular/forms'), require('@angular/material/badge'), require('@angular/material/bottom-sheet'), require('@angular/material/button'), require('@angular/material/button-toggle'), require('@angular/material/card'), require('@angular/material/checkbox'), require('@angular/material/chips'), require('@angular/material/dialog'), require('@angular/material/divider'), require('@angular/material/expansion'), require('@angular/material/grid-list'), require('@angular/material/icon'), require('@angular/material/list'), require('@angular/material/menu'), require('@angular/material/progress-bar'), require('@angular/material/progress-spinner'), require('@angular/material/radio'), require('@angular/material/sidenav'), require('@angular/material/slider'), require('@angular/material/slide-toggle'), require('@angular/material/snack-bar'), require('@angular/material/stepper'), require('@angular/material/table'), require('@angular/material/tabs'), require('@angular/material/toolbar'), require('@ng-select/ng-select'), require('moment'), require('@angular/animations'), require('rxjs'), require('rxjs/operators'), require('@angular/cdk/scrolling'), require('@angular/platform-browser'), require('@angular/cdk/portal'), require('ngx-daterangepicker-material'), require('@agorapulse/ui-symbol')) :
3
- typeof define === 'function' && define.amd ? define('@agorapulse/ui-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/overlay', '@angular/flex-layout', '@angular/forms', '@angular/material/badge', '@angular/material/bottom-sheet', '@angular/material/button', '@angular/material/button-toggle', '@angular/material/card', '@angular/material/checkbox', '@angular/material/chips', '@angular/material/dialog', '@angular/material/divider', '@angular/material/expansion', '@angular/material/grid-list', '@angular/material/icon', '@angular/material/list', '@angular/material/menu', '@angular/material/progress-bar', '@angular/material/progress-spinner', '@angular/material/radio', '@angular/material/sidenav', '@angular/material/slider', '@angular/material/slide-toggle', '@angular/material/snack-bar', '@angular/material/stepper', '@angular/material/table', '@angular/material/tabs', '@angular/material/toolbar', '@ng-select/ng-select', 'moment', '@angular/animations', 'rxjs', 'rxjs/operators', '@angular/cdk/scrolling', '@angular/platform-browser', '@angular/cdk/portal', 'ngx-daterangepicker-material', '@agorapulse/ui-symbol'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.agorapulse = global.agorapulse || {}, global.agorapulse["ui-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.overlay, global.ng.flexLayout, global.ng.forms, global.ng.material.badge, global.ng.material.bottomSheet, global.ng.material.button, global.ng.material.buttonToggle, global.ng.material.card, global.ng.material.checkbox, global.ng.material.chips, global.ng.material.dialog, global.ng.material.divider, global.ng.material.expansion, global.ng.material.gridList, global.ng.material.icon, global.ng.material.list, global.ng.material.menu, global.ng.material.progressBar, global.ng.material.progressSpinner, global.ng.material.radio, global.ng.material.sidenav, global.ng.material.slider, global.ng.material.slideToggle, global.ng.material.snackBar, global.ng.material.stepper, global.ng.material.table, global.ng.material.tabs, global.ng.material.toolbar, global.ngSelect, global.moment, global.ng.animations, global.rxjs, global.rxjs.operators, global.ng.cdk.scrolling, global.ng.platformBrowser, global.ng.cdk.portal, global.ngxDaterangepickerMaterial, global.uiSymbol));
5
- })(this, (function (exports, i0, common, overlay, flexLayout, forms, badge, bottomSheet, button, buttonToggle, card, checkbox, chips, dialog, divider, expansion, gridList, icon, list, menu, progressBar, progressSpinner, radio, sidenav, slider, slideToggle, snackBar, stepper, table, tabs, toolbar, ngSelect, moment, animations, rxjs, operators, scrolling, i1, portal, ngxDaterangepickerMaterial, uiSymbol) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/overlay'), require('@angular/flex-layout'), require('@angular/forms'), require('@angular/material/badge'), require('@angular/material/bottom-sheet'), require('@angular/material/button'), require('@angular/material/button-toggle'), require('@angular/material/card'), require('@angular/material/checkbox'), require('@angular/material/chips'), require('@angular/material/dialog'), require('@angular/material/divider'), require('@angular/material/expansion'), require('@angular/material/grid-list'), require('@angular/material/icon'), require('@angular/material/list'), require('@angular/material/menu'), require('@angular/material/progress-bar'), require('@angular/material/progress-spinner'), require('@angular/material/radio'), require('@angular/material/sidenav'), require('@angular/material/slider'), require('@angular/material/slide-toggle'), require('@angular/material/snack-bar'), require('@angular/material/stepper'), require('@angular/material/table'), require('@angular/material/tabs'), require('@angular/material/toolbar'), require('@ng-select/ng-select'), require('moment'), require('@angular/animations'), require('rxjs'), require('rxjs/operators'), require('@angular/cdk/scrolling'), require('date-fns/format'), require('date-fns/parse'), require('imask'), require('@angular/platform-browser'), require('@angular/cdk/portal'), require('ngx-daterangepicker-material'), require('@agorapulse/ui-symbol'), require('angular-imask')) :
3
+ typeof define === 'function' && define.amd ? define('@agorapulse/ui-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/overlay', '@angular/flex-layout', '@angular/forms', '@angular/material/badge', '@angular/material/bottom-sheet', '@angular/material/button', '@angular/material/button-toggle', '@angular/material/card', '@angular/material/checkbox', '@angular/material/chips', '@angular/material/dialog', '@angular/material/divider', '@angular/material/expansion', '@angular/material/grid-list', '@angular/material/icon', '@angular/material/list', '@angular/material/menu', '@angular/material/progress-bar', '@angular/material/progress-spinner', '@angular/material/radio', '@angular/material/sidenav', '@angular/material/slider', '@angular/material/slide-toggle', '@angular/material/snack-bar', '@angular/material/stepper', '@angular/material/table', '@angular/material/tabs', '@angular/material/toolbar', '@ng-select/ng-select', 'moment', '@angular/animations', 'rxjs', 'rxjs/operators', '@angular/cdk/scrolling', 'date-fns/format', 'date-fns/parse', 'imask', '@angular/platform-browser', '@angular/cdk/portal', 'ngx-daterangepicker-material', '@agorapulse/ui-symbol', 'angular-imask'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.agorapulse = global.agorapulse || {}, global.agorapulse["ui-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.overlay, global.ng.flexLayout, global.ng.forms, global.ng.material.badge, global.ng.material.bottomSheet, global.ng.material.button, global.ng.material.buttonToggle, global.ng.material.card, global.ng.material.checkbox, global.ng.material.chips, global.ng.material.dialog, global.ng.material.divider, global.ng.material.expansion, global.ng.material.gridList, global.ng.material.icon, global.ng.material.list, global.ng.material.menu, global.ng.material.progressBar, global.ng.material.progressSpinner, global.ng.material.radio, global.ng.material.sidenav, global.ng.material.slider, global.ng.material.slideToggle, global.ng.material.snackBar, global.ng.material.stepper, global.ng.material.table, global.ng.material.tabs, global.ng.material.toolbar, global.ngSelect, global.moment, global.ng.animations, global.rxjs, global.rxjs.operators, global.ng.cdk.scrolling, global.format, global.parse, global.IMask, global.ng.platformBrowser, global.ng.cdk.portal, global.ngxDaterangepickerMaterial, global.uiSymbol, global.angularImask));
5
+ })(this, (function (exports, i0, common, overlay, flexLayout, forms, badge, bottomSheet, button, buttonToggle, card, checkbox, chips, dialog, divider, expansion, gridList, icon, list, menu, progressBar, progressSpinner, radio, sidenav, slider, slideToggle, snackBar, stepper, table, tabs, toolbar, ngSelect, moment, animations, rxjs, operators, scrolling, format, parse, IMask, i1, portal, ngxDaterangepickerMaterial, uiSymbol, angularImask) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -26,6 +26,9 @@
26
26
 
27
27
  var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
28
28
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
29
+ var format__default = /*#__PURE__*/_interopDefaultLegacy(format);
30
+ var parse__default = /*#__PURE__*/_interopDefaultLegacy(parse);
31
+ var IMask__default = /*#__PURE__*/_interopDefaultLegacy(IMask);
29
32
  var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
30
33
 
31
34
  var AddCommentComponent = /** @class */ (function () {
@@ -2668,6 +2671,375 @@
2668
2671
  timeModelChange: [{ type: i0.Output }]
2669
2672
  };
2670
2673
 
2674
+ var NeoTimepickerComponent = /** @class */ (function () {
2675
+ function NeoTimepickerComponent(changeDetectorRef) {
2676
+ this.changeDetectorRef = changeDetectorRef;
2677
+ this.i18n = {
2678
+ hourLabel: 'Hour',
2679
+ minuteLabel: 'Minute',
2680
+ meridianLabel: 'AM/PM',
2681
+ doneLabel: 'Done',
2682
+ cancelLabel: 'Cancel',
2683
+ };
2684
+ this.disabled = false;
2685
+ this.format = exports.TimeFormat.Default;
2686
+ this.invalid = false;
2687
+ this.placement = 'bottom';
2688
+ this.timeModelChange = new i0.EventEmitter();
2689
+ this.meridians = ['AM', 'PM'];
2690
+ this.imaskDefault = {
2691
+ mask: 'HH:MM',
2692
+ blocks: {
2693
+ HH: {
2694
+ mask: IMask__default["default"].MaskedRange,
2695
+ from: 0,
2696
+ to: 23,
2697
+ autofix: 'pad',
2698
+ },
2699
+ MM: {
2700
+ mask: IMask__default["default"].MaskedRange,
2701
+ from: 0,
2702
+ to: 59,
2703
+ autofix: 'pad',
2704
+ },
2705
+ },
2706
+ };
2707
+ this.imaskMeridian = {
2708
+ mask: 'HH:MM AMPM',
2709
+ blocks: {
2710
+ HH: {
2711
+ mask: IMask__default["default"].MaskedRange,
2712
+ from: 1,
2713
+ to: 12,
2714
+ autofix: 'pad',
2715
+ },
2716
+ MM: {
2717
+ mask: IMask__default["default"].MaskedRange,
2718
+ from: 0,
2719
+ to: 59,
2720
+ autofix: 'pad',
2721
+ },
2722
+ AMPM: {
2723
+ mask: IMask__default["default"].MaskedEnum,
2724
+ enum: ['AM', 'PM']
2725
+ }
2726
+ },
2727
+ lazy: false,
2728
+ prepare: function (str) {
2729
+ return str.toUpperCase();
2730
+ },
2731
+ };
2732
+ this.ENTER_KEY = 'Enter';
2733
+ this.ESCAPE_KEY = 'Escape';
2734
+ this.FIX_NUMBER = 10;
2735
+ this.HOURS_MAX = 24;
2736
+ this.HOURS_MERIDIAN_MAX = 12;
2737
+ this.MARGIN = 8;
2738
+ this.MINUTES_MAX = 60;
2739
+ this.TIME_OPTION_HEIGHT = 387;
2740
+ this.TIME_PICKER_DEFAULT_WIDTH = 96;
2741
+ this.TIME_PICKER_MERIDIAN_WIDTH = 152;
2742
+ this.ROW_HEIGHT = 36;
2743
+ this.hours = [];
2744
+ this.minutes = [];
2745
+ this.position = null;
2746
+ this.TimeFormat = exports.TimeFormat;
2747
+ }
2748
+ NeoTimepickerComponent.prototype.onKeypress = function (event) {
2749
+ if (this.timepickerOpened) {
2750
+ if (event.code === this.ENTER_KEY) {
2751
+ this.onSaveSelection();
2752
+ }
2753
+ if (event.code === this.ESCAPE_KEY) {
2754
+ this.onCancelSelection();
2755
+ }
2756
+ }
2757
+ };
2758
+ NeoTimepickerComponent.prototype.ngOnInit = function () {
2759
+ this.generateTimeSlots();
2760
+ this.onTimeModelChange();
2761
+ };
2762
+ NeoTimepickerComponent.prototype.ngOnChanges = function (changes) {
2763
+ var _this = this;
2764
+ var _a, _b, _c;
2765
+ this.generateTimeSlots();
2766
+ if ((_a = changes.format) === null || _a === void 0 ? void 0 : _a.currentValue) {
2767
+ this.timeFormat = this.format === exports.TimeFormat.Default ? 'HH:mm' : 'hh:mm a';
2768
+ if (this.format === exports.TimeFormat.Default && this.meridians.some(function (meridian) { var _a; return (_a = _this.timeModel) === null || _a === void 0 ? void 0 : _a.endsWith(meridian); })) {
2769
+ this.timeModel = NeoTimepickerComponent.convert12To24(this.timeModel);
2770
+ }
2771
+ else if (this.format === exports.TimeFormat.Meridian && this.meridians.every(function (meridian) { var _a; return !((_a = _this.timeModel) === null || _a === void 0 ? void 0 : _a.endsWith(meridian)); })) {
2772
+ this.timeModel = NeoTimepickerComponent.convert24To12(this.timeModel);
2773
+ }
2774
+ setTimeout(function () { return _this.changeDetectorRef.markForCheck(); });
2775
+ }
2776
+ if ((_b = changes.placement) === null || _b === void 0 ? void 0 : _b.currentValue) {
2777
+ this.updateTimePickerPosition();
2778
+ }
2779
+ if ((_c = changes.format) === null || _c === void 0 ? void 0 : _c.currentValue) {
2780
+ this.updateTimePickerPosition();
2781
+ }
2782
+ };
2783
+ NeoTimepickerComponent.prototype.onOpenTimepicker = function () {
2784
+ var _this = this;
2785
+ this.destroy$ = new rxjs.Subject();
2786
+ this.previousValue = this.timeModel;
2787
+ this.timepickerOpened = true;
2788
+ this.timepickerClosed = false;
2789
+ this.updateTimePickerPosition();
2790
+ setTimeout(function () {
2791
+ _this.updateElementPosition('minute', _this.selectedMinute, 'auto');
2792
+ _this.updateElementPosition('hour', _this.selectedHour, 'auto');
2793
+ _this.updateElementPosition('meridian', _this.selectedMeridian, 'auto');
2794
+ _this.inputBox.nativeElement.focus();
2795
+ _this.inputBox.nativeElement.select();
2796
+ }, 1);
2797
+ this.changeDetectorRef.markForCheck();
2798
+ };
2799
+ NeoTimepickerComponent.prototype.onTimepickerOpened = function () {
2800
+ var _this = this;
2801
+ this.hoursScrollObserver$ = this.onObserveElementScroll(this.hourOptions.nativeElement);
2802
+ this.minutesScrollObserver$ = this.onObserveElementScroll(this.minutesOptions.nativeElement);
2803
+ this.hoursScrollObserver$.subscribe(function (indexToScroll) {
2804
+ _this.updateTimeModel(_this.hours[indexToScroll], _this.selectedMinute, _this.selectedMeridian);
2805
+ });
2806
+ this.minutesScrollObserver$.subscribe(function (indexToScroll) {
2807
+ _this.updateTimeModel(_this.selectedHour, _this.minutes[indexToScroll], _this.selectedMeridian);
2808
+ });
2809
+ if (this.format === exports.TimeFormat.Meridian) {
2810
+ this.meridiansScrollObserver$ = this.onObserveElementScroll(this.meridiansOptions.nativeElement);
2811
+ this.meridiansScrollObserver$.subscribe(function (indexToScroll) {
2812
+ _this.updateTimeModel(_this.selectedHour, _this.selectedMinute, _this.meridians[indexToScroll]);
2813
+ });
2814
+ }
2815
+ };
2816
+ NeoTimepickerComponent.prototype.onObserveElementScroll = function (element) {
2817
+ var _this = this;
2818
+ return rxjs.fromEvent(element, 'scroll').pipe(operators.debounceTime(150), operators.distinctUntilChanged(), operators.takeUntil(this.destroy$), operators.map(function () {
2819
+ return Math.round(element.scrollTop / _this.ROW_HEIGHT);
2820
+ }));
2821
+ };
2822
+ NeoTimepickerComponent.prototype.onTimePickerClosed = function () {
2823
+ this.onCancelSelection();
2824
+ this.destroy$.next();
2825
+ this.destroy$.complete();
2826
+ };
2827
+ NeoTimepickerComponent.prototype.onTimeModelChange = function () {
2828
+ var date = new Date();
2829
+ if (this.timeModel) {
2830
+ date = parse__default["default"](this.timeModel, this.timeFormat, new Date());
2831
+ }
2832
+ this.timeModel = format__default["default"](date, this.timeFormat);
2833
+ if (!this.previousValue) {
2834
+ this.previousValue = this.timeModel;
2835
+ }
2836
+ var jsHour = date.getHours();
2837
+ if (this.format === exports.TimeFormat.Meridian) {
2838
+ if (jsHour > 12) {
2839
+ jsHour = jsHour - 12;
2840
+ }
2841
+ // JS doesn't handle well AM/PM hour so 12:53 PM will be 00:53 ...
2842
+ if (jsHour == 0) {
2843
+ jsHour = 12;
2844
+ }
2845
+ }
2846
+ var hour = NeoTimepickerComponent.toFixed(jsHour.toString(), 10);
2847
+ if (hour != this.selectedHour) {
2848
+ this.selectedHour = hour;
2849
+ this.updateElementPosition('hour', this.selectedHour, 'auto');
2850
+ }
2851
+ var minute = NeoTimepickerComponent.toFixed(date.getMinutes().toString(), 10);
2852
+ if (minute != this.selectedMinute) {
2853
+ this.selectedMinute = minute;
2854
+ this.updateElementPosition('minute', this.selectedMinute, 'auto');
2855
+ }
2856
+ if (this.format === exports.TimeFormat.Meridian && this.selectedMeridian !== this.timeModel.split(' ')[1]) {
2857
+ this.selectedMeridian = this.timeModel.split(' ')[1];
2858
+ this.updateElementPosition('meridian', this.selectedMeridian, 'auto');
2859
+ }
2860
+ this.changeDetectorRef.markForCheck();
2861
+ };
2862
+ NeoTimepickerComponent.prototype.onSelectHour = function (hour) {
2863
+ this.updateTimeModel(hour, this.selectedMinute, this.selectedMeridian);
2864
+ };
2865
+ NeoTimepickerComponent.prototype.onSelectMinute = function (minute) {
2866
+ this.updateTimeModel(this.selectedHour, minute, this.selectedMeridian);
2867
+ };
2868
+ NeoTimepickerComponent.prototype.onSelectMeridian = function (meridian) {
2869
+ this.updateTimeModel(this.selectedHour, this.selectedMinute, meridian);
2870
+ };
2871
+ NeoTimepickerComponent.prototype.onSaveSelection = function () {
2872
+ this.previousValue = this.timeModel;
2873
+ this.timepickerClosed = true;
2874
+ this.timepickerOpened = false;
2875
+ var timeModelValue = parse__default["default"](this.timeModel, this.timeFormat, new Date());
2876
+ this.timeModelChange.emit({
2877
+ hours: timeModelValue.getHours(),
2878
+ minutes: timeModelValue.getMinutes(),
2879
+ });
2880
+ this.changeDetectorRef.markForCheck();
2881
+ };
2882
+ NeoTimepickerComponent.prototype.onCancelSelection = function () {
2883
+ this.timepickerClosed = true;
2884
+ this.timepickerOpened = false;
2885
+ this.timeModel = this.previousValue;
2886
+ this.changeDetectorRef.markForCheck();
2887
+ };
2888
+ NeoTimepickerComponent.prototype.onMaskValidateComplete = function (value) {
2889
+ if (this.timeModel !== value) {
2890
+ this.timeModel = value;
2891
+ }
2892
+ this.onTimeModelChange();
2893
+ };
2894
+ NeoTimepickerComponent.prototype.updateTimeModel = function (hour, minute, meridian) {
2895
+ if (this.format === exports.TimeFormat.Meridian) {
2896
+ this.timeModel = hour + ":" + minute + " " + meridian;
2897
+ }
2898
+ else {
2899
+ this.timeModel = hour + ":" + minute;
2900
+ }
2901
+ this.changeDetectorRef.markForCheck();
2902
+ };
2903
+ NeoTimepickerComponent.prototype.updateElementPosition = function (elementType, id, scrollBehavior) {
2904
+ var element = document.getElementById(elementType + "-" + id);
2905
+ this.scrollToElement(element, scrollBehavior);
2906
+ };
2907
+ NeoTimepickerComponent.prototype.scrollToElement = function (element, behavior) {
2908
+ if (behavior === void 0) { behavior = 'auto'; }
2909
+ if (element) {
2910
+ setTimeout(function () {
2911
+ element.scrollIntoView({
2912
+ behavior: behavior,
2913
+ block: 'center',
2914
+ inline: 'center'
2915
+ });
2916
+ }, 1);
2917
+ }
2918
+ };
2919
+ /**
2920
+ * Fullfill minutes and hours arrays like [0, 1, 2 ... 12] and [0, 1, 2, ... 59]
2921
+ */
2922
+ NeoTimepickerComponent.prototype.generateTimeSlots = function () {
2923
+ this.hours = [];
2924
+ this.minutes = [NeoTimepickerComponent.toFixed(0, this.FIX_NUMBER)];
2925
+ for (var i = 1; i <= this.HOURS_MERIDIAN_MAX; i++) {
2926
+ var indexToAdd = NeoTimepickerComponent.toFixed(i, this.FIX_NUMBER);
2927
+ this.hours.push(indexToAdd);
2928
+ this.minutes.push(indexToAdd);
2929
+ }
2930
+ if (this.format === exports.TimeFormat.Default) {
2931
+ this.hours = __spreadArray([NeoTimepickerComponent.toFixed(0, this.FIX_NUMBER)], __read(this.hours));
2932
+ for (var i = 13; i < this.HOURS_MAX; i++) {
2933
+ this.hours.push(NeoTimepickerComponent.toFixed(i, this.FIX_NUMBER));
2934
+ }
2935
+ }
2936
+ for (var i = 13; i < this.MINUTES_MAX; i++) {
2937
+ this.minutes.push(NeoTimepickerComponent.toFixed(i, this.FIX_NUMBER));
2938
+ }
2939
+ this.changeDetectorRef.markForCheck();
2940
+ };
2941
+ NeoTimepickerComponent.prototype.updateTimePickerPosition = function () {
2942
+ var _a;
2943
+ if ((_a = this.inputBox) === null || _a === void 0 ? void 0 : _a.nativeElement) {
2944
+ var inputBoxBounds = this.inputBox.nativeElement.getBoundingClientRect();
2945
+ var topPosition = inputBoxBounds.top - this.TIME_OPTION_HEIGHT - this.MARGIN;
2946
+ var bottomPosition = inputBoxBounds.top + inputBoxBounds.height;
2947
+ var timePickerWidth = this.format === exports.TimeFormat.Meridian ? this.TIME_PICKER_MERIDIAN_WIDTH : this.TIME_PICKER_DEFAULT_WIDTH;
2948
+ var shift = (timePickerWidth - inputBoxBounds.width) / 2;
2949
+ if (this.placement === 'top') {
2950
+ this.position = {
2951
+ top: topPosition < 0 ? bottomPosition : topPosition,
2952
+ left: inputBoxBounds.left - shift,
2953
+ };
2954
+ }
2955
+ else {
2956
+ this.position = {
2957
+ top: bottomPosition + this.TIME_OPTION_HEIGHT + this.MARGIN > window.innerHeight ? topPosition : bottomPosition,
2958
+ left: inputBoxBounds.left - shift,
2959
+ };
2960
+ }
2961
+ this.changeDetectorRef.markForCheck();
2962
+ }
2963
+ };
2964
+ NeoTimepickerComponent.convert12To24 = function (time) {
2965
+ var terms = time.split(':');
2966
+ var minutes = terms[1].substring(0, 2);
2967
+ var meridian = terms[1].trim().slice(-2).toUpperCase();
2968
+ var hour = parseInt(terms[0]);
2969
+ if (!isNaN(parseInt(terms[0]))) {
2970
+ if (meridian === 'PM' && hour < 12) {
2971
+ hour = hour + 12;
2972
+ }
2973
+ if (meridian === 'AM' && hour === 12) {
2974
+ hour = 0;
2975
+ }
2976
+ }
2977
+ return hour + ":" + minutes;
2978
+ };
2979
+ NeoTimepickerComponent.convert24To12 = function (time) {
2980
+ var terms = time.split(':');
2981
+ var meridian = 'AM';
2982
+ var hour = parseInt(terms[0]);
2983
+ var minute = parseInt(terms[1]);
2984
+ if (!isNaN(parseInt(terms[0]))) {
2985
+ if (hour >= 12) {
2986
+ meridian = 'PM';
2987
+ if (hour > 12) {
2988
+ hour = hour - 12;
2989
+ }
2990
+ }
2991
+ if (hour === 0) {
2992
+ hour = 12;
2993
+ }
2994
+ }
2995
+ var hourStr = NeoTimepickerComponent.toFixed(hour, 10);
2996
+ var minuteStr = NeoTimepickerComponent.toFixed(minute, 10);
2997
+ return hourStr + ":" + minuteStr + " " + meridian;
2998
+ };
2999
+ /**
3000
+ * Return 08 for 8, 06 for 6
3001
+ * @param num
3002
+ * @param fix
3003
+ * @private
3004
+ */
3005
+ NeoTimepickerComponent.toFixed = function (num, fix) {
3006
+ var fixedNum = num.toString();
3007
+ if (num < fix) {
3008
+ fixedNum = "0" + fixedNum;
3009
+ }
3010
+ return fixedNum;
3011
+ };
3012
+ return NeoTimepickerComponent;
3013
+ }());
3014
+ NeoTimepickerComponent.decorators = [
3015
+ { type: i0.Component, args: [{
3016
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
3017
+ selector: 'ap-neo-timepicker',
3018
+ template: "<div class=\"time-picker-container\">\n <ng-template #timeOptionsTemplate>\n <div class=\"time-picker-options\"\n [class.meridian]=\"format === TimeFormat.Meridian\"\n *ngIf=\"timepickerOpened\"\n #timepicker\n >\n <div class=\"header\">\n <span> {{ i18n.hourLabel }} </span>\n <span> {{ i18n.minuteLabel }} </span>\n <span *ngIf=\"format === TimeFormat.Meridian\"> {{ i18n.meridianLabel }} </span>\n </div>\n <div class=\"content\">\n <div class=\"selector\">\n <span>:</span>\n <span *ngIf=\"format === TimeFormat.Meridian\"></span>\n </div>\n <div class=\"options\"\n #hourOptions>\n <div class=\"invisible-block\"></div>\n <div *ngFor=\"let hour of hours;\"\n class=\"option\"\n [id]=\"'hour-' + hour\"\n [class.selected]=\"hour === selectedHour\"\n (click)=\"onSelectHour(hour)\">\n {{ hour }}\n </div>\n <div class=\"invisible-block\"></div>\n </div>\n <div class=\"divider\"></div>\n <div class=\"options\"\n #minutesOptions>\n <div class=\"invisible-block\"></div>\n <div *ngFor=\"let minute of minutes;\"\n class=\"option\"\n [id]=\"'minute-' + minute\"\n [class.selected]=\"minute === selectedMinute\"\n (click)=\"onSelectMinute(minute)\">\n {{ minute }}\n </div>\n <div class=\"invisible-block\"></div>\n </div>\n <div *ngIf=\"format === TimeFormat.Meridian\"\n class=\"divider\"></div>\n <div *ngIf=\"format === TimeFormat.Meridian\"\n class=\"options\"\n #meridiansOptions>\n <div class=\"invisible-block\"></div>\n <div *ngFor=\"let meridian of meridians;\"\n class=\"option\"\n [id]=\"'meridian-' + meridian\"\n [class.selected]=\"selectedMeridian === meridian\"\n (click)=\"onSelectMeridian(meridian)\">\n {{ meridian }}\n </div>\n <div class=\"invisible-block\"></div>\n </div>\n </div>\n <div class=\"buttons\">\n <button mat-flat-button\n class=\"full-width\"\n color=\"primary\"\n (click)=\"onSaveSelection()\">\n {{ i18n.doneLabel }}\n </button>\n <button mat-flat-button\n class=\"full-width\"\n (click)=\"onCancelSelection()\">\n {{ i18n.cancelLabel }}\n </button>\n </div>\n </div>\n </ng-template>\n <input #inputBox\n class=\"time-input\"\n placement=\"bottom right\"\n color=\"secondary\"\n [class.active]=\"timepickerOpened\"\n [class.invalid]=\"invalid\"\n [apPopmenu]=\"timeOptionsTemplate\"\n [apPopmenuBackground]=\"false\"\n [apPopmenuBorder]=\"false\"\n [apPopmenuDisabled]=\"timepickerOpened\"\n [apTooltipNeo]=\"{content: invalidationMessage, display: invalidationMessage && invalid}\"\n [close]=\"timepickerClosed\"\n [disabled]=\"disabled\"\n [imask]=\"format === TimeFormat.Meridian ? imaskMeridian : imaskDefault\"\n [(ngModel)]=\"timeModel\"\n [pointer]=\"true\"\n [position]=\"position\"\n [rounded]=\"true\"\n [shadow]=\"false\"\n (click)=\"onOpenTimepicker()\"\n (complete)=\"onMaskValidateComplete($event)\"\n (menuClosed)=\"onTimePickerClosed()\"\n (menuOpened)=\"onTimepickerOpened()\">\n</div>\n",
3019
+ styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid red}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #fff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:#0000}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:initial}[border=transparent]{border:1px solid #0000}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.time-picker-container{display:flex}.time-input{width:80px;max-width:80px;text-align:center;padding:0;margin:0;height:36px;line-height:24px}.time-input.active{border-color:#178dfe}.time-picker-options{display:flex;flex-direction:column;width:96px;margin-top:8px;max-width:96px;height:379px;background:#fff;border-radius:4px;overflow:hidden;box-shadow:0 3px 10px #00000014}.time-picker-options.meridian{width:152px;max-width:152px}.time-picker-options .header{display:flex;align-items:center;min-height:29px;border-bottom:1px solid #eaecef;color:#344563;font-size:12px;line-height:18px}.time-picker-options .header>span{flex:1;text-align:center}.time-picker-options .content{display:flex;position:relative;min-height:252px;overflow:hidden}.time-picker-options .content .selector{display:flex;justify-content:space-evenly;align-items:center;background-color:#f9f9fa;border-top:1px solid #eaecef;border-bottom:1px solid #eaecef;width:100%;height:34px;position:absolute;top:50%;transform:translateY(-50%);z-index:4;box-sizing:border-box}.time-picker-options .content .divider{height:100%;width:1px;background:#eaecef}.time-picker-options .content .options{flex:1;height:100%;overflow-y:scroll;z-index:5;scroll-snap-type:y mandatory;-ms-overflow-style:none;scrollbar-width:none}.time-picker-options .content .options::-webkit-scrollbar{display:none}.time-picker-options .content .options .invisible-block{min-height:109px;max-height:109px;width:100%}.time-picker-options .content .options .option{min-height:34px;display:flex;z-index:5;justify-content:center;align-items:center;font-size:14px;line-height:17px;color:#aeb5c1;scroll-snap-align:center;padding-block:1px}.time-picker-options .content .options .option:hover{color:#178dfe;cursor:pointer}.time-picker-options .content .options .option.selected{color:#344563!important}.time-picker-options .content .meridian{flex:1;display:flex;flex-direction:column;justify-content:center}.time-picker-options .content .meridian>div{min-height:34px;display:flex;justify-content:center;align-items:center;font-size:14px;line-height:17px;color:#aeb5c1;scroll-snap-align:center}.time-picker-options .buttons{display:flex;flex-direction:column;padding:8px;min-height:96px;border-top:1px solid #eaecef;grid-gap:8px;gap:8px}.time-picker-options .buttons button{font-weight:700;min-width:80px}"]
3020
+ },] }
3021
+ ];
3022
+ /** @nocollapse */
3023
+ NeoTimepickerComponent.ctorParameters = function () { return [
3024
+ { type: i0.ChangeDetectorRef }
3025
+ ]; };
3026
+ NeoTimepickerComponent.propDecorators = {
3027
+ inputBox: [{ type: i0.ViewChild, args: ['inputBox',] }],
3028
+ hourOptions: [{ type: i0.ViewChild, args: ['hourOptions',] }],
3029
+ minutesOptions: [{ type: i0.ViewChild, args: ['minutesOptions',] }],
3030
+ meridiansOptions: [{ type: i0.ViewChild, args: ['meridiansOptions',] }],
3031
+ timepicker: [{ type: i0.ViewChild, args: ['timepicker',] }],
3032
+ i18n: [{ type: i0.Input }],
3033
+ disabled: [{ type: i0.Input }],
3034
+ format: [{ type: i0.Input }],
3035
+ invalid: [{ type: i0.Input }],
3036
+ invalidationMessage: [{ type: i0.Input }],
3037
+ placement: [{ type: i0.Input }],
3038
+ timeModel: [{ type: i0.Input }],
3039
+ timeModelChange: [{ type: i0.Output }],
3040
+ onKeypress: [{ type: i0.HostListener, args: ['window:keydown', ['$event'],] }]
3041
+ };
3042
+
2671
3043
  var NotificationComponent = /** @class */ (function () {
2672
3044
  function NotificationComponent() {
2673
3045
  this.type = 'info';
@@ -4106,6 +4478,7 @@
4106
4478
  TagListComponent,
4107
4479
  TagsSelectorComponent,
4108
4480
  TimepickerComponent,
4481
+ NeoTimepickerComponent,
4109
4482
  TryPopupComponent,
4110
4483
  NotificationComponent,
4111
4484
  PaginatorComponent,
@@ -4166,6 +4539,8 @@
4166
4539
  snackBar.MatSnackBarModule,
4167
4540
  // Table
4168
4541
  table.MatTableModule,
4542
+ // Mask
4543
+ angularImask.IMaskModule
4169
4544
  ],
4170
4545
  exports: [
4171
4546
  forms.FormsModule,
@@ -4199,6 +4574,7 @@
4199
4574
  TagListComponent,
4200
4575
  TagsSelectorComponent,
4201
4576
  TimepickerComponent,
4577
+ NeoTimepickerComponent,
4202
4578
  TryPopupComponent,
4203
4579
  NotificationComponent,
4204
4580
  PaginatorComponent,
@@ -4438,9 +4814,10 @@
4438
4814
  exports["ɵa"] = OverlayDialogRef;
4439
4815
  exports["ɵb"] = OVERLAY_DATA;
4440
4816
  exports["ɵc"] = PASSWORD_CONTROL_VALUE_ACCESSOR;
4441
- exports["ɵd"] = TooltipNeoComponent;
4442
- exports["ɵe"] = TooltipNeoService;
4443
- exports["ɵf"] = PopmenuOptionsService;
4817
+ exports["ɵd"] = NeoTimepickerComponent;
4818
+ exports["ɵe"] = TooltipNeoComponent;
4819
+ exports["ɵf"] = TooltipNeoService;
4820
+ exports["ɵg"] = PopmenuOptionsService;
4444
4821
 
4445
4822
  Object.defineProperty(exports, '__esModule', { value: true });
4446
4823