Browse Source

fix: undo rodo 不可用时图标灰化

master
cdswyda 4 years ago
parent
commit
ca02b31427
  1. 6
      src/controllers/handler.js
  2. 20
      src/controllers/listener.js
  3. 4
      src/controllers/toolbar.js
  4. 5
      src/css/luckysheet-core.css

6
src/controllers/handler.js

@ -5046,9 +5046,15 @@ export default function luckysheetHandler() {
//回退 重做 按钮 //回退 重做 按钮
$("#luckysheet-icon-undo").click(function (event) { $("#luckysheet-icon-undo").click(function (event) {
if ($this.hasClass('disabled')) {
return;
}
controlHistory.redo(event); controlHistory.redo(event);
}); });
$("#luckysheet-icon-redo").click(function (event) { $("#luckysheet-icon-redo").click(function (event) {
if ($this.hasClass('disabled')) {
return;
}
controlHistory.undo(event); controlHistory.undo(event);
}); });

20
src/controllers/listener.js

@ -7,6 +7,20 @@ import method from '../global/method';
import { getluckysheetfile } from '../methods/get' import { getluckysheetfile } from '../methods/get'
import { toJson } from '../global/api'; 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(){ const initListener = function(){
// createProxy(Store,['jfredo']); // createProxy(Store,['jfredo']);
createProxy(Store, 'jfredo',(target, property, val, receiver)=>{ createProxy(Store, 'jfredo',(target, property, val, receiver)=>{
@ -14,7 +28,13 @@ const initListener = function(){
// 钩子函数 // 钩子函数
method.createHookFunction('updated',val) 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)=>{ createProxy(Store, 'asyncLoad', (target, property, val, receiver)=>{
if(property === 'length' && val === 0){ if(property === 'length' && val === 0){

4
src/controllers/toolbar.js

@ -106,7 +106,7 @@ export function createToolbarHtml() {
const fontarray = locale().fontarray; const fontarray = locale().fontarray;
const defaultFmtArray = locale().defaultFmt; const defaultFmtArray = locale().defaultFmt;
const htmlMap = { const htmlMap = {
undo: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.undo}" undo: `<div class="luckysheet-toolbar-button luckysheet-inline-block disabled" data-tips="${toolbar.undo}"
id="luckysheet-icon-undo" role="button" style="user-select: none;"> id="luckysheet-icon-undo" role="button" style="user-select: none;">
<div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block" <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
style="user-select: none;"> style="user-select: none;">
@ -120,7 +120,7 @@ export function createToolbarHtml() {
</div> </div>
</div> </div>
</div>`, </div>`,
redo: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.redo}" redo: `<div class="luckysheet-toolbar-button luckysheet-inline-block disabled" data-tips="${toolbar.redo}"
id="luckysheet-icon-redo" role="button" style="user-select: none;"> id="luckysheet-icon-redo" role="button" style="user-select: none;">
<div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block" <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
style="user-select: none;"> style="user-select: none;">

5
src/css/luckysheet-core.css

@ -7352,3 +7352,8 @@ fieldset[disabled] .btn-danger.focus {
white-space: nowrap; white-space: nowrap;
} }
#luckysheet-icon-undo.disabled,
#luckysheet-icon-redo.disabled {
cursor: default;
opacity: .4;
}
Loading…
Cancel
Save