diff --git a/module/applications/_module.mjs b/module/applications/_module.mjs index 91aa6ba5..1e280d81 100644 --- a/module/applications/_module.mjs +++ b/module/applications/_module.mjs @@ -2,12 +2,12 @@ export { default as DhpPCSheet } from './sheets/pc.mjs'; export { default as DhpAdversarySheet } from './sheets/adversary.mjs'; export { default as DhpClassSheet } from './sheets/class.mjs'; export { default as DhpSubclass } from './sheets/subclass.mjs'; -export { default as DhpFeatureSheet } from './sheets/feature.mjs'; +export { default as DhpFeatureSheet } from './sheets/items/feature.mjs'; export { default as DhpDomainCardSheet } from './sheets/domainCard.mjs'; export { default as DhpAncestry } from './sheets/ancestry.mjs'; export { default as DhpCommunity } from './sheets/community.mjs'; -export { default as DhpMiscellaneous } from './sheets/miscellaneous.mjs'; -export { default as DhpConsumable } from './sheets/consumable.mjs'; +export { default as DhpMiscellaneous } from './sheets/items/miscellaneous.mjs'; +export { default as DhpConsumable } from './sheets/items/consumable.mjs'; export { default as DhpWeapon } from './sheets/weapon.mjs'; export { default as DhpArmor } from './sheets/armor.mjs'; export { default as DhpChatMessage } from './chatMessage.mjs'; diff --git a/module/applications/sheets/consumable.mjs b/module/applications/sheets/consumable.mjs deleted file mode 100644 index d9e25086..00000000 --- a/module/applications/sheets/consumable.mjs +++ /dev/null @@ -1,56 +0,0 @@ -// import DhpApplicationMixin from '../daggerheart-sheet.mjs'; - -// export default class ConsumableSheet extends DhpApplicationMixin(ItemSheet) { -// static documentType = "consumable"; - -// /** @override */ -// static get defaultOptions() { -// return foundry.utils.mergeObject(super.defaultOptions, { -// classes: ["daggerheart", "sheet", "consumable"], -// width: 480, -// height: 'auto', -// }); -// } - -// /** @override */ -// getData() { -// const context = super.getData(); - -// return context; -// } -// } - -import DaggerheartSheet from './daggerheart-sheet.mjs'; - -const { ItemSheetV2 } = foundry.applications.sheets; -export default class ConsumableSheet extends DaggerheartSheet(ItemSheetV2) { - static DEFAULT_OPTIONS = { - tag: 'form', - classes: ['daggerheart', 'sheet', 'consumable'], - position: { width: 480 }, - form: { - handler: this.updateForm, - submitOnChange: true, - closeOnSubmit: false - } - }; - - static PARTS = { - form: { - id: 'feature', - template: 'systems/daggerheart/templates/sheets/consumable.hbs' - } - }; - - async _prepareContext(_options) { - const context = await super._prepareContext(_options); - context.document = this.document; - - return context; - } - - static async updateForm(event, _, formData) { - await this.document.update(formData.object); - this.render(); - } -} diff --git a/module/applications/sheets/daggerheart-sheet.mjs b/module/applications/sheets/daggerheart-sheet.mjs index abf48793..635d2434 100644 --- a/module/applications/sheets/daggerheart-sheet.mjs +++ b/module/applications/sheets/daggerheart-sheet.mjs @@ -69,5 +69,14 @@ export default function DhpApplicationMixin(Base) { } _onDrop(event) {} + + _getTabs(tabs) { + 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; + } }; } diff --git a/module/applications/sheets/items/consumable.mjs b/module/applications/sheets/items/consumable.mjs new file mode 100644 index 00000000..eb0a3d6b --- /dev/null +++ b/module/applications/sheets/items/consumable.mjs @@ -0,0 +1,57 @@ +import DaggerheartSheet from '../daggerheart-sheet.mjs'; + +const { ItemSheetV2 } = foundry.applications.sheets; +export default class ConsumableSheet extends DaggerheartSheet(ItemSheetV2) { + static DEFAULT_OPTIONS = { + tag: 'form', + classes: ['daggerheart', 'sheet', 'dh-style', 'consumable'], + position: { width: 550 }, + form: { + handler: this.updateForm, + submitOnChange: true, + closeOnSubmit: false + } + }; + + static PARTS = { + header: { template: 'systems/daggerheart/templates/sheets/items/consumable/header.hbs' }, + tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, + description: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-description.hbs' }, + settings: { + template: 'systems/daggerheart/templates/sheets/items/consumable/settings.hbs', + scrollable: ['.settings'] + } + }; + + static TABS = { + description: { + active: true, + cssClass: '', + group: 'primary', + id: 'description', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Description' + }, + settings: { + active: false, + cssClass: '', + group: 'primary', + id: 'settings', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Settings' + } + }; + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.document = this.document; + context.tabs = super._getTabs(this.constructor.TABS); + + return context; + } + + static async updateForm(event, _, formData) { + await this.document.update(formData.object); + this.render(); + } +} diff --git a/module/applications/sheets/feature.mjs b/module/applications/sheets/items/feature.mjs old mode 100755 new mode 100644 similarity index 72% rename from module/applications/sheets/feature.mjs rename to module/applications/sheets/items/feature.mjs index 54bfa68e..553b686d --- a/module/applications/sheets/feature.mjs +++ b/module/applications/sheets/items/feature.mjs @@ -1,6 +1,6 @@ -import DaggerheartAction from '../../data/action.mjs'; -import DaggerheartActionConfig from '../config/Action.mjs'; -import DaggerheartSheet from './daggerheart-sheet.mjs'; +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 FeatureSheet extends DaggerheartSheet(ItemSheetV2) { @@ -48,48 +48,40 @@ export default class FeatureSheet extends DaggerheartSheet(ItemSheetV2) { } }; - _getTabs() { - const tabs = { - description: { - active: true, - cssClass: '', - group: 'primary', - id: 'description', - icon: null, - label: 'DAGGERHEART.Sheets.Feature.Tabs.Description' - }, - actions: { - active: false, - cssClass: '', - group: 'primary', - id: 'actions', - icon: null, - label: 'DAGGERHEART.Sheets.Feature.Tabs.Actions' - }, - settings: { - active: false, - cssClass: '', - group: 'primary', - id: 'settings', - icon: null, - label: 'DAGGERHEART.Sheets.Feature.Tabs.Settings' - }, - effects: { - active: false, - cssClass: '', - group: 'primary', - id: 'effects', - icon: null, - label: 'DAGGERHEART.Sheets.Feature.Tabs.Effects' - } - }; - 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' : ''; + static TABS = { + description: { + active: true, + cssClass: '', + group: 'primary', + id: 'description', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Description' + }, + actions: { + active: false, + cssClass: '', + group: 'primary', + id: 'actions', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Actions' + }, + settings: { + active: false, + cssClass: '', + group: 'primary', + id: 'settings', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Settings' + }, + effects: { + active: false, + cssClass: '', + group: 'primary', + id: 'effects', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Effects' } - - return tabs; - } + }; _attachPartListeners(partId, htmlElement, options) { super._attachPartListeners(partId, htmlElement, options); @@ -99,7 +91,7 @@ export default class FeatureSheet extends DaggerheartSheet(ItemSheetV2) { async _prepareContext(_options) { const context = await super._prepareContext(_options); context.document = this.document; - context.tabs = this._getTabs(); + context.tabs = super._getTabs(this.constructor.TABS); context.generalConfig = SYSTEM.GENERAL; context.itemConfig = SYSTEM.ITEM; context.properties = SYSTEM.ACTOR.featureProperties; diff --git a/module/applications/sheets/miscellaneous.mjs b/module/applications/sheets/items/miscellaneous.mjs similarity index 52% rename from module/applications/sheets/miscellaneous.mjs rename to module/applications/sheets/items/miscellaneous.mjs index 6d4d2646..cf4ba2c0 100644 --- a/module/applications/sheets/miscellaneous.mjs +++ b/module/applications/sheets/items/miscellaneous.mjs @@ -20,14 +20,14 @@ // } // } -import DaggerheartSheet from './daggerheart-sheet.mjs'; +import DaggerheartSheet from '../daggerheart-sheet.mjs'; const { ItemSheetV2 } = foundry.applications.sheets; export default class MiscellaneousSheet extends DaggerheartSheet(ItemSheetV2) { static DEFAULT_OPTIONS = { tag: 'form', - classes: ['daggerheart', 'sheet', 'miscellaneous'], - position: { width: 400 }, + classes: ['daggerheart', 'sheet', 'dh-style', 'miscellaneous'], + position: { width: 550 }, form: { handler: this.updateForm, submitOnChange: true, @@ -36,15 +36,38 @@ export default class MiscellaneousSheet extends DaggerheartSheet(ItemSheetV2) { }; static PARTS = { - form: { - id: 'feature', - template: 'systems/daggerheart/templates/sheets/miscellaneous.hbs' + header: { template: 'systems/daggerheart/templates/sheets/items/miscellaneous/header.hbs' }, + tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, + description: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-description.hbs' }, + settings: { + template: 'systems/daggerheart/templates/sheets/items/miscellaneous/settings.hbs', + scrollable: ['.settings'] + } + }; + + static TABS = { + description: { + active: true, + cssClass: '', + group: 'primary', + id: 'description', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Description' + }, + settings: { + active: false, + cssClass: '', + group: 'primary', + id: 'settings', + icon: null, + label: 'DAGGERHEART.Sheets.Feature.Tabs.Settings' } }; async _prepareContext(_options) { const context = await super._prepareContext(_options); context.document = this.document; + context.tabs = super._getTabs(this.constructor.TABS); return context; } diff --git a/styles/daggerheart.css b/styles/daggerheart.css index eb6fed29..0ecfcbc4 100755 --- a/styles/daggerheart.css +++ b/styles/daggerheart.css @@ -2985,10 +2985,13 @@ div.daggerheart.views.multiclass { outline: 2px solid light-dark(#222, #efe6d8); } .application.sheet.dh-style input[type='checkbox']:checked::after { - color: light-dark(#18162e, #f3c267); + color: light-dark(#222, #f3c267); +} +.application.sheet.dh-style input[type='checkbox']:checked::before { + color: light-dark(transparent, #18162e); } .application.sheet.dh-style input[type='checkbox']::before { - color: light-dark(#f3c267, #18162e); + color: light-dark(#222, #efe6d8); } .application.sheet.dh-style button { background: light-dark(transparent, #f3c267); diff --git a/styles/less/global/elements.less b/styles/less/global/elements.less index 79cb6284..1ebfcb44 100755 --- a/styles/less/global/elements.less +++ b/styles/less/global/elements.less @@ -27,10 +27,13 @@ input[type='checkbox'] { &:checked::after { - color: light-dark(@dark-blue, @golden); + color: light-dark(@dark, @golden); + } + &:checked::before { + color: light-dark(transparent, @dark-blue); } &::before { - color: light-dark(@golden, @dark-blue); + color: light-dark(@dark, @beige); } } diff --git a/templates/sheets/consumable.hbs b/templates/sheets/consumable.hbs deleted file mode 100644 index f920826b..00000000 --- a/templates/sheets/consumable.hbs +++ /dev/null @@ -1,36 +0,0 @@ -
-
-
- -
- {{formInput fields.name value=source.name rootId=partId}} -
-
-
- -
-
-
- {{formField systemFields.quantity value=source.system.quantity label=(localize "DAGGERHEART.Sheets.Consumable.Quantity") }} - {{formField systemFields.consumeOnUse value=source.system.consumeOnUse label=(localize "DAGGERHEART.Sheets.Consumable.ConsumeOnUse")}} - {{!--
- -
- -
-
--}} - {{!--
- -
- -
-
--}} -
-
-

