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