@@ -187,6 +187,10 @@ import {
187187 useDeepMerge ,
188188 useGetFirstAndLastEditableFalse ,
189189} from ' ./composables/helpers' ;
190+ import {
191+ useHandleJumpAhead ,
192+ useHandleNonJumpAhead ,
193+ } from ' ./composables/navigation' ;
190194import componentEmits from ' ./utils/emits' ;
191195import { AllProps } from ' ./utils/props' ;
192196
@@ -413,13 +417,13 @@ function headerItemEnabled(page: Page): boolean {
413417 // console.log('');
414418 // }
415419
416- // & -------------------------------------------------- Always True //
420+ // & Always True //
417421 // Always set current page to editable //
418422 if (currentPageIdx === pageIdx ) {
419423 return true ;
420424 }
421425
422- // & -------------------------------------------------- Always False //
426+ // & Always False //
423427 // Entire Stepper Form is not editable //
424428 if (! stepperFormIsEditable .value ) {
425429 return false ;
@@ -430,234 +434,36 @@ function headerItemEnabled(page: Page): boolean {
430434 return false ;
431435 }
432436
433- // & -------------------------------------------------- Non Jump Ahead //
434- // If not allowed to jump ahead //
437+ // & Non Jump Ahead //
435438 if (! jumpAhead .value ) {
436-
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- }
458-
459- // If the page is not editable //
460- if (! pageEditable ) {
461- // console.log('aa', page.title, pageIdx, currentPageIdx);
462- return false ;
463- }
464- }
465-
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- }
474- }
475-
476- /**
477- * If the page is before or equal to the first non editable page
478- * And the current page is editable
479- */
480- if (pageIdx <= firstNonEditableIndex && currentPageEditable ) {
481- // console.log('ac', page.title, pageIdx, currentPageIdx);
482- return false ;
483- }
484-
485- // If the page is before the current page //
486- if (pageIdx < currentPageIdx ) {
487-
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- }
505-
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- }
528- }
529-
530- return false ;
531- }
532-
533- // & -------------------------------------------------- Jump Ahead //
534- // If the page is before the last non editable page //
535- if (pageIdx > lastNonEditableIndex ) {
536-
537- // If the current page is after the last non editable page //
538- if (currentPageIdx > lastNonEditableIndex ) {
539- // console.log('f1', page.title, pageIdx, currentPageIdx);
540- return true ;
541- }
542-
543- // console.log('f', page.title, pageIdx, currentPageIdx);
544- return false ;
545- }
546-
547- // If the page is equal to the last non editable page //
548- if (pageIdx === lastNonEditableIndex ) {
549- // console.log('g', page.title, pageIdx, currentPageIdx);
550- return false ;
551- }
552-
553- // If the page is before the last non editable page //
554- if (pageIdx < lastNonEditableIndex ) {
555-
556- // If the current page is equal to the last page //
557- if (currentPageIdx === lastPageIdx ) {
558- return false ;
559- }
560-
561- // If the current page is after the first non editable page //
562- if (pageIdx > firstNonEditableIndex ) {
563-
564- // If the current page is editable and the next page is editable //
565- if (currentPageEditable && nextPageEditable ) {
566- // console.log('j-3', page.title, pageIdx, currentPageIdx);
567- return true ;
568- }
569-
570- /**
571- * If the current page is editable
572- * And the next page is not editable
573- * And the page is after the first non editable page
574- * And the page is after the current page
575- */
576- if (
577- currentPageEditable &&
578- nextPageNotEditable &&
579- pageIdx > firstNonEditableIndex &&
580- currentPageIdx > firstNonEditableIndex &&
581- pageIdx > currentPageIdx
582- ) {
583- // console.log('j-3-1', page.title, pageIdx, currentPageIdx);
584- return true ;
585- }
586-
587- // console.log('j-4', page.title, pageIdx, currentPageIdx);
588- return false ;
589- }
590- }
591-
592- // If the page is after than the first non editable page //
593- if (pageIdx > firstNonEditableIndex ) {
594-
595- // If the current page is before or equal to the first non editable page //
596- if (currentPageIdx <= firstNonEditableIndex ) {
597- // console.log('e-2', page.title, pageIdx, currentPageIdx);
598- return false ;
599- }
600-
601- // console.log('e', page.title, pageIdx, currentPageIdx);
602- return true ;
603- }
604-
605- /**
606- * If the page is before the first non editable page
607- * And the current page is before or equal to the first non editable page
608- */
609- if (pageIdx < firstNonEditableIndex && currentPageIdx <= firstNonEditableIndex ) {
610- // console.log('e-3', page.title, pageIdx, currentPageIdx);
611- return true ;
612- }
613-
614- /**
615- * If the current page is before the page
616- * And the page is before or equal to the first non editable page
617- */
618- if (currentPageIdx > pageIdx && pageIdx <= firstNonEditableIndex ) {
619- // console.log('e-4', page.title, pageIdx, currentPageIdx);
620- return false ;
621- }
622-
623- // If the page is before the current page //
624- if (pageIdx < currentPageIdx ) {
625- // console.log('h', page.title, pageIdx, currentPageIdx);
626- return true ;
627- }
628-
629- // If the page is not editable //
630- if (pageNotEditable ) {
631- // console.log('i', page.title, pageIdx, currentPageIdx);
632- return false ;
633- }
634-
635- // If the current page is before or equal to the page //
636- if (currentPageIdx <= pageIdx ) {
637-
638- // If the page is before the first non editable page //
639- if (pageIdx < firstNonEditableIndex ) {
640- return false ;
641- }
642-
643- return true ;
644- }
645-
646- /**
647- * If the current page is after the page
648- * And the previous page is editable
649- */
650- if (currentPageIdx >= pageIdx && previousPageEditable ) {
651- // console.log('currentPageIdx >= pageIdx', page.title, pageIdx, currentPageIdx);
652- return true ;
653- }
654-
655- // If the next or previous page is not editable //
656- if (nextPageNotEditable || previousPageNotEditable ) {
657- return false ;
439+ return useHandleNonJumpAhead ({
440+ currentPageEditable ,
441+ currentPageIdx ,
442+ firstNonEditableIndex ,
443+ lastNonEditableIndex ,
444+ lastPageIdx ,
445+ nextPageEditable ,
446+ nextPageNotEditable ,
447+ pageEditable ,
448+ pageIdx ,
449+ pageNotEditable ,
450+ });
658451 }
659452
660- return false ;
453+ // & Jump Ahead //
454+ return useHandleJumpAhead ({
455+ currentPageEditable ,
456+ currentPageIdx ,
457+ firstNonEditableIndex ,
458+ lastNonEditableIndex ,
459+ lastPageIdx ,
460+ nextPageEditable ,
461+ nextPageNotEditable ,
462+ pageIdx ,
463+ pageNotEditable ,
464+ previousPageEditable ,
465+ previousPageNotEditable ,
466+ });
661467}
662468
663469
0 commit comments