mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-23 21:00:01 +08:00
react-select: fix issue with props ref not set to correct type, and update tests to test additional React.Props types
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
import * as React from "react";
|
||||
import * as ReactDOM from "react-dom";
|
||||
|
||||
import { Option, MenuRendererProps } from "react-select-props";
|
||||
import { Option, ReactSelectProps, ReactAsyncSelectProps, MenuRendererProps } from "react-select-props";
|
||||
import Select = require("react-select");
|
||||
|
||||
const CustomOption = React.createClass({
|
||||
@@ -78,42 +78,43 @@ class SelectTest extends React.Component<React.Props<{}>, {}> {
|
||||
const onClose = () => { return; };
|
||||
const optionRenderer = (option: Option) => <span>{option.label}</span>
|
||||
|
||||
const selectProps: ReactSelectProps = {
|
||||
name: "test-select",
|
||||
className: "test-select",
|
||||
key: "1",
|
||||
options: options,
|
||||
optionRenderer: optionRenderer,
|
||||
allowCreate: true,
|
||||
autofocus: true,
|
||||
autosize: true,
|
||||
clearable: true,
|
||||
escapeClearsValue: true,
|
||||
ignoreAccents: true,
|
||||
joinValues: false,
|
||||
matchPos: "any",
|
||||
matchProp: "any",
|
||||
menuContainerStyle: {},
|
||||
menuRenderer: renderMenu,
|
||||
menuStyle: {},
|
||||
multi: true,
|
||||
onMenuScrollToBottom: () => {},
|
||||
onValueClick: onChange,
|
||||
onOpen: onOpen,
|
||||
onClose: onClose,
|
||||
openAfterFocus: false,
|
||||
optionComponent: CustomOption,
|
||||
required: false,
|
||||
resetValue: "resetValue",
|
||||
scrollMenuIntoView: false,
|
||||
valueKey: "github",
|
||||
labelKey: "name",
|
||||
onChange: onChange,
|
||||
value: options,
|
||||
valueComponent: CustomValue,
|
||||
};
|
||||
|
||||
return <div>
|
||||
<Select
|
||||
name="test-select"
|
||||
className="test-select"
|
||||
key="1"
|
||||
options={options}
|
||||
optionRenderer={optionRenderer}
|
||||
allowCreate={true}
|
||||
autofocus={true}
|
||||
autosize={true}
|
||||
clearable={true}
|
||||
escapeClearsValue={true}
|
||||
ignoreAccents={true}
|
||||
joinValues={false}
|
||||
matchPos={"any"}
|
||||
matchProp={"any"}
|
||||
menuContainerStyle={{}}
|
||||
menuRenderer={renderMenu}
|
||||
menuStyle={{}}
|
||||
multi={true}
|
||||
onMenuScrollToBottom={() => {}}
|
||||
onValueClick={onChange}
|
||||
onOpen={onOpen}
|
||||
onClose={onClose}
|
||||
openAfterFocus={false}
|
||||
optionComponent={CustomOption}
|
||||
required={false}
|
||||
resetValue={"resetValue"}
|
||||
scrollMenuIntoView={false}
|
||||
valueKey="github"
|
||||
labelKey="name"
|
||||
onChange={onChange}
|
||||
simpleValue
|
||||
value={options}
|
||||
valueComponent={CustomValue}
|
||||
/>
|
||||
<Select {...selectProps} />
|
||||
</div>;
|
||||
}
|
||||
}
|
||||
@@ -128,29 +129,32 @@ class SelectAsyncTest extends React.Component<React.Props<{}>, {}> {
|
||||
};
|
||||
const options: Option[] = [{ label: "Foo", value: "bar" }];
|
||||
const onChange = (value: any) => console.log(value);
|
||||
|
||||
const asyncSelectProps: ReactAsyncSelectProps = {
|
||||
name: "test-select",
|
||||
className: "test-select",
|
||||
key: "1",
|
||||
matchPos: "any",
|
||||
matchProp: "any",
|
||||
multi: true,
|
||||
onValueClick: onChange,
|
||||
valueKey: "github",
|
||||
labelKey: "name",
|
||||
onChange: onChange,
|
||||
simpleValue: undefined,
|
||||
value: options,
|
||||
loadOptions: getOptions,
|
||||
cache: {},
|
||||
ignoreAccents: false,
|
||||
ignoreCase: true,
|
||||
isLoading: false,
|
||||
minimumInput: 5,
|
||||
searchPromptText: "search...",
|
||||
searchingText: "searching...",
|
||||
};
|
||||
|
||||
return <div>
|
||||
<Select.Async
|
||||
name="test-select"
|
||||
className="test-select"
|
||||
key="1"
|
||||
matchPos={"any"}
|
||||
matchProp={"any"}
|
||||
multi={true}
|
||||
onValueClick={onChange}
|
||||
valueKey="github"
|
||||
labelKey="name"
|
||||
onChange={onChange}
|
||||
simpleValue
|
||||
value={options}
|
||||
loadOptions={getOptions}
|
||||
cache={{}}
|
||||
ignoreAccents={false}
|
||||
ignoreCase={{}}
|
||||
isLoading={false}
|
||||
minimumInput={5}
|
||||
searchPromptText={"search..."}
|
||||
searchingText={"searching..."}
|
||||
/>
|
||||
<Select.Async {...asyncSelectProps} />
|
||||
</div>;
|
||||
}
|
||||
|
||||
|
||||
24
react-select/react-select.d.ts
vendored
24
react-select/react-select.d.ts
vendored
@@ -62,7 +62,7 @@ declare namespace ReactSelect {
|
||||
valueArray: Option[];
|
||||
}
|
||||
|
||||
interface ReactSelectProps extends __React.Props<ReactSelect> {
|
||||
interface ReactSelectProps extends __React.Props<ReactSelectClass> {
|
||||
/**
|
||||
* text to display when `allowCreate` is true.
|
||||
* @default 'Add "{label}"?'
|
||||
@@ -401,28 +401,24 @@ declare namespace ReactSelect {
|
||||
searchingText?: string;
|
||||
}
|
||||
|
||||
interface ReactSelect extends __React.ReactElement<ReactSelectProps> { }
|
||||
interface ReactSelectAsyncClass extends __React.ComponentClass<ReactAsyncSelectProps> {
|
||||
class ReactSelectAsyncClass extends __React.Component<ReactAsyncSelectProps, {}> {
|
||||
}
|
||||
const Async: ReactSelectAsyncClass;
|
||||
interface ReactSelectClass extends __React.ComponentClass<ReactSelectProps> {
|
||||
Async: ReactSelectAsyncClass;
|
||||
class ReactSelectClass extends __React.Component<ReactSelectProps, {}> {
|
||||
static Async: ReactSelectAsyncClass;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
declare module "react-select" {
|
||||
const RS: ReactSelect.ReactSelectClass;
|
||||
export = RS;
|
||||
export = ReactSelect.ReactSelectClass;
|
||||
}
|
||||
|
||||
declare module "react-select-props" {
|
||||
|
||||
interface Option extends ReactSelect.Option {}
|
||||
interface MenuRendererProps extends ReactSelect.MenuRendererProps {}
|
||||
interface ReactSelectProps extends ReactSelect.ReactSelectProps {}
|
||||
interface ReactAsyncSelectProps extends ReactSelect.ReactAsyncSelectProps {}
|
||||
|
||||
import Option = ReactSelect.Option;
|
||||
import MenuRendererProps = ReactSelect.MenuRendererProps;
|
||||
import ReactSelectProps = ReactSelect.ReactSelectProps;
|
||||
import ReactAsyncSelectProps = ReactSelect.ReactAsyncSelectProps;
|
||||
|
||||
export { MenuRendererProps, ReactSelectProps, ReactAsyncSelectProps, Option };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user