Skip to content

Commit 494d68f

Browse files
fix(combobox): fix race condition issue with disabled options
1 parent 5af8083 commit 494d68f

File tree

6 files changed

+58
-6
lines changed

6 files changed

+58
-6
lines changed

apps/website/src/global.css

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,51 @@ ol {
145145
.accordion-animation-1[data-state='closed'] {
146146
animation: 500ms cubic-bezier(0.87, 0, 0.13, 1) 0s 1 normal forwards accordion-close;
147147
}
148+
149+
.text-outline-lg {
150+
text-shadow: 1.6px 0.6px 0 var(--qwikui-blue-800),
151+
-0.6px -0.6px 0 var(--qwikui-blue-800), 0.6px -0.6px 0 var(--qwikui-blue-800),
152+
-0.6px 0.6px 0 var(--qwikui-blue-800), 0.6px 0.6px 0 var(--qwikui-blue-800);
153+
}
154+
155+
.dark .text-outline-lg {
156+
text-shadow: 1.2px 1.2px 0 var(--qwikui-purple-800),
157+
-0.6px -0.6px 0 var(--qwikui-purple-800), 0.6px -0.6px 0 var(--qwikui-purple-800),
158+
-0.6px 0.6px 0 var(--qwikui-purple-800), 0.6px 0.6px 0 var(--qwikui-purple-800);
159+
}
160+
161+
.text-outline-beta {
162+
text-shadow: 1.5px 0.5px 0 var(--qwikui-blue-800),
163+
-0.5px -0.5px 0 var(--qwikui-blue-800), 0.5px -0.5px 0 var(--qwikui-blue-800),
164+
-0.5px 0.5px 0 var(--qwikui-blue-800), 0.5px 0.5px 0 var(--qwikui-blue-800);
165+
}
166+
167+
.dark .text-outline-beta {
168+
text-shadow: 1.5px 0.5px 0 var(--qwikui-slate-800),
169+
-0.5px -0.5px 0 var(--qwikui-slate-800), 0.5px -0.5px 0 var(--qwikui-slate-800),
170+
-0.5px 0.5px 0 var(--qwikui-slate-800), 0.5px 0.5px 0 var(--qwikui-slate-800);
171+
}
172+
173+
.text-outline-draft {
174+
text-shadow: 1.5px 0.5px 0 var(--qwikui-slate-900),
175+
-0.5px -0.5px 0 var(--qwikui-slate-900), 0.5px -0.5px 0 var(--qwikui-slate-900),
176+
-0.5px 0.5px 0 var(--qwikui-slate-900), 0.5px 0.5px 0 var(--qwikui-slate-900);
177+
}
178+
.dark .text-outline-draft {
179+
text-shadow: 1.5px 0.5px 0 var(--qwikui-slate-950),
180+
-0.5px -0.5px 0 var(--qwikui-slate-950), 0.5px -0.5px 0 var(--qwikui-slate-950),
181+
-0.5px 0.5px 0 var(--qwikui-slate-950), 0.5px 0.5px 0 var(--qwikui-slate-950);
182+
}
183+
184+
.text-outline-planned {
185+
text-shadow: 1.5px 0.5px 0 var(--qwikui-slate-500),
186+
-0.5px -0.5px 0 var(--qwikui-slate-500), 0.5px -0.5px 0 var(--qwikui-slate-500),
187+
-0.5px 0.5px 0 var(--qwikui-slate-500), 0.5px 0.5px 0 var(--qwikui-slate-500);
188+
}
189+
190+
.dark .text-outline-planned {
191+
text-shadow: 1.5px 0.5px 0 var(--qwikui-slate-500),
192+
-0.4px -0.4px 0 var(--qwikui-slate-500), 0.4px -0.4px 0 var(--qwikui-slate-500),
193+
-0.4px 0.4px 0 var(--qwikui-slate-500), 0.4px 0.4px 0 var(--qwikui-slate-500);
194+
}
148195
}

