diff --git a/src/components/dialogs/PolylineDialog.tsx b/src/components/dialogs/PolylineDialog.tsx new file mode 100644 index 0000000..e8af996 --- /dev/null +++ b/src/components/dialogs/PolylineDialog.tsx @@ -0,0 +1,59 @@ +import React, { FC, useCallback } from 'react'; +import { Icon } from '~/components/panels/Icon'; +import { connect } from 'react-redux'; +import * as EDITOR_ACTIONS from '~/redux/editor/actions'; +import * as MAP_ACTIONS from '~/redux/map/actions'; +import { IState } from '~/redux/store'; +import { selectMapRoute } from '~/redux/map/selectors'; + +const mapStateToProps = (state: IState) => ({ + route: selectMapRoute(state), +}); + +const mapDispatchToProps = { + mapSetRoute: MAP_ACTIONS.mapSetRoute, +}; + +type Props = ReturnType & typeof mapDispatchToProps & {}; + +const PolylineDialogUnconnected: FC = ({ route, mapSetRoute }) => { + const reverseRoute = useCallback(() => { + mapSetRoute([...route].reverse()); + }, [mapSetRoute, route]); + + const curRouteStart = useCallback(() => { + mapSetRoute(route.slice(1, route.length)); + }, [mapSetRoute, route]); + + const curRouteEnd = useCallback(() => { + mapSetRoute(route.slice(0, route.length - 1)); + }, [mapSetRoute, route]); + + return ( +
+
+
+ + + + + + +
+ +
Ручной режим
+
+
+
+ ); +}; + +const PolylineDialog = connect(mapStateToProps, mapDispatchToProps)(PolylineDialogUnconnected); + +export { PolylineDialog }; diff --git a/src/components/dialogs/RouterDialog.tsx b/src/components/dialogs/RouterDialog.tsx index 49b146e..827f0cc 100644 --- a/src/components/dialogs/RouterDialog.tsx +++ b/src/components/dialogs/RouterDialog.tsx @@ -18,6 +18,7 @@ const noPoints = ({
Укажите первую точку на карте
+
diff --git a/src/components/dialogs/TrashDialog.tsx b/src/components/dialogs/TrashDialog.tsx index 3f18349..d16d020 100644 --- a/src/components/dialogs/TrashDialog.tsx +++ b/src/components/dialogs/TrashDialog.tsx @@ -34,9 +34,11 @@ const TrashDialogUnconnected: FC = ({
Маршрут
+
Стикеры
+
ВСЕ
diff --git a/src/components/panels/EditorDialog.tsx b/src/components/panels/EditorDialog.tsx index 3ed02b0..2bebe8d 100644 --- a/src/components/panels/EditorDialog.tsx +++ b/src/components/panels/EditorDialog.tsx @@ -2,6 +2,7 @@ import React, { createElement } from 'react'; import { MODES } from '~/constants/modes'; import { RouterDialog } from '~/components/dialogs/RouterDialog'; +import { PolylineDialog } from '~/components/dialogs/PolylineDialog'; import { StickersDialog } from '~/components/dialogs/StickersDialog'; import { TrashDialog } from '~/components/dialogs/TrashDialog'; import { LogoDialog } from '~/components/dialogs/LogoDialog'; @@ -29,6 +30,7 @@ const DIALOG_CONTENTS: { [x: string]: any } = { [MODES.CONFIRM_CANCEL]: CancelDialog, [MODES.PROVIDER]: ProviderDialog, [MODES.SHOT_PREFETCH]: ShotPrefetchDialog, + [MODES.POLY]: PolylineDialog, }; const EditorDialogUnconnected = (props: Props) => diff --git a/src/sprites/icon.svg b/src/sprites/icon.svg index 7d9667f..9c92bee 100644 --- a/src/sprites/icon.svg +++ b/src/sprites/icon.svg @@ -1,436 +1,376 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/styles/panel.less b/src/styles/panel.less index 291ae26..80f5ca7 100644 --- a/src/styles/panel.less +++ b/src/styles/panel.less @@ -389,6 +389,22 @@ flex: 1; } +.helper__icon_button { + width: 32px; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + background: none; + border: none; + outline: none; + cursor: pointer; + + svg { + margin-right: 0; + } +} + .helper__buttons { display: flex; align-items: center;