From 30f39c78bdcbf474d49487a83543dfdd5dc183bc Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 23 Jan 2024 23:46:56 +0400 Subject: [PATCH] Add getBlocksByCategory --- src/block_manager/index.ts | 17 +++++++++++++++-- src/block_manager/model/Block.ts | 7 ++++++- src/block_manager/types.ts | 5 +++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/block_manager/index.ts b/src/block_manager/index.ts index 0243c4340..dbdbec928 100644 --- a/src/block_manager/index.ts +++ b/src/block_manager/index.ts @@ -35,8 +35,8 @@ import defaults, { BlockManagerConfig } from './config/config'; import Block, { BlockProperties } from './model/Block'; import Blocks from './model/Blocks'; import Categories from '../abstract/ModuleCategories'; -import Category from '../abstract/ModuleCategory'; -import { BlocksEvents } from './types'; +import Category, { getItemsByCategory } from '../abstract/ModuleCategory'; +import { BlocksByCategory, BlocksEvents } from './types'; import BlocksView from './view/BlocksView'; export type BlockEvent = `${BlocksEvents}`; @@ -278,6 +278,19 @@ export default class BlockManager extends ItemManagerModule { category?: Category; items: Block[] } + * + * // NOTE: The item without category is the one containing blocks without category. + */ + getBlocksByCategory(): BlocksByCategory[] { + return getItemsByCategory(this.getAll().models); + } + /** * Render blocks * @param {Array} blocks Blocks to render, without the argument will render all global blocks diff --git a/src/block_manager/model/Block.ts b/src/block_manager/model/Block.ts index 323700e73..76abfcc80 100644 --- a/src/block_manager/model/Block.ts +++ b/src/block_manager/model/Block.ts @@ -1,7 +1,7 @@ import { Model } from '../../common'; import { isFunction } from 'underscore'; import Editor from '../../editor'; -import { CategoryProperties } from '../../abstract/ModuleCategory'; +import Category, { CategoryProperties } from '../../abstract/ModuleCategory'; import { ComponentDefinition } from '../../dom_components/model/types'; /** @private */ @@ -93,6 +93,11 @@ export default class Block extends Model { }; } + get category(): Category | undefined { + const cat = this.get('category'); + return cat instanceof Category ? cat : undefined; + } + /** * Get block id * @returns {String} diff --git a/src/block_manager/types.ts b/src/block_manager/types.ts index 260d28c34..74d73f495 100644 --- a/src/block_manager/types.ts +++ b/src/block_manager/types.ts @@ -1,3 +1,8 @@ +import { ItemsByCategory } from '../abstract/ModuleCategory'; +import Block from './model/Block'; + +export interface BlocksByCategory extends ItemsByCategory {} + /**{START_EVENTS}*/ export enum BlocksEvents { /**