本文整理匯總了TypeScript中@ephox/alloy.Memento類的典型用法代碼示例。如果您正苦於以下問題:TypeScript Memento類的具體用法?TypeScript Memento怎麽用?TypeScript Memento使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Memento類的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: function
const field = function (name, placeholder) {
const inputSpec = Memento.record(Input.sketch({
placeholder,
onSetValue (input, data) {
// If the value changes, inform the container so that it can update whether the "x" is visible
AlloyTriggers.emit(input, NativeEvents.input());
},
inputBehaviours: Behaviour.derive([
Composing.config({
find: Option.some
}),
Tabstopping.config({ }),
Keying.config({
mode: 'execution'
})
]),
selectOnFocus: false
}));
const buttonSpec = Memento.record(
Button.sketch({
dom: UiDomFactory.dom('<button class="${prefix}-input-container-x ${prefix}-icon-cancel-circle ${prefix}-icon"></button>'),
action (button) {
const input = inputSpec.get(button);
Representing.setValue(input, '');
}
})
);
return {
name,
spec: Container.sketch({
dom: UiDomFactory.dom('<div class="${prefix}-input-container"></div>'),
components: [
inputSpec.asSpec(),
buttonSpec.asSpec()
],
containerBehaviours: Behaviour.derive([
Toggling.config({
toggleClass: Styles.resolve('input-container-empty')
}),
Composing.config({
find (comp) {
return Option.some(inputSpec.get(comp));
}
}),
AddEventsBehaviour.config(clearInputBehaviour, [
// INVESTIGATE: Because this only happens on input,
// it won't reset unless it has an initial value
AlloyEvents.run(NativeEvents.input(), function (iContainer) {
const input = inputSpec.get(iContainer);
const val = Representing.getValue(input);
const f = val.length > 0 ? Toggling.off : Toggling.on;
f(iContainer);
})
])
])
})
};
};
示例2: setButtonEnabled
const renderSideBar = (providersBackstage: UiFactoryBackstageProviders) => {
const updateButtonUndoStates = (anyInSystem: AlloyComponent, undoEnabled: boolean, redoEnabled: boolean): void => {
memUndo.getOpt(anyInSystem).each((undo) => {
setButtonEnabled(undo, undoEnabled);
});
memRedo.getOpt(anyInSystem).each((redo) => {
setButtonEnabled(redo, redoEnabled);
});
};
const memUndo = Memento.record(
createButton('Undo', 'undo', true, (button) => {
AlloyTriggers.emitWith(button, ImageToolsEvents.internal.undo(), {
direction: 1
});
}, providersBackstage)
);
const memRedo = Memento.record(
createButton('Redo', 'redo', true, (button) => {
AlloyTriggers.emitWith(button, ImageToolsEvents.internal.redo(), {
direction: 1
});
}, providersBackstage)
);
const container = Container.sketch({
dom: {
tag: 'div',
classes: [ 'tox-image-tools__toolbar', 'tox-image-tools__sidebar']
},
components: [
memUndo.asSpec(),
memRedo.asSpec(),
createButton('Zoom in', 'zoom-in', false, (button) => {
AlloyTriggers.emitWith(button, ImageToolsEvents.internal.zoom(), {
direction: 1
});
}, providersBackstage),
createButton('Zoom out', 'zoom-out', false, (button) => {
AlloyTriggers.emitWith(button, ImageToolsEvents.internal.zoom(), {
direction: -1
});
}, providersBackstage)
]
});
return {
container,
updateButtonUndoStates
};
};
示例3: renderBodyPanel
const checkboxSpec = (() => {
const memBodyPanel = Memento.record(
renderBodyPanel({
items: [
{ type: 'checkbox', name: 'checked', label: 'Checked' },
{ type: 'checkbox', name: 'unchecked', label: 'Unchecked' }
]
}, {
shared: sharedBackstage
})
);
return {
dom: {
tag: 'div'
},
components: [
memBodyPanel.asSpec(),
],
events: AlloyEvents.derive([
AlloyEvents.runOnAttached((component) => {
const body = memBodyPanel.get(component);
Representing.setValue(body, {
checked: true,
unchecked: false
});
})
])
};
})();
示例4: function
const sketch = function (editor): SketchSpec {
const pickerDom = {
tag: 'input',
attributes: { accept: 'image/*', type: 'file', title: '' },
// Visibility hidden so that it cannot be seen, and position absolute so that it doesn't
// disrupt the layout
styles: { visibility: 'hidden', position: 'absolute' }
};
const memPicker = Memento.record({
dom: pickerDom,
events: AlloyEvents.derive([
// Stop the event firing again at the button level
AlloyEvents.cutter(NativeEvents.click()),
AlloyEvents.run(NativeEvents.change(), function (picker, simulatedEvent) {
extractBlob(simulatedEvent).each(function (blob) {
addImage(editor, blob);
});
})
])
});
return Button.sketch({
dom: Buttons.getToolbarIconButton('image', editor),
components: [
memPicker.asSpec()
],
action (button) {
const picker = memPicker.get(button);
// Trigger a dom click for the file input
picker.element().dom().click();
}
});
};
示例5: renderInsertTableMenuItem
export function renderInsertTableMenuItem(spec: Menu.FancyMenuItem): ItemTypes.WidgetItemSpec {
const numRows = 10;
const numColumns = 10;
const sizeLabelId = Id.generate('size-label');
const cells = makeCells(sizeLabelId, numRows, numColumns);
const memLabel = Memento.record({
dom: {
tag: 'span',
classes: ['tox-insert-table-picker__label'],
attributes: {
id: sizeLabelId
}
},
components: [GuiFactory.text('0x0')],
behaviours: Behaviour.derive([
Replacing.config({})
])
});
return {
type: 'widget',
data: { value: Id.generate('widget-id')},
dom: {
tag: 'div',
classes: ['tox-fancymenuitem'],
},
autofocus: true,
components: [ItemWidget.parts().widget({
dom: {
tag: 'div',
classes: ['tox-insert-table-picker']
},
components: makeComponents(cells).concat(memLabel.asSpec()),
behaviours: Behaviour.derive([
AddEventsBehaviour.config('insert-table-picker', [
AlloyEvents.runWithTarget<CellEvent>(cellOverEvent, (c, t, e) => {
const row = e.event().row();
const col = e.event().col();
selectCells(cells, row, col, numRows, numColumns);
Replacing.set(memLabel.get(c), [makeLabelText(row, col)]);
}),
AlloyEvents.runWithTarget<CellEvent>(cellExecuteEvent, (c, _, e) => {
spec.onAction({numRows: e.event().row() + 1, numColumns: e.event().col() + 1});
AlloyTriggers.emit(c, SystemEvents.sandboxClose());
})
]),
Keying.config({
initSize: {
numRows,
numColumns
},
mode: 'flatgrid',
selector: '[role="button"]'
})
])
})]
};
}
示例6:
const footerButtons: DialogMemButton[] = Arr.map(data.buttons, (button) => {
const memButton = Memento.record(makeButton(button, providersBackstage));
return {
name: button.name,
align: button.align,
memento: memButton
};
});
示例7:
const createIconButton = (icon: string, tooltip: string, action: (button: AlloyComponent) => void, disabled: boolean): Memento.MementoRecord => {
return Memento.record(renderIconButton({
name: icon,
icon: Option.some(icon),
tooltip: Option.some(tooltip),
disabled
}, action, providersBackstage));
};
示例8: renderToolbar
const renderContextForm = (ctx: Toolbar.ContextForm, backstage: UiFactoryBackstage) => {
// Cannot use the FormField.sketch, because the DOM structure doesn't have a wrapping group
const inputAttributes = ctx.label.fold(
() => ({ }),
(label) => ({ 'aria-label': label })
);
const memInput = Memento.record(
Input.sketch({
inputClasses: [ 'tox-toolbar-textfield', 'tox-toolbar-nav-js' ],
data: ctx.initValue(),
inputAttributes,
selectOnFocus: true,
inputBehaviours: Behaviour.derive([
Keying.config({
mode: 'special',
onEnter: (input) => {
return commands.findPrimary(input).map((primary) => {
AlloyTriggers.emitExecute(primary);
return true;
});
},
// These two lines need to be tested. They are about left and right bypassing
// any keyboard handling, and allowing left and right to be processed by the input
// Maybe this should go in an alloy sketch for Input?
onLeft: (comp, se) => {
se.cut();
return Option.none();
},
onRight: (comp, se) => {
se.cut();
return Option.none();
}
})
])
})
);
const commands = generate(memInput, ctx.commands, backstage.shared.providers);
return renderToolbar({
uid: Id.generate('context-toolbar'),
initGroups: [
{
title: Option.none(),
items: [ memInput.asSpec() ]
},
{
title: Option.none(),
items: commands.asSpecs() as AlloySpec[]
}
],
onEscape: Option.none,
cyclicKeying: true,
backstage,
getSink: () => Result.error('')
});
};