@wordpress/components
Version:
UI components for WordPress.
129 lines • 3.47 kB
TypeScript
/**
* External dependencies
*/
import type { FocusEventHandler, MouseEventHandler } from 'react';
/**
* The object structure for the options array.
*/
export type CustomSelectOption = {
key: string;
name: string;
style?: React.CSSProperties;
className?: string;
hint?: string;
/**
* Use the `hint` property instead
* @deprecated
* @ignore
*/
__experimentalHint?: string;
[key: string]: any;
};
/**
* The object returned from the onChange event.
*/
type CustomSelectChangeObject<T extends CustomSelectOption> = {
highlightedIndex?: number;
inputValue?: string;
isOpen?: boolean;
type?: string;
selectedItem: T;
};
export type CustomSelectProps<T extends CustomSelectOption> = {
/**
* Optional classname for the component.
*/
className?: string;
/**
* Hide the label visually, while keeping available to assistive technology.
*/
hideLabelFromVision?: boolean;
/**
* Description for the select trigger button used by assistive technology.
* If no value is passed, the text "Currently selected: selectedItem.name"
* will be used fully translated.
*/
describedBy?: string;
/**
* Label for the control.
*/
label: string;
/**
* Function called with the control's internal state changes. The `selectedItem`
* property contains the next selected item.
*/
onChange?: (newValue: CustomSelectChangeObject<NoInfer<T>>) => void;
/**
* A handler for `blur` events on the trigger button.
*
* @ignore
*/
onBlur?: FocusEventHandler<HTMLButtonElement>;
/**
* A handler for `focus` events on the trigger button.
*
* @ignore
*/
onFocus?: FocusEventHandler<HTMLButtonElement>;
/**
* A handler for `mouseout` events on the trigger button.
*
* @ignore
*/
onMouseOut?: MouseEventHandler<HTMLButtonElement>;
/**
* A handler for `mouseover` events on the trigger button.
*
* @ignore
*/
onMouseOver?: MouseEventHandler<HTMLButtonElement>;
/**
* The list of options that can be chosen from.
*/
options: ReadonlyArray<T>;
/**
* The size of the control.
*
* @default 'default'
*/
size?: 'default' | 'small' | '__unstable-large';
/**
* Can be used to externally control the value of the control.
*/
value?: NoInfer<T>;
/**
* Use the `showSelectedHint` property instead.
* @deprecated
* @ignore
*/
__experimentalShowSelectedHint?: boolean;
/**
* Show the hint of the selected item in the trigger button.
*
* @default false
*/
showSelectedHint?: boolean;
/**
* Opt-in prop for an unconstrained width style which became the default in
* WordPress 6.5. The prop is no longer needed and can be safely removed.
*
* @deprecated
* @ignore
*/
__nextUnconstrainedWidth?: boolean;
/**
* Start opting into the larger default height that will become the default size in a future version.
*
* @default false
*/
__next40pxDefaultSize?: boolean;
/**
* Do not throw a warning for the deprecated 36px default size.
* For internal components of other components that already throw the warning.
*
* @ignore
*/
__shouldNotWarnDeprecated36pxSize?: boolean;
};
export {};
//# sourceMappingURL=types.d.ts.map