{{localize "DAGGERHEART.General.Description"}}

- {{formInput systemFields.description value=source.system.description enriched=source.system.description localize=true toggled=true}} - {{!-- {{editor item.system.description target="system.description" button=true}} --}} -
-
-
-
\ No newline at end of file diff --git a/templates/sheets/items/consumable/header.hbs b/templates/sheets/items/consumable/header.hbs new file mode 100644 index 00000000..6ddea17e --- /dev/null +++ b/templates/sheets/items/consumable/header.hbs @@ -0,0 +1,10 @@ +
+ +
+ +

+
+

{{localize 'TYPES.Item.consumable'}}

+
+
+
\ No newline at end of file diff --git a/templates/sheets/items/consumable/settings.hbs b/templates/sheets/items/consumable/settings.hbs new file mode 100644 index 00000000..d3a9e2bb --- /dev/null +++ b/templates/sheets/items/consumable/settings.hbs @@ -0,0 +1,14 @@ +
+
+ {{localize tabs.settings.label}} + {{localize "DAGGERHEART.Sheets.Consumable.Quantity"}} + {{formField systemFields.quantity value=source.system.quantity}} + + {{localize "DAGGERHEART.Sheets.Consumable.ConsumeOnUse"}} + {{formField systemFields.consumeOnUse value=source.system.consumeOnUse}} +
+
\ No newline at end of file diff --git a/templates/sheets/items/miscellaneous/header.hbs b/templates/sheets/items/miscellaneous/header.hbs new file mode 100644 index 00000000..218c3a47 --- /dev/null +++ b/templates/sheets/items/miscellaneous/header.hbs @@ -0,0 +1,10 @@ +
+ +
+ +

