diff --git a/redux-ui/redux-ui-tests.ts b/redux-ui/redux-ui-tests.ts index 6d1954886d..c039fcf349 100644 --- a/redux-ui/redux-ui-tests.ts +++ b/redux-ui/redux-ui-tests.ts @@ -2,7 +2,7 @@ /// import * as React from 'react' -import ui, { ReduxUIProps } from 'redux-ui' +import ui, { ReduxUIProps, reducer } from 'redux-ui' type UIShape = { s: string @@ -18,7 +18,7 @@ type UIShape = { options: {} }) class Root extends React.Component, {}> { - render() { + componentWillMount() { console.info( this.props.ui.s, this.props.uiKey @@ -26,6 +26,10 @@ class Root extends React.Component, {}> { this.props.updateUI('s', 'a') this.props.updateUI({s: 'a'}) this.props.resetUI() - return null } } + +Redux.combineReducers({ + ui: reducer, +}) + diff --git a/redux-ui/redux-ui.d.ts b/redux-ui/redux-ui.d.ts index 8af92fbefd..61110ed245 100644 --- a/redux-ui/redux-ui.d.ts +++ b/redux-ui/redux-ui.d.ts @@ -1,43 +1,47 @@ +/// + declare module "redux-ui" { export interface uiParams { // 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 { // 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 + export default function ui(params: uiParams): (component: T) => T }