Skip to content

Commit 135be65

Browse files
fix(select): internal naming and destructuring improvements
1 parent 35d5d35 commit 135be65

File tree

6 files changed

+18
-14
lines changed

6 files changed

+18
-14
lines changed

apps/website/src/routes/docs/headless/select/examples/controlled.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ export default component$(() => {
1616
<>
1717
<Select
1818
onChange$={$((value: string) => {
19-
console.log('value: ', value);
2019
selected.value = value;
2120
})}
2221
bind:value={selected}

apps/website/src/routes/docs/headless/select/select.spec.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,6 @@ test.describe('Keyboard Behavior', () => {
444444
await getTrigger().press('Enter');
445445

446446
const value = await getValue();
447-
console.log(value);
448447
expect(optStr).toEqual(value);
449448
});
450449

packages/kit-headless/src/components/select/select-option.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ export const SelectOption = component$<SelectOptionProps>((props) => {
2525
const localIndexSig = useSignal<number | null>(null);
2626
const optionId = `${context.localId}-${index}`;
2727

28-
console.log('value: ', props.value);
29-
3028
const isSelectedSig = useComputed$(() => {
3129
return !disabled && context.selectedIndexSig.value === index;
3230
});

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,6 @@ export const SelectTrigger = component$<SelectTriggerProps>((props) => {
124124
// select options
125125
if (e.key === 'Enter' || e.key === ' ') {
126126
context.selectedIndexSig.value = context.highlightedIndexSig.value;
127-
console.log('selectedIndex', context.selectedIndexSig.value);
128-
console.log('highlightedIndex', context.highlightedIndexSig.value);
129127
}
130128

131129
if (e.key === 'ArrowDown') {

packages/kit-headless/src/components/select/select-value.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,21 @@ type SelectValueProps = PropsOf<'span'> & {
77
};
88

99
export const SelectValue = component$((props: SelectValueProps) => {
10+
const { placeholder, ...rest } = props;
11+
1012
const context = useContext(SelectContextId);
1113
if (!context.optionsSig.value) return;
1214

1315
const displayStrSig = useComputed$(() => {
1416
if (context.selectedIndexSig.value !== null) {
1517
return context.optionsSig.value[context.selectedIndexSig.value].displayValue;
1618
} else {
17-
return props.placeholder;
19+
return placeholder;
1820
}
1921
});
2022

2123
return (
22-
<span data-value {...props}>
24+
<span data-value {...rest}>
2325
{displayStrSig.value}
2426
</span>
2527
);

packages/kit-headless/src/components/select/select.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,23 @@ export type SelectProps = PropsOf<'div'> & {
3535

3636
/* root component in select-inline.tsx */
3737
export const SelectImpl = component$<SelectProps>((props: SelectProps) => {
38-
const { _options, onChange$, onOpenChange$, ...rest } = props;
38+
const {
39+
_options,
40+
_valuePropIndex: givenValuePropIndex,
41+
onChange$,
42+
onOpenChange$,
43+
scrollOptions: givenScrollOptions,
44+
loop: givenLoop,
45+
...rest
46+
} = props;
3947

4048
// refs
4149
const rootRef = useSignal<HTMLDivElement>();
4250
const triggerRef = useSignal<HTMLButtonElement>();
4351
const popoverRef = useSignal<HTMLElement>();
4452
const listboxRef = useSignal<HTMLUListElement>();
4553
const groupRef = useSignal<HTMLDivElement>();
46-
const loop = rest.loop ?? false;
54+
const loop = givenLoop ?? false;
4755
const localId = useId();
4856
const listboxId = `${localId}-listbox`;
4957

@@ -63,10 +71,10 @@ export const SelectImpl = component$<SelectProps>((props: SelectProps) => {
6371
);
6472

6573
// core state
66-
const selectedIndexSig = useSignal<number | null>(rest._valuePropIndex ?? null);
67-
const highlightedIndexSig = useSignal<number | null>(rest._valuePropIndex ?? null);
74+
const selectedIndexSig = useSignal<number | null>(givenValuePropIndex ?? null);
75+
const highlightedIndexSig = useSignal<number | null>(givenValuePropIndex ?? null);
6876
const isListboxOpenSig = useSignal<boolean>(false);
69-
const scrollOptions = rest.scrollOptions ?? {
77+
const scrollOptions = givenScrollOptions ?? {
7078
behavior: 'instant',
7179
block: 'nearest',
7280
};
@@ -86,7 +94,7 @@ export const SelectImpl = component$<SelectProps>((props: SelectProps) => {
8694
useTask$(async function onChangeTask({ track }) {
8795
track(() => selectedIndexSig.value);
8896
if (isBrowser && selectedIndexSig.value !== null) {
89-
await onChange$?.(optionsSig.value[selectedIndexSig.value!].value);
97+
await onChange$?.(optionsSig.value[selectedIndexSig.value].value);
9098
}
9199
});
92100

0 commit comments

Comments
 (0)