Browse Source

Add block events callbacks

fix-improve-data-coll-up
Artur Arseniev 10 months ago
parent
commit
a19e7c10a3
  1. 4
      packages/core/src/block_manager/index.ts
  2. 24
      packages/core/src/block_manager/types.ts

4
packages/core/src/block_manager/index.ts

@ -36,7 +36,7 @@ import Block, { BlockProperties } from './model/Block';
import Blocks from './model/Blocks'; import Blocks from './model/Blocks';
import Categories from '../abstract/ModuleCategories'; import Categories from '../abstract/ModuleCategories';
import Category, { getItemsByCategory } from '../abstract/ModuleCategory'; import Category, { getItemsByCategory } from '../abstract/ModuleCategory';
import { BlocksByCategory, BlocksEvents } from './types'; import { BlocksByCategory, BlocksCustomData, BlocksEvents } from './types';
import BlocksView from './view/BlocksView'; import BlocksView from './view/BlocksView';
export type BlockEvent = `${BlocksEvents}`; export type BlockEvent = `${BlocksEvents}`;
@ -90,7 +90,7 @@ export default class BlockManager extends ItemManagerModule<BlockManagerConfig,
this.em.trigger(this.events.custom, this.__customData()); this.em.trigger(this.events.custom, this.__customData());
} }
__customData() { __customData(): BlocksCustomData {
const bhv = this.__getBehaviour(); const bhv = this.__getBehaviour();
return { return {
bm: this as BlockManager, bm: this as BlockManager,

24
packages/core/src/block_manager/types.ts

@ -1,9 +1,22 @@
import { ItemsByCategory } from '../abstract/ModuleCategory'; import BlockManager from '.';
import { AddOptions, RemoveOptions } from '../common'; import Category, { CategoryProperties, ItemsByCategory } from '../abstract/ModuleCategory';
import { AddOptions, Model, ObjectAny, RemoveOptions } from '../common';
import Component from '../dom_components/model/Component';
import Block from './model/Block'; import Block from './model/Block';
export interface BlocksByCategory extends ItemsByCategory<Block> {} export interface BlocksByCategory extends ItemsByCategory<Block> {}
export interface BlocksCustomData {
bm: BlockManager;
blocks: Block[];
container: HTMLElement | undefined;
dragStart: (block: Block, ev?: Event) => void;
drag: (ev: Event) => void;
dragStop: (cancel?: boolean) => void;
}
export type BlockEvent = `${BlocksEvents}`;
/**{START_EVENTS}*/ /**{START_EVENTS}*/
export enum BlocksEvents { export enum BlocksEvents {
/** /**
@ -81,7 +94,14 @@ export enum BlocksEvents {
export interface BlocksEventCallback { export interface BlocksEventCallback {
[BlocksEvents.add]: [Block, AddOptions]; [BlocksEvents.add]: [Block, AddOptions];
[BlocksEvents.remove]: [Block, RemoveOptions]; [BlocksEvents.remove]: [Block, RemoveOptions];
[BlocksEvents.removeBefore]: [Block, () => void, RemoveOptions];
[BlocksEvents.update]: [Block, AddOptions]; [BlocksEvents.update]: [Block, AddOptions];
[BlocksEvents.dragStart]: [Block, DragEvent?];
[BlocksEvents.drag]: [Block, DragEvent?];
[BlocksEvents.dragEnd]: [Component | undefined, Block];
[BlocksEvents.categoryUpdate]: [{ category: Category; changes: Partial<CategoryProperties>; options: AddOptions }];
[BlocksEvents.custom]: [BlocksCustomData];
[BlocksEvents.all]: [{ event: BlockEvent; model?: Model; options: ObjectAny }];
} }
// need this to avoid the TS documentation generator to break // need this to avoid the TS documentation generator to break

Loading…
Cancel
Save