UNPKG

3.26 kBTypeScriptView Raw
1import { Component, ReactElement, ReactNode, ComponentType } from 'react';
2import { CSSObject } from '@emotion/serialize';
3import { spacing } from '../theme';
4import { CommonProps, GroupTypeBase, KeyboardEventHandler, OptionTypeBase } from '../types';
5
6// ==============================
7// Root Container
8// ==============================
9
10export interface ContainerState {
11 /** Whether the select is disabled. */
12 isDisabled: boolean;
13 /** Whether the text in the select is indented from right to left. */
14 isRtl: boolean;
15}
16
17export type ContainerProps<
18 OptionType extends OptionTypeBase,
19 IsMulti extends boolean,
20 GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
21> = CommonProps<OptionType, IsMulti, GroupType> &
22 ContainerState & {
23 /** The children to be rendered. */
24 children: ReactNode;
25 /** Inner props to be passed down to the container. */
26 innerProps: { onKeyDown: KeyboardEventHandler };
27 };
28export function containerCSS(state: ContainerState): CSSObject;
29export function SelectContainer<
30 OptionType extends OptionTypeBase,
31 IsMulti extends boolean,
32 GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
33 // tslint:disable-next-line:no-unnecessary-generics
34>(props: ContainerProps<OptionType, IsMulti, GroupType>): ReactElement;
35
36// ==============================
37// Value Container
38// ==============================
39
40export type ValueContainerProps<
41 OptionType extends OptionTypeBase,
42 IsMulti extends boolean,
43 GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
44> = CommonProps<OptionType, IsMulti, GroupType> & {
45 /** Set when the value container should hold multiple values */
46 isMulti: boolean;
47 /** Whether the value container currently holds a value. */
48 hasValue: boolean;
49 /** The children to be rendered. */
50 children: ReactNode;
51};
52export function valueContainerCSS(): CSSObject;
53export function ValueContainer<
54 OptionType extends OptionTypeBase,
55 IsMulti extends boolean,
56 GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
57 // tslint:disable-next-line:no-unnecessary-generics
58>(props: ValueContainerProps<OptionType, IsMulti, GroupType>): ReactElement;
59
60// ==============================
61// Indicator Container
62// ==============================
63
64export interface IndicatorsState {
65 /** Whether the text should be rendered right to left. */
66 isRtl: boolean;
67 /** Whether the component is disabled */
68 isDisabled: boolean;
69}
70
71export type IndicatorContainerProps<
72 OptionType extends OptionTypeBase,
73 IsMulti extends boolean,
74 GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
75> = CommonProps<OptionType, IsMulti, GroupType> &
76 IndicatorsState & {
77 /** The children to be rendered. */
78 children: ReactNode;
79 };
80
81export function indicatorsContainerCSS(): CSSObject;
82export function IndicatorsContainer<
83 OptionType extends OptionTypeBase,
84 IsMulti extends boolean,
85 GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
86 // tslint:disable-next-line:no-unnecessary-generics
87>(props: IndicatorContainerProps<OptionType, IsMulti, GroupType>): ReactElement;