armisa-models
Version:
models of armisa!
42 lines (34 loc) • 1.27 kB
text/typescript
import { Tabbing } from ".";
import { ElementsOfFormFactory } from "..";
import { MainStateManager } from "../../../MainStateManager";
interface ITabbing {
refElement: React.RefObject<HTMLElement>;
tabIndex?: number;
}
export interface IFocusAbleGridEditFactory {
mainStateManager: MainStateManager;
any: any;
elementsOfForm: ElementsOfFormFactory;
tabbing: ITabbing;
}
export class GridEditTabbing {
public focusAbleGridEdit: IFocusAbleGridEditFactory[];
constructor(
public tabbing: Tabbing,
) {
this.focusAbleGridEdit = [];
}
public focus = () => {
const find = this.focusAbleGridEdit.find(i => i.tabbing.tabIndex === this.tabbing.activeElementIndex);
if (find && find.tabbing && find.tabbing.refElement && find.tabbing.refElement.current) {
find.tabbing.refElement.current.focus();
}
}
public isGridActiveControl = (): boolean => {
if (this.focusAbleGridEdit && this.focusAbleGridEdit.length > 0) {
const activeTabIndexs = this.focusAbleGridEdit.map(i => i.tabbing.tabIndex);
return activeTabIndexs.includes(this.tabbing.activeElementIndex);
}
return false;
}
}