control/object3dManager/Object3dItemView.tstypescript
import { IViewParams, View, type ViewEventsList } from "../../ui/View";
import { IObject3dItem } from "./Object3dCollection";
import { createEvents, EventsHandler } from "../../Events";
import { stringTemplate } from "../../utils/shared";
type Object3dItemViewEvents = ["click"];
const EVENT_NAMES: Object3dItemViewEvents = ["click"];
const ITEM_TEMPLATE = `<button class="og-object3d-collection__item">
<div class="og-object3d-collection__item_name">{name}</div>
</button>`;
export class Object3dItemView extends View<IObject3dItem> {
public override events: EventsHandler<Object3dItemViewEvents> & EventsHandler<ViewEventsList>;
constructor(params: IViewParams) {
super({
template: stringTemplate(ITEM_TEMPLATE, {
name: params.model.name
}),
...params
});
//@ts-ignore
this.events = createEvents<Object3dItemViewEvents>(EVENT_NAMES);
}
public override render(params?: any): this {
super.render(params);
this.el?.addEventListener("click", (e) => {
this.events.dispatch(this.events.click, this.model, this, e);
});
return this;
}
}