Skip to content

Commit f7de15d

Browse files
fix(accordion): ci / lint warning fixes
1 parent 5e76ce9 commit f7de15d

File tree

6 files changed

+101
-130
lines changed

6 files changed

+101
-130
lines changed

packages/kit-headless/src/components/accordion/accordion-content.tsx

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,10 @@ import {
77
useTask$,
88
$,
99
useVisibleTask$,
10-
type QwikIntrinsicElements,
10+
type QwikIntrinsicElements
1111
} from '@builder.io/qwik';
1212

13-
import {
14-
accordionItemContextId,
15-
accordionRootContextId,
16-
} from './accordion-context-id';
17-
18-
import { isBrowser } from '@builder.io/qwik/build';
13+
import { accordionItemContextId, accordionRootContextId } from './accordion-context-id';
1914

2015
export type ContentProps = QwikIntrinsicElements['div'];
2116

@@ -79,20 +74,20 @@ export const AccordionContent = component$(({ ...props }: ContentProps) => {
7974
}
8075

8176
function getCalculatedHeight() {
82-
const contentChildren = Array.from(
83-
contentElement?.children!
84-
) as HTMLElement[];
85-
86-
contentChildren.forEach((element, index) => {
87-
totalHeightSig.value += element.offsetHeight;
88-
89-
if (index === contentChildren.length - 1) {
90-
contentElement?.style.setProperty(
91-
'--qwikui-accordion-content-height',
92-
`${totalHeightSig.value}px`
93-
);
94-
}
95-
});
77+
if (contentElement) {
78+
const contentChildren = Array.from(contentElement.children) as HTMLElement[];
79+
80+
contentChildren.forEach((element, index) => {
81+
totalHeightSig.value += element.offsetHeight;
82+
83+
if (index === contentChildren.length - 1) {
84+
contentElement?.style.setProperty(
85+
'--qwikui-accordion-content-height',
86+
`${totalHeightSig.value}px`
87+
);
88+
}
89+
});
90+
}
9691
}
9792
});
9893

