本文整理匯總了TypeScript中@ephox/alloy.SystemEvents.tapOrClick方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript SystemEvents.tapOrClick方法的具體用法?TypeScript SystemEvents.tapOrClick怎麽用?TypeScript SystemEvents.tapOrClick使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@ephox/alloy.SystemEvents
的用法示例。
在下文中一共展示了SystemEvents.tapOrClick方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1:
const makeCell = (row, col, labelId) => {
const emitCellOver = (c) => AlloyTriggers.emitWith(c, cellOverEvent, {row, col} );
const emitExecute = (c) => AlloyTriggers.emitWith(c, cellExecuteEvent, {row, col} );
return GuiFactory.build({
dom: {
tag: 'div',
attributes: {
role: 'button',
['aria-labelledby']: labelId
}
},
behaviours: Behaviour.derive([
AddEventsBehaviour.config('insert-table-picker-cell', [
AlloyEvents.run(NativeEvents.mouseover(), Focusing.focus),
AlloyEvents.run(SystemEvents.execute(), emitExecute),
AlloyEvents.run(SystemEvents.tapOrClick(), emitExecute)
]),
Toggling.config({
toggleClass: 'tox-insert-table-picker__selected',
toggleOnExecute: false
}),
Focusing.config({onFocus: emitCellOver})
])
});
};
示例2: replaceCountText
export const renderWordCount = (editor: Editor, providersBackstage: UiFactoryBackstageProviders): SimpleSpec => {
const replaceCountText = (comp, count, mode) => Replacing.set(comp, [ GuiFactory.text(providersBackstage.translate(['{0} ' + mode, count[mode]])) ]);
return Button.sketch({
dom: {
// The tag for word count was changed to 'button' as Jaws does not read out spans.
// Word count is just a toggle and changes modes between words and characters.
tag: 'button',
classes: [ 'tox-statusbar__wordcount' ]
},
components: [ ],
buttonBehaviours: Behaviour.derive([
Tabstopping.config({ }),
Replacing.config({ }),
Representing.config({
store: {
mode: 'memory',
initialValue: {
mode: WordCountMode.Words,
count: { words: 0, characters: 0 }
}
}
}),
AddEventsBehaviour.config('wordcount-events', [
AlloyEvents.run(SystemEvents.tapOrClick(), (comp) => {
const currentVal = Representing.getValue(comp);
const newMode = currentVal.mode === WordCountMode.Words ? WordCountMode.Characters : WordCountMode.Words;
Representing.setValue(comp, { mode: newMode, count: currentVal.count });
replaceCountText(comp, currentVal.count, newMode);
}),
AlloyEvents.runOnAttached((comp) => {
editor.on('wordCountUpdate', (e) => {
const { mode } = Representing.getValue(comp);
Representing.setValue(comp, { mode, count: e.wordCount });
replaceCountText(comp, e.wordCount, mode);
});
})
])
]),
eventOrder: {
[SystemEvents.tapOrClick()]: [ 'wordcount-events', 'alloy.base.behaviour' ]
}
});
};
示例3: return
export const renderDropZone = (spec: Types.DropZone.DropZone, providersBackstage: UiFactoryBackstageProviders): SimpleSpec => {
// TODO: Consider moving to alloy
const stopper: AlloyEvents.EventRunHandler<SugarEvent> = (_: AlloyComponent, se: SimulatedEvent<SugarEvent>): void => {
se.stop();
};
// TODO: Consider moving to alloy
const sequence = (actions: Array<AlloyEvents.EventRunHandler<SugarEvent>>): AlloyEvents.EventRunHandler<SugarEvent> => {
return (comp, se) => {
Arr.each(actions, (a) => {
a(comp, se);
});
};
};
const onDrop: AlloyEvents.EventRunHandler<SugarEvent> = (comp, se) => {
if (! Disabling.isDisabled(comp)) {
const transferEvent = se.event().raw() as DragEvent;
handleFiles(comp, transferEvent.dataTransfer.files);
}
};
const onSelect = (component, simulatedEvent) => {
const files = simulatedEvent.event().raw().target.files;
handleFiles(component, files);
};
const handleFiles = (component, files: FileList) => {
Representing.setValue(component, filterByExtension(files));
AlloyTriggers.emitWith(component, formChangeEvent, { name: spec.name });
};
const memInput = Memento.record(
{
dom: {
tag: 'input',
attributes: {
type: 'file',
accept: 'image/*'
},
styles: {
display: 'none'
}
},
behaviours: Behaviour.derive([
AddEventsBehaviour.config('input-file-events', [
AlloyEvents.cutter(SystemEvents.tapOrClick())
])
])
}
);
const renderField = (s) => {
return {
uid: s.uid,
dom: {
tag: 'div',
classes: [ 'tox-dropzone-container' ]
},
behaviours: Behaviour.derive([
RepresentingConfigs.memory([ ]),
ComposingConfigs.self(),
Disabling.config({}),
Toggling.config({
toggleClass: 'dragenter',
toggleOnExecute: false
}),
AddEventsBehaviour.config('dropzone-events', [
AlloyEvents.run('dragenter', sequence([ stopper, Toggling.toggle ])),
AlloyEvents.run('dragleave', sequence([ stopper, Toggling.toggle ])),
AlloyEvents.run('dragover', stopper),
AlloyEvents.run('drop', sequence([ stopper, onDrop ])),
AlloyEvents.run(NativeEvents.change(), onSelect)
]),
]),
components: [
{
dom: {
tag: 'div',
classes: [ 'tox-dropzone' ],
styles: {}
},
components: [
{
dom: {
tag: 'p',
innerHtml: providersBackstage.translate('Drop an image here')
}
},
Button.sketch({
dom: {
tag: 'button',
innerHtml: providersBackstage.translate('Browse for an image'),
styles: {
position: 'relative'
},
classes: [ 'tox-button', 'tox-button--secondary']
},
components: [
//.........這裏部分代碼省略.........
示例4: renderLabel
export const renderCollection = (spec: Types.Collection.Collection, providersBackstage: UiFactoryBackstageProviders): SketchSpec => {
// DUPE with TextField.
const pLabel = spec.label.map((label) => renderLabel(label, providersBackstage));
const runOnItem = (f: (c: AlloyComponent, tgt: Element, itemValue: string) => void) => <T extends EventFormat>(comp: AlloyComponent, se: SimulatedEvent<T>) => {
SelectorFind.closest(se.event().target(), '[data-collection-item-value]').each((target) => {
f(comp, target, Attr.get(target, 'data-collection-item-value'));
});
};
const escapeAttribute = (ch) => {
if (ch === '"') { return '"'; }
return ch;
};
const setContents = (comp, items) => {
const htmlLines = Arr.map(items, (item) => {
const textContent = spec.columns === 1 ? `<div class="tox-collection__item-label">${item.text}</div>` : '';
const iconContent = `<div class="tox-collection__item-icon">${item.icon}</div>`;
// Replacing the hyphens and underscores in collection items with spaces
// to ensure the screen readers pronounce the words correctly.
// This is only for aria purposes. Emoticon and Special Character names will still use _ and - for autocompletion.
const mapItemName = {
'_': ' ',
' - ': ' ',
'-': ' '
};
// Title attribute is added here to provide tooltips which might be helpful to sighted users.
// Using aria-label here overrides the Apple description of emojis and special characters in Mac/ MS description in Windows.
// But if only the title attribute is used instead, the names are read out twice. i.e., the description followed by the item.text.
const ariaLabel = item.text.replace(/\_| \- |\-/g, (match) => {
return mapItemName[match];
});
return `<div class="tox-collection__item" tabindex="-1" data-collection-item-value="${escapeAttribute(item.value)}" title="${ariaLabel}" aria-label="${ariaLabel}">${iconContent}${textContent}</div>`;
});
const chunks = spec.columns > 1 && spec.columns !== 'auto' ? Arr.chunk(htmlLines, spec.columns) : [ htmlLines ];
const html = Arr.map(chunks, (ch) => {
return `<div class="tox-collection__group">${ch.join('')}</div>`;
});
Html.set(comp.element(), html.join(''));
};
const collectionEvents = [
AlloyEvents.run<SugarEvent>(NativeEvents.mouseover(), runOnItem((comp, tgt) => {
Focus.focus(tgt);
})),
AlloyEvents.run<SugarEvent>(SystemEvents.tapOrClick(), runOnItem((comp, tgt, itemValue) => {
AlloyTriggers.emitWith(comp, formActionEvent, {
name: spec.name,
value: itemValue
});
})),
AlloyEvents.run(NativeEvents.focusin(), runOnItem((comp, tgt, itemValue) => {
SelectorFind.descendant(comp.element(), '.' + ItemClasses.activeClass).each((currentActive) => {
Class.remove(currentActive, ItemClasses.activeClass);
});
Class.add(tgt, ItemClasses.activeClass);
})),
AlloyEvents.run(NativeEvents.focusout(), runOnItem((comp, tgt, itemValue) => {
SelectorFind.descendant(comp.element(), '.' + ItemClasses.activeClass).each((currentActive) => {
Class.remove(currentActive, ItemClasses.activeClass);
});
})),
AlloyEvents.runOnExecute(runOnItem((comp, tgt, itemValue) => {
AlloyTriggers.emitWith(comp, formActionEvent, {
name: spec.name,
value: itemValue
});
}))
];
const pField = AlloyFormField.parts().field({
dom: {
tag: 'div',
// FIX: Read from columns
classes: [ 'tox-collection' ].concat(spec.columns !== 1 ? [ 'tox-collection--grid' ] : [ 'tox-collection--list' ])
},
components: [ ],
factory: { sketch: Fun.identity },
behaviours: Behaviour.derive([
Replacing.config({ }),
Representing.config({
store: {
mode: 'memory',
initialValue: [ ]
},
onSetValue: (comp, items) => {
setContents(comp, items);
if (spec.columns === 'auto') {
detectSize(comp, 5, 'tox-collection__item').each(({ numRows, numColumns }) => {
Keying.setGridSize(comp, numRows, numColumns);
});
}
AlloyTriggers.emit(comp, formResizeEvent);
//.........這裏部分代碼省略.........