Skip to content

Commit fe80d9f

Browse files
Corey Robertsonelasticmachine
andauthored
Only change handlers as the element changes (#56782) (#56822)
Co-authored-by: Elastic Machine <[email protected]> Co-authored-by: Elastic Machine <[email protected]>
1 parent e0bbe83 commit fe80d9f

File tree

4 files changed

+20
-9
lines changed

4 files changed

+20
-9
lines changed

x-pack/legacy/plugins/canvas/public/components/element_wrapper/index.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,10 @@ function selectorFactory(dispatch) {
5858
export const ElementWrapper = compose(
5959
connectAdvanced(selectorFactory),
6060
withPropsOnChange(
61-
(props, nextProps) =>
62-
!isEqual(props.element, nextProps.element) ||
63-
!isEqual(props.selectedPage, nextProps.selectedPage),
61+
(props, nextProps) => !isEqual(props.element, nextProps.element),
6462
props => {
6563
const { element, createHandlers } = props;
66-
const handlers = createHandlers(element, props.selectedPage);
64+
const handlers = createHandlers(element);
6765
// this removes element and createHandlers from passed props
6866
return { handlers };
6967
}

x-pack/legacy/plugins/canvas/public/components/element_wrapper/lib/handlers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const createHandlers = dispatch => {
1616
let oldElement;
1717
let completeFn = () => {};
1818

19-
return (element, pageId) => {
19+
return element => {
2020
// reset isComplete when element changes
2121
if (!isEqual(oldElement, element)) {
2222
isComplete = false;
@@ -25,7 +25,7 @@ export const createHandlers = dispatch => {
2525

2626
return {
2727
setFilter(text) {
28-
dispatch(setFilter(text, element.id, pageId, true));
28+
dispatch(setFilter(text, element.id, true));
2929
},
3030

3131
getFilter() {

x-pack/legacy/plugins/canvas/public/state/actions/elements.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,9 @@ export const removeElements = createThunk(
254254

255255
export const setFilter = createThunk(
256256
'setFilter',
257-
({ dispatch }, filter, elementId, pageId, doRender = true) => {
257+
({ dispatch }, filter, elementId, doRender = true) => {
258258
const _setFilter = createAction('setFilter');
259-
dispatch(_setFilter({ filter, elementId, pageId }));
259+
dispatch(_setFilter({ filter, elementId }));
260260

261261
if (doRender === true) {
262262
dispatch(fetchAllRenderables());

x-pack/legacy/plugins/canvas/public/state/reducers/elements.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,18 @@ const trimElement = ({ id, position, expression, filter }) => ({
8787
...(filter !== void 0 && { filter }),
8888
});
8989

90+
const getPageWithElementId = (workpad, elementId) => {
91+
const matchingPage = workpad.pages.find(page =>
92+
page.elements.map(element => element.id).includes(elementId)
93+
);
94+
95+
if (matchingPage) {
96+
return matchingPage.id;
97+
}
98+
99+
return undefined;
100+
};
101+
90102
export const elementsReducer = handleActions(
91103
{
92104
// TODO: This takes the entire element, which is not necessary, it could just take the id.
@@ -95,7 +107,8 @@ export const elementsReducer = handleActions(
95107
return assignNodeProperties(workpadState, pageId, elementId, { expression });
96108
},
97109
[actions.setFilter]: (workpadState, { payload }) => {
98-
const { filter, pageId, elementId } = payload;
110+
const { filter, elementId } = payload;
111+
const pageId = getPageWithElementId(workpadState, elementId);
99112
return assignNodeProperties(workpadState, pageId, elementId, { filter });
100113
},
101114
[actions.setMultiplePositions]: (workpadState, { payload }) =>

0 commit comments

Comments
 (0)