class CustomToolboxCategory extends Blockly.ToolboxCategory {
private iconClass_: string;
constructor(categoryDef: any, toolbox: Blockly.Toolbox, opt_parent?: any) {
super(categoryDef, toolbox, opt_parent);
if (categoryDef['xml'] && categoryDef['xml'].getAttribute) {
this.iconClass_ = categoryDef['xml'].getAttribute('iconClass') || '';
} else if (categoryDef['iconClass']) {
this.iconClass_ = categoryDef['iconClass'];
}
}
public override createDom_(): HTMLDivElement {
const categoryDom = super.createDom_();
const labelElement = categoryDom.querySelector('.blocklyTreeLabel') as HTMLElement;
if (labelElement && this.iconClass_) {
const iconElement = document.createElement('i');
iconElement.className = this.iconClass_;
iconElement.style.marginRight = '8px';
labelElement.insertBefore(iconElement, labelElement.firstChild);
}
return categoryDom as HTMLDivElement;
}
}
// Registration
Blockly.registry.register(
Blockly.registry.Type.TOOLBOX_ITEM,
'custom_category',
CustomToolboxCategory,
true
);