Update types

This commit is contained in:
Nathan Bierema 2021-08-29 12:12:50 -04:00
parent 6639216668
commit 5ef51f4322

View File

@ -1,6 +1,7 @@
import React, { PureComponent, Component, ReactElement } from 'react';
import PropTypes from 'prop-types';
import ReactSelect, {
GroupTypeBase,
NamedProps as ReactSelectProps,
OptionTypeBase,
} from 'react-select';
@ -8,9 +9,10 @@ import createThemedComponent from '../utils/createThemedComponent';
import { Theme } from '../themes/default';
export interface SelectProps<
Option extends OptionTypeBase = OptionTypeBase,
IsMulti extends boolean = false
> extends Omit<ReactSelectProps<Option, IsMulti>, 'theme'> {
Option extends OptionTypeBase,
IsMulti extends boolean = false,
Group extends GroupTypeBase<Option> = GroupTypeBase<Option>
> extends Omit<ReactSelectProps<Option, IsMulti, Group>, 'theme'> {
theme: Theme;
}
@ -18,9 +20,10 @@ export interface SelectProps<
* Wrapper around [React Select](https://github.com/JedWatson/react-select).
*/
export class Select<
Option extends OptionTypeBase = OptionTypeBase,
IsMulti extends boolean = false
> extends (PureComponent || Component)<SelectProps<Option, IsMulti>> {
Option extends OptionTypeBase,
IsMulti extends boolean = false,
Group extends GroupTypeBase<Option> = GroupTypeBase<Option>
> extends (PureComponent || Component)<SelectProps<Option, IsMulti, Group>> {
render() {
return (
<ReactSelect
@ -88,17 +91,19 @@ export class Select<
}
export interface ExternalSelectProps<
Option extends OptionTypeBase = OptionTypeBase,
IsMulti extends boolean = false
> extends Omit<ReactSelectProps<Option, IsMulti>, 'theme'> {
Option extends OptionTypeBase,
IsMulti extends boolean = false,
Group extends GroupTypeBase<Option> = GroupTypeBase<Option>
> extends Omit<ReactSelectProps<Option, IsMulti, Group>, 'theme'> {
theme?: Theme;
}
type SelectComponent = <
Option extends OptionTypeBase = OptionTypeBase,
IsMulti extends boolean = false
Option extends OptionTypeBase,
IsMulti extends boolean = false,
Group extends GroupTypeBase<Option> = GroupTypeBase<Option>
>(
props: ExternalSelectProps<Option, IsMulti>
props: ExternalSelectProps<Option, IsMulti, Group>
) => ReactElement;
export default createThemedComponent(Select) as SelectComponent & {