react-lightning-design-system
Version:
Salesforce Lightning Design System components built with React
68 lines (67 loc) • 2.1 kB
TypeScript
import React, { FC, CSSProperties, Ref, ReactNode } from 'react';
import { FormElementProps } from './FormElement';
import { DropdownMenuProps } from './DropdownMenu';
import { Bivariant } from './typeUtils';
/**
*
*/
type PicklistValue = string | number;
type PicklistValueType<Multi extends boolean | undefined> = Multi extends true ? Array<PicklistValue> : Multi extends false | undefined ? PicklistValue | null : Array<PicklistValue> | string | number | null;
/**
*
*/
export type PicklistProps<MultiSelect extends boolean | undefined> = {
id?: string;
className?: string;
label?: string;
required?: boolean;
multiSelect?: MultiSelect;
error?: FormElementProps['error'];
cols?: number;
name?: string;
value?: PicklistValueType<MultiSelect>;
defaultValue?: PicklistValueType<MultiSelect>;
selectedText?: string;
optionsSelectedText?: string;
opened?: boolean;
defaultOpened?: boolean;
disabled?: boolean;
menuSize?: DropdownMenuProps['size'];
menuStyle?: CSSProperties;
tooltip?: ReactNode;
tooltipIcon?: string;
elementRef?: Ref<HTMLDivElement>;
buttonRef?: Ref<HTMLButtonElement>;
dropdownRef?: Ref<HTMLDivElement>;
onValueChange?: Bivariant<(newValue: PicklistValueType<MultiSelect>, prevValue: PicklistValueType<MultiSelect>) => void>;
onSelect?: Bivariant<(value: PicklistValue) => void>;
onKeyDown?: (e: React.KeyboardEvent) => void;
onBlur?: () => void;
onComplete?: () => void;
children?: React.ReactNode;
};
/**
*
*/
export declare const Picklist: (<MultiSelect extends boolean | undefined>(props: PicklistProps<MultiSelect>) => ReturnType<FC>) & {
isFormElement: boolean;
};
/**
*
*/
export type PicklistItemProps = {
label?: React.ReactNode;
value?: string | number;
selected?: boolean;
disabled?: boolean;
icon?: string;
iconRight?: string;
divider?: 'top' | 'bottom';
onClick?: (e: React.SyntheticEvent) => void;
children?: React.ReactNode;
};
/**
*
*/
export declare const PicklistItem: FC<PicklistItemProps>;
export {};