Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
te6-in committed Dec 2, 2024
1 parent 426ec2c commit 4715a0b
Showing 1 changed file with 9 additions and 24 deletions.
33 changes: 9 additions & 24 deletions packages/react-headless/tabs/src/useTabs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,36 +29,27 @@ function useTabsState(props: UseTabsStateProps & { id: string }) {
const currentTabIndex = dom.getTabIndex(value, props.id);
const currentTabEnabledIndex = dom.getTabIndexOnlyEnabled(value, props.id);

const isFirst = currentTabEnabledIndex === 0;
const isLast = currentTabEnabledIndex === tabEnabledValues.length - 1;

const prevIndex = isFirst
? tabEnabledValues.length - 1
: (tabEnabledValues.indexOf(value) - 1 + tabEnabledValues.length) % tabEnabledValues.length;

const nextIndex = isLast ? 0 : (tabEnabledValues.indexOf(value) + 1) % tabEnabledValues.length;

useLayoutEffect(() => {
setRootEl(dom.getRootEl(props.id));
}, [props.id]);

const events = {
movePrev: () => {
const isFirst = currentTabEnabledIndex === 0;

const prevIndex = isFirst
? tabEnabledValues.length - 1
: (tabEnabledValues.indexOf(value) - 1 + tabEnabledValues.length) % tabEnabledValues.length;

setValue(tabEnabledValues[prevIndex]);
},
moveNext: () => {
const isLast = currentTabEnabledIndex === tabEnabledValues.length - 1;

const nextIndex = isLast
? 0
: (tabEnabledValues.indexOf(value) + 1) % tabEnabledValues.length;

setValue(tabEnabledValues[nextIndex]);
},
focusPrev: () => {
const isFirst = currentTabEnabledIndex === 0;

const prevIndex = isFirst
? tabEnabledValues.length - 1
: (tabEnabledValues.indexOf(value) - 1 + tabEnabledValues.length) % tabEnabledValues.length;

const prevTriggerEl = dom.getTabTriggerEl(tabEnabledValues[prevIndex], props.id);

if (prevTriggerEl) prevTriggerEl.focus();
Expand All @@ -67,12 +58,6 @@ function useTabsState(props: UseTabsStateProps & { id: string }) {
if (triggerEl) triggerEl.focus();
},
focusNext: () => {
const isLast = currentTabEnabledIndex === tabEnabledValues.length - 1;

const nextIndex = isLast
? 0
: (tabEnabledValues.indexOf(value) + 1) % tabEnabledValues.length;

const nextTriggerEl = dom.getTabTriggerEl(tabEnabledValues[nextIndex], props.id);

if (nextTriggerEl) nextTriggerEl.focus();
Expand Down

0 comments on commit 4715a0b

Please sign in to comment.