Skip to content

Commit eadd8f4

Browse files
moving some logic to composable
1 parent 82d74cf commit eadd8f4

File tree

3 files changed

+329
-228
lines changed

3 files changed

+329
-228
lines changed

src/plugin/VStepperForm.vue

Lines changed: 33 additions & 227 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ import {
187187
useDeepMerge,
188188
useGetFirstAndLastEditableFalse,
189189
} from './composables/helpers';
190+
import {
191+
useHandleJumpAhead,
192+
useHandleNonJumpAhead,
193+
} from './composables/navigation';
190194
import componentEmits from './utils/emits';
191195
import { 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

Comments
 (0)