@syncfusion/ej2-calendars 20.2.38 → 20.2.40

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.
@@ -1077,6 +1077,7 @@ let CalendarBase = class CalendarBase extends Component {
1077
1077
  this.currentDate.setFullYear(d.getFullYear());
1078
1078
  }
1079
1079
  else {
1080
+ this.islamicPreviousHeader = this.headerElement.textContent;
1080
1081
  const islamicDate = this.islamicModule.getIslamicDate(d);
1081
1082
  this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);
1082
1083
  }
@@ -2722,6 +2723,8 @@ class Islamic {
2722
2723
  this.calendarInstance.switchView(view);
2723
2724
  break;
2724
2725
  case 'Decade':
2726
+ this.calendarInstance.nextIconClicked = true;
2727
+ islamicDate.year = islamicDate.year - this.calendarInstance.headerElement.textContent.split('-')[0].trim() === 1 ? islamicDate.year + 1 : islamicDate.year;
2725
2728
  this.calendarInstance.currentDate = this.toGregorian(islamicDate.year + 10, islamicDate.month, 1);
2726
2729
  this.calendarInstance.switchView(view);
2727
2730
  break;
@@ -2741,6 +2744,7 @@ class Islamic {
2741
2744
  this.calendarInstance.switchView(currentView);
2742
2745
  break;
2743
2746
  case 'Decade':
2747
+ this.calendarInstance.previousIconClicked = true;
2744
2748
  this.calendarInstance.currentDate = this.toGregorian(islamicDate.year - 10, islamicDate.month - 1, 1);
2745
2749
  this.calendarInstance.switchView(currentView);
2746
2750
  break;
@@ -2800,53 +2804,103 @@ class Islamic {
2800
2804
  const yearCell = 12;
2801
2805
  const tdEles = [];
2802
2806
  let localDate = new Date(this.islamicInValue(this.calendarInstance.currentDate));
2803
- const islamicDate = this.getIslamicDate(localDate);
2807
+ let islamicDate = this.getIslamicDate(localDate);
2804
2808
  const gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);
2805
2809
  localDate = gregorianObject;
2806
2810
  const localYr = localDate.getFullYear();
2807
2811
  const startYr = new Date(this.islamicInValue((localYr - localYr % 10)));
2808
2812
  const endYr = new Date(this.islamicInValue((localYr - localYr % 10 + (10 - 1))));
2809
- const startFullYr = startYr.getFullYear();
2810
- const endFullYr = endYr.getFullYear();
2811
- const startHdrYr = this.calendarInstance.globalize.formatDate(startYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });
2812
- const endHdrYr = this.calendarInstance.globalize.formatDate(endYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });
2813
+ let startFullYr = startYr.getFullYear();
2814
+ let endFullYr = endYr.getFullYear();
2815
+ let startHdrYr = this.calendarInstance.globalize.formatDate(startYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });
2816
+ let endHdrYr = this.calendarInstance.globalize.formatDate(endYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });
2817
+ if (this.calendarInstance.islamicPreviousHeader) {
2818
+ startHdrYr = this.calendarInstance.islamicPreviousHeader.split('-')[0].trim();
2819
+ endHdrYr = this.calendarInstance.islamicPreviousHeader.split('-')[1].trim();
2820
+ this.calendarInstance.islamicPreviousHeader = null;
2821
+ }
2822
+ let splityear = this.calendarInstance.headerElement.textContent.split('-');
2823
+ if (this.calendarInstance.previousIconClicked) {
2824
+ for (var i = 0; i <= splityear.length; i++) {
2825
+ endHdrYr = endHdrYr - splityear[i] === 2 || splityear[i] - endHdrYr === 2 ? (parseInt(endHdrYr) + 1).toString() : endHdrYr - splityear[i] === 3 || splityear[i] - endHdrYr === 3 ? (parseInt(endHdrYr) + 2).toString() : endHdrYr - splityear[i] === 4 || splityear[i] - endHdrYr === 4 ? (parseInt(endHdrYr) + 3).toString() : endHdrYr - splityear[i] === 5 || splityear[i] - endHdrYr === 5 ? (parseInt(endHdrYr) + 4).toString() : endHdrYr;
2826
+ if (endHdrYr - splityear[i] === 0 || splityear[i] - endHdrYr === 0) {
2827
+ endHdrYr = (parseInt(endHdrYr) - 1).toString();
2828
+ }
2829
+ }
2830
+ startHdrYr = endHdrYr - startHdrYr === 10
2831
+ ? (parseInt(startHdrYr) + 1).toString() : endHdrYr - startHdrYr === 11
2832
+ ? (parseInt(startHdrYr) + 2).toString() : endHdrYr - startHdrYr === 12
2833
+ ? (parseInt(startHdrYr) + 3).toString() : startHdrYr;
2834
+ startHdrYr = endHdrYr - startHdrYr === 8 ? (parseInt(startHdrYr) - 1).toString() : startHdrYr;
2835
+ }
2836
+ if (this.calendarInstance.nextIconClicked) {
2837
+ for (var i = 0; i <= splityear.length; i++) {
2838
+ if (startHdrYr - splityear[i] === 0 || splityear[i] - startHdrYr === 0) {
2839
+ startHdrYr = (parseInt(startHdrYr) + 1).toString();
2840
+ }
2841
+ if (startHdrYr - splityear[i] === 2 && startHdrYr > splityear[i].trim()) {
2842
+ startHdrYr = (parseInt(startHdrYr) - 1).toString();
2843
+ }
2844
+ if (splityear[i] - startHdrYr === 1 && startHdrYr < splityear[i].trim()) {
2845
+ startHdrYr = (parseInt(startHdrYr) + 2).toString();
2846
+ }
2847
+ }
2848
+ endHdrYr = endHdrYr - startHdrYr === 10 ? (parseInt(endHdrYr) - 1).toString() : endHdrYr;
2849
+ endHdrYr = endHdrYr - startHdrYr === 7
2850
+ ? (parseInt(endHdrYr) + 2).toString() : endHdrYr - startHdrYr === 8
2851
+ ? (parseInt(endHdrYr) + 1).toString() : endHdrYr;
2852
+ }
2813
2853
  this.calendarInstance.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);
