Skip to content

Commit 8ecfcb6

Browse files
[Misc] Cherry-pick 11817 to release 11.8 (#11827)
(r11.8 → 11.8)
1 parent 1fbdd2e commit 8ecfcb6

File tree

2 files changed

+56
-10
lines changed

2 files changed

+56
-10
lines changed

src/event-listeners/onDocumentLoaded.js

Lines changed: 53 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import i18next from 'i18next';
1111
import hotkeys from 'hotkeys-js';
1212
import hotkeysManager, { ShortcutKeys, Shortcuts, defaultHotkeysScope } from 'helpers/hotkeysManager';
1313
import { getInstanceNode } from 'helpers/getRootNode';
14-
import { isOfficeEditorMode, isSpreadsheetEditorDocument } from 'helpers/officeEditor';
14+
import { isOfficeEditorMode, isSpreadsheetEditorMode } from 'helpers/officeEditor';
1515
import DataElements from 'constants/dataElement';
1616
import { panelNames } from 'constants/panel';
1717
import { getPortfolioFiles } from 'helpers/portfolio';
@@ -20,9 +20,10 @@ import {
2020
OfficeEditorEditMode,
2121
EditingStreamType,
2222
ELEMENTS_TO_DISABLE_IN_OFFICE_EDITOR,
23-
ELEMENTS_TO_ENABLE_IN_OFFICE_EDITOR
23+
ELEMENTS_TO_ENABLE_IN_OFFICE_EDITOR,
24+
EDIT_OPERATION_SOURCE,
2425
} from 'constants/officeEditor';
25-
import { SPREADSHEET_EDITOR_SCOPE, ELEMENTS_TO_DISABLE_IN_SPREADSHEET_EDITOR } from 'src/constants/spreadsheetEditor';
26+
import { SPREADSHEET_EDITOR_SCOPE, ELEMENTS_TO_DISABLE_IN_SPREADSHEET_EDITOR, SpreadsheetEditorEditMode } from 'src/constants/spreadsheetEditor';
2627
import { VIEWER_CONFIGURATIONS } from 'constants/customizationVariables';
2728
import FeatureFlags from 'constants/featureFlags';
2829
import getDefaultPageLabels from 'helpers/getDefaultPageLabels';
@@ -258,12 +259,12 @@ export const configureOfficeEditor = (store) => () => {
258259
isCustomUIEnabled ?
259260
dispatch(actions.disableElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER, PRIORITY_TWO)) :
260261
dispatch(actions.closeElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER));
261-
dispatch(actions.disableElements([DataElements.CONTEXT_MENU_POPUP, DataElements.NOTE_MULTI_SELECT_MODE_BUTTON], PRIORITY_TWO));
262+
dispatch(actions.disableElements([DataElements.CONTEXT_MENU_POPUP, DataElements.NOTE_MULTI_SELECT_MODE_BUTTON, DataElements.SEARCH_PANEL_REPLACE_CONTAINER], PRIORITY_TWO));
262263
} else {
263264
isCustomUIEnabled ?
264265
dispatch(actions.enableElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER, PRIORITY_TWO)) :
265266
dispatch(actions.openElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER));
266-
dispatch(actions.enableElements([DataElements.CONTEXT_MENU_POPUP, DataElements.NOTE_MULTI_SELECT_MODE_BUTTON], PRIORITY_TWO));
267+
dispatch(actions.enableElements([DataElements.CONTEXT_MENU_POPUP, DataElements.NOTE_MULTI_SELECT_MODE_BUTTON, DataElements.SEARCH_PANEL_REPLACE_CONTAINER], PRIORITY_TWO));
267268
}
268269
if (editMode === OfficeEditorEditMode.REVIEWING || editMode === OfficeEditorEditMode.PREVIEW) {
269270
dispatch(actions.openElement(isCustomUIEnabled ? DataElements.OFFICE_EDITOR_REVIEW_PANEL : DataElements.LEFT_PANEL));
@@ -327,24 +328,66 @@ export const configureOfficeEditor = (store) => () => {
327328
doc.addEventListener('editModeUpdated', updateEditMode);
328329
updateActiveStream(EditingStreamType.BODY);
329330
contentSelectTool.addEventListener('activeStreamChanged', updateActiveStream);
330-
doc.addEventListener('editOperationStarted', () => {
331-
core.getOfficeEditor().setEditMode('viewOnly');
331+
doc.addEventListener('editOperationStarted', ({ source }) => {
332+
switch (source) {
333+
case EDIT_OPERATION_SOURCE.HEADER_FOOTER:
334+
core.getOfficeEditor().setEditMode('viewOnly');
335+
break;
336+
case EDIT_OPERATION_SOURCE.REPLACE:
337+
dispatch(actions.setOfficeEditorIsReplaceInProgress(true));
338+
break;
339+
default:
340+
break;
341+
}
332342
dispatch(actions.openElement('loadingModal'));
333343
});
334-
doc.addEventListener('editOperationEnded', () => {
335-
core.getOfficeEditor().setEditMode('editing');
344+
doc.addEventListener('editOperationEnded', ({ source }) => {
345+
switch (source) {
346+
case EDIT_OPERATION_SOURCE.HEADER_FOOTER:
347+
core.getOfficeEditor().setEditMode('editing');
348+
break;
349+
case EDIT_OPERATION_SOURCE.REPLACE:
350+
dispatch(actions.setOfficeEditorIsReplaceInProgress(false));
351+
break;
352+
default:
353+
break;
354+
}
336355
dispatch(actions.closeElement('loadingModal'));
337356
});
338357
// Setting zoom to 100% later here to avoid mouse clicks from becoming offset.
339358
core.zoomTo(1, 0, 0);
340359
notesInLeftPanel = selectors.getNotesInLeftPanel(getState());
341360
dispatch(actions.setNotesInLeftPanel(true));
342361
dispatch(actions.setClearSearchOnPanelClose(true));
343-
} else if (isSpreadsheetEditorDocument()) {
362+
} else if (isSpreadsheetEditorMode()) {
344363
if (!isCustomUIEnabled) {
345364
console.warn('Spreadsheet Editor requires Modular UI. Enabling it now.');
346365
dispatch(actions.enableFeatureFlag(FeatureFlags.CUSTOMIZABLE_UI));
347366
}
367+
const spreadsheetEditorOptions = getHashParameters('spreadsheetEditorOptions', '{}');
368+
let onLoadEditMode = JSON.parse(spreadsheetEditorOptions).initialEditMode || SpreadsheetEditorEditMode.VIEW_ONLY;
369+
if (!Object.values(SpreadsheetEditorEditMode).includes(onLoadEditMode)) {
370+
console.warn(`Invalid initialEditMode parameter: ${onLoadEditMode}. Default to view mode.`);
371+
onLoadEditMode = SpreadsheetEditorEditMode.VIEW_ONLY;
372+
}
373+
dispatch(actions.setSpreadsheetEditorEditMode(onLoadEditMode));
374+
const spreadsheetEditorManager = core.getDocumentViewer().getSpreadsheetEditorManager();
375+
spreadsheetEditorManager.setEditMode(onLoadEditMode);
376+
if (onLoadEditMode === SpreadsheetEditorEditMode.VIEW_ONLY) {
377+
dispatch(
378+
actions.disableElements(
379+
[DataElements.SEARCH_PANEL_REPLACE_CONTAINER],
380+
PRIORITY_THREE
381+
)
382+
);
383+
} else {
384+
dispatch(
385+
actions.enableElements(
386+
[DataElements.SEARCH_PANEL_REPLACE_CONTAINER],
387+
PRIORITY_THREE
388+
)
389+
);
390+
}
348391
swapUIConfiguration(VIEWER_CONFIGURATIONS.SPREADSHEET_EDITOR);
349392
dispatch(actions.disableElements(
350393
ELEMENTS_TO_DISABLE_IN_SPREADSHEET_EDITOR,

src/event-listeners/onSpreadsheetEditorEditModeChanged.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import actions from 'actions';
22
import DataElements from 'constants/dataElement';
33
import { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';
4+
import { PRIORITY_THREE } from 'constants/actionPriority';
45

56
const SpreadsheetEditorEditMode = window.Core.SpreadsheetEditor.SpreadsheetEditorEditMode;
67

@@ -14,9 +15,11 @@ export default (dispatch) => (mode) => {
1415
switch (mode) {
1516
case SpreadsheetEditorEditMode['VIEW_ONLY']:
1617
dispatch(actions.disableElements(viewOnlyDisabledElements));
18+
dispatch(actions.disableElements([DataElements.SEARCH_PANEL_REPLACE_CONTAINER], PRIORITY_THREE));
1719
break;
1820
case SpreadsheetEditorEditMode['EDITING']:
1921
dispatch(actions.enableElements(viewOnlyDisabledElements));
22+
dispatch(actions.enableElements([DataElements.SEARCH_PANEL_REPLACE_CONTAINER], PRIORITY_THREE));
2023
break;
2124
default:
2225
break;

0 commit comments

Comments
 (0)