本文整理汇总了TypeScript中@ephox/alloy.SystemEvents.focusShifted方法的典型用法代码示例。如果您正苦于以下问题:TypeScript SystemEvents.focusShifted方法的具体用法?TypeScript SystemEvents.focusShifted怎么用?TypeScript SystemEvents.focusShifted使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类@ephox/alloy.SystemEvents
的用法示例。
在下文中一共展示了SystemEvents.focusShifted方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: function
const factory: UiSketcher.SingleSketchFactory<SilverMenubarDetail, SilverMenubarSpec> = function (detail, spec) {
const setMenus = (comp: AlloyComponent, menus: MenubarItemSpec[]) => {
const newMenus = Arr.map(menus, (m) => {
const buttonSpec = {
type: 'menubutton',
text: m.text,
fetch: (callback) => {
callback(m.getItems());
}
};
// Convert to an internal bridge spec
const internal = Toolbar.createMenuButton(buttonSpec).mapError((errInfo) => ValueSchema.formatError(errInfo)).getOrDie();
return renderMenuButton(internal,
MenuButtonClasses.Button,
spec.backstage,
// https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-2/menubar-2.html
Option.some('menuitem')
);
});
Replacing.set(comp, newMenus);
};
const apis = {
focus: Keying.focusIn,
setMenus
};
return {
uid: detail.uid,
dom: detail.dom,
components: [ ],
behaviours: Behaviour.derive([
Replacing.config({ }),
AddEventsBehaviour.config('menubar-events', [
AlloyEvents.runOnAttached(function (component) {
detail.onSetup(component);
}),
AlloyEvents.run(NativeEvents.mouseover(), (comp, se) => {
// TODO: Use constants
SelectorFind.descendant(comp.element(), '.' + MenuButtonClasses.Active).each((activeButton) => {
SelectorFind.closest(se.event().target(), '.' + MenuButtonClasses.Button).each((hoveredButton) => {
if (! Compare.eq(activeButton, hoveredButton)) {
// Now, find the components, and expand the hovered one, and close the active one
comp.getSystem().getByDom(activeButton).each((activeComp) => {
comp.getSystem().getByDom(hoveredButton).each((hoveredComp) => {
Dropdown.expand(hoveredComp);
Dropdown.close(activeComp);
Focusing.focus(hoveredComp);
});
});
}
});
});
}),
AlloyEvents.run<SystemEvents.AlloyFocusShiftedEvent>(SystemEvents.focusShifted(), (comp, se) => {
se.event().prevFocus().bind((prev) => comp.getSystem().getByDom(prev).toOption()).each((prev) => {
se.event().newFocus().bind((nu) => comp.getSystem().getByDom(nu).toOption()).each((nu) => {
if (Dropdown.isOpen(prev)) {
Dropdown.expand(nu);
Dropdown.close(prev);
}
});
});
})
]),
Keying.config({
mode: 'flow',
selector: '.' + MenuButtonClasses.Button,
onEscape: (comp) => {
detail.onEscape(comp);
return Option.some(true);
}
}),
Tabstopping.config({ })
]),
apis,
domModification: {
attributes: {
role: 'menubar'
}
}
};
};