Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 1x 1x 1x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 3x 2x 2x 3x 3x 8x 8x 8x | import type { Bindable } from '../index.js';
import { debugRender, useValue } from '../index.js';
import type { WritableKeys } from '@anchorlib/core';
import type { SelectProps } from './Types.js';
import { useRef } from 'react';
export function Select<T extends Bindable, K extends WritableKeys<T>>({
ref,
bind,
name,
value,
onChange,
...props
}: SelectProps<T, K>) {
const selfRef = useRef<HTMLSelectElement>(null);
debugRender(ref ?? selfRef);
const current = (useValue(bind, name) ?? value ?? '') as string;
return (
<select
ref={ref ?? selfRef}
name={name as string}
value={current}
onChange={(e) => {
if (bind) {
bind[name] = e.target.value as T[K];
}
onChange?.(e);
}}
{...props}
/>
);
}
|