@totalsoft/rocket-ui
Version:
A set of reusable and composable React components built on top of Material UI core for developing fast and friendly web applications interfaces.
194 lines (189 loc) • 5.66 kB
text/typescript
import { AutocompleteChangeReason, AutocompleteValue, AutocompleteProps as MuiAutocompleteProps } from '@mui/material'
import { TypographyColor } from '../../dataDisplay/Typography'
import { TextFieldProps } from '../TextField'
import { AutocompleteRenderInputParams, AutocompleteRenderGroupParams } from '@mui/material'
export interface DeprecatedOptionProps extends React.HTMLAttributes<HTMLLIElement> {
/**
* The string value for a given option
*/
optionLabel?: string
/**
* Custom label displayed when @creatable is true
*/
createdLabel?: string
/**
* The selected option(s)
*/
selected?: boolean
/**
* @default false
* If true, the options list will have checkboxes.
*/
withCheckboxes?: boolean
/**
* Item option.
*/
option?: any
}
export type DeprecatedLoadOptionsPaginated = (
input: string,
options: ReadonlyArray<any>,
additional?: any
) => Promise<{ loadedOptions: ReadonlyArray<any>; more: boolean; additional: any }>
export type DeprecatedLoadOptions = (input: string) => Promise<any>
export interface DeprecatedAutocompleteProps<
T,
Multiple extends boolean | undefined = false,
DisableClearable extends boolean | undefined = false,
FreeSolo extends boolean | undefined = false
> extends Omit<
MuiAutocompleteProps<T, Multiple, DisableClearable, FreeSolo>,
| 'onChange'
| 'renderInput'
| 'options'
| 'clearOnBlur'
| 'disableCloseOnSelect'
| 'filterSelectedOptions'
| 'filterOptions'
| 'isOptionEqualToValue'
| 'multiple'
| 'disableClearable'
| 'renderTags'
| 'noOptionsText'
| 'renderGroup'
> {
/**
* Array of options.
*/
options?: ReadonlyArray<T>
/**
* Callback fired when the value changes.
* @param {T|T[]} value The new value of the component.
* @param {React.SyntheticEvent} event The event source of the callback.
*/
onChange?: (
value: AutocompleteValue<T, Multiple, DisableClearable, FreeSolo>,
event?: React.SyntheticEvent,
reason?: AutocompleteChangeReason
) => void
/**
* The content of the helper under the input.
*/
helperText?: React.ReactNode
/**
* Text to be displayed as a placeholder in the text field.
*/
placeholder?: string
/**
* @default false
* If true, the user can select multiple values from list.
*/
isMultiSelection?: boolean
/**
* @default false
* If true, the user can clear the selected value.
*/
isClearable?: boolean
/**
* @default true
* If false, the user cannot type in Autocomplete, filter options or create new ones.
*/
isSearchable?: boolean
/**
* @default false
* If true, the value set on change will be set to option[valueKey]/
* We use this prop when our options are objects.
* If our options are strings, we do not need to send this prop
* as this functionality is handled by default.
*/
simpleValue?: boolean
/**
* Label to be displayed in the heading component.
*/
label?: string
/**
* @default "id"
* The key of values from options.
*/
valueKey?: string
/**
* @default "name"
* Which property of our option object will be displayed as label.
*/
labelKey?: string
/**
* @default false
* If true, the helper text is displayed when an error pops up.
*/
error?: boolean
/**
* The value of label when a new option is added.
*/
createdLabel?: string
/**
* Function that returns a promise, which resolves to the set of options to be used once the promise resolves.
*/
loadOptions?: DeprecatedLoadOptions | DeprecatedLoadOptionsPaginated
/**
* The default set of options to show before the user starts searching. When set to true, the results for loadOptions('') will be autoloaded.
*/
defaultOptions?: boolean | object[]
/**
* @default "textSecondary"
* The color of both the text displayed when there are no options and placeholder. It supports those theme colors that make sense for this component.
*/
typographyContentColor?: TypographyColor
/**
* Text to display when there are no options.
* For localization purposes, you can use the provided translations.
*/
noOptionsText?: React.ReactNode | ((inputValue: string, loadingOptions: boolean) => React.ReactNode)
/**
* The color of selected input.
*/
inputSelectedColor?: 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning' | string
/**
* Properties that will be passed to the rendered input. This is a TextField.
*/
inputTextFieldProps?: Partial<TextFieldProps>
/**
* If `true`, the label is displayed as required and the `input` element is required.
* @default false
*/
required?: boolean
/**
* @default false
* If true, the options list will have checkboxes.
*/
withCheckboxes?: boolean
/**
* @default false
* If true, the Autocomplete is free solo, meaning that the user input is not bound to provided options and can add
* his own values.
*/
creatable?: boolean
/**
* Render the input.
*
* @param {object} params
* @returns {ReactNode}
*/
renderInput?: (params: AutocompleteRenderInputParams) => React.ReactNode
/**
* @default false
* If true, the options list will be loaded incrementally using the paginated loadOptions callback
*/
isPaginated?: boolean
/**
* @default false
* Stops click and change event propagation.
*/
stopEventPropagation?: boolean
/**
* Render the group.
*
* @param {AutocompleteRenderGroupParams} params The group to render.
* @returns {ReactNode}
*/
renderGroup?: (params: AutocompleteRenderGroupParams) => React.ReactNode
}