|
| 1 | +import { IWidgetHandler } from "@paperbits/common/editing"; |
| 2 | +import { IInjector, IInjectorModule } from "@paperbits/common/injection"; |
| 3 | +import { IWidgetService } from "@paperbits/common/widgets"; |
| 4 | +import { KnockoutComponentBinder } from "../ko"; |
| 5 | +import { AccordionViewModel } from "./ko/accordion"; |
| 6 | +import { AccordionEditor } from "./ko/accordionEditor"; |
| 7 | +import { AccordionItemEditor } from "./ko/accordionItemEditor"; |
| 8 | +import { AccordionItemSelector } from "./ko/accordionItemSelector"; |
| 9 | +import { AccordionViewModelBinder } from "./ko/accordionViewModelBinder"; |
| 10 | +import { AccordionItemViewModel } from "./ko/accordionItemViewModel"; |
| 11 | +import { AccordionItemViewModelBinder } from "./ko/accordionItemViewModelBinder"; |
| 12 | +import { AccordionHandlers } from "./accordionHandlers"; |
| 13 | +import { AccordionItemHandlers } from "./accordionItemHandlers"; |
| 14 | +import { AccordionModelBinder } from "./accordionModelBinder"; |
| 15 | +import { AccordionItemModelBinder } from "./accordionItemModelBinder"; |
| 16 | +import { AccordionStyleHandler } from "./accordionStyleHandler"; |
| 17 | +import { AccordionModel, AccordionItemModel } from "./accordionModel"; |
| 18 | + |
| 19 | +export class AccordionDesignModule implements IInjectorModule { |
| 20 | + public register(injector: IInjector): void { |
| 21 | + console.log("Registering Accordion design module..."); |
| 22 | + // Accordion components |
| 23 | + injector.bind("accordion", AccordionViewModel); |
| 24 | + injector.bind("accordionEditor", AccordionEditor); |
| 25 | + injector.bindSingleton("accordionModelBinder", AccordionModelBinder); |
| 26 | + injector.bindSingleton("accordionViewModelBinder", AccordionViewModelBinder); |
| 27 | + injector.bindSingleton("accordionHandler", AccordionHandlers); |
| 28 | + |
| 29 | + // AccordionItem components |
| 30 | + injector.bind("accordionItem", AccordionItemViewModel); |
| 31 | + injector.bind("accordionItemEditor", AccordionItemEditor); |
| 32 | + injector.bind("accordionItemSelector", AccordionItemSelector); |
| 33 | + injector.bindSingleton("accordionItemModelBinder", AccordionItemModelBinder); |
| 34 | + injector.bindSingleton("accordionItemViewModelBinder", AccordionItemViewModelBinder); |
| 35 | + injector.bindSingleton("accordionItemHandler", AccordionItemHandlers); |
| 36 | + |
| 37 | + injector.bindToCollection("widgetHandlers", AccordionItemHandlers, "accordionItemHandler"); |
| 38 | + injector.bindToCollection("styleHandlers", AccordionStyleHandler); |
| 39 | + |
| 40 | + const widgetService = injector.resolve<IWidgetService>("widgetService"); |
| 41 | + |
| 42 | + // Register Accordion widget |
| 43 | + widgetService.registerWidget("accordion", { |
| 44 | + modelDefinition: AccordionModel, |
| 45 | + componentBinder: KnockoutComponentBinder, |
| 46 | + componentDefinition: AccordionViewModel, |
| 47 | + modelBinder: AccordionModelBinder, |
| 48 | + viewModelBinder: AccordionViewModelBinder |
| 49 | + }); |
| 50 | + |
| 51 | + widgetService.registerWidgetEditor("accordion", { |
| 52 | + displayName: "Accordion", |
| 53 | + iconClass: "widget-icon widget-icon-accordion", |
| 54 | + requires: ["js", "interaction"], |
| 55 | + componentBinder: KnockoutComponentBinder, |
| 56 | + componentDefinition: AccordionEditor, |
| 57 | + handlerComponent: AccordionHandlers |
| 58 | + }); |
| 59 | + |
| 60 | + // Register AccordionItem widget |
| 61 | + widgetService.registerWidget("accordion-item", { |
| 62 | + modelDefinition: AccordionItemModel, |
| 63 | + componentBinder: KnockoutComponentBinder, |
| 64 | + componentDefinition: AccordionItemViewModel, |
| 65 | + modelBinder: AccordionItemModelBinder, |
| 66 | + viewModelBinder: AccordionItemViewModelBinder |
| 67 | + }); |
| 68 | + |
| 69 | + widgetService.registerWidgetEditor("accordion-item", { |
| 70 | + displayName: "Item", |
| 71 | + componentBinder: KnockoutComponentBinder, |
| 72 | + componentDefinition: AccordionItemEditor, |
| 73 | + handlerComponent: AccordionItemHandlers, |
| 74 | + selectable: false, |
| 75 | + draggable: false |
| 76 | + }); |
| 77 | + } |
| 78 | +} |
0 commit comments