本文整理汇总了TypeScript中@ephox/alloy.Dropdown.sketch方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Dropdown.sketch方法的具体用法?TypeScript Dropdown.sketch怎么用?TypeScript Dropdown.sketch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类@ephox/alloy.Dropdown
的用法示例。
在下文中一共展示了Dropdown.sketch方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: createPartialChoiceMenu
export const renderPanelButton = (spec: SwatchPanelButtonFoo, sharedBackstage: UiFactoryBackstageShared): SketchSpec => {
return AlloyDropdown.sketch({
dom: spec.dom,
components: spec.components,
toggleClass: 'mce-active',
dropdownBehaviours: Behaviour.derive([
Unselecting.config({}),
Tabstopping.config({})
]),
// getHotspot: spec.getHotspot,
layouts: spec.layouts,
sandboxClasses: ['tox-dialog__popups'],
lazySink: sharedBackstage.getSink,
fetch: (comp) => {
return Future.nu((callback) => {
return spec.fetch(callback);
}).map((items) => {
return Option.from(createTieredDataFrom(
Merger.deepMerge(
createPartialChoiceMenu(
Id.generate('menu-value'),
items,
(value) => {
spec.onItemAction(comp, value);
},
spec.columns,
spec.presets,
ItemResponse.CLOSE_ON_EXECUTE,
// No colour is ever selected on opening
() => false,
sharedBackstage.providers
),
{
movement: deriveMenuMovement(spec.columns, spec.presets)
}
)
));
});
},
parts: {
menu: MenuParts.part(false, 1, spec.presets)
}
});
};
示例2: Cell
const renderCommonDropdown = <T>(spec: CommonDropdownSpec<T>, prefix: string, sharedBackstage: UiFactoryBackstageShared): SketchSpec => {
const editorOffCell = Cell(Fun.noop);
const optMemDisplayText = spec.text.map((text) => Memento.record(renderLabel(text, prefix, sharedBackstage.providers)));
const optMemDisplayIcon = spec.icon.map((iconName) => Memento.record(renderReplacableIconFromPack(iconName, sharedBackstage.providers.icons)));
/*
* The desired behaviour here is:
*
* when left or right is pressed, and it isn't associated with expanding or
* collapsing a submenu, then it should navigate to the next menu item, and
* expand it (without highlighting any items in the expanded menu).
* It also needs to close the previous menu
*/
const onLeftOrRightInMenu = (comp: AlloyComponent, se: SimulatedEvent<SugarEvent>) => {
// The originating dropdown is stored on the sandbox itself.
const dropdown: AlloyComponent = Representing.getValue(comp);
// Focus the dropdown. Current workaround required to make flow recognise the current focus
Focusing.focus(dropdown);
AlloyTriggers.emitWith(dropdown, 'keydown', {
raw: se.event().raw()
});
// Close the dropdown
AlloyDropdown.close(dropdown);
return Option.some(true);
};
const role = spec.role.fold(() => ({ }), (role) => ({ role }));
const tooltipAttributes = spec.tooltip.fold(
() => ({}),
(tooltip) => {
const translatedTooltip = sharedBackstage.providers.translate(tooltip);
return {
'title': translatedTooltip, // TODO: tooltips AP-213
'aria-label': translatedTooltip
};
}
);
const memDropdown = Memento.record(
AlloyDropdown.sketch({
...role,
dom: {
tag: 'button',
classes: [ prefix, `${prefix}--select` ].concat(Arr.map(spec.classes, (c) => `${prefix}--${c}`)),
attributes: {
...tooltipAttributes
}
},
components: componentRenderPipeline([
optMemDisplayIcon.map((mem) => mem.asSpec()),
optMemDisplayText.map((mem) => mem.asSpec()),
Option.some({
dom: {
tag: 'div',
classes: [ `${prefix}__select-chevron` ],
innerHtml: Icons.get('chevron-down', sharedBackstage.providers.icons)
}
})
]),
matchWidth: true,
useMinWidth: true,
// TODO: Not quite working. Can still get the button focused.
dropdownBehaviours: Behaviour.derive([
...spec.dropdownBehaviours,
DisablingConfigs.button(spec.disabled),
Unselecting.config({ }),
Replacing.config({ }),
AddEventsBehaviour.config('dropdown-events', [
onControlAttached(spec, editorOffCell),
onControlDetached(spec, editorOffCell)
]),
AddEventsBehaviour.config('menubutton-update-display-text', [
AlloyEvents.run<UpdateMenuTextEvent>(updateMenuText, (comp, se) => {
optMemDisplayText.bind((mem) => mem.getOpt(comp)).each((displayText) => {
Replacing.set(displayText, [ GuiFactory.text(sharedBackstage.providers.translate(se.event().text())) ] );
});
}),
AlloyEvents.run<UpdateMenuIconEvent>(updateMenuIcon, (comp, se) => {
optMemDisplayIcon.bind((mem) => mem.getOpt(comp)).each((displayIcon) => {
Replacing.set(displayIcon, [ renderReplacableIconFromPack(se.event().icon(), sharedBackstage.providers.icons) ] );
});
})
])
]),
eventOrder: Merger.deepMerge(toolbarButtonEventOrder, {
mousedown: [ 'focusing', 'alloy.base.behaviour', 'item-type-events', 'normal-dropdown-events' ]
}),
sandboxBehaviours: Behaviour.derive([
Keying.config({
mode: 'special',
onLeft: onLeftOrRightInMenu,
onRight: onLeftOrRightInMenu
})
]),
//.........这里部分代码省略.........