/* * Copyright 2020 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ import { AriaListBoxProps } from '@react-types/listbox'; import { ReactNode, RefObject } from 'react'; import { KeyboardDelegate } from '@react-types/shared'; import { ListState } from '@react-stately/list'; interface ListBoxAria { /** Props for the listbox element. */ listBoxProps: any; /** Props for the listbox's visual label element (if any). */ labelProps: any; } interface AriaListBoxOptions extends Omit, 'children'> { /** Whether the listbox uses virtual scrolling. */ isVirtualized?: boolean; /** * An optional keyboard delegate implementation for type to select, * to override the default. */ keyboardDelegate?: KeyboardDelegate; /** * An optional visual label for the listbox. */ label?: ReactNode; } /** * Provides the behavior and accessibility implementation for a listbox component. * A listbox displays a list of options and allows a user to select one or more of them. * @param props - Props for the listbox. * @param state - State for the listbox, as returned by `useListState`. */ export function useListBox( _props: AriaListBoxOptions, _state: ListState, _ref: RefObject ): ListBoxAria { return { labelProps: {}, listBoxProps: {}, }; }