@@ -104,16 +99,14 @@ export const AccordionContent = component$(({ ...props }: ContentProps) => {
10499
id={contentId}
105100
data-content-id={contentId}
106101
data-state={isTriggerExpandedSig.value ? 'open' : 'closed'}
107-
hidden={
108-
animated ? isContentHiddenSig.value : !isTriggerExpandedSig.value
109-
}
102+
hidden={animated ? isContentHiddenSig.value : !isTriggerExpandedSig.value}
110103
onAnimationEnd$={[hideContent$, props.onAnimationEnd$]}
111104
onTransitionEnd$={[hideContent$, props.onTransitionEnd$]}
112105
style={{
113106
['--qwikui-collapsible-content-height' as string]:
114107
'var(--qwikui-accordion-content-height)',
115108
['--qwikui-collapsible-content-width' as string]:
116-
'var(--qwikui-accordion-content-width)',
109+
'var(--qwikui-accordion-content-width)'
117110
}}
118111
{...props}
119112
>

packages/kit-headless/src/components/accordion/accordion-item.tsx

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import {
44
Slot,
55
useId,
66
useContextProvider,
7-
type QwikIntrinsicElements,
8-
useVisibleTask$,
7+
type QwikIntrinsicElements
98
} from '@builder.io/qwik';
109

1110
import { accordionItemContextId } from './accordion-context-id';
@@ -28,19 +27,13 @@ export const AccordionItem = component$(
2827
itemId,
2928
isTriggerExpandedSig,
3029
isDefaultValueOpenedSig,
31-
defaultValue,
30+
defaultValue
3231
};
3332

3433
useContextProvider(accordionItemContextId, itemContext);
3534

3635
return (
37-
<div
38-
ref={itemRef}
39-
id={itemId}
40-
data-type="item"
41-
data-item-id={itemId}
42-
{...props}
43-
>
36+
<div ref={itemRef} id={itemId} data-type="item" data-item-id={itemId} {...props}>
4437
<Slot />
4538
</div>
4639
);

packages/kit-headless/src/components/accordion/accordion-root.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@ import {
66
useSignal,
77
useStore,
88
type QwikIntrinsicElements,
9-
useVisibleTask$,
10-
useOnWindow,
11-
useOnDocument,
12-
useTask$,
9+
useTask$
1310
} from '@builder.io/qwik';
1411

1512
import { type AccordionRootContext } from './accordion-context.type';
@@ -19,7 +16,6 @@ export type AccordionRootProps = {
1916
behavior?: 'single' | 'multi';
2017
animated?: boolean;
2118
collapsible?: boolean;
22-
orientation?: 'vertical' | 'horizontal';
2319
onSelectedIndexChange$?: (index: number) => void;
2420
onFocusIndexChange$?: (index: number) => void;
2521
} & QwikIntrinsicElements['div'];
@@ -29,7 +25,6 @@ export const AccordionRoot = component$(
2925
collapsible = true,
3026
behavior = 'single',
3127
animated = false,
32-
orientation = 'vertical',
3328
...props
3429
}: AccordionRootProps) => {
3530
const rootRef = useSignal<HTMLDivElement | undefined>();
@@ -94,7 +89,7 @@ export const AccordionRoot = component$(
9489
triggerStore,
9590
collapsible,
9691
behavior,
97-
animated,
92+
animated
9893
};
9994

10095
useContextProvider(accordionRootContextId, contextService);

packages/kit-headless/src/components/accordion/accordion-trigger.tsx

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,20 @@ import {
77
useVisibleTask$,
88
$,
99
type QwikIntrinsicElements,
10-
type QwikKeyboardEvent,
10+
type QwikKeyboardEvent
1111
} from '@builder.io/qwik';
1212

13-
import {
14-
accordionItemContextId,
15-
accordionRootContextId,
16-
} from './accordion-context-id';
13+
import { accordionItemContextId, accordionRootContextId } from './accordion-context-id';
1714

1815
import { KeyCode } from '../../utils/key-code.type';
19-
import { cleanup } from 'axe-core';
2016

2117
export const accordionPreventedKeys = [
2218
KeyCode.Home,
2319
KeyCode.End,
2420
KeyCode.PageDown,
2521
KeyCode.PageUp,
2622
KeyCode.ArrowDown,
27-
KeyCode.ArrowUp,
23+
KeyCode.ArrowUp
2824
];
2925

3026
export type AccordionTriggerProps = QwikIntrinsicElements['button'];
@@ -48,24 +44,20 @@ export const AccordionTrigger = component$(
4844
const contentId = `${itemContext.itemId}-content`;
4945

5046
const selectedTriggerIdSig = contextService.selectedTriggerIdSig;
51-
const currFocusedTriggerIndexSig =
52-
contextService.currFocusedTriggerIndexSig;
53-
const currSelectedTriggerIndexSig =
54-
contextService.currSelectedTriggerIndexSig;
47+
const currFocusedTriggerIndexSig = contextService.currFocusedTriggerIndexSig;
48+
const currSelectedTriggerIndexSig = contextService.currSelectedTriggerIndexSig;
5549

5650
const isTriggerExpandedSig = itemContext.isTriggerExpandedSig;
5751
const isDefaultValueOpenedSig = itemContext.isDefaultValueOpenedSig;
5852

59-
const setSelectedTriggerIndex$ = $(() => {
60-
if (behavior === 'single') {
61-
currSelectedTriggerIndexSig.value = triggerStore.indexOf(
62-
triggerElement!
63-
);
53+
const setSelectedTriggerIndexSig$ = $(() => {
54+
if (behavior === 'single' && triggerElement) {
55+
currSelectedTriggerIndexSig.value = triggerStore.indexOf(triggerElement);
6456
}
6557
});
6658

6759
/* selectedTriggerIdSig is updated when getSelectedTriggerId$ runs */
68-
useTask$(function resetTriggersTask({ track, cleanup }) {
60+
useTask$(function resetTriggersTask({ track }) {
6961
track(() => selectedTriggerIdSig.value);
7062

7163
if (behavior === 'single' && triggerId !== selectedTriggerIdSig.value) {
@@ -101,7 +93,9 @@ export const AccordionTrigger = component$(
10193
useVisibleTask$(
10294
function cleanupTriggersTask({ cleanup }) {
10395
cleanup(() => {
104-
triggerStore.splice(triggerStore.indexOf(triggerElement!), 1);
96+
if (triggerElement) {
97+
triggerStore.splice(triggerStore.indexOf(triggerElement), 1);
98+
}
10599
});
106100
},
107101
{ strategy: 'document-idle' }
@@ -118,13 +112,13 @@ export const AccordionTrigger = component$(
118112
$(() => {
119113
selectedTriggerIdSig.value = triggerId;
120114

121-
setSelectedTriggerIndex$();
115+
setSelectedTriggerIndexSig$();
122116

123117
collapsible
124118
? (isTriggerExpandedSig.value = !isTriggerExpandedSig.value)
125119
: (isTriggerExpandedSig.value = true);
126120
}),
127-
props.onClick$,
121+
props.onClick$
128122
]}
129123
aria-expanded={isTriggerExpandedSig.value}
130124
aria-controls={contentId}
@@ -146,12 +140,12 @@ export const AccordionTrigger = component$(
146140
await contextService.focusLastTrigger$();
147141
}
148142
}),
149-
props.onKeyDown$,
143+
props.onKeyDown$
150144
]}
151145
onFocus$={() => {
152-
currFocusedTriggerIndexSig.value = triggerStore.indexOf(
153-
triggerElement!
154-
);
146+
if (triggerElement) {
147+
currFocusedTriggerIndexSig.value = triggerStore.indexOf(triggerElement);
148+
}
155149
}}
156150
{...props}
157151
>

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
AccordionItem,
55
AccordionContent,
66
AccordionTrigger,
7-
AccordionHeader,
7+
AccordionHeader
88
} from './index';
99

1010
import './accordion-cypress.css';
@@ -17,7 +17,7 @@ interface AccordionProps {
1717
const ThreeItemAccordion = component$(
1818
({ behavior, collapsible, ...props }: AccordionProps) => {
1919
return (
20-
<AccordionRoot behavior={behavior} collapsible={collapsible}>
20+
<AccordionRoot behavior={behavior} collapsible={collapsible} {...props}>
2121
<AccordionItem>
2222
<AccordionTrigger>Trigger 1</AccordionTrigger>
2323
<AccordionContent>
@@ -286,7 +286,7 @@ describe('Disabled', () => {
286286
const FourItemDisabledAccordion = component$(
287287
({ behavior, collapsible, ...props }: AccordionProps) => {
288288
return (
289-
<AccordionRoot behavior={behavior} collapsible={collapsible}>
289+
<AccordionRoot behavior={behavior} collapsible={collapsible} {...props}>
290290
<AccordionItem>
291291
<AccordionTrigger>Trigger 1</AccordionTrigger>
292292
<AccordionContent>
@@ -367,7 +367,7 @@ describe('Dynamic', () => {
367367
({
368368
itemIndexToDelete = 0,
369369
itemIndexToAdd = 0,
370-
itemsLength,
370+
itemsLength
371371
}: DynamicAccordionProps) => {
372372
const itemNames = Array(itemsLength)
373373
.fill(1)
@@ -420,11 +420,7 @@ describe('Dynamic', () => {
420420
THEN only 2 should remain
421421
`, () => {
422422
cy.mount(
423-
<DynamicAccordion
424-
itemsLength={3}
425-
itemIndexToDelete={2}
426-
itemIndexToAdd={0}
427-
/>
423+
<DynamicAccordion itemsLength={3} itemIndexToDelete={2} itemIndexToAdd={0} />
428424
);
429425

430426
cy.findByRole('button', { name: /remove item/i }).click();

0 commit comments

Comments
 (0)