-
- {{ currentValue }}
+
+ {{ model.currentValue }}
-
- /{{ value }}
+
+ /{{ model.value }}
-
-
-
+
+ {{ model.name }}
+
+
+
+ $vuetify.icons.spell
+
+
@@ -88,18 +58,13 @@
import numberToSignedString from '/imports/ui/utility/numberToSignedString.js';
export default {
props: {
- _id: String,
- name: String,
- color: String,
- value: Number,
- damage: {
- type: Number,
- default: 0,
- },
+ model: {
+ type: Object,
+ required: true,
+ },
+ dark: Boolean,
+ hideCastButton: Boolean,
},
- data(){ return{
- hover: false,
- }},
inject: {
context: { default: {} }
},
@@ -107,15 +72,15 @@ export default {
currentValue(){
return this.value - this.damage;
},
+ hasClickListener(){
+ return this.$listeners && !!this.$listeners.click;
+ },
},
methods: {
signed: numberToSignedString,
click(e){
this.$emit('click', e);
},
- increment(value){
- this.$emit('change', {type: 'increment', value})
- },
},
};
@@ -124,22 +89,9 @@ export default {
.spell-slot-list-tile {
background: inherit;
}
- .spell-slot-list-tile >>> .v-list__tile {
- height: 56px;
- }
.v-list__tile__action {
width: 112px;
- flex-shrink: 0;
- }
- .slot-buttons > .v-btn {
- margin: 0;
- flex-shrink: 1;
- }
- .buttons {
- height: 100%;
- }
- .buttons > .v-btn {
- margin: 0;
+ flex-shrink: 0;
}
.spell-slot-list-tile.hover {
background: #f5f5f5 !important;
@@ -156,4 +108,7 @@ export default {
.theme--dark .max-value {
color: rgba(255, 255, 255, 0.54);
}
+ .primary--text .v-icon, .primary--text .max-value, .primary--text .current-value, .primary--text .v-list__tile__sub-title {
+ color: #b71c1c
+ }
diff --git a/app/imports/ui/properties/components/attributes/SplitListLayout.vue b/app/imports/ui/properties/components/attributes/SplitListLayout.vue
new file mode 100644
index 00000000..3969bd32
--- /dev/null
+++ b/app/imports/ui/properties/components/attributes/SplitListLayout.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/imports/ui/properties/components/spells/CastSpellWithSlotDialog.vue b/app/imports/ui/properties/components/spells/CastSpellWithSlotDialog.vue
new file mode 100644
index 00000000..f280b36b
--- /dev/null
+++ b/app/imports/ui/properties/components/spells/CastSpellWithSlotDialog.vue
@@ -0,0 +1,201 @@
+
+
+
+
+ Cast a Spell
+
+
+
+
+
+
+
+ Slot
+
+
+
+
+ Cantrip
+
+
+
+
+
+
+
+ Spell
+
+
+
+ {{ spell.level === 0 ? 'Cantrips' : `Level ${spell.level}` }}
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Cast
+
+
+
+
+
+
+
+
diff --git a/app/imports/ui/properties/components/spells/SpellList.vue b/app/imports/ui/properties/components/spells/SpellList.vue
index d49dd4b1..190b6c6b 100644
--- a/app/imports/ui/properties/components/spells/SpellList.vue
+++ b/app/imports/ui/properties/components/spells/SpellList.vue
@@ -40,24 +40,7 @@
import draggable from 'vuedraggable';
import SpellListTile from '/imports/ui/properties/components/spells/SpellListTile.vue';
import { organizeDoc } from '/imports/api/parenting/organizeMethods.js';
-
-function spellsWithSubheaders(spells = []){
- let result = [];
- let lastSpell = undefined;
- let sortedSpells = [...spells].sort((a, b) => a.level - b.level)
- sortedSpells.forEach(spell => {
- if (spell.isSubheader) return;
- if (!lastSpell || spell.level > lastSpell.level){
- result.push({
- isSubheader: true,
- level: spell.level,
- });
- }
- result.push(spell);
- lastSpell = spell;
- });
- return result;
-}
+import spellsWithSubheaders from '/imports/ui/properties/components/spells/spellsWithSubheaders.js';
export default {
components: {
diff --git a/app/imports/ui/properties/components/spells/SpellListTile.vue b/app/imports/ui/properties/components/spells/SpellListTile.vue
index 4046f732..977b9f53 100644
--- a/app/imports/ui/properties/components/spells/SpellListTile.vue
+++ b/app/imports/ui/properties/components/spells/SpellListTile.vue
@@ -27,7 +27,7 @@
@change="setPrepared"
/>
@@ -45,6 +45,7 @@ export default {
mixins: [treeNodeViewMixin],
props: {
preparingSpells: Boolean,
+ hideHandle: Boolean,
},
computed: {
hasClickListener(){
@@ -82,4 +83,7 @@ export default {
.spell {
background-color: inherit;
}
+.primary--text .v-icon, .primary--text .v-list__tile__sub-title {
+ color: #b71c1c
+}
diff --git a/app/imports/ui/properties/components/spells/spellsWithSubheaders.js b/app/imports/ui/properties/components/spells/spellsWithSubheaders.js
new file mode 100644
index 00000000..87298ff3
--- /dev/null
+++ b/app/imports/ui/properties/components/spells/spellsWithSubheaders.js
@@ -0,0 +1,17 @@
+export default function spellsWithSubheaders(spells = []){
+ let result = [];
+ let lastSpell = undefined;
+ let sortedSpells = [...spells].sort((a, b) => a.level - b.level)
+ sortedSpells.forEach(spell => {
+ if (spell.isSubheader) return;
+ if (!lastSpell || spell.level > lastSpell.level){
+ result.push({
+ isSubheader: true,
+ level: spell.level,
+ });
+ }
+ result.push(spell);
+ lastSpell = spell;
+ });
+ return result;
+}