From 922a67467d2b7cc9995bbde095d9c2fa5b4518a9 Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Thu, 2 Aug 2018 15:39:21 +0200 Subject: [PATCH] Pass closeDialog action into component wrapped withDialog Feature #13855 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- src/store/dialog/with-dialog.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/store/dialog/with-dialog.ts b/src/store/dialog/with-dialog.ts index 60cb5d1024..42ae73e4a4 100644 --- a/src/store/dialog/with-dialog.ts +++ b/src/store/dialog/with-dialog.ts @@ -5,17 +5,29 @@ import * as React from 'react'; import { connect } from 'react-redux'; import { DialogState } from './dialog-reducer'; +import { Dispatch } from 'redux'; +import { dialogActions } from './dialog-actions'; export type WithDialog = { open: boolean; data?: T; }; +export type WithDialogActions = { + closeDialog: () => void; +}; + export const withDialog = (id: string) => - (component: React.ComponentType>) => - connect(mapStateToProps(id))(component); + (component: React.ComponentType & WithDialogActions>) => + connect(mapStateToProps(id), mapDispatchToProps(id))(component); export const mapStateToProps = (id: string) => (state: { dialog: DialogState }): WithDialog => { const dialog = state.dialog[id]; return dialog ? dialog : { open: false }; }; + +export const mapDispatchToProps = (id: string) => (dispatch: Dispatch): WithDialogActions => ({ + closeDialog: () => { + dispatch(dialogActions.CLOSE_DIALOG({ id })); + } +}); \ No newline at end of file -- 2.30.2