38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import * as ko from "knockout";
|
|
import * as ViewModels from "../Contracts/ViewModels";
|
|
import * as Constants from "../Common/Constants";
|
|
|
|
export abstract class WaitsForTemplateViewModel implements ViewModels.WaitsForTemplate {
|
|
public isTemplateReady: ko.Observable<boolean>;
|
|
|
|
constructor() {
|
|
this.isTemplateReady = ko.observable(false).extend({ rateLimit: 100 });
|
|
}
|
|
|
|
protected onTemplateReady(callback: (isTemplateReady: boolean) => void) {
|
|
this.isTemplateReady.subscribe((value: boolean) => {
|
|
callback(value);
|
|
});
|
|
|
|
document.addEventListener("keydown", function (e: KeyboardEvent) {
|
|
// To trap keyboard focus in AddCollection pane
|
|
let firstFocusableElement = document.getElementById("closeBtnAddCollection");
|
|
let lastFocusableElement = document.getElementById("submitBtnAddCollection");
|
|
var isTabPressed = e.keyCode === Constants.KeyCodes.Tab;
|
|
if (isTabPressed) {
|
|
if (e.shiftKey) {
|
|
/* shift + tab */ if (document.activeElement === firstFocusableElement) {
|
|
lastFocusableElement && lastFocusableElement.focus();
|
|
e.preventDefault();
|
|
}
|
|
} /* tab */ else {
|
|
if (document.activeElement === lastFocusableElement) {
|
|
firstFocusableElement && firstFocusableElement.focus();
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|