gristlabs_grist-core/app/client/widgets/BaseEditor.js
Dmitry S 7284644313 (core) Add support for editing on mobile.
Summary:
- Add custom handling for dblclick on mobile, to allow focusing editor.
- In place of Clipboard.js, use a FocusLayer with document.body as the default focus element.
- Set maximum-scale on iOS viewport to prevent auto-zoom.
- Reposition the editor on window resize when editing a cell, which is a normal
  occurrence on Android when virtual keyboard is shown.
- Add Save/Cancel icon-buttons next to cell editor on mobile.

Test Plan: Tested manually on Safari / FF on iPhone, and on Chrome on Android emulator.

Reviewers: paulfitz

Reviewed By: paulfitz

Differential Revision: https://phab.getgrist.com/D2721
2021-02-03 23:10:51 -05:00

52 lines
1.6 KiB
JavaScript

/**
* Required parameters:
* @param {RowModel} options.field: ViewSectionField (i.e. column) being edited.
* @param {Object} options.cellValue: The value in the underlying cell being edited.
* @param {String} options.editValue: String to be edited, or undefined to use cellValue.
* @param {Number} options.cursorPos: The initial position where to place the cursor.
* @param {Object} options.commands: Object mapping command names to functions, to enable as part
* of the command group that should be activated while the editor exists.
*/
function BaseEditor(options) {
}
/**
* Called after the editor is instantiated to attach its DOM to the page.
* - cellElem: The element representing the cell that this editor should match
* in size and position. Used by derived classes, e.g. to construct an EditorPlacement object.
*/
BaseEditor.prototype.attach = function(cellElem) {
// No-op by default.
};
/**
* Called to get the value to save back to the cell.
*/
BaseEditor.prototype.getCellValue = function() {
throw new Error("Not Implemented");
};
/**
* Used if an editor needs preform any actions before a save
*/
BaseEditor.prototype.prepForSave = function() {
// No-op by default.
};
/**
* Called to get the text in the editor, used when switching between editing data and formula.
*/
BaseEditor.prototype.getTextValue = function() {
throw new Error("Not Implemented");
};
/**
* Called to get the position of the cursor in the editor. Used when switching between editing
* data and formula.
*/
BaseEditor.prototype.getCursorPos = function() {
throw new Error("Not Implemented");
};
module.exports = BaseEditor;