Merge pull request #971 from ONLYOFFICE/fix/fix-bugs-on-mobiles

Fix/fix bugs on mobiles
This commit is contained in:
Julia Radzhabova 2021-07-09 17:03:25 +03:00 committed by GitHub
commit e244b8ff86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 37 deletions

View file

@ -29,7 +29,6 @@
--f7-range-knob-size: 16px; --f7-range-knob-size: 16px;
--f7-link-highlight-color: transparent; --f7-link-highlight-color: transparent;
--f7-touch-ripple-color: @touchColor;
--f7-link-touch-ripple-color: @touchColor; --f7-link-touch-ripple-color: @touchColor;
.button { .button {
@ -42,6 +41,7 @@
--f7-dialog-button-text-color: @themeColor; --f7-dialog-button-text-color: @themeColor;
.navbar { .navbar {
--f7-touch-ripple-color: @touchColor;
.sheet-close { .sheet-close {
width: 56px; width: 56px;
height: 56px; height: 56px;

View file

@ -4,12 +4,13 @@ import { f7 } from 'framework7-react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import ToolbarView from "../view/Toolbar"; import ToolbarView from "../view/Toolbar";
const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetInfo')(observer(props => { const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetInfo', 'storeFocusObjects')(observer(props => {
const {t} = useTranslation(); const {t} = useTranslation();
const _t = t("Toolbar", { returnObjects: true }); const _t = t("Toolbar", { returnObjects: true });
const appOptions = props.storeAppOptions; const appOptions = props.storeAppOptions;
const isDisconnected = props.users.isDisconnected; const isDisconnected = props.users.isDisconnected;
const isObjectLocked = props.storeFocusObjects.isLocked;
const displayCollaboration = props.users.hasEditUsers || appOptions.canViewComments; const displayCollaboration = props.users.hasEditUsers || appOptions.canViewComments;
const docTitle = props.storeSpreadsheetInfo.dataDoc ? props.storeSpreadsheetInfo.dataDoc.title : ''; const docTitle = props.storeSpreadsheetInfo.dataDoc ? props.storeSpreadsheetInfo.dataDoc.title : '';
@ -20,9 +21,8 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
const api = Common.EditorApi.get(); const api = Common.EditorApi.get();
api.asc_registerCallback('asc_onCanUndoChanged', onApiCanUndo); api.asc_registerCallback('asc_onCanUndoChanged', onApiCanUndo);
api.asc_registerCallback('asc_onCanRedoChanged', onApiCanRedo); api.asc_registerCallback('asc_onCanRedoChanged', onApiCanRedo);
api.asc_registerCallback('asc_onSelectionChanged', onApiSelectionChanged); api.asc_registerCallback('asc_onWorkbookLocked', onApiLocked);
api.asc_registerCallback('asc_onWorkbookLocked', onApiSelectionChanged); api.asc_registerCallback('asc_onWorksheetLocked', onApiLocked);
api.asc_registerCallback('asc_onWorksheetLocked', onApiSelectionChanged);
api.asc_registerCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged); api.asc_registerCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged);
Common.Notifications.on('toolbar:activatecontrols', activateControls); Common.Notifications.on('toolbar:activatecontrols', activateControls);
@ -53,9 +53,8 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
const api = Common.EditorApi.get(); const api = Common.EditorApi.get();
api.asc_unregisterCallback('asc_onCanUndoChanged', onApiCanUndo); api.asc_unregisterCallback('asc_onCanUndoChanged', onApiCanUndo);
api.asc_unregisterCallback('asc_onCanRedoChanged', onApiCanRedo); api.asc_unregisterCallback('asc_onCanRedoChanged', onApiCanRedo);
//api.asc_unregisterCallback('asc_onSelectionChanged', onApiSelectionChanged); TO DO api.asc_unregisterCallback('asc_onWorkbookLocked', onApiLocked);
api.asc_unregisterCallback('asc_onWorkbookLocked', onApiSelectionChanged); api.asc_unregisterCallback('asc_onWorksheetLocked', onApiLocked);
api.asc_unregisterCallback('asc_onWorksheetLocked', onApiSelectionChanged);
api.asc_unregisterCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged); api.asc_unregisterCallback('asc_onActiveSheetChanged', onApiActiveSheetChanged);
} }
}); });
@ -133,32 +132,9 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
} }
const [disabledEditControls, setDisabledEditControls] = useState(false); const [disabledEditControls, setDisabledEditControls] = useState(false);
const onApiSelectionChanged = (cellInfo) => { const onApiLocked = () => {
if (isDisconnected) return; if (isDisconnected) return;
props.storeFocusObjects.setIsLocked(Common.EditorApi.get().asc_getCellInfo());
const api = Common.EditorApi.get();
const info = !!cellInfo ? cellInfo : api.asc_getCellInfo();
let islocked = false;
switch (info.asc_getSelectionType()) {
case Asc.c_oAscSelectionType.RangeChart:
case Asc.c_oAscSelectionType.RangeImage:
case Asc.c_oAscSelectionType.RangeShape:
case Asc.c_oAscSelectionType.RangeChartText:
case Asc.c_oAscSelectionType.RangeShapeText:
const objects = api.asc_getGraphicObjectProps();
for ( let i in objects ) {
if ( objects[i].asc_getObjectType() == Asc.c_oAscTypeSelectElement.Image ) {
if ((islocked = objects[i].asc_getObjectValue().asc_getLocked()))
break;
}
}
break;
default:
islocked = info.asc_getLocked();
}
setDisabledEditControls(islocked);
}; };
const onApiActiveSheetChanged = (index) => { const onApiActiveSheetChanged = (index) => {
@ -196,7 +172,7 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
onUndo={onUndo} onUndo={onUndo}
onRedo={onRedo} onRedo={onRedo}
disabledControls={disabledControls} disabledControls={disabledControls}
disabledEditControls={disabledEditControls} disabledEditControls={disabledEditControls || isObjectLocked}
disabledSettings={disabledSettings} disabledSettings={disabledSettings}
displayCollaboration={displayCollaboration} displayCollaboration={displayCollaboration}
showEditDocument={showEditDocument} showEditDocument={showEditDocument}

View file

@ -4,6 +4,7 @@ export class storeFocusObjects {
constructor() { constructor() {
makeObservable(this, { makeObservable(this, {
focusOn: observable, focusOn: observable,
changeFocus: action,
_focusObjects: observable, _focusObjects: observable,
_cellInfo: observable, _cellInfo: observable,
resetFocusObjects: action, resetFocusObjects: action,
@ -12,15 +13,21 @@ export class storeFocusObjects {
selections: computed, selections: computed,
shapeObject: computed, shapeObject: computed,
imageObject: computed, imageObject: computed,
chartObject: computed chartObject: computed,
isLocked: observable,
setIsLocked: action
}); });
} }
focusOn = undefined; focusOn = undefined;
changeFocus(isObj) {
this.focusOn = isObj ? 'obj' : 'cell';
}
_focusObjects = []; _focusObjects = [];
resetFocusObjects(objects) { resetFocusObjects(objects) {
this.focusOn = 'obj';
this._focusObjects = objects; this._focusObjects = objects;
} }
@ -56,7 +63,6 @@ export class storeFocusObjects {
_cellInfo; _cellInfo;
resetCellInfo (cellInfo) { resetCellInfo (cellInfo) {
this.focusOn = 'cell';
this._cellInfo = cellInfo; this._cellInfo = cellInfo;
} }
@ -76,4 +82,28 @@ export class storeFocusObjects {
return !!this.intf ? this.intf.getChartObject() : null; return !!this.intf ? this.intf.getChartObject() : null;
} }
isLocked = false;
setIsLocked(info) {
let islocked = false;
switch (info.asc_getSelectionType()) {
case Asc.c_oAscSelectionType.RangeChart:
case Asc.c_oAscSelectionType.RangeImage:
case Asc.c_oAscSelectionType.RangeShape:
case Asc.c_oAscSelectionType.RangeChartText:
case Asc.c_oAscSelectionType.RangeShapeText:
const objects = Common.EditorApi.get().asc_getGraphicObjectProps();
for ( let i in objects ) {
if ( objects[i].asc_getObjectType() == Asc.c_oAscTypeSelectElement.Image ) {
if ((islocked = objects[i].asc_getObjectValue().asc_getLocked()))
break;
}
}
break;
default:
islocked = info.asc_getLocked();
}
this.isLocked = islocked;
}
} }