From b6c8b98d70f2de6a8d4461b870c4d651b212d560 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Sat, 31 Aug 2024 00:37:13 +0300 Subject: [PATCH] feat: drop get value for simpler API --- packages/core/src/useSelect/useOption.spec.ts | 4 ++-- packages/core/src/useSelect/useOption.ts | 4 ++-- packages/core/src/useSelect/useSelect.spec.ts | 4 ++-- packages/core/src/useSelect/useSelect.ts | 10 ++-------- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/packages/core/src/useSelect/useOption.spec.ts b/packages/core/src/useSelect/useOption.spec.ts index e29acaa9..5eff26d9 100644 --- a/packages/core/src/useSelect/useOption.spec.ts +++ b/packages/core/src/useSelect/useOption.spec.ts @@ -7,7 +7,7 @@ import { axe } from 'vitest-axe'; test('warns if no Selection or ListBox Context is provided', async () => { const warn = vi.spyOn(console, 'warn'); await renderSetup(() => { - return useOption({ label: 'Ayooo', option: '' }); + return useOption({ label: 'Ayooo', value: '' }); }); expect(warn).toHaveBeenCalledTimes(2); @@ -19,7 +19,7 @@ test('should not have a11y errors', async () => { await render({ setup() { const label = 'Field'; - const { optionProps } = useOption({ label, option: '' }); + const { optionProps } = useOption({ label, value: '' }); return { optionProps, diff --git a/packages/core/src/useSelect/useOption.ts b/packages/core/src/useSelect/useOption.ts index aee61d34..b22a98eb 100644 --- a/packages/core/src/useSelect/useOption.ts +++ b/packages/core/src/useSelect/useOption.ts @@ -19,7 +19,7 @@ interface OptionDomProps { export interface OptionProps { label?: string; - option: TValue; + value: TValue; disabled?: boolean; } @@ -44,7 +44,7 @@ export function useOption(_props: Reactivify>, ele } function getValue() { - return selectionCtx?.evaluateOption(toValue(props.option)); + return toValue(props.value); } const optionId = useUniqId(FieldTypePrefixes.Option); diff --git a/packages/core/src/useSelect/useSelect.spec.ts b/packages/core/src/useSelect/useSelect.spec.ts index ec9bcd2d..d51ab28a 100644 --- a/packages/core/src/useSelect/useSelect.spec.ts +++ b/packages/core/src/useSelect/useSelect.spec.ts @@ -83,7 +83,7 @@ function createSelect() { @@ -99,7 +99,7 @@ function createSelect() { diff --git a/packages/core/src/useSelect/useSelect.ts b/packages/core/src/useSelect/useSelect.ts index bf50a0f7..7166ec12 100644 --- a/packages/core/src/useSelect/useSelect.ts +++ b/packages/core/src/useSelect/useSelect.ts @@ -21,7 +21,6 @@ export interface SelectProps { name?: string; description?: string; - getValue?(option: TOption): TValue; modelValue?: Arrayable; disabled?: boolean; @@ -42,19 +41,15 @@ export interface SelectionContext { isValueSelected(value: TValue): boolean; isMultiple(): boolean; toggleValue(value: TValue, force?: boolean): void; - evaluateOption(option: TOption): TValue; } export const SelectionContextKey: InjectionKey> = Symbol('SelectionContextKey'); const MENU_OPEN_KEYS = ['Enter', 'Space', 'ArrowDown', 'ArrowUp']; -export function useSelect( - _props: Reactivify, 'schema' | 'getValue'>, -) { +export function useSelect(_props: Reactivify, 'schema'>) { const inputId = useUniqId(FieldTypePrefixes.Select); - const props = normalizeProps(_props, ['schema', 'getValue']); - const evaluate = props.getValue || ((opt: TOption) => opt as unknown as TValue); + const props = normalizeProps(_props, ['schema']); const field = useFormField>({ path: props.name, initialValue: toValue(props.modelValue) as Arrayable, @@ -99,7 +94,6 @@ export function useSelect( const selectionCtx: SelectionContext = { isMultiple: () => toValue(props.multiple) ?? false, - evaluateOption: evaluate, isValueSelected(value): boolean { const values = normalizeArrayable(fieldValue.value ?? []);