Skip to content

Commit 9199ffa

Browse files
author
Simon Eldevig
committed
fix: resolve issue with nested property names
1 parent e857681 commit 9199ffa

File tree

4 files changed

+6
-7
lines changed

4 files changed

+6
-7
lines changed

src/components/PropertyEditor.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<div :class="{'property__actions d-flex align-items-center': !editPropertyName}">
1515
<div v-if="model.type === 'object' || model.type === 'model'" class="mr-2 d-flex align-items-center">
1616
<small class="mr-2">Remove key</small>
17-
<MazSwitch v-model="localModel.removeKey" />
17+
<MazSwitch v-if="localModel.removeKey" v-model="localModel.removeKey" />
1818
</div>
1919
<MazBtn v-if="!hideEdit" title="Rename" fab outline size="mini" class="property__actions--btn mr-2" color="primary" @click="editPropName">
2020
<span class="material-icons">edit</span>
@@ -42,7 +42,6 @@ export default class PropertyEditor extends Vue {
4242
newPropertyName = '';
4343
$eventBus: any;
4444
localModel = new BaseDTO();
45-
removeKey = false;
4645
4746
editPropName () {
4847
this.editPropertyName = !this.editPropertyName;

src/components/RecursiveCollapse.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<div v-if="isSubChild" class="property__actions d-flex align-items-center">
2222
<div v-if="dataModel.type === 'object' || dataModel.type === 'model'" class="mr-2 d-flex align-items-center">
2323
<small class="mr-2">Remove key</small>
24-
<MazSwitch v-model="dataModel.removeKey" />
24+
<MazSwitch v-if="dataModel.removeKey" v-model="dataModel.removeKey" />
2525
</div>
2626
<MazBtn title="Rename" fab outline size="mini" class="mr-2 property__actions--btn" color="primary" @click.stop="editPropName">
2727
<span class="material-icons">edit</span>

src/store/actions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default {
3838
updateModelProperty (context: any, props: any) {
3939
let clonedObject = Vue.prototype.$lodash.cloneDeep(context.state.currentModel);
4040
if (props.propertyName !== props.oldPropertyName) {
41-
clonedObject.value = renameObjectKey(clonedObject.value, props.oldPropertyName, props.propertyName);
41+
clonedObject.value = renameObjectKey(clonedObject.value, props.oldPropertyName, props.propertyName, props.value);
4242
}
4343
clonedObject = setObjectValue(clonedObject, props.value);
4444
context.commit('setCurrentModel', clonedObject);

src/utils/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ import Vue from 'vue';
22
import { BaseDTO } from '@/types';
33
import store from '../store';
44

5-
const renameObjectKey = (oldObject: BaseDTO, oldKey: string, newKey: string): BaseDTO => {
5+
const renameObjectKey = (oldObject: BaseDTO, oldKey: string, newKey: string, value: BaseDTO): BaseDTO => {
66
const newObject = Object.keys(oldObject).reduce((acc: { [key: string]: BaseDTO }, val) => {
7-
if (val === oldKey) {
7+
if (val === oldKey && value.id === oldObject[oldKey]?.id) {
88
acc[newKey] = oldObject[oldKey];
99
} else {
1010
acc[val] = oldObject[val];
1111
}
1212

1313
if (oldObject[val] && acc[val] && (oldObject[val].type === 'array' || oldObject[val].type === 'object')) {
1414
const clonedObject = Vue.prototype.$lodash.cloneDeep(acc[val].value);
15-
acc[val].value = renameObjectKey(clonedObject, oldKey, newKey);
15+
acc[val].value = renameObjectKey(clonedObject, oldKey, newKey, value);
1616
}
1717

1818
return acc;

0 commit comments

Comments
 (0)