@@ -377,7 +377,7 @@ function headerItemEnabled(page: Page): boolean {
377
377
const pageNotEditable = page .editable === false ;
378
378
const currentPageIdx = stepperModel .value - 1 ;
379
379
const currentPageEditable = currentPages [currentPageIdx ]?.editable !== false ;
380
- const currentPageNotEditable = currentPages [currentPageIdx ]?.editable === false ;
380
+ // const currentPageNotEditable = currentPages[currentPageIdx]?.editable === false;
381
381
const lastPageIdx = currentPages .length - 1 ;
382
382
383
383
const previousPageIdx = pageIdx - 1 ;
@@ -416,92 +416,121 @@ function headerItemEnabled(page: Page): boolean {
416
416
// & -------------------------------------------------- Always True //
417
417
// Always set current page to editable //
418
418
if (currentPageIdx === pageIdx ) {
419
- console .log (' a' , page .title , pageIdx , currentPageIdx );
420
- // console.log('current page', page.title);
421
419
return true ;
422
420
}
423
421
424
422
// & -------------------------------------------------- Always False //
425
423
// Entire Stepper Form is not editable //
426
424
if (! stepperFormIsEditable .value ) {
427
- console .log (' b' , page .title , pageIdx , currentPageIdx );
428
425
return false ;
429
426
}
430
427
431
428
// If current page has errors disable all //
432
429
if (currentPageHasErrors .value ) {
433
- // console.log('c', page.title, pageIdx, currentPageIdx);
434
430
return false ;
435
431
}
436
432
437
-
438
- // & -------------------------------------------------- Conditions //
433
+ // & -------------------------------------------------- Non Jump Ahead //
439
434
// If not allowed to jump ahead //
440
435
if (! jumpAhead .value ) {
441
436
442
- if (
443
- pageIdx < currentPageIdx &&
444
- pageIdx > firstNonEditableIndex &&
445
- pageIdx > lastNonEditableIndex &&
446
- currentPageIdx > lastNonEditableIndex &&
447
- currentPageIdx === lastPageIdx &&
448
- pageEditable
449
- ) {
450
- // console.log('d', page.title, pageIdx, currentPageIdx);
451
- return true ;
452
- }
437
+ // If page is before the current page //
438
+ if (pageIdx < currentPageIdx ) {
439
+
440
+ // If the current page is before the last non editable page //
441
+ if (currentPageIdx > lastNonEditableIndex ) {
442
+
443
+ /**
444
+ * If the page is before the first non editable page
445
+ * And the page is before the last non editable page
446
+ * And the current page is the last page
447
+ * And the page is editable
448
+ */
449
+ if (
450
+ pageIdx > firstNonEditableIndex &&
451
+ pageIdx > lastNonEditableIndex &&
452
+ currentPageIdx === lastPageIdx &&
453
+ pageEditable
454
+ ) {
455
+ // console.log('d', page.title, pageIdx, currentPageIdx);
456
+ return true ;
457
+ }
453
458
454
- if (pageIdx < currentPageIdx && currentPageIdx > lastNonEditableIndex && ! pageEditable ) {
455
- // console.log('aa', page.title, pageIdx, currentPageIdx);
456
- return false ;
457
- }
459
+ // If the page is not editable //
460
+ if (! pageEditable ) {
461
+ // console.log('aa', page.title, pageIdx, currentPageIdx);
462
+ return false ;
463
+ }
464
+ }
458
465
459
- if (pageIdx < currentPageIdx && pageIdx < firstNonEditableIndex && currentPageIdx <= firstNonEditableIndex ) {
460
- // console.log('ab', page.title, pageIdx, currentPageIdx);
461
- return true ;
466
+ /**
467
+ * If the page is before the first non editable page
468
+ * And the current page is before or equal to the first non editable page
469
+ */
470
+ if (pageIdx < firstNonEditableIndex && currentPageIdx <= firstNonEditableIndex ) {
471
+ // console.log('ab', page.title, pageIdx, currentPageIdx);
472
+ return true ;
473
+ }
462
474
}
463
475
476
+ /**
477
+ * If the page is before or equal to the first non editable page
478
+ * And the current page is editable
479
+ */
464
480
if (pageIdx <= firstNonEditableIndex && currentPageEditable ) {
465
481
// console.log('ac', page.title, pageIdx, currentPageIdx);
466
482
return false ;
467
483
}
468
484
469
- if (
470
- pageIdx < currentPageIdx &&
471
- pageIdx > firstNonEditableIndex &&
472
- pageIdx < lastNonEditableIndex &&
473
- currentPageIdx <= lastNonEditableIndex &&
474
- nextPageNotEditable &&
475
- pageEditable
476
- ) {
477
- // console.log('ad', page.title, pageIdx, currentPageIdx);
478
- return true ;
479
- }
485
+ // If the page is before the current page //
486
+ if (pageIdx < currentPageIdx ) {
480
487
481
- if (
482
- pageIdx < currentPageIdx &&
483
- pageIdx < lastNonEditableIndex &&
484
- pageNotEditable
485
- ) {
486
- // console.log('ae', page.title, pageIdx, currentPageIdx);
487
- return false ;
488
- }
488
+ /**
489
+ * If the page is after the first non editable page
490
+ * And the page is before the last non editable page
491
+ * And the current page is before or equal to the last non editable page
492
+ * And the next page is not editable
493
+ * And the page is editable
494
+ */
495
+ if (
496
+ pageIdx > firstNonEditableIndex &&
497
+ pageIdx < lastNonEditableIndex &&
498
+ currentPageIdx <= lastNonEditableIndex &&
499
+ nextPageNotEditable &&
500
+ pageEditable
501
+ ) {
502
+ // console.log('ad', page.title, pageIdx, currentPageIdx);
503
+ return true ;
504
+ }
489
505
490
- // Allow previous pages to be revisited //
491
- if (
492
- pageIdx < currentPageIdx &&
493
- pageIdx > firstNonEditableIndex &&
494
- nextPageEditable &&
495
- currentPageIdx !== lastPageIdx
496
- ) {
497
- // console.log('af', page.title, pageIdx, currentPageIdx);
498
- return true ;
506
+ /**
507
+ * If the page is before the last non editable page
508
+ * And the page is not editable
509
+ */
510
+ if (pageIdx < lastNonEditableIndex && pageNotEditable ) {
511
+ // console.log('ae', page.title, pageIdx, currentPageIdx);
512
+ return false ;
513
+ }
514
+
515
+ /**
516
+ * If the page is before the first non editable page
517
+ * And the next page is editable
518
+ * And the current page is not the last page
519
+ */
520
+ if (
521
+ pageIdx > firstNonEditableIndex &&
522
+ nextPageEditable &&
523
+ currentPageIdx !== lastPageIdx
524
+ ) {
525
+ // console.log('af', page.title, pageIdx, currentPageIdx);
526
+ return true ;
527
+ }
499
528
}
500
529
501
530
return false ;
502
531
}
503
532
504
-
533
+ // & -------------------------------------------------- Jump Ahead //
505
534
// If the page is before the last non editable page //
506
535
if (pageIdx > lastNonEditableIndex ) {
507
536
@@ -521,21 +550,13 @@ function headerItemEnabled(page: Page): boolean {
521
550
return false ;
522
551
}
523
552
524
- /**
525
- * If the current page is equal to the last page
526
- * And the page is before the last non editable page
527
- */
528
- if (currentPageIdx === lastPageIdx && pageIdx < lastNonEditableIndex ) {
529
- // console.log('x', page.title, pageIdx, currentPageIdx);
530
- return false ;
531
- }
532
-
553
+ // If the page is before the last non editable page //
554
+ if (pageIdx < lastNonEditableIndex ) {
533
555
534
- /**
535
- * If the page is after the first non editable page
536
- * And the page is before the last non editable page
537
- */
538
- if (pageIdx > firstNonEditableIndex && pageIdx < lastNonEditableIndex ) {
556
+ // If the current page is equal to the last page //
557
+ if (currentPageIdx === lastPageIdx ) {
558
+ return false ;
559
+ }
539
560
540
561
// If the current page is after the first non editable page //
541
562
if (pageIdx > firstNonEditableIndex ) {
@@ -564,13 +585,10 @@ function headerItemEnabled(page: Page): boolean {
564
585
}
565
586
566
587
// console.log('j-4', page.title, pageIdx, currentPageIdx);
588
+ return false ;
567
589
}
568
-
569
- // console.log('j', page.title, pageIdx, currentPageIdx);
570
- return false ;
571
590
}
572
591
573
-
574
592
// If the page is after than the first non editable page //
575
593
if (pageIdx > firstNonEditableIndex ) {
576
594
@@ -597,11 +615,7 @@ function headerItemEnabled(page: Page): boolean {
597
615
* If the current page is before the page
598
616
* And the page is before or equal to the first non editable page
599
617
*/
600
- if (
601
- // firstNonEditableIndex !== -1 &&
602
- currentPageIdx > pageIdx &&
603
- pageIdx <= firstNonEditableIndex
604
- ) {
618
+ if (currentPageIdx > pageIdx && pageIdx <= firstNonEditableIndex ) {
605
619
// console.log('e-4', page.title, pageIdx, currentPageIdx);
606
620
return false ;
607
621
}
@@ -635,7 +649,6 @@ function headerItemEnabled(page: Page): boolean {
635
649
*/
636
650
if (currentPageIdx >= pageIdx && previousPageEditable ) {
637
651
// console.log('currentPageIdx >= pageIdx', page.title, pageIdx, currentPageIdx);
638
- // check if next page is editable, if it is then enable the next step //
639
652
return true ;
640
653
}
641
654
@@ -644,15 +657,6 @@ function headerItemEnabled(page: Page): boolean {
644
657
return false ;
645
658
}
646
659
647
- /**
648
- * If the page is not editable
649
- * And the page is no the current page
650
- */
651
- if (pageNotEditable && pageIdx !== currentPageIdx ) {
652
- return false ;
653
- }
654
-
655
- // console.log('Fallback false', page.title, pageIdx, currentPageIdx);
656
660
return false ;
657
661
}
658
662
0 commit comments