From f813c33ffbff23cc54ae4f8fdbab37af532e175a Mon Sep 17 00:00:00 2001 From: Kostya Esmukov Date: Fri, 5 Aug 2016 15:58:45 +0300 Subject: [PATCH 1/2] Added typings for react-css-modules --- react-css-modules/react-css-modules-tests.tsx | 47 +++++++++++++++++++ react-css-modules/react-css-modules.d.ts | 30 ++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 react-css-modules/react-css-modules-tests.tsx create mode 100644 react-css-modules/react-css-modules.d.ts diff --git a/react-css-modules/react-css-modules-tests.tsx b/react-css-modules/react-css-modules-tests.tsx new file mode 100644 index 0000000000..32c78eda1a --- /dev/null +++ b/react-css-modules/react-css-modules-tests.tsx @@ -0,0 +1,47 @@ +/// +/// + + +import * as React from 'react'; +import * as CSSModules from 'react-css-modules'; + +const styles = {}; + +interface TableProps extends CSSModules.InjectedCSSModuleProps { + +} + +class Table extends React.Component { + render () { + const { styles } = this.props; + + return
+
+
A0
+
B0
+
+
; + } +} + +const TableHOC = CSSModules(Table, styles); + + + +interface TableDecoratedProps extends CSSModules.InjectedCSSModuleProps { + +} + +@CSSModules(styles) +class TableDecorated extends React.Component { + render () { + const { styles } = this.props; + + return
+
+
A0
+
B0
+
+
; + } +} diff --git a/react-css-modules/react-css-modules.d.ts b/react-css-modules/react-css-modules.d.ts new file mode 100644 index 0000000000..2ee125bfa6 --- /dev/null +++ b/react-css-modules/react-css-modules.d.ts @@ -0,0 +1,30 @@ +// Type definitions for react-css-modules 3.7.9 +// Project: https://github.com/gajus/react-css-modules +// Definitions by: Kostya Esmukov +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + + +declare module 'react-css-modules' { + + interface TypeOptions { + allowMultiple?: boolean; + errorWhenNotFound?: boolean; + } + + type StylesObject = any; + + interface CSSModules { + (defaultStyles: StylesObject, options?: TypeOptions): (Component: C) => C; + (Component: C, defaultStyles: StylesObject, options?: TypeOptions): C; + } + + module CSSModules { + interface InjectedCSSModuleProps { + styles: StylesObject; + } + } + + let CSSModules: CSSModules; + + export = CSSModules; +} From b7cce90002934d301bc018cea8aadc3743d87500 Mon Sep 17 00:00:00 2001 From: Kostya Esmukov Date: Fri, 5 Aug 2016 20:05:11 +0300 Subject: [PATCH 2/2] react-css-modules: elaborated on how to use the InjectedCSSModuleProps --- react-css-modules/react-css-modules.d.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/react-css-modules/react-css-modules.d.ts b/react-css-modules/react-css-modules.d.ts index 2ee125bfa6..d8a414d35f 100644 --- a/react-css-modules/react-css-modules.d.ts +++ b/react-css-modules/react-css-modules.d.ts @@ -19,8 +19,11 @@ declare module 'react-css-modules' { } module CSSModules { + // Extend your component's Prop interface with this one to get access to `this.props.styles` + // + // interface MyComponentProps extends CSSModules.InjectedCSSModuleProps {} interface InjectedCSSModuleProps { - styles: StylesObject; + styles?: StylesObject; } }