Changed dialog stack from using element ids to data-ids to allow duplicate ids to work
This commit is contained in:
@@ -15,8 +15,8 @@
|
|||||||
<ability-list-tile
|
<ability-list-tile
|
||||||
v-bind="ability"
|
v-bind="ability"
|
||||||
:key="ability._id"
|
:key="ability._id"
|
||||||
:id="`${_uid}-${ability._id}`"
|
:data-id="ability._id"
|
||||||
@click="clickAttribute({elementId: `${_uid}-${ability._id}`, _id: ability._id})"
|
@click="clickAttribute({_id: ability._id})"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</v-list>
|
</v-list>
|
||||||
@@ -26,16 +26,16 @@
|
|||||||
<div v-for="stat in stats" class="stat" :key="stat._id">
|
<div v-for="stat in stats" class="stat" :key="stat._id">
|
||||||
<attribute-card
|
<attribute-card
|
||||||
v-bind="stat"
|
v-bind="stat"
|
||||||
:id="`${_uid}-${stat._id}`"
|
:data-id="stat._id"
|
||||||
@click="clickAttribute({elementId: `${_uid}-${stat._id}`, _id: stat._id})"
|
@click="clickAttribute({_id: stat._id})"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-for="modifier in modifiers" class="modifier" :key="modifier._id">
|
<div v-for="modifier in modifiers" class="modifier" :key="modifier._id">
|
||||||
<attribute-card modifier
|
<attribute-card modifier
|
||||||
v-bind="modifier"
|
v-bind="modifier"
|
||||||
:id="`${_uid}-${modifier._id}`"
|
:data-id="modifier._id"
|
||||||
@click="clickAttribute({elementId: `${_uid}-${modifier._id}`, _id: modifier._id})"
|
@click="clickAttribute({_id: modifier._id})"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -47,9 +47,9 @@
|
|||||||
<v-divider v-if="index !== 0" :key="hitDice._id + 'divider'"/>
|
<v-divider v-if="index !== 0" :key="hitDice._id + 'divider'"/>
|
||||||
<hit-dice-list-tile
|
<hit-dice-list-tile
|
||||||
v-bind="hitDie"
|
v-bind="hitDie"
|
||||||
:id="`${_uid}-${hitDie._id}`"
|
:data-id="hitDie._id"
|
||||||
:key="hitDice._id"
|
:key="hitDice._id"
|
||||||
@click="clickAttribute({elementId: `${_uid}-${hitDie._id}`, _id: hitDie._id})"
|
@click="clickAttribute({_id: hitDie._id})"
|
||||||
@change="e => hitDiceChange(hitDie._id, e)"
|
@change="e => hitDiceChange(hitDie._id, e)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
@@ -65,8 +65,8 @@
|
|||||||
v-for="save in savingThrows"
|
v-for="save in savingThrows"
|
||||||
v-bind="save"
|
v-bind="save"
|
||||||
:key="save._id"
|
:key="save._id"
|
||||||
:id="`${_uid}-${save._id}`"
|
:data-id="save._id"
|
||||||
@click="clickSkill({elementId: `${_uid}-${save._id}`, _id: save._id})"
|
@click="clickSkill({_id: save._id})"
|
||||||
/>
|
/>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-card>
|
</v-card>
|
||||||
@@ -80,8 +80,8 @@
|
|||||||
v-for="skill in skills"
|
v-for="skill in skills"
|
||||||
v-bind="skill"
|
v-bind="skill"
|
||||||
:key="skill._id"
|
:key="skill._id"
|
||||||
:id="`${_uid}-${skill._id}`"
|
:data-id="skill._id"
|
||||||
@click="clickSkill({elementId: `${_uid}-${skill._id}`, _id: skill._id})"
|
@click="clickSkill({_id: skill._id})"
|
||||||
/>
|
/>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-card>
|
</v-card>
|
||||||
@@ -173,10 +173,10 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
clickAttribute({elementId, _id}){
|
clickAttribute({_id}){
|
||||||
this.$store.commit("pushDialogStack", {
|
this.$store.commit("pushDialogStack", {
|
||||||
component: "attribute-dialog-container",
|
component: "attribute-dialog-container",
|
||||||
elementId,
|
elementId: _id,
|
||||||
data: {_id},
|
data: {_id},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<v-divider v-if="index !== 0"/>
|
<v-divider v-if="index !== 0"/>
|
||||||
<ability-list-tile
|
<ability-list-tile
|
||||||
:key="ability.name"
|
:key="ability.name"
|
||||||
:id="`${_uid}-${ability.name}`"
|
:data-id="`${_uid}-${ability.name}`"
|
||||||
v-bind="ability"
|
v-bind="ability"
|
||||||
@click="click({ability, elementId: `${_uid}-${ability.name}`})"
|
@click="click({ability, elementId: `${_uid}-${ability.name}`})"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
<v-list-tile
|
<v-list-tile
|
||||||
class="effect-list-tile"
|
class="effect-list-tile"
|
||||||
:class="{disabled: !enabled}"
|
:class="{disabled: !enabled}"
|
||||||
:id="elementId"
|
:data-id="_id"
|
||||||
v-on="$listeners.click ? { click(e){
|
v-on="$listeners.click ? { click(e){
|
||||||
$emit('click', {$props, elementId})
|
$emit('click', $props)
|
||||||
} } : {}"
|
} } : {}"
|
||||||
>
|
>
|
||||||
<v-layout row align-center class="net-effect">
|
<v-layout row align-center class="net-effect">
|
||||||
@@ -46,11 +46,6 @@
|
|||||||
stat: String,
|
stat: String,
|
||||||
statName: String,
|
statName: String,
|
||||||
},
|
},
|
||||||
computed: {
|
|
||||||
elementId(){
|
|
||||||
return `${this._uid}-${this._id}`
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
getEffectIcon,
|
getEffectIcon,
|
||||||
getOperation(op, value){
|
getOperation(op, value){
|
||||||
|
|||||||
@@ -7,13 +7,13 @@
|
|||||||
style="min-height: 48px;"
|
style="min-height: 48px;"
|
||||||
:class="{ hover }"
|
:class="{ hover }"
|
||||||
class="my-3 health-bar"
|
class="my-3 health-bar"
|
||||||
:id="`${_uid}-${_id}`"
|
:data-id="_id"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="subheading text-truncate pa-2 name"
|
class="subheading text-truncate pa-2 name"
|
||||||
@mouseover="hover = true"
|
@mouseover="hover = true"
|
||||||
@mouseleave="hover = false"
|
@mouseleave="hover = false"
|
||||||
@click="$emit('click', { elementId: `${_uid}-${_id}` })"
|
@click="$emit('click')"
|
||||||
>
|
>
|
||||||
{{ name }}
|
{{ name }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
:value="attribute.value + (attribute.adjustment || 0)"
|
:value="attribute.value + (attribute.adjustment || 0)"
|
||||||
:maxValue="attribute.value"
|
:maxValue="attribute.value"
|
||||||
:name="attribute.name"
|
:name="attribute.name"
|
||||||
|
:_id="attribute._id"
|
||||||
@change="e => $emit('change', {_id: attribute._id, change: e})"
|
@change="e => $emit('change', {_id: attribute._id, change: e})"
|
||||||
@click="e => $emit('click', {_id: attribute._id, elementId: e.elementId})"
|
@click="e => $emit('click', {_id: attribute._id})"
|
||||||
/>
|
/>
|
||||||
</v-card>
|
</v-card>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -30,10 +30,10 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
healthBarClicked({_id, elementId}){
|
healthBarClicked({_id}){
|
||||||
this.$store.commit("pushDialogStack", {
|
this.$store.commit("pushDialogStack", {
|
||||||
component: "attribute-dialog-container",
|
component: "attribute-dialog-container",
|
||||||
elementId,
|
elementId: _id,
|
||||||
data: {_id},
|
data: {_id},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
Test Dialog
|
Test Dialog
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<v-btn @click="openDialog(_uid + 'btn')" :id="_uid + 'btn'">Open Dialog</v-btn>
|
<v-btn @click="openDialog('btn')" data-id="btn">Open Dialog</v-btn>
|
||||||
<v-btn fab @click="openDialog(_uid + 'fab')" :id="_uid + 'fab'" color="green">Open Dialog</v-btn>
|
<v-btn fab @click="openDialog('fab')" data-id="fab" color="green">Open Dialog</v-btn>
|
||||||
</div>
|
</div>
|
||||||
</dialog-base>
|
</dialog-base>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template lang="html">
|
<template lang="html">
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-layout align-center justify-center>
|
<v-layout align-center justify-center>
|
||||||
<v-btn @click="openDialog(_uid + 'btn')" :id="_uid + 'btn'">
|
<v-btn @click="openDialog('btn')" data-id="btn">
|
||||||
Open Dialog
|
Open Dialog
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-layout>
|
</v-layout>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
:data-element-id="dialog.elementId"
|
:data-element-id="dialog.elementId"
|
||||||
:data-return-element-id="dialog.returnElementId"
|
:data-return-element-id="dialog.returnElementId"
|
||||||
:data-index="index"
|
:data-index="index"
|
||||||
|
:ref="index"
|
||||||
:style="getDialogStyle(index)"
|
:style="getDialogStyle(index)"
|
||||||
:elevation="6"
|
:elevation="6"
|
||||||
>
|
>
|
||||||
@@ -49,10 +50,6 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
logAndReturn(thing){
|
|
||||||
console.log(thing);
|
|
||||||
return thing;
|
|
||||||
},
|
|
||||||
popDialogStack(result){
|
popDialogStack(result){
|
||||||
this.$store.dispatch("popDialogStack", result);
|
this.$store.dispatch("popDialogStack", result);
|
||||||
},
|
},
|
||||||
@@ -67,13 +64,22 @@
|
|||||||
const top = (num - index) * -OFFSET;
|
const top = (num - index) * -OFFSET;
|
||||||
return `left:${left}px; top:${top}px;`;
|
return `left:${left}px; top:${top}px;`;
|
||||||
},
|
},
|
||||||
|
getTopElementByDataId(elementId, offset = 0){
|
||||||
|
let stackLength = this.$store.state.dialogStack.dialogs.length - offset;
|
||||||
|
if (stackLength){
|
||||||
|
let topDialog = this.$refs[stackLength - 1][0];
|
||||||
|
return topDialog.$el.querySelector(`[data-id='${elementId}']`);
|
||||||
|
} else {
|
||||||
|
return document.querySelector(`[data-id='${elementId}']`);
|
||||||
|
}
|
||||||
|
},
|
||||||
enter(target, done){
|
enter(target, done){
|
||||||
if (!target || !target.attributes['data-element-id']){
|
if (!target || !target.attributes['data-element-id']){
|
||||||
done();
|
done();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let elementId = target.attributes['data-element-id'].value;
|
let elementId = target.attributes['data-element-id'].value;
|
||||||
let source = document.getElementById(elementId);
|
let source = this.getTopElementByDataId(elementId, 1);
|
||||||
if (!source){
|
if (!source){
|
||||||
done();
|
done();
|
||||||
return;
|
return;
|
||||||
@@ -119,7 +125,7 @@
|
|||||||
}
|
}
|
||||||
elementId = target.attributes['data-element-id'].value;
|
elementId = target.attributes['data-element-id'].value;
|
||||||
}
|
}
|
||||||
let source = document.getElementById(elementId);
|
let source = this.getTopElementByDataId(elementId);
|
||||||
if (!source){
|
if (!source){
|
||||||
done();
|
done();
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user