UNPKG

3.51 kBTypeScriptView Raw
1// Type definitions for react-responsive 8.0
2// Project: https://github.com/contra/react-responsive
3// Definitions by: Alexey Svetliakov <https://github.com/asvetliakov>
4// Alec Hill <https://github.com/alechill>
5// Javier Gonzalez <https://github.com/xaviergonz>
6// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
7// TypeScript Version: 2.8
8
9import * as React from "react";
10
11export interface MediaQueryTypes {
12 all?: boolean | undefined;
13 grid?: boolean | undefined;
14 aural?: boolean | undefined;
15 braille?: boolean | undefined;
16 handheld?: boolean | undefined;
17 print?: boolean | undefined;
18 projection?: boolean | undefined;
19 screen?: boolean | undefined;
20 tty?: boolean | undefined;
21 tv?: boolean | undefined;
22 embossed?: boolean | undefined;
23}
24
25export type MediaQueryType = keyof MediaQueryTypes;
26
27export interface MediaQueryMatchers {
28 aspectRatio?: string | undefined;
29 deviceAspectRatio?: string | undefined;
30 height?: number | string | undefined;
31 deviceHeight?: number | string | undefined;
32 width?: number | string | undefined;
33 deviceWidth?: number | string | undefined;
34 color?: boolean | undefined;
35 colorIndex?: boolean | undefined;
36 monochrome?: boolean | undefined;
37 resolution?: number | string | undefined;
38 orientation?: 'portrait' | 'landscape' | undefined;
39 scan?: 'progressive' | 'interlace' | undefined;
40 type?: MediaQueryType | undefined;
41}
42
43export interface MediaQueryFeatures extends MediaQueryMatchers {
44 minAspectRatio?: string | undefined;
45 maxAspectRatio?: string | undefined;
46
47 minDeviceAspectRatio?: string | undefined;
48 maxDeviceAspectRatio?: string | undefined;
49
50 minHeight?: number | string | undefined;
51 maxHeight?: number | string | undefined;
52
53 minDeviceHeight?: number | string | undefined;
54 maxDeviceHeight?: number | string | undefined;
55
56 minWidth?: number | string | undefined;
57 maxWidth?: number | string | undefined;
58
59 minDeviceWidth?: number | string | undefined;
60 maxDeviceWidth?: number | string | undefined;
61
62 minColor?: number | undefined;
63 maxColor?: number | undefined;
64
65 minColorIndex?: number | undefined;
66 maxColorIndex?: number | undefined;
67
68 minMonochrome?: number | undefined;
69 maxMonochrome?: number | undefined;
70
71 minResolution?: number | string | undefined;
72 maxResolution?: number | string | undefined;
73}
74
75export interface MediaQueryAllQueryable extends MediaQueryFeatures, MediaQueryTypes {}
76
77export interface MediaQueryProps extends MediaQueryAllQueryable {
78 component?: React.ElementType | undefined;
79 query?: string | undefined;
80 style?: React.CSSProperties | undefined;
81 className?: string | undefined;
82 children?: React.ReactNode | ((matches: boolean) => React.ReactNode) | undefined;
83 device?: MediaQueryMatchers | undefined;
84 values?: Partial<MediaQueryMatchers> | undefined;
85 onBeforeChange?: ((matches: boolean) => void) | undefined;
86 onChange?: ((matches: boolean) => void) | undefined;
87}
88
89declare class MediaQuery extends React.Component<MediaQueryProps> { }
90export function toQuery(matchers: Partial<MediaQueryAllQueryable>): string;
91
92export const Context: React.Context<Partial<MediaQueryAllQueryable>>;
93
94export function useMediaQuery(
95 settings: Partial<MediaQueryAllQueryable & { query?: string | undefined }>,
96 device?: MediaQueryMatchers,
97 callback?: (matches: boolean) => void
98): boolean;
99
100export default MediaQuery;
101
\No newline at end of file