added actions

This commit is contained in:
muerwre 2019-03-06 17:27:19 +07:00
parent d42586d9e0
commit f8d2b6a5bd
6 changed files with 40 additions and 6 deletions

View file

@ -7,7 +7,10 @@ import {
searchSetDistance,
searchSetTitle,
searchSetTab,
setDialogActive, mapsLoadMore,
setDialogActive,
mapsLoadMore,
dropRoute,
modifyRoute,
} from '$redux/user/actions';
import { isMobile } from '$utils/window';
import classnames from 'classnames';
@ -29,6 +32,8 @@ export interface IMapListDialogProps extends IRootState {
searchSetTitle: typeof searchSetTitle,
searchSetTab: typeof searchSetTab,
setDialogActive: typeof setDialogActive,
dropRoute: typeof dropRoute,
modifyRoute: typeof modifyRoute,
}
export interface IMapListDialogState {
@ -98,7 +103,14 @@ class Component extends React.Component<IMapListDialogProps, IMapListDialogState
}
};
dropRoute = (): void => null;
dropRoute = (_id: string): void => {
this.props.dropRoute(_id);
};
modifyRoute = ({ _id, title, is_public }: { _id: string, title: string, is_public: boolean }): void => {
this.props.modifyRoute(_id, { title, is_public });
this.stopEditing();
};
render() {
const {
@ -201,6 +213,7 @@ class Component extends React.Component<IMapListDialogProps, IMapListDialogState
showMenu={this.showMenu}
showDropCard={this.showDropCard}
dropRoute={this.dropRoute}
modifyRoute={this.modifyRoute}
key={route._id}
/>
))
@ -239,6 +252,8 @@ const mapDispatchToProps = dispatch => bindActionCreators({
searchSetTab,
setDialogActive,
mapsLoadMore,
dropRoute,
modifyRoute,
}, dispatch);
export const MapListDialog = connect(mapStateToProps, mapDispatchToProps)(Component);

View file

@ -21,7 +21,7 @@ export const RouteRowDrop = ({
className="route-row"
>
<div className="button-group">
<div className="button" onClick={() => dropRoute(_id)}>Удалить</div>
<div className="button" onClick={dropRoute.bind(null, _id)}>Удалить</div>
<div className="button primary" onClick={stopEditing}>Отмена</div>
</div>
</div>

View file

@ -2,11 +2,13 @@
import * as React from 'react';
import { Icon } from '$components/panels/Icon';
import { Switch } from '$components/Switch';
import { MapListDialog } from "$components/dialogs/MapListDialog";
interface Props {
title: string;
_id: string;
is_public: boolean,
modifyRoute: typeof MapListDialog.modifyRoute,
}
interface State {
@ -24,14 +26,21 @@ export class RouteRowEditor extends React.Component<Props, State> {
};
}
stopEditing = () => console.log();
stopEditing = () => {
const {
state: { title, is_public },
props: { _id }
} = this;
this.props.modifyRoute({ _id, title, is_public })
};
setPublic = () => this.setState({ is_public: !this.state.is_public });
setTitle = ({ target: { value } }: { target: { value: string } }) => this.setState({ title: value });
render() {
const {
state: { title, is_public },
props: { _id }
} = this;
return (

View file

@ -22,6 +22,7 @@ interface Props {
showMenu: typeof MapListDialog.showMenu,
showDropCard: typeof MapListDialog.showDropCard,
dropRoute: typeof MapListDialog.dropRoute,
modifyRoute: typeof MapListDialog.modifyRoute,
is_editing_mode: 'edit' | 'drop',
}
@ -29,7 +30,7 @@ interface Props {
export const RouteRowWrapper = ({
title, distance, _id, openRoute, tab, startEditing, showMenu,
showDropCard, is_public, is_editing_target, is_menu_target, is_editing_mode,
dropRoute, stopEditing,
dropRoute, stopEditing, modifyRoute,
}: Props): ReactElement<Props, null> => (
<div
className={classnames('route-row-wrapper', {
@ -43,6 +44,7 @@ export const RouteRowWrapper = ({
title={title}
_id={_id}
is_public={is_public}
modifyRoute={modifyRoute}
/>
}
{