mirror of
https://github.com/codex-team/editor.js
synced 2024-06-03 14:32:33 +02:00
ff91466b14
* chore(block-tune-toggler): toggler moved to the left (draft) * toolbox ui updated * fixd caret jumpling, improved some styles * toolbar moving by block-hover - UI module triggers 'block-hovered' event - Toolbar uses 'block-hovered' for appearing - `currentBlock` setter added to the BlockManager - (reactangle-selection): the throttling added to the mousemove and scroll handlers - `getBlockIndex` method added to the Api - (api-blocks): toolbar moving logic removed from `blocks.move()` and `blocks.swap()` methods. Instead, MoveUp and MoveDown tunes uses Toolbar API * the dark-theme to the example-dev.html * positioning improved * fix(rectangle-selection): first click after RS does not clears selection state * toolbox position fixed * the toolbox module became a standalone class - Toolbox became a standalone class from the editor module. It can be accessed only via the owner (the Toolbar module) - (api.blocks) the insert() method now has the `replace` param. Also, it returns inserted Block API now. * new(api.listeners): `on()` now returns the listener id. The new `offById()` method added * fix bug with Tab pressing on hovered but not focused block * mobile version improved * upd example dev * small updaets * add nested-list * linting * (api.toolbar): `toggleBlockSettings` now fires toggling event with the same state * EventDispatcher used instead of callbacks for the Toolbox * UIApi added * fix ci * git submodules removed from the ci flow * add paragraph submodule to the ci flow * Update CHANGELOG.md * Update package.json * use ubuntu-latest for chrome ci
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { Listeners } from '../../../../types/api';
|
|
import Module from '../../__module';
|
|
|
|
/**
|
|
* @class ListenersAPI
|
|
* Provides with methods working with DOM Listener
|
|
*/
|
|
export default class ListenersAPI extends Module {
|
|
/**
|
|
* Available methods
|
|
*
|
|
* @returns {Listeners}
|
|
*/
|
|
public get methods(): Listeners {
|
|
return {
|
|
on: (element: HTMLElement, eventType, handler, useCapture): string => this.on(element, eventType, handler, useCapture),
|
|
off: (element, eventType, handler, useCapture): void => this.off(element, eventType, handler, useCapture),
|
|
offById: (id): void => this.offById(id),
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Ads a DOM event listener. Return it's id.
|
|
*
|
|
* @param {HTMLElement} element - Element to set handler to
|
|
* @param {string} eventType - event type
|
|
* @param {() => void} handler - event handler
|
|
* @param {boolean} useCapture - capture event or not
|
|
*/
|
|
public on(element: HTMLElement, eventType: string, handler: () => void, useCapture?: boolean): string {
|
|
return this.listeners.on(element, eventType, handler, useCapture);
|
|
}
|
|
|
|
/**
|
|
* Removes DOM listener from element
|
|
*
|
|
* @param {Element} element - Element to remove handler from
|
|
* @param eventType - event type
|
|
* @param handler - event handler
|
|
* @param {boolean} useCapture - capture event or not
|
|
*/
|
|
public off(element: Element, eventType: string, handler: () => void, useCapture?: boolean): void {
|
|
this.listeners.off(element, eventType, handler, useCapture);
|
|
}
|
|
|
|
/**
|
|
* Removes DOM listener by the listener id
|
|
*
|
|
* @param id - id of the listener to remove
|
|
*/
|
|
public offById(id: string): void {
|
|
this.listeners.offById(id);
|
|
}
|
|
}
|