mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Update ACL save button when formula edit
Summary: In Access Rules, Save button didn't update until clicking-away from formula editor; this sometimes feels buggy. Instead, when editing formula, update state automatically after a 1-second delay. https://gristlabs.getgrist.com/doc/check-ins/p/5#a1.s9.r1798.c24 Test Plan: Adds new nbrowser test Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D3707
This commit is contained in:
parent
6061b67fd9
commit
2aee5d586c
@ -2,6 +2,7 @@ import {setupAceEditorCompletions} from 'app/client/components/AceEditorCompleti
|
|||||||
import {colors} from 'app/client/ui2018/cssVars';
|
import {colors} from 'app/client/ui2018/cssVars';
|
||||||
import * as ace from 'brace';
|
import * as ace from 'brace';
|
||||||
import {dom, DomArg, Observable, styled} from 'grainjs';
|
import {dom, DomArg, Observable, styled} from 'grainjs';
|
||||||
|
import debounce from 'lodash/debounce';
|
||||||
|
|
||||||
export interface ACLFormulaOptions {
|
export interface ACLFormulaOptions {
|
||||||
initialValue: string;
|
initialValue: string;
|
||||||
@ -58,6 +59,10 @@ export function aclFormulaEditor(options: ACLFormulaOptions) {
|
|||||||
// Save on blur.
|
// Save on blur.
|
||||||
editor.on("blur", () => options.setValue(editor.getValue()));
|
editor.on("blur", () => options.setValue(editor.getValue()));
|
||||||
|
|
||||||
|
// Save changes every 1 second
|
||||||
|
const save = debounce(() => options.setValue(editor.getValue()), 1000);
|
||||||
|
editor.on("change", save);
|
||||||
|
|
||||||
// Blur (and save) on Enter key.
|
// Blur (and save) on Enter key.
|
||||||
editor.commands.addCommand({
|
editor.commands.addCommand({
|
||||||
name: 'onEnter',
|
name: 'onEnter',
|
||||||
@ -81,6 +86,7 @@ export function aclFormulaEditor(options: ACLFormulaOptions) {
|
|||||||
// anyway, listen to the mousedown event in the capture phase.
|
// anyway, listen to the mousedown event in the capture phase.
|
||||||
dom.on('mousedown', () => { editor.focus(); }, {useCapture: true}),
|
dom.on('mousedown', () => { editor.focus(); }, {useCapture: true}),
|
||||||
dom.onDispose(() => editor.destroy()),
|
dom.onDispose(() => editor.destroy()),
|
||||||
|
dom.onDispose(() => save.cancel()),
|
||||||
editorElem,
|
editorElem,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user