Skip to content

Commit be41a7f

Browse files
[Maps] disable edit layer button when flyout is open for add layer or map settings (#64230)
* [Maps] disable edit layer button to avoid user data loss * remove layer_toc_actions * fix tslint errors * update jest snapshots * review feedback Co-authored-by: Elastic Machine <[email protected]>
1 parent d848f0c commit be41a7f

File tree

10 files changed

+199
-113
lines changed

10 files changed

+199
-113
lines changed

x-pack/plugins/maps/public/actions/map_actions.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,11 @@ export function updateMapSetting(
7474
settingKey: string,
7575
settingValue: string | boolean | number
7676
): AnyAction;
77+
78+
export function cloneLayer(layerId: string): AnyAction;
79+
80+
export function fitToLayerExtent(layerId: string): AnyAction;
81+
82+
export function removeLayer(layerId: string): AnyAction;
83+
84+
export function toggleLayerVisible(layerId: string): AnyAction;

x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/__snapshots__/view.test.js.snap

Lines changed: 5 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/index.js

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,32 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
import _ from 'lodash';
87
import { connect } from 'react-redux';
98
import { TOCEntry } from './view';
10-
119
import { FLYOUT_STATE } from '../../../../../reducers/ui';
1210
import { updateFlyout, hideTOCDetails, showTOCDetails } from '../../../../../actions/ui_actions';
13-
import { getIsReadOnly, getOpenTOCDetails } from '../../../../../selectors/ui_selectors';
14-
import {
15-
fitToLayerExtent,
16-
setSelectedLayer,
17-
toggleLayerVisible,
18-
removeTransientLayer,
19-
cloneLayer,
20-
removeLayer,
21-
} from '../../../../../actions/map_actions';
22-
2311
import {
12+
getMapZoom,
2413
hasDirtyState,
2514
getSelectedLayer,
26-
isUsingSearch,
2715
} from '../../../../../selectors/map_selectors';
16+
import {
17+
getIsReadOnly,
18+
getOpenTOCDetails,
19+
getFlyoutDisplay,
20+
} from '../../../../../selectors/ui_selectors';
21+
import { setSelectedLayer, removeTransientLayer } from '../../../../../actions/map_actions';
2822

2923
function mapStateToProps(state = {}, ownProps) {
24+
const flyoutDisplay = getFlyoutDisplay(state);
3025
return {
3126
isReadOnly: getIsReadOnly(state),
32-
zoom: _.get(state, 'map.mapState.zoom', 0),
27+
zoom: getMapZoom(state),
3328
selectedLayer: getSelectedLayer(state),
3429
hasDirtyStateSelector: hasDirtyState(state),
3530
isLegendDetailsOpen: getOpenTOCDetails(state).includes(ownProps.layer.getId()),
36-
isUsingSearch: isUsingSearch(state),
31+
isEditButtonDisabled:
32+
flyoutDisplay !== FLYOUT_STATE.NONE && flyoutDisplay !== FLYOUT_STATE.LAYER_PANEL,
3733
};
3834
}
3935

@@ -44,18 +40,6 @@ function mapDispatchToProps(dispatch) {
4440
await dispatch(setSelectedLayer(layerId));
4541
dispatch(updateFlyout(FLYOUT_STATE.LAYER_PANEL));
4642
},
47-
toggleVisible: layerId => {
48-
dispatch(toggleLayerVisible(layerId));
49-
},
50-
fitToBounds: layerId => {
51-
dispatch(fitToLayerExtent(layerId));
52-
},
53-
cloneLayer: layerId => {
54-
dispatch(cloneLayer(layerId));
55-
},
56-
removeLayer: layerId => {
57-
dispatch(removeLayer(layerId));
58-
},
5943
hideTOCDetails: layerId => {
6044
dispatch(hideTOCDetails(layerId));
6145
},

x-pack/plugins/maps/public/components/__snapshots__/layer_toc_actions.test.js.snap renamed to x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/__snapshots__/toc_entry_actions_popover.test.tsx.snap

Lines changed: 14 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { AnyAction, Dispatch } from 'redux';
8+
import { connect } from 'react-redux';
9+
import { MapStoreState } from '../../../../../../reducers/store';
10+
import {
11+
fitToLayerExtent,
12+
toggleLayerVisible,
13+
cloneLayer,
14+
removeLayer,
15+
} from '../../../../../../actions/map_actions';
16+
import { getMapZoom, isUsingSearch } from '../../../../../../selectors/map_selectors';
17+
import { getIsReadOnly } from '../../../../../../selectors/ui_selectors';
18+
import { TOCEntryActionsPopover } from './toc_entry_actions_popover';
19+
20+
function mapStateToProps(state: MapStoreState) {
21+
return {
22+
isReadOnly: getIsReadOnly(state),
23+
isUsingSearch: isUsingSearch(state),
24+
zoom: getMapZoom(state),
25+
};
26+
}
27+
28+
function mapDispatchToProps(dispatch: Dispatch<AnyAction>) {
29+
return {
30+
cloneLayer: (layerId: string) => {
31+
dispatch(cloneLayer(layerId));
32+
},
33+
fitToBounds: (layerId: string) => {
34+
dispatch(fitToLayerExtent(layerId));
35+
},
36+
removeLayer: (layerId: string) => {
37+
dispatch(removeLayer(layerId));
38+
},
39+
toggleVisible: (layerId: string) => {
40+
dispatch(toggleLayerVisible(layerId));
41+
},
42+
};
43+
}
44+
45+
const connectedTOCEntryActionsPopover = connect(
46+
mapStateToProps,
47+
mapDispatchToProps
48+
)(TOCEntryActionsPopover);
49+
export { connectedTOCEntryActionsPopover as TOCEntryActionsPopover };

0 commit comments

Comments
 (0)