// import DhpApplicationMixin from '../daggerheart-sheet.mjs'; // export default class DomainCardSheet extends DhpApplicationMixin(ItemSheet) { // static documentType = "domainCard"; // /** @override */ // static get defaultOptions() { // return foundry.utils.mergeObject(super.defaultOptions, { // classes: ["daggerheart", "sheet", "domain-card"], // width: 600, // height: 600, // tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "features" }] // }); // } // /** @override */ // getData() { // const context = super.getData(); // context.config = CONFIG.daggerheart; // return context; // } // async _handleAction(action, event, button) { // switch(action){ // case 'attributeRoll': // break; // } // } // } import DaggerheartAction from '../../data/action.mjs'; import DaggerheartActionConfig from '../config/Action.mjs'; import DaggerheartSheet from './daggerheart-sheet.mjs'; const { ItemSheetV2 } = foundry.applications.sheets; export default class DomainCardSheet extends DaggerheartSheet(ItemSheetV2) { static DEFAULT_OPTIONS = { tag: 'form', id: 'daggerheart-domainCard', classes: ['daggerheart', 'sheet', 'domain-card'], position: { width: 600, height: 600 }, actions: { addAction: this.addAction, editAction: this.editAction, removeAction: this.removeAction }, form: { handler: this.updateForm, submitOnChange: true, closeOnSubmit: false } }; static PARTS = { form: { id: 'feature', template: 'systems/daggerheart/templates/sheets/domainCard.hbs' } }; _getTabs() { const tabs = { general: { active: true, cssClass: '', group: 'primary', id: 'general', icon: null, label: 'General' }, actions: { active: false, cssClass: '', group: 'primary', id: 'actions', icon: null, label: 'Actions' } }; for (const v of Object.values(tabs)) { v.active = this.tabGroups[v.group] ? this.tabGroups[v.group] === v.id : v.active; v.cssClass = v.active ? 'active' : ''; } return tabs; } async _prepareContext(_options) { const context = await super._prepareContext(_options); context.config = CONFIG.daggerheart; context.tabs = this._getTabs(); return context; } static async updateForm(event, _, formData) { await this.document.update(formData.object); this.render(); } static async addAction() { const actionIndexes = this.document.system.actions.map(x => x.id.split('-')[2]).sort((a, b) => a - b); const action = await new DaggerheartAction( { id: `${this.document.id}-Action-${actionIndexes.length > 0 ? actionIndexes[0] + 1 : 1}` }, { parent: this.document } ); await this.document.update({ 'system.actions': [...this.document.system.actions, action] }); await new DaggerheartActionConfig(this.document.system.actions[this.document.system.actions.length - 1]).render( true ); } static async editAction(_, button) { const action = this.document.system.actions[button.dataset.index]; await new DaggerheartActionConfig(action).render(true); } static async removeAction(event, button) { event.stopPropagation(); await this.document.update({ 'system.actions': this.document.system.actions.filter( (_, index) => index !== Number.parseInt(button.dataset.index) ) }); } }