@syncfusion/ej2-calendars 31.2.15 → 31.2.16

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.
@@ -15414,6 +15414,9 @@ class MaskedDateTime {
15414
15414
  }
15415
15415
  maskInputHandler() {
15416
15416
  let start = this.parent.inputElement.selectionStart;
15417
+ if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {
15418
+ start = this.normalizeTokenIndex(start);
15419
+ }
15417
15420
  let formatText = '';
15418
15421
  if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {
15419
15422
  formatText = this.hiddenMask[start];
@@ -15433,10 +15436,18 @@ class MaskedDateTime {
15433
15436
  break;
15434
15437
  }
15435
15438
  }
15436
- let scrollPositionY;
15439
+ let scrollContext = null;
15440
+ let savedScrollTop = 0;
15437
15441
  if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {
15438
15442
  const scrollableParent = this.findScrollableParent(this.parent.inputElement);
15439
- scrollPositionY = scrollableParent ? scrollableParent.getBoundingClientRect().top : window.scrollY;
15443
+ if (scrollableParent) {
15444
+ scrollContext = scrollableParent;
15445
+ savedScrollTop = scrollableParent.scrollTop;
15446
+ }
15447
+ else {
15448
+ scrollContext = window;
15449
+ savedScrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;
15450
+ }
15440
15451
  }
15441
15452
  this.parent.inputElement.selectionStart = start;
15442
15453
  this.validCharacterCheck();
@@ -15446,7 +15457,12 @@ class MaskedDateTime {
15446
15457
  this.navigateSelection(isbackward);
15447
15458
  if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {
15448
15459
  setTimeout(() => {
15449
- window.scrollTo(0, scrollPositionY);
15460
+ if (scrollContext) {
15461
+ scrollContext.scrollTop = savedScrollTop;
15462
+ }
15463
+ else {
15464
+ window.scrollTo(0, savedScrollTop);
15465
+ }
15450
15466
  }, 0);
15451
15467
  }
15452
15468
  }
@@ -15641,6 +15657,34 @@ class MaskedDateTime {
15641
15657
  this.dayTypeCount = 0;
15642
15658
  this.monthTypeCount = 0;
15643
15659
  }
15660
+ isMaskToken(i) {
15661
+ return i >= 0 && i < this.hiddenMask.length &&
15662
+ this.validCharacters.indexOf(this.hiddenMask[i]) !== -1;
15663
+ }
15664
+ normalizeTokenIndex(index, preferPrev = false) {
15665
+ if (this.isMaskToken(index)) {
15666
+ return index;
15667
+ }
15668
+ const prev = index - 1;
15669
+ const next = index + 1;
15670
+ if (preferPrev) {
15671
+ if (this.isMaskToken(prev)) {
15672
+ return prev;
15673
+ }
15674
+ if (this.isMaskToken(next)) {
15675
+ return next;
15676
+ }
15677
+ }
15678
+ else {
15679
+ if (this.isMaskToken(next)) {
15680
+ return next;
15681
+ }
15682
+ if (this.isMaskToken(prev)) {
15683
+ return prev;
15684
+ }
15685
+ }
15686
+ return index;
15687
+ }
15644
15688
  destroy() {
15645
15689
  this.removeEventListener();
15646
15690
  }