From 41f82fe7f87dbce443705fab3c1ccc5846539db1 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Sun, 6 Jun 2021 23:44:52 -0400 Subject: [PATCH] stash --- packages/devui/src/Select/Select.stories.tsx | 5 +++- packages/devui/src/Select/Select.tsx | 30 +++++++++++++++---- .../src/components/InstanceSelector.tsx | 9 ++++-- packages/redux-devtools-app/webpack.config.ts | 2 +- 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/packages/devui/src/Select/Select.stories.tsx b/packages/devui/src/Select/Select.stories.tsx index e6175447..f3205b8d 100644 --- a/packages/devui/src/Select/Select.stories.tsx +++ b/packages/devui/src/Select/Select.stories.tsx @@ -22,7 +22,10 @@ export default { component: Select, }; -type TemplateArgs = Omit & { value: string }; +type TemplateArgs = Omit< + SelectProps<{ value: string; label: string }, boolean>, + 'value' +> & { value: string }; // eslint-disable-next-line react/prop-types const Template: Story = ({ value, ...args }) => ( diff --git a/packages/devui/src/Select/Select.tsx b/packages/devui/src/Select/Select.tsx index d8dc3b9e..a7acaee2 100644 --- a/packages/devui/src/Select/Select.tsx +++ b/packages/devui/src/Select/Select.tsx @@ -1,17 +1,26 @@ -import React, { PureComponent, Component } from 'react'; +import React, { PureComponent, Component, ReactElement } from 'react'; import PropTypes from 'prop-types'; -import ReactSelect, { Props as ReactSelectProps } from 'react-select'; +import ReactSelect, { + NamedProps as ReactSelectProps, + OptionTypeBase, +} from 'react-select'; import createThemedComponent from '../utils/createThemedComponent'; import { Theme } from '../themes/default'; -export interface SelectProps extends Omit { +export interface SelectProps< + Option extends OptionTypeBase = OptionTypeBase, + IsMulti extends boolean = false +> extends Omit, 'theme'> { theme: Theme; } /** * Wrapper around [React Select](https://github.com/JedWatson/react-select). */ -export class Select extends (PureComponent || Component) { +export class Select< + Option extends OptionTypeBase = OptionTypeBase, + IsMulti extends boolean = false +> extends (PureComponent || Component)> { render() { return ( { }, })} styles={{ - container: (base, props) => ({ + container: (base) => ({ ...base, flexGrow: 1, }), @@ -72,4 +81,13 @@ export class Select extends (PureComponent || Component) { }; } -export default createThemedComponent(Select); +type SelectComponent = < + Option extends OptionTypeBase = OptionTypeBase, + IsMulti extends boolean = false +>( + props: SelectProps +) => ReactElement; + +export default createThemedComponent(Select) as SelectComponent & { + theme?: Theme; +}; diff --git a/packages/redux-devtools-app/src/components/InstanceSelector.tsx b/packages/redux-devtools-app/src/components/InstanceSelector.tsx index debe8524..8bb1ccf0 100644 --- a/packages/redux-devtools-app/src/components/InstanceSelector.tsx +++ b/packages/redux-devtools-app/src/components/InstanceSelector.tsx @@ -24,8 +24,13 @@ class InstanceSelector extends Component {