diff --git a/erpnext/public/js/hierarchy_chart/hierarchy_chart_desktop.js b/erpnext/public/js/hierarchy_chart/hierarchy_chart_desktop.js
index ba811be..9e82fb2 100644
--- a/erpnext/public/js/hierarchy_chart/hierarchy_chart_desktop.js
+++ b/erpnext/public/js/hierarchy_chart/hierarchy_chart_desktop.js
@@ -40,7 +40,7 @@
 				me.setup_node_click_action(this);
 				me.setup_edit_node_action(this);
 			}
-		}
+		};
 	}
 
 	make_node_element(node) {
@@ -76,7 +76,7 @@
 					me.company = company.get_value();
 
 					// svg for connectors
-					me.make_svg_markers()
+					me.make_svg_markers();
 
 					if (me.$hierarchy)
 						me.$hierarchy.remove();
@@ -149,7 +149,7 @@
 					me.expand_node(root_node);
 				}
 			}
-		})
+		});
 	}
 
 	expand_node(node) {
@@ -166,7 +166,7 @@
 
 			// rebuild incoming connections
 			let grandparent = $(`#${node.parent_id}`).attr('data-parent');
-			this.refresh_connectors(grandparent)
+			this.refresh_connectors(grandparent);
 		}
 
 		if (node.expandable && !node.expanded) {
@@ -176,8 +176,8 @@
 
 	collapse_node() {
 		if (this.selected_node.expandable) {
-			this.selected_node.$children.hide();
-			$(`path[data-parent="${this.selected_node.id}"]`).hide();
+			this.selected_node.$children.hide('fast');
+			$(`path[data-parent="${this.selected_node.id}"]`).hide('fast');
 			this.selected_node.expanded = false;
 		}
 	}
@@ -222,15 +222,14 @@
 
 		if (!node.$children) {
 			node.$children = $('<ul class="node-children"></ul>')
-					.hide()
-					.appendTo(this.$hierarchy.find('.level:last'));
+				.hide()
+				.appendTo(this.$hierarchy.find('.level:last'));
 
 			node.$children.empty();
 
 			if (child_nodes) {
 				$.each(child_nodes, (_i, data) => {
 					this.add_node(node, data);
-
 					setTimeout(() => {
 						this.add_connector(node.id, data.id);
 					}, 250);
@@ -238,8 +237,8 @@
 			}
 		}
 
-		node.$children.show();
-		$(`path[data-parent="${node.id}"]`).show();
+		node.$children.show('fast');
+		$(`path[data-parent="${node.id}"]`).show('fast');
 		node.expanded = true;
 	}
 
@@ -443,6 +442,6 @@
 				return;
 
 			$(path).remove();
-		})
+		});
 	}
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js b/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
index b09b428..2ff00ba 100644
--- a/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
+++ b/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
@@ -10,7 +10,7 @@
 		this.wrapper = $(wrapper);
 		this.page = wrapper.page;
 		this.method = method;
-		this.doctype = doctype
+		this.doctype = doctype;
 
 		this.page.main.css({
 			'min-height': '300px',
@@ -40,7 +40,7 @@
 				me.setup_node_click_action(this);
 				me.setup_edit_node_action(this);
 			}
-		}
+		};
 	}
 
 	make_node_element(node) {
@@ -78,7 +78,7 @@
 					me.company = company.get_value();
 
 					// svg for connectors
-					me.make_svg_markers()
+					me.make_svg_markers();
 
 					if (me.$sibling_group)
 						me.$sibling_group.remove();
@@ -158,7 +158,7 @@
 					me.expand_node(root_node);
 				}
 			}
-		})
+		});
 	}
 
 	expand_node(node) {
@@ -248,8 +248,8 @@
 	render_child_nodes(node, child_nodes) {
 		if (!node.$children) {
 			node.$children = $('<ul class="node-children"></ul>')
-					.hide()
-					.appendTo(node.$link.parent());
+				.hide()
+				.appendTo(node.$link.parent());
 
 			node.$children.empty();
 
@@ -462,7 +462,7 @@
 	get_avatar(node) {
 		return `<span class="avatar avatar-small" title="${node.name}">
 			<span class="avatar-frame" src=${node.image} style="background-image: url(${node.image})"></span>
-		</span>`
+		</span>`;
 	}
 
 	expand_sibling_group_node(parent) {
@@ -518,7 +518,7 @@
 				return;
 
 			$(path).remove();
-		})
+		});
 	}
 
 	refresh_connectors(node_parent, node_id) {
@@ -527,4 +527,4 @@
 		$(`path[data-parent="${node_parent}"]`).remove();
 		this.add_connector(node_parent, node_id);
 	}
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/erpnext/public/scss/hierarchy_chart.scss b/erpnext/public/scss/hierarchy_chart.scss
index eefc14d..a54bf6f 100644
--- a/erpnext/public/scss/hierarchy_chart.scss
+++ b/erpnext/public/scss/hierarchy_chart.scss
@@ -62,16 +62,13 @@
 
 	.edit-chart-node {
 		display: block;
+		margin-right: 0.25rem;
 	}
 
 	.node-edit-icon {
 		display: block;
 	}
 
-	.edit-chart-node {
-		margin-right: 0.25rem;
-	}
-
 	.node-edit-icon > .icon{
 		stroke: var(--blue-500);
 	}