2814
- const start = new Date(localYr - (localYr % 10) - 2, 0, 1);
2815
- const startYear = start.getFullYear();
2854
+ this.calendarInstance.nextIconClicked = this.calendarInstance.previousIconClicked = false;
2855
+ const year = (parseInt(startHdrYr) - 2).toString();
2856
+ startFullYr = Math.round(parseInt(startHdrYr) * 0.97 + 622);
2857
+ endFullYr = Math.round(parseInt(endHdrYr) * 0.97 + 622);
2858
+ let startYear = Math.round(parseInt(year) * 0.97 + 622);
2816
2859
  for (let rowCount = 1; rowCount <= yearCell; ++rowCount) {
2817
2860
  const year = startYear + rowCount;
2818
2861
  localDate.setFullYear(year);
2819
2862
  localDate.setDate(1);
2820
2863
  localDate.setMonth(0);
2821
- const islamicDate = this.getIslamicDate(localDate);
2864
+ if ((this.getIslamicDate(localDate).year - islamicDate.year) > 1) {
2865
+ localDate.setMonth(1);
2866
+ rowCount = rowCount - 1;
2867
+ localDate.setFullYear(localDate.getFullYear() - 1);
2868
+ }
2869
+ islamicDate = this.getIslamicDate(localDate);
2822
2870
  const gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);
2823
2871
  localDate = gregorianObject;
2824
- const tdEle = this.islamicDayCell(localDate);
2825
- attributes(tdEle, { 'role': 'gridcell' });
2826
- const dayLink = this.calendarInstance.createElement('span');
2827
- dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'y', calendar: 'islamic' });
2828
- if ((year < startFullYr) || (year > endFullYr)) {
2829
- addClass([tdEle], OTHERMONTH$1);
2830
- }
2831
- else if (year < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()
2832
- || year > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {
2833
- addClass([tdEle], DISABLED$1);
2834
- }
2835
- else if (!isNullOrUndefined(value) &&
2836
- (this.getIslamicDate(localDate)).year ===
2837
- (this.getIslamicDate(value)).year) {
2838
- addClass([tdEle], SELECTED$1);
2839
- }
2840
- else {
2841
- if (localDate.getFullYear() === this.calendarInstance.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED$1)) {
2842
- addClass([tdEle], FOCUSEDDATE$1);
2872
+ if (islamicDate.year === parseInt(startHdrYr) - 1 || islamicDate.year >= startHdrYr && islamicDate.year <= endFullYr || islamicDate.year === parseInt(endHdrYr) + 1) {
2873
+ const tdEle = this.islamicDayCell(localDate);
2874
+ attributes(tdEle, { 'role': 'gridcell' });
2875
+ const dayLink = this.calendarInstance.createElement('span');
2876
+ dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'y', calendar: 'islamic' });
2877
+ if (islamicDate.year === parseInt(startHdrYr) - 1 || (year < startFullYr) || (year > endFullYr) && islamicDate.year !== parseInt(endHdrYr)) {
2878
+ addClass([tdEle], OTHERMONTH$1);
2879
+ if (year < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()
2880
+ || year > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {
2881
+ addClass([tdEle], DISABLED$1);
2882
+ }
2883
+ }
2884
+ else if (year < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()
2885
+ || year > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {
2886
+ addClass([tdEle], DISABLED$1);
2887
+ }
2888
+ else if (!isNullOrUndefined(value) &&
2889
+ (this.getIslamicDate(localDate)).year ===
2890
+ (this.getIslamicDate(value)).year) {
2891
+ addClass([tdEle], SELECTED$1);
2843
2892
  }
2893
+ else {
2894
+ if (localDate.getFullYear() === this.calendarInstance.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED$1)) {
2895
+ addClass([tdEle], FOCUSEDDATE$1);
2896
+ }
2897
+ }
2898
+ if (!tdEle.classList.contains(DISABLED$1)) {
2899
+ EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);
2900
+ }
2901
+ tdEle.appendChild(dayLink);
2902
+ tdEles.push(tdEle);
2844
2903
  }
2845
- if (!tdEle.classList.contains(DISABLED$1)) {
2846
- EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);
2847
- }
2848
- tdEle.appendChild(dayLink);
2849
- tdEles.push(tdEle);
2850
2904
  }
2851
2905
  this.islamicRenderTemplate(tdEles, numCells, 'e-decade', e, value);
2852
2906
  }
@@ -2873,7 +2927,7 @@ class Islamic {
2873
2927
  const otherMonthCell = 6;
2874
2928
  let row = count;
2875
2929
  let rowCount = 0;
2876
- for (let dayCell = 0; dayCell < elements.length / count; ++dayCell) {
2930
+ for (let dayCell = 0; dayCell < Math.round(elements.length / count); ++dayCell) {
2877
2931
  trEle = this.calendarInstance.createElement('tr', { attrs: { 'role': 'row' } });
2878
2932
  for (rowCount = 0 + rowCount; rowCount < row; rowCount++) {
2879
2933
  if (!elements[rowCount].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowCount].children[0])) {