apps/website/src/routes/docs/_components/component-status-badge/component-status-badge.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ export function getClassByStatus(status: ComponentStatus) {
1212
case ComponentStatus.Ready:
1313
return 'text-green-900 bg-green-300 tracking-wide';
1414
case ComponentStatus.Beta:
15-
return 'dark:text-slate-100 dark:bg-qwikui-purple-500 bg-qwikui-blue-500 text-white dark:border-qwikui-purple-600 border-[1px] border-qwikui-blue-700 tracking-wide shadow-dark-low dark:shadow-dark-low';
15+
return 'dark:text-slate-100 dark:bg-qwikui-purple-500 bg-qwikui-blue-500 text-white dark:border-qwikui-purple-600 border-[1px] border-qwikui-blue-700 tracking-wide shadow-dark-low dark:shadow-dark-low text-outline-beta';
1616
case ComponentStatus.Draft:
17-
return 'text-slate-200 bg-slate-700 dark:bg-slate-800 border-[1px] border-slate-400 shadow-dark-low tracking-wide dark:shadow-dark-low';
17+
return 'text-slate-200 bg-slate-700 dark:bg-slate-800 border-[1px] border-slate-400 shadow-dark-low tracking-wide dark:shadow-dark-low text-outline-draft';
1818
case ComponentStatus.Planned:
19-
return 'text-slate-900 bg-slate-300 border-[1px] border-slate-500 dark:border-slate-400 tracking-wide shadow-dark-low dark:shadow-dark-low';
19+
return 'text-slate-50 bg-slate-300 border-[1px] border-slate-500 dark:border-slate-400 tracking-wide shadow-dark-low dark:shadow-dark-low text-outline-planned';
2020
default:
2121
return null;
2222
}

apps/website/src/routes/docs/_components/navigation-docs/navigation-docs.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export const DocsNavigation = component$(({ linksGroups }: DocsNavigationProps)
6060
return (
6161
<>
6262
<div class="px-6 pt-6">
63-
<h2 class="mb-4 font-bold text-white text-3xl lg:text-lg bg-qwikui-blue-400 px-4 py-1 rounded-lg dark:bg-qwikui-purple-500 shadow-dark-low dark:shadow-dark-high border-qwikui-blue-100 dark:border-qwikui-purple-100 border-2">
63+
<h2 class="mb-4 font-bold text-white text-3xl lg:text-lg bg-qwikui-blue-400 px-4 py-1 rounded-lg dark:bg-qwikui-purple-500 shadow-dark-low dark:shadow-dark-high border-qwikui-blue-100 dark:border-qwikui-purple-100 border-2 text-outline-lg tracking-widest">
6464
{group.name}
6565
</h2>
6666
<ul class="flex flex-col gap-2">

apps/website/src/routes/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default component$(() => {
2929
<QwikUIProvider>
3030
<div class="flex mt-20">
3131
<DocsNavigation linksGroups={menuItemsGroups} />
32-
<main class="docs mx-auto">
32+
<main class="docs">
3333
<Slot />
3434
</main>
3535
</div>

packages/kit-headless/src/components/combobox/combobox.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ describe('Disabled & Object Combobox', () => {
463463
THEN the listbox should remain open`, () => {
464464
cy.mount(<DisabledCombobox />);
465465

466-
cy.findByTestId('trigger').click();
466+
cy.get('button').click();
467467

468468
cy.findByRole('option', { name: `David` }).click();
469469

packages/kit-headless/src/components/combobox/utils.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ export const getNextEnabledOptionIndex = <O extends Option = Option>(
1515
currentIndex = 0;
1616
offset = 0;
1717
}
18+
19+
// no enabled opt found
20+
if (offset >= len) {
21+
return -1;
22+
}
1823
}
1924
return (currentIndex + offset) % len;
2025
};

0 commit comments

Comments
 (0)