+
+

{{localize 'TYPES.Item.miscellaneous'}}

+
+
+
\ No newline at end of file diff --git a/templates/sheets/items/miscellaneous/settings.hbs b/templates/sheets/items/miscellaneous/settings.hbs new file mode 100644 index 00000000..96c1dbe9 --- /dev/null +++ b/templates/sheets/items/miscellaneous/settings.hbs @@ -0,0 +1,11 @@ +
+
+ {{localize tabs.settings.label}} + {{localize "DAGGERHEART.Sheets.Miscellaneous.Quantity"}} + {{formField systemFields.quantity value=source.system.quantity}} +
+
\ No newline at end of file diff --git a/templates/sheets/miscellaneous.hbs b/templates/sheets/miscellaneous.hbs deleted file mode 100644 index 710186c6..00000000 --- a/templates/sheets/miscellaneous.hbs +++ /dev/null @@ -1,29 +0,0 @@ -
-
-
- -
- {{formInput fields.name value=source.name rootId=partId}} -
-
-
- -
-
-
- {{formField systemFields.quantity value=source.system.quantity label=(localize "DAGGERHEART.Sheets.Miscellaneous.Quantity")}} - {{!--
- -
- -
-
--}} -
-
-

{{localize "DAGGERHEART.General.Description"}}

- {{formInput systemFields.description value=source.system.description enriched=source.system.description localize=true toggled=true}} - {{!-- {{editor item.system.description target="system.description" button=true}} --}} -
-
-
-
\ No newline at end of file