@@ -377,7 +377,7 @@ function headerItemEnabled(page: Page): boolean {
377377 const pageNotEditable = page .editable === false ;
378378 const currentPageIdx = stepperModel .value - 1 ;
379379 const currentPageEditable = currentPages [currentPageIdx ]?.editable !== false ;
380- const currentPageNotEditable = currentPages [currentPageIdx ]?.editable === false ;
380+ // const currentPageNotEditable = currentPages[currentPageIdx]?.editable === false;
381381 const lastPageIdx = currentPages .length - 1 ;
382382
383383 const previousPageIdx = pageIdx - 1 ;
@@ -416,92 +416,121 @@ function headerItemEnabled(page: Page): boolean {
416416 // & -------------------------------------------------- Always True //
417417 // Always set current page to editable //
418418 if (currentPageIdx === pageIdx ) {
419- console .log (' a' , page .title , pageIdx , currentPageIdx );
420- // console.log('current page', page.title);
421419 return true ;
422420 }
423421
424422 // & -------------------------------------------------- Always False //
425423 // Entire Stepper Form is not editable //
426424 if (! stepperFormIsEditable .value ) {
427- console .log (' b' , page .title , pageIdx , currentPageIdx );
428425 return false ;
429426 }
430427
431428 // If current page has errors disable all //
432429 if (currentPageHasErrors .value ) {
433- // console.log('c', page.title, pageIdx, currentPageIdx);
434430 return false ;
435431 }
436432
437-
438- // & -------------------------------------------------- Conditions //
433+ // & -------------------------------------------------- Non Jump Ahead //
439434 // If not allowed to jump ahead //
440435 if (! jumpAhead .value ) {
441436
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+ }
453458
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+ }
458465
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+ }
462474 }
463475
476+ /**
477+ * If the page is before or equal to the first non editable page
478+ * And the current page is editable
479+ */
464480 if (pageIdx <= firstNonEditableIndex && currentPageEditable ) {
465481 // console.log('ac', page.title, pageIdx, currentPageIdx);
466482 return false ;
467483 }
468484
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 ) {
480487
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+ }
489505
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+ }
499528 }
500529
501530 return false ;
502531 }
503532
504-
533+ // & -------------------------------------------------- Jump Ahead //
505534 // If the page is before the last non editable page //
506535 if (pageIdx > lastNonEditableIndex ) {
507536
@@ -521,21 +550,13 @@ function headerItemEnabled(page: Page): boolean {
521550 return false ;
522551 }
523552
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 ) {
533555
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+ }
539560
540561 // If the current page is after the first non editable page //
541562 if (pageIdx > firstNonEditableIndex ) {
@@ -564,13 +585,10 @@ function headerItemEnabled(page: Page): boolean {
564585 }
565586
566587 // console.log('j-4', page.title, pageIdx, currentPageIdx);
588+ return false ;
567589 }
568-
569- // console.log('j', page.title, pageIdx, currentPageIdx);
570- return false ;
571590 }
572591
573-
574592 // If the page is after than the first non editable page //
575593 if (pageIdx > firstNonEditableIndex ) {
576594
@@ -597,11 +615,7 @@ function headerItemEnabled(page: Page): boolean {
597615 * If the current page is before the page
598616 * And the page is before or equal to the first non editable page
599617 */
600- if (
601- // firstNonEditableIndex !== -1 &&
602- currentPageIdx > pageIdx &&
603- pageIdx <= firstNonEditableIndex
604- ) {
618+ if (currentPageIdx > pageIdx && pageIdx <= firstNonEditableIndex ) {
605619 // console.log('e-4', page.title, pageIdx, currentPageIdx);
606620 return false ;
607621 }
@@ -635,7 +649,6 @@ function headerItemEnabled(page: Page): boolean {
635649 */
636650 if (currentPageIdx >= pageIdx && previousPageEditable ) {
637651 // console.log('currentPageIdx >= pageIdx', page.title, pageIdx, currentPageIdx);
638- // check if next page is editable, if it is then enable the next step //
639652 return true ;
640653 }
641654
@@ -644,15 +657,6 @@ function headerItemEnabled(page: Page): boolean {
644657 return false ;
645658 }
646659
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);
656660 return false ;
657661}
658662
0 commit comments