Merge pull request #9985 from strikingly/redux-ui

Add definition for redux-ui
This commit is contained in:
Zhengbo Li
2016-07-08 10:08:36 -07:00
committed by GitHub
2 changed files with 90 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
///<reference path="redux-ui.d.ts" />
/// <reference path="../react/react.d.ts"/>
import * as React from 'react'
import ui, { ReduxUIProps, reducer } from 'redux-ui'
type UIShape = {
s: string;
};
@ui<UIShape>({
key: 'Root',
persist: true,
state: {
s: '',
},
mergeProps: () => ({}),
options: {}
})
class Root extends React.Component<ReduxUIProps<UIShape>, {}> {
componentWillMount() {
console.info(
this.props.ui.s,
this.props.uiKey
);
this.props.updateUI('s', 'a');
this.props.updateUI({s: 'a'});
this.props.resetUI();
}
}
Redux.combineReducers({
ui: reducer,
});
+55
View File
@@ -0,0 +1,55 @@
// Type definitions for redux-ui 0.0.15
// Project: https://github.com/tonyhb/redux-ui
// Definitions by: Andy Shu Xin <https://github.com/andyshuxin>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference path="../redux/redux.d.ts"/>
declare module "redux-ui" {
import * as Redux from 'redux';
export interface uiParams<UIStateShape> {
// optional key which is used to determine the UI path in which state will
// be stored. if omitted this is randomly generated.
key?: string;
// optional persist, defaults to false. if set to true persist will keep UI
// state for this component after it unmounts. if set to false the UI state
// will be deleted and recreated when the component remounts
persist?: boolean;
// **required**: UI state for the component
state: UIStateShape;
// optional mergeProps passed to react-redux' @connect
mergeProps?: (stateProps: any, dispatchProps: any, ownProps: any) => any;
// optional `options` passed to react-redux @connect
options?: {
pure?: boolean;
withRef?: boolean;
};
}
export interface ReduxUIProps<UIStateShape> {
// The key passed to the decorator from the decorator
// (eg. 'some-decorator' with `@ui('some-decorator')`
uiKey: string;
// The UI state for the component's `uiKey`
ui: UIStateShape;
// A function accepting either a name/value pair or object which updates
// state within `uiKey`
updateUI(obj: UIStateShape): void;
updateUI(key: string, value: any): void;
// A function which resets the state within `uiKey` to its default
resetUI(): void;
}
export const reducer: Redux.Reducer<any>;
export default function ui<UIStateShape>(params: uiParams<UIStateShape>): <T>(component: T) => T;
}