From 32ded83e5bc1a997630fb158aba4c8088b189fd5 Mon Sep 17 00:00:00 2001 From: Jan Strohbeck Date: Fri, 22 Sep 2017 13:04:56 +0200 Subject: [PATCH 1/2] Add Typescript definition file. --- package.json | 1 + src/index.d.ts | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/index.d.ts diff --git a/package.json b/package.json index 950db0d..0edcfa6 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.32.04", "description": "Responsive grid for React Native based on react-native-flexbox-grid", "main": "src/index.js", + "types": "src/index.d.ts", "repository": { "type": "git", "url": "git+https://github.com/idibidiart/react-native-responsive-grid.git" diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..bed8e0b --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,64 @@ +declare module "react-native-responsive-grid" { + import { Component } from "react"; + import { ViewProperties } from "react-native"; + + export interface ColumnProps { + size?: number, + sizePoints?: number, + offset?: number, + offsetPoints?: number, + smSize?: number, + smSizePoints?: number, + smOffset?: number, + smOffsetPoints?: number, + smHidden?: boolean, + mdSize?: number, + mdSizePoints?: number, + mdOffset?: number, + mdOffsetPoints?: number, + mdHidden?: boolean, + lgSize?: number, + lgSizePoints?: number, + lgOffset?: number, + lgOffsetPoints?: number, + lgHidden?: boolean, + xlSize?: number, + xlSizePoints?: number, + xlOffset?: number, + xlOffsetPoints?: number, + xlHidden?: boolean, + vAlign?: 'space' | 'distribute' | 'middle' | 'bottom' | 'top', + hAlign?: 'stretch' | 'center' | 'right' | 'left', + alignSelf?: 'auto' | 'top' | 'bottom' | 'middle' | 'stretch' | 'baseline', + fullWidth?: boolean, + aspectRatio?: object, + layoutEvent?: string, + } + + export interface RowProps { + rtl?: boolean, + noWrap?: boolean, + hAlign?: 'space' | 'distribute' | 'center' | 'left' | 'right', + vAlign?: 'stretch' | 'middle' | 'right' | 'left', + alignSelf?: 'auto' | 'left' | 'right' | 'center' | 'stretch', + fullHeight?: boolean, + alignLines?: string, + layoutEvent?: string + } + + export class Row extends Component { } + export class Column extends Component { } + + export interface ScreenParams { + mediaSize: 'sm' | 'md' | 'lg' | 'xl', + width: number, + height: number, + aspectRatio?: { + currentNearestRatio: string, + currentOrientation: 'square' | 'landscape' | 'portrait' + } + } + + export function ScreenInfo(onlySize?: boolean): ScreenParams; +} + From fa6026ff1af307c9f1ec1a8c6955633a3fba6b98 Mon Sep 17 00:00:00 2001 From: Jan Strohbeck Date: Mon, 27 Nov 2017 10:00:36 +0100 Subject: [PATCH 2/2] Typescript: Added definition for Grid and some missing props. Also added dependencies to type definitions of react and react-native. --- package.json | 5 ++++- src/index.d.ts | 22 ++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 34ea7b4..8d59118 100644 --- a/package.json +++ b/package.json @@ -21,5 +21,8 @@ "url": "https://github.com/idibidiart/react-native-responsive-grid/issues" }, "homepage": "https://github.com/idibidiart/react-native-responsive-grid#readme", - "dependencies": {} + "dependencies": { + "@types/react": "^16.0.25", + "@types/react-native": "^0.50.7" + } } diff --git a/src/index.d.ts b/src/index.d.ts index bed8e0b..8aa89da 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -2,6 +2,10 @@ declare module "react-native-responsive-grid" { import { Component } from "react"; import { ViewProperties } from "react-native"; + export interface GridProps { + + } + export interface ColumnProps { size?: number, sizePoints?: number, @@ -31,8 +35,7 @@ declare module "react-native-responsive-grid" { hAlign?: 'stretch' | 'center' | 'right' | 'left', alignSelf?: 'auto' | 'top' | 'bottom' | 'middle' | 'stretch' | 'baseline', fullWidth?: boolean, - aspectRatio?: object, - layoutEvent?: string, + aspectRatio?: object } export interface RowProps { @@ -43,22 +46,29 @@ declare module "react-native-responsive-grid" { alignSelf?: 'auto' | 'left' | 'right' | 'center' | 'stretch', fullHeight?: boolean, alignLines?: string, - layoutEvent?: string + size?: number, + sizePoints?: number + smSizePoints?: number, + mdSizePoints?: number, + lgSizePoints?: number, + xlSizePoints?: number } + export type AspectRatio = '16:9' | '16:10' | '3:2' | '4:3' | '1:1' |'4:3' | '3:2' | '16:10' | '16:9' + export class Row extends Component { } export class Column extends Component { } + export class Grid extends Component { } export interface ScreenParams { mediaSize: 'sm' | 'md' | 'lg' | 'xl', width: number, height: number, aspectRatio?: { - currentNearestRatio: string, + currentNearestRatio: AspectRatio, currentOrientation: 'square' | 'landscape' | 'portrait' } } export function ScreenInfo(onlySize?: boolean): ScreenParams; -} - +} \ No newline at end of file