-
- {{ getTitle(node) }}
{{ node.description }}
@@ -108,14 +108,14 @@ import DialogBase from '/imports/ui/dialogStack/DialogBase.vue';
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
import { parse, CompilationContext } from '/imports/parser/parser.js';
import PROPERTIES from '/imports/constants/PROPERTIES.js';
-import PropertyIcon from '/imports/ui/properties/shared/PropertyIcon.vue';
import ColumnLayout from '/imports/ui/components/ColumnLayout.vue';
+import TreeNodeView from '/imports/ui/properties/treeNodeViews/TreeNodeView.vue';
export default {
components: {
DialogBase,
ColumnLayout,
- PropertyIcon,
+ TreeNodeView,
},
props:{
slotId: {
diff --git a/app/imports/ui/creature/slots/Slots.vue b/app/imports/ui/creature/slots/Slots.vue
index c4719f0e..06995ff8 100644
--- a/app/imports/ui/creature/slots/Slots.vue
+++ b/app/imports/ui/creature/slots/Slots.vue
@@ -12,26 +12,31 @@
{{ slot.totalFilled }} / {{ slot.quantityExpected }}
-
-
-
-
+
- delete
-
-
+
+
+
+
+
+ delete
+
+
+
+
import CreatureProperties from '/imports/api/creature/CreatureProperties.js';
import TreeNodeView from '/imports/ui/properties/treeNodeViews/TreeNodeView.vue';
-import { softRemoveProperty, insertPropertyFromLibraryNode } from '/imports/api/creature/CreatureProperties.js';
+import {
+ insertPropertyFromLibraryNode,
+ softRemoveProperty,
+ restoreProperty
+} from '/imports/api/creature/CreatureProperties.js';
import getActiveProperties from '/imports/api/creature/getActiveProperties.js';
+import getPropertyTitle from '/imports/ui/properties/shared/getPropertyTitle.js';
+
export default {
components: {
TreeNodeView,
@@ -64,6 +75,13 @@ export default {
},
},
methods: {
+ clickSlotChild({_id}){
+ this.$store.commit('pushDialogStack', {
+ component: 'creature-property-dialog',
+ elementId: `slot-child-${_id}`,
+ data: {_id},
+ });
+ },
fillSlot(slot){
let slotId = slot._id;
let creatureId = this.creatureId;
@@ -90,8 +108,15 @@ export default {
}
});
},
- remove(_id){
- softRemoveProperty.call({_id});
+ remove(model){
+ softRemoveProperty.call({_id: model._id});
+ this.$store.dispatch('snackbar', {
+ text: `Deleted ${getPropertyTitle(model)}`,
+ callbackName: 'undo',
+ callback(){
+ restoreProperty.call({_id: model._id});
+ },
+ });
}
},
meteor: {
@@ -126,7 +151,4 @@ export default {
diff --git a/app/imports/ui/layouts/AppLayout.vue b/app/imports/ui/layouts/AppLayout.vue
index fae76472..3bcf8676 100644
--- a/app/imports/ui/layouts/AppLayout.vue
+++ b/app/imports/ui/layouts/AppLayout.vue
@@ -67,31 +67,7 @@
name="rightDrawer"
/>
-
- {{ snackbar.text.split(/\n+/).pop() }}
-
- {{ snackbar.callbackName }}
-
-
- close
-
-
+
@@ -101,11 +77,13 @@
import DialogStack from '/imports/ui/dialogStack/DialogStack.vue';
import { theme, darkTheme } from '/imports/ui/theme.js';
import { mapMutations } from 'vuex';
+ import Snackbars from '/imports/ui/components/snackbars/Snackbars.vue';
export default {
components: {
Sidebar,
DialogStack,
+ Snackbars,
},
data(){return {
name: 'Home',
diff --git a/app/imports/ui/properties/forms/AdjustmentForm.vue b/app/imports/ui/properties/forms/AdjustmentForm.vue
index 23272baa..183a72c3 100644
--- a/app/imports/ui/properties/forms/AdjustmentForm.vue
+++ b/app/imports/ui/properties/forms/AdjustmentForm.vue
@@ -29,6 +29,14 @@
:menu-props="{auto: true, lazy: true}"
@change="change('target', ...arguments)"
/>
+
diff --git a/app/imports/ui/properties/forms/AttributeForm.vue b/app/imports/ui/properties/forms/AttributeForm.vue
index c238df43..eab23559 100644
--- a/app/imports/ui/properties/forms/AttributeForm.vue
+++ b/app/imports/ui/properties/forms/AttributeForm.vue
@@ -65,6 +65,14 @@
name="Advanced"
standalone
>
+
+
diff --git a/app/imports/ui/properties/forms/ClassLevelForm.vue b/app/imports/ui/properties/forms/ClassLevelForm.vue
index 5164281d..afc91a99 100644
--- a/app/imports/ui/properties/forms/ClassLevelForm.vue
+++ b/app/imports/ui/properties/forms/ClassLevelForm.vue
@@ -27,6 +27,13 @@
@change="change('variableName', ...arguments)"
/>
+