diff --git a/src/controllers/handler.js b/src/controllers/handler.js index 14f04d5..d98c7ab 100644 --- a/src/controllers/handler.js +++ b/src/controllers/handler.js @@ -5046,9 +5046,15 @@ export default function luckysheetHandler() { //回退 重做 按钮 $("#luckysheet-icon-undo").click(function (event) { + if ($(this).hasClass('disabled')) { + return; + } controlHistory.redo(event); }); $("#luckysheet-icon-redo").click(function (event) { + if ($(this).hasClass('disabled')) { + return; + } controlHistory.undo(event); }); diff --git a/src/controllers/listener.js b/src/controllers/listener.js index f9d7aba..0aa2b36 100644 --- a/src/controllers/listener.js +++ b/src/controllers/listener.js @@ -7,6 +7,20 @@ import method from '../global/method'; import { getluckysheetfile } from '../methods/get' import { toJson } from '../global/api'; +let undoTimer,redoTimer; +function undoAccessible(len) { + clearTimeout(undoTimer); + undoTimer = setTimeout(() => { + $('#luckysheet-icon-undo')[len ? 'removeClass' : 'addClass']('disabled'); + }, 10); +} +function redoAccessible(len) { + clearTimeout(redoTimer); + redoTimer = setTimeout(() => { + $('#luckysheet-icon-redo')[len ? 'removeClass' : 'addClass']('disabled'); + }, 10); +} + const initListener = function(){ // createProxy(Store,['jfredo']); createProxy(Store, 'jfredo',(target, property, val, receiver)=>{ @@ -14,7 +28,13 @@ const initListener = function(){ // 钩子函数 method.createHookFunction('updated',val) } + undoAccessible(Store.jfredo.length); } ); + createProxy(Store, 'jfundo',(target, property, val, receiver)=>{ + redoAccessible(Store.jfundo.length); + } ); + + createProxy(Store, 'asyncLoad', (target, property, val, receiver)=>{ if(property === 'length' && val === 0){ diff --git a/src/controllers/toolbar.js b/src/controllers/toolbar.js index 65c4ed9..af3b390 100644 --- a/src/controllers/toolbar.js +++ b/src/controllers/toolbar.js @@ -106,7 +106,7 @@ export function createToolbarHtml() { const fontarray = locale().fontarray; const defaultFmtArray = locale().defaultFmt; const htmlMap = { - undo: `
@@ -120,7 +120,7 @@ export function createToolbarHtml() {
`, - redo: `
diff --git a/src/css/luckysheet-core.css b/src/css/luckysheet-core.css index 96fb6fa..de178ca 100644 --- a/src/css/luckysheet-core.css +++ b/src/css/luckysheet-core.css @@ -7352,3 +7352,8 @@ fieldset[disabled] .btn-danger.focus { white-space: nowrap; } +#luckysheet-icon-undo.disabled, +#luckysheet-icon-redo.disabled { + cursor: default; + opacity: .4; +} \ No newline at end of file