本文整理匯總了TypeScript中@ephox/alloy.Menu類的典型用法代碼示例。如果您正苦於以下問題:TypeScript Menu類的具體用法?TypeScript Menu怎麽用?TypeScript Menu使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Menu類的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: preprocessCollection
const forCollection = (columns: number | 'auto', initItems, hasIcons: boolean = true) => {
return {
dom: {
tag: 'div',
classes: [ 'tox-menu', 'tox-collection' ].concat(columns === 1 ? [ 'tox-collection--list' ] : [ 'tox-collection--grid' ])
},
components: [
// TODO: Clean up code and test atomically
AlloyMenu.parts().items({
preprocess: (items) => {
if (columns !== 'auto' && columns > 1) {
return chunk<AlloySpec>({
tag: 'div',
classes: [ 'tox-collection__group' ]
}, columns)(items);
} else {
return preprocessCollection(items, (item, i) => {
return initItems[i].type === 'separator';
});
}
}
})
]
};
};
示例2: chunk
const forSwatch = (columns: number | 'auto') => {
return {
dom: {
tag: 'div',
classes: [ 'tox-menu', 'tox-swatches-menu' ]
},
components: [
{
dom: {
tag: 'div',
classes: [ 'tox-swatches' ]
},
components: [
AlloyMenu.parts().items({
preprocess: columns !== 'auto' ? chunk(
{
tag: 'div',
classes: [ 'tox-swatches__row' ]
},
columns
) : Fun.identity
})
]
}
]
};
};
示例3: menuDom
export const renderWidgetMenu = (spec: WidgetMenuFoo): Partial<MenuTypes.MenuSpec> => {
const memWidget = Memento.record(spec.widget as SimpleOrSketchSpec);
return {
value: spec.value,
items: [
{
type: 'widget',
data: {
// FIX: Widgets.
value: Id.generate('widget-id')
},
autofocus: true,
// FIX: widget classes.
dom: {
tag: 'div'
},
components: [
ItemWidget.parts().widget(
{
dom: {
tag: 'div',
classes: [ 'tox-menu-widget-js' ]
},
components: [ memWidget.asSpec() ],
behaviours: Behaviour.derive([
Keying.config({
mode: 'special',
focusIn: (comp) => {
memWidget.getOpt(comp).each(Keying.focusIn);
return Option.some(true);
}
})
])
}
)
],
}
],
dom: menuDom(false, 1, 'normal'),
components: [
Menu.parts().items({ })
]
};
};
示例4: renderColorSwatchItem
export function renderColorSwatchItem(spec: Menu.FancyMenuItem, backstage: UiFactoryBackstage): ItemTypes.WidgetItemSpec {
const items = ColorSwatch.getColors(backstage.colorinput.getColors(), backstage.colorinput.hasCustomColors());
const columns = backstage.colorinput.getColorCols();
const presets = 'color';
const menuSpec = createPartialChoiceMenu(
Id.generate('menu-value'),
items,
(value) => {
spec.onAction({ value });
},
columns,
presets,
ItemResponse.CLOSE_ON_EXECUTE,
() => false,
backstage.shared.providers
);
const widgetSpec = Merger.deepMerge({
...menuSpec,
markers: MenuParts.markers(presets),
movement: deriveMenuMovement(columns, presets)
});
return {
type: 'widget',
data: { value: Id.generate('widget-id')},
dom: {
tag: 'div',
classes: [ 'tox-fancymenuitem' ],
},
autofocus: true,
components: [
ItemWidget.parts().widget(AlloyMenu.sketch(widgetSpec))
]
};
}
示例5: getCombinedItems
lookupInfo.lookupData.then((lookupData) => {
const combinedItems = getCombinedItems(lookupInfo.triggerChar, lookupData);
// Only open the autocompleter if there are items to show
if (combinedItems.length > 0) {
const columns: Types.ColumnTypes = Options.findMap(lookupData, (ld) => Option.from(ld.columns)).getOr(1);
InlineView.showAt(
autocompleter,
{
anchor: 'selection',
root: Element.fromDom(editor.getBody()),
getSelection: () => {
return Option.some({
start: () => Element.fromDom(lookupInfo.range.startContainer),
soffset: () => lookupInfo.range.startOffset,
finish: () => Element.fromDom(lookupInfo.range.endContainer),
foffset: () => lookupInfo.range.endOffset
});
}
},
Menu.sketch(
createMenuFrom(
createPartialMenuWithAlloyItems('autocompleter-value', true, combinedItems, columns, 'normal'),
columns,
FocusMode.ContentFocus,
// Use the constant.
'normal'
)
)
);
InlineView.getContent(autocompleter).each(Highlighting.highlightFirst);
} else {
closeIfNecessary();
}
});
示例6: getMenuClasses
};
};
const dom = (hasIcons: boolean, columns: Types.ColumnTypes, presets: Types.PresetTypes) => {
const menuClasses = getMenuClasses(presets);
return {
tag: 'div',
classes: Arr.flatten([
[ menuClasses.menu, `tox-menu-${columns}-column` ],
hasIcons ? [ menuClasses.hasIcons ] : [ ]
])
};
};
const components = [
AlloyMenu.parts().items({ })
];
// NOTE: Up to here.
const part = (hasIcons: boolean, columns: Types.ColumnTypes, presets: Types.PresetTypes): Partial<TieredMenuTypes.TieredMenuSpec> => {
const menuClasses = getMenuClasses(presets);
const d = {
tag: 'div',
classes: Arr.flatten([
[ menuClasses.tieredMenu ]
])
};
return {
dom: d,
markers: markers(presets)
示例7: function
const makeMenu = function (value, items, memMenuThunk, collapsable) {
return {
value,
dom: {
tag: 'div'
},
components: [
Button.sketch({
dom: {
tag: 'div',
classes: [ Styles.resolve('styles-collapser') ]
},
components: collapsable ? [
{
dom: {
tag: 'span',
classes: [ Styles.resolve('styles-collapse-icon') ]
}
},
GuiFactory.text(value)
] : [ GuiFactory.text(value) ],
action (item) {
if (collapsable) {
const comp = memMenuThunk().get(item);
TieredMenu.collapseMenu(comp);
}
}
}),
{
dom: {
tag: 'div',
classes: [ Styles.resolve('styles-menu-items-container') ]
},
components: [
Menu.parts().items({ })
],
behaviours: Behaviour.derive([
AddEventsBehaviour.config('adhoc-scrollable-menu', [
AlloyEvents.runOnAttached(function (component, simulatedEvent) {
Css.set(component.element(), 'overflow-y', 'auto');
Css.set(component.element(), '-webkit-overflow-scrolling', 'touch');
Scrollable.register(component.element());
}),
AlloyEvents.runOnDetached(function (component) {
Css.remove(component.element(), 'overflow-y');
Css.remove(component.element(), '-webkit-overflow-scrolling');
Scrollable.deregister(component.element());
})
])
])
}
],
items,
menuBehaviours: Behaviour.derive([
Transitioning.config({
initialState: 'after',
routes: Transitioning.createTristate('before', 'current', 'after', {
transition: {
property: 'transform',
transitionClass: 'transitioning'
}
})
})
])
};
};