@@ -187,6 +187,10 @@ import {
187
187
useDeepMerge ,
188
188
useGetFirstAndLastEditableFalse ,
189
189
} from ' ./composables/helpers' ;
190
+ import {
191
+ useHandleJumpAhead ,
192
+ useHandleNonJumpAhead ,
193
+ } from ' ./composables/navigation' ;
190
194
import componentEmits from ' ./utils/emits' ;
191
195
import { AllProps } from ' ./utils/props' ;
192
196
@@ -413,13 +417,13 @@ function headerItemEnabled(page: Page): boolean {
413
417
// console.log('');
414
418
// }
415
419
416
- // & -------------------------------------------------- Always True //
420
+ // & Always True //
417
421
// Always set current page to editable //
418
422
if (currentPageIdx === pageIdx ) {
419
423
return true ;
420
424
}
421
425
422
- // & -------------------------------------------------- Always False //
426
+ // & Always False //
423
427
// Entire Stepper Form is not editable //
424
428
if (! stepperFormIsEditable .value ) {
425
429
return false ;
@@ -430,234 +434,36 @@ function headerItemEnabled(page: Page): boolean {
430
434
return false ;
431
435
}
432
436
433
- // & -------------------------------------------------- Non Jump Ahead //
434
- // If not allowed to jump ahead //
437
+ // & Non Jump Ahead //
435
438
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
+ });
658
451
}
659
452
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
+ });
661
467
}
662
468
663
469
0 commit comments