diff --git a/apps/settings/css/settings.scss b/apps/settings/css/settings.scss
index 47a035016add020b42941f00cb0c9da499ac5a97..bd6446ad16555eb0e26f496afb0bdf2dcc9a8117 100644
--- a/apps/settings/css/settings.scss
+++ b/apps/settings/css/settings.scss
@@ -38,9 +38,11 @@ input {
 	.avatardiv {
 		margin: 10px auto;
 	}
+
 	.warning {
 		width: 100%;
 	}
+
 	.jcrop-keymgr {
 		display: none !important;
 	}
@@ -69,6 +71,7 @@ input {
 	left: 0;
 	width: 100%;
 	height: calc(100% - 45px);
+
 	.inner-container {
 		z-index: 2001;
 		/* above the top bar if needed */
@@ -81,15 +84,17 @@ input {
 		border-radius: var(--border-radius-large);
 		box-shadow: 0 0 10px var(--color-box-shadow);
 		padding: 15px;
+
 		.jcrop-holder,
 		.jcrop-holder img,
-		img.jcrop-preview  {
+		img.jcrop-preview {
 			border-radius: var(--border-radius);
 		}
 
 		.button {
 			margin-top: 15px;
 		}
+
 		.primary {
 			float: right;
 		}
@@ -131,19 +136,23 @@ select {
 	display: grid;
 	padding: 20px;
 	max-width: 1500px;
-	grid-template-columns:1fr 2fr 1fr;
+	grid-template-columns: 1fr 2fr 1fr;
+
 	.section {
 		padding: 10px 10px;
 		border: 0;
+
 		h2 {
 			margin-bottom: 12px;
 		}
 	}
+
 	.personal-info {
 		margin-right: 10%;
 		margin-bottom: 12px;
 		margin-top: 12px;
 	}
+
 	.personal-info[class^='icon-'], .personal-info[class*=' icon-'] {
 		background-position: 0px 2px;
 		padding-left: 30px;
@@ -156,14 +165,17 @@ select {
 	#personal-settings {
 		display: grid;
 		grid-template-columns: 1fr 2fr;
+
 		#personal-settings-avatar-container {
 			grid-template-columns: 1fr;
 			grid-template-rows: 1fr;
 		}
+
 		.personal-settings-container {
 			grid-template-columns: 1fr 1fr;
 			grid-template-rows: 1fr 1fr 1fr;
 		}
+
 		.profile-settings-container {
 			grid-template-columns: 1fr 1fr;
 			grid-template-rows: 1fr;
@@ -176,13 +188,16 @@ select {
 	#personal-settings {
 		display: grid;
 		grid-template-columns: 1fr;
+
 		#personal-settings-avatar-container {
 			grid-template-rows: 1fr;
 		}
+
 		.personal-settings-container {
 			grid-template-columns: 1fr 1fr;
 			grid-template-rows: 1fr 1fr 1fr;
 		}
+
 		.profile-settings-container {
 			grid-template-columns: 1fr 1fr;
 			grid-template-rows: 1fr;
@@ -194,13 +209,16 @@ select {
 	#personal-settings {
 		display: grid;
 		grid-template-columns: 1fr;
+
 		#personal-settings-avatar-container {
 			grid-template-rows: 1fr;
 		}
+
 		.personal-settings-container {
 			grid-template-columns: 1fr;
 			grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr;
 		}
+
 		.profile-settings-container {
 			grid-template-columns: 1fr;
 			grid-template-rows: 1fr 1fr;
@@ -212,9 +230,11 @@ select {
 	display: inline-grid;
 	grid-template-columns: 1fr 1fr;
 	grid-template-rows: 1fr 1fr 2fr;
+
 	&:after {
 		clear: both;
 	}
+
 	> div {
 		h3 {
 			position: relative;
@@ -229,6 +249,7 @@ select {
 				overflow: hidden;
 			}
 		}
+
 		> form span {
 			&[class^='icon-checkmark'], &[class^='icon-error'] {
 				position: relative;
@@ -239,18 +260,22 @@ select {
 			}
 		}
 	}
+
 	.verify {
 		position: relative;
 		left: 100%;
 		top: 0;
 		height: 0;
+
 		img {
 			padding: 12px 7px 6px;
 		}
 	}
+
 	.verify-action {
 		cursor: pointer;
 	}
+
 	input:disabled {
 		background-color: white;
 		color: black;
@@ -263,15 +288,19 @@ select {
 #body-settings #quota {
 	cursor: default;
 	position: relative;
+
 	progress {
 		height: 6px;
+
 		&::-moz-progress-bar {
 			border-radius: 3px 0 0 3px;
 		}
+
 		&::-webkit-progress-value {
 			border-radius: 3px 0 0 3px;
 		}
 	}
+
 	div {
 		font-weight: normal;
 		white-space: nowrap;
@@ -286,9 +315,11 @@ select {
 	right: -9px;
 	top: 40px;
 	width: 275px;
+
 	p {
 		padding: 10px;
 	}
+
 	.verificationCode {
 		font-family: monospace;
 		display: block;
@@ -300,35 +331,43 @@ select {
 	position: relative;
 	cursor: pointer;
 	margin-left: 10px;
+
 	&:focus {
 		.icon-federation-menu {
 			opacity: 0.7;
 		}
 	}
+
 	.icon-federation-menu {
 		padding-left: 16px;
 		background-size: 16px;
 		background-position: left center;
 		opacity: .3;
 		cursor: inherit;
+
 		.icon-triangle-s {
 			display: inline-block;
 			vertical-align: middle;
 			cursor: inherit;
 		}
 	}
+
 	.federationScopeMenu {
 		top: 44px;
+
 		&.popovermenu {
 			.menuitem {
 				// override h3 heading font size
 				font-size: 12.8px;
 				line-height: 1.6em;
+
 				.menuitem-text-detail {
 					opacity: .75;
 				}
+
 				&.active {
 					box-shadow: inset 2px 0 var(--color-primary);
+
 					.menuitem-text {
 						font-weight: bold;
 					}
@@ -350,6 +389,7 @@ select {
 	tr.expired {
 		background-color: rgba(255, 0, 0, 0.5);
 	}
+
 	td {
 		padding: 5px;
 	}
@@ -374,6 +414,7 @@ input#identity {
 		background-color: #47a447;
 		padding: 3px;
 	}
+
 	&.error {
 		color: #fff;
 		background-color: #d2322d;
@@ -382,11 +423,11 @@ input#identity {
 }
 
 
-
 table.nostyle {
 	label {
 		margin-right: 2em;
 	}
+
 	td {
 		padding: 0.2em 0;
 	}
@@ -396,17 +437,21 @@ table.nostyle {
 	#passwordform {
 		display: flex;
 		flex-wrap: wrap;
+
 		#pass1, .personal-show-container, #passwordbutton {
 			flex-shrink: 1;
 			width: 200px;
 			min-width: 150px;
 		}
+
 		#pass2 {
 			width: 100%;
 		}
+
 		.password-state {
 			display: inline-block;
 		}
+
 		.strengthify-wrapper {
 			position: absolute;
 			left: 0;
@@ -427,7 +472,7 @@ table.nostyle {
 	}
 
 	li > div {
-    	margin-left: 20px;
+		margin-left: 20px;
 	}
 
 	.two-factor-provider-settings-icon {
@@ -440,6 +485,7 @@ table.nostyle {
 .social-button {
 	padding-left: 0 !important;
 	margin-left: -10px;
+
 	img {
 		padding: 10px;
 	}
@@ -454,6 +500,7 @@ table.nostyle {
 		overflow: hidden;
 		text-overflow: ellipsis;
 	}
+
 	&.active .groupname {
 		width: 65%;
 	}
@@ -477,9 +524,11 @@ li.active {
 	position: absolute;
 	top: 2px;
 	right: 0;
+
 	input {
 		width: 150px;
 	}
+
 	label {
 		font-weight: bold;
 	}
@@ -488,6 +537,7 @@ li.active {
 /* display table at full width */
 table.grid {
 	width: 100%;
+
 	th {
 		height: 2em;
 		color: #999;
@@ -497,6 +547,7 @@ table.grid {
 		text-align: left;
 		font-weight: normal;
 	}
+
 	td {
 		border-bottom: 1px solid var(--color-border);
 		padding: 0 .5em;
@@ -514,20 +565,25 @@ td, th {
 		text-overflow: ellipsis;
 		overflow: hidden;
 	}
+
 	&.password {
 		padding-left: .8em;
+
 		> img {
 			visibility: hidden;
 		}
 	}
+
 	&.displayName > img {
 		visibility: hidden;
 	}
+
 	&.password,
 	&.mailAddress {
 		min-width: 5em;
 		max-width: 12em;
 		cursor: pointer;
+
 		span {
 			width: 90%;
 			display: inline-block;
@@ -535,9 +591,11 @@ td, th {
 			overflow: hidden;
 		}
 	}
+
 	&.mailAddress {
 		cursor: pointer;
 	}
+
 	&.password > span {
 		margin-right: 1.2em;
 		color: #C7C7C7;
@@ -551,15 +609,19 @@ span.usersLastLoginTooltip {
 /* dropdowns will be relative to this element */
 #userlist {
 	position: relative;
+
 	.storageLocation, .userBackend, .lastLogin {
 		display: none;
 	}
+
 	th.name {
 		color: #000;
 	}
+
 	tr {
 		height: 50px;
 	}
+
 	.mailAddress .loading-small {
 		width: 16px;
 		height: 16px;
@@ -567,9 +629,11 @@ span.usersLastLoginTooltip {
 		position: relative;
 		top: 3px;
 	}
+
 	.groupsListContainer.hidden {
 		display: none;
 	}
+
 	thead th,
 	thead tr {
 		z-index: 100;
@@ -584,25 +648,36 @@ span.usersLastLoginTooltip {
 	.groupsListContainer.hidden {
 		display: none;
 	}
+
 	.multiselect {
 		min-width: 150px !important;
 		position: relative;
 		top: -1px;
 	}
+
 	input {
 		&:not([type='submit']),
 		&:not([type='reset']) {
 			width: 100%;
 		}
 	}
+
+	.userActions {
+		position: sticky;
+		right: 60px;
+		z-index: 20;
+	}
+
 	.userActions input {
 		width: 44px;
 		height: 44px;
+
 		&.icon-close {
 			border: none;
 			background-color: initial;
 			opacity: .5;
 		}
+
 		&:hover {
 			opacity: 1;
 		}
@@ -637,20 +712,25 @@ span.usersLastLoginTooltip {
 		margin-right: 6px;
 		width: 16px;
 	}
+
 	li span.no-icon {
 		padding-left: 32px;
 	}
+
 	ul li.active > span.utils {
 		.delete, .rename {
 			display: block;
 		}
 	}
+
 	.appwarning {
 		background: #fcc;
 	}
+
 	&.appwarning:hover {
 		background: #fbb;
 	}
+
 	.app-external {
 		color: var(--color-text-maxcontrast);
 	}
@@ -668,6 +748,7 @@ span.version {
 
 .app-level {
 	margin-top: 8px;
+
 	span {
 		color: var(--color-text-maxcontrast);
 		background-color: transparent;
@@ -675,22 +756,25 @@ span.version {
 		border-radius: var(--border-radius);
 		padding: 3px 6px;
 	}
+
 	a {
 		padding: 10px;
 		margin: -6px;
 		white-space: nowrap;
 	}
+
 	.official {
 		background-position: left center;
 		background-position: 5px center;
 		padding-left: 25px;
 	}
+
 	.supported {
 		border-color: var(--color-success);
 		background-position: left center;
 		background-position: 5px center;
 		padding-left: 25px;
-		color: var(--color-success) ;
+		color: var(--color-success);
 	}
 }
 
@@ -706,29 +790,36 @@ span.version {
 	}
 
 }
+
 #apps-list.store {
 	.section {
 		border: 0;
 	}
+
 	.app-name {
 		display: block;
 		margin: 5px 0;
 	}
+
 	.app-name, .app-image * {
 		cursor: pointer;
 	}
+
 	.app-summary {
 		opacity: .7;
 	}
+
 	.app-image-icon .icon-settings-dark {
 		width: 100%;
 		height: 150px;
 		background-size: 45px;
 		opacity: 0.5;
 	}
+
 	.app-score-image {
 		height: 14px;
 	}
+
 	.actions {
 		margin-top: 10px;
 	}
@@ -745,26 +836,33 @@ span.version {
 			opacity: .7;
 		}
 	}
+
 	.app-level {
 		clear: right;
 		width: 100%;
+
 		.supported,
 		.official {
 			vertical-align: top;
 		}
+
 		.app-score-image {
 			float: right;
 		}
 	}
+
 	.app-author, .app-licence {
 		color: var(--color-text-maxcontrast);
 	}
+
 	.app-dependencies {
 		margin: 10px 0;
 	}
+
 	.app-description p {
 		margin: 10px 0;
 	}
+
 	.close {
 		position: absolute;
 		top: 0;
@@ -775,18 +873,21 @@ span.version {
 		width: 44px;
 		height: 44px;
 	}
+
 	.actions {
 		display: flex;
 		align-items: center;
 
-		.app-groups{
+		.app-groups {
 			padding: 5px;
 		}
 	}
+
 	.appslink {
 		text-decoration: underline;
 		margin-right: 5px;
 	}
+
 	.app-level,
 	.actions,
 	.documentation,
@@ -871,8 +972,9 @@ span.version {
 	}
 
 	/* correctly display help icons next to headings */
-	h2  {
+	h2 {
 		margin-bottom: 22px;
+
 		.icon-info {
 			padding: 6px 20px;
 			vertical-align: text-bottom;
@@ -947,24 +1049,30 @@ span.version {
 	.app-list-move {
 		transition: transform 1s;
 	}
+
 	#app-list-update-all {
 		margin-left: 10px;
 	}
+
 	.counter {
 		padding-left: $header-height - 10px;
 		margin: 10px;
 	}
+
 	&.installed {
 		.apps-list-container {
 			display: table;
 			width: 100%;
 			height: auto;
 		}
+
 		margin-bottom: 100px;
+
 		.section {
 			display: table-row;
 			padding: 0;
 			margin: 0;
+
 			> * {
 				display: table-cell;
 				height: initial;
@@ -974,22 +1082,27 @@ span.version {
 				padding: 6px;
 				box-sizing: border-box;
 			}
+
 			&.selected {
 				background-color: var(--color-background-dark);
 			}
 
 		}
+
 		.groups-enable {
 			margin-top: 0;
+
 			label {
 				margin-right: 3px;
 			}
 		}
+
 		.app-image {
 			width: 44px;
 			height: auto;
 			text-align: right;
 		}
+
 		.app-image-icon svg,
 		.app-image-icon .icon-settings-dark {
 			margin-top: 5px;
@@ -999,8 +1112,10 @@ span.version {
 			background-size: cover;
 			display: inline-block;
 		}
+
 		.actions {
 			text-align: right;
+
 			.icon-loading-small {
 				display: inline-block;
 				top: 4px;
@@ -1008,6 +1123,7 @@ span.version {
 			}
 		}
 	}
+
 	&:not(.installed) .app-image-icon svg {
 		position: absolute;
 		bottom: 43px;
@@ -1016,12 +1132,15 @@ span.version {
 		height: 64px;
 		opacity: .1;
 	}
+
 	display: flex;
 	flex-wrap: wrap;
 	align-content: flex-start;
+
 	&.hidden {
 		display: none;
 	}
+
 	.section {
 		position: relative;
 		flex: 0 0 auto;
@@ -1030,42 +1149,52 @@ span.version {
 			display: block;
 			margin: 8px 0;
 		}
+
 		&:hover {
 			background-color: var(--color-background-dark);
 		}
 	}
+
 	.app-description {
 		p {
 			margin: 10px 0;
 		}
+
 		ul {
 			list-style: disc;
 		}
+
 		ol {
 			list-style: decimal;
+
 			ol, ul {
 				padding-left: 15px;
 			}
 		}
+
 		> {
 			ul, ol {
 				margin-left: 19px;
 			}
 		}
+
 		ul {
 			ol, ul {
 				padding-left: 15px;
 			}
 		}
 	}
+
 	/* Bundle header */
 	.apps-header {
 		display: table-row;
 		position: relative;
+
 		div {
 			display: table-cell;
 			height: 70px;
 		}
+
 		h2 {
 			display: table-cell;
 			position: absolute;
@@ -1077,6 +1206,7 @@ span.version {
 				top: -1px;
 				margin-left: 12px;
 			}
+
 			+ .section {
 				margin-top: 50px;
 			}
@@ -1120,6 +1250,7 @@ table.grid td.date {
 		&.message {
 			padding: 12px;
 		}
+
 		&.icon {
 			width: 32px;
 			height: 32px;
@@ -1127,12 +1258,15 @@ table.grid td.date {
 			display: inline-block;
 			border-radius: 50%;
 		}
+
 		&.icon-checkmark-white {
 			background-color: var(--color-success);
 		}
+
 		&.icon-error-white {
 			background-color: var(--color-warning);
 		}
+
 		&.icon-close-white {
 			background-color: var(--color-error);
 		}
@@ -1143,15 +1277,19 @@ table.grid td.date {
 	p {
 		padding-bottom: 0.8em;
 	}
+
 	input#shareapiExpireAfterNDays {
 		width: 40px;
 	}
+
 	.indent {
 		padding-left: 28px;
 	}
+
 	.double-indent {
 		padding-left: 56px;
 	}
+
 	.nocheckbox {
 		padding-left: 20px;
 	}
@@ -1201,6 +1339,7 @@ table.grid td.date {
 		width: 300px;
 		text-align: right;
 	}
+
 	select:nth-child(2),
 	input:not([type='button']) {
 		width: 143px;
@@ -1220,6 +1359,7 @@ table.grid td.date {
 	height: 16px;
 	width: 16px;
 	vertical-align: text-bottom;
+
 	&.success {
 		border-radius: 50%;
 	}
@@ -1242,9 +1382,11 @@ span {
 		background-color: var(--color-success);
 		border-radius: var(--border-radius);
 	}
+
 	&.error {
 		background-color: var(--color-error);
 	}
+
 	&.indeterminate {
 		background-color: var(--color-warning);
 		border-radius: 40% 0;
@@ -1252,7 +1394,6 @@ span {
 }
 
 
-
 /* OPERA hack for strengthify*/
 doesnotexist:-o-prefocus, .strengthify-wrapper {
 	left: 185px;
@@ -1299,9 +1440,11 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 		height: 50px;
 		background-position: left center;
 	}
+
 	.errors, .errors a {
 		color: var(--color-error);
 	}
+
 	.warnings, .warnings a {
 		color: var(--color-warning);
 	}
@@ -1323,6 +1466,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 
 #admin-tips li {
 	list-style: initial;
+
 	a {
 		display: inline-block;
 		padding: 3px 0;
@@ -1353,11 +1497,13 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 #body-settings {
 	$grid-row-height: 60px;
 	$grid-col-min-width: 150px;
+
 	#app-content.user-list-grid {
 		display: grid;
 		grid-auto-columns: 1fr;
 		grid-auto-rows: $grid-row-height;
 		grid-column-gap: 20px;
+
 		.row {
 			// TODO replace with css4 subgrid when available
 			// fallback for ie11 no grid
@@ -1366,10 +1512,12 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 			grid-row-start: span 1;
 			grid-gap: 3px;
 			align-items: center;
+			z-index: 0;
 			/* let's define the column until storage path,
 			   what follows will be manually defined  */
 			grid-template-columns: 44px minmax($grid-col-min-width + 30px, 1fr) repeat(auto-fit, minmax($grid-col-min-width, 1fr));
 			border-bottom: var(--color-border) 1px solid;
+
 			&.disabled {
 				opacity: .5;
 			}
@@ -1384,9 +1532,10 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 			.lastLogin {
 				min-width: $grid-col-min-width;
 				display: flex;
-				color:  var(--color-text-dark);
+				color: var(--color-text-dark);
 				vertical-align: baseline;
 			}
+
 			.groups,
 			.subadmins,
 			.quota {
@@ -1396,13 +1545,19 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 					vertical-align: baseline;
 				}
 			}
+
 			.obfuscated {
 				width: 400px;
 				opacity: .7;
 			}
+
 			.userActions {
 				min-width: 44px;
+				position: sticky;
+				right: 40px;
+				z-index: 109;
 			}
+
 			.subtitle {
 				color: var(--color-text-maxcontrast);
 				vertical-align: baseline;
@@ -1414,11 +1569,13 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 				@include position('sticky');
 				align-self: normal;
 				background-color: var(--color-main-background);
-				z-index: 55; /* above multiselect */
+				z-index: 100; /* above multiselect */
 				top: $header-height;
+
 				&.sticky {
 					box-shadow: 0 -2px 10px 1px var(--color-box-shadow);
 				}
+
 				/* fake input for groups validation */
 				input#newgroups {
 					position: absolute;
@@ -1428,10 +1585,16 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 					z-index: 0;
 				}
 			}
+
 			// separate prop to set initial value to top: 50px
 			&#new-user {
-				top: $header-height + $grid-row-height;
+				height: 120px;
+
+				.row {
+					padding-top: 50px;
+				}
 			}
+
 			&#grid-header {
 				color: var(--color-text-maxcontrast);
 				z-index: 60; /* above new-user */
@@ -1454,49 +1617,58 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 					vertical-align: baseline;
 				}
 			}
+
 			&:hover {
 				input:not([type='submit']):not(:focus):not(:active) {
 					border-color: var(--color-border) !important;
 				}
+
 				&:not(#grid-header) {
 					box-shadow: 5px 0 0 var(--color-primary-element) inset;
 				}
 			}
+
 			> div,
 			> form {
 				grid-row: 1;
 				display: inline-flex;
 				color: var(--color-text-lighter);
 				position: relative;
+
 				> input:not(:focus):not(:active) {
 					border-color: transparent;
 					cursor: pointer;
 				}
-				> input:focus, >input:active {
+
+				> input:focus, > input:active {
 					+ .icon-confirm {
 						display: block !important;
 					}
 				}
+
 				/* inputs like mail, username, password */
 				&:not(.userActions) > input:not([type='submit']) {
 					width: 100%;
 					min-width: 0;
 				}
+
 				&.name {
 					word-break: break-all;
 				}
+
 				&.displayName,
 				&.mailAddress {
 					> input {
 						text-overflow: ellipsis;
 					}
 				}
+
 				&.name,
 				&.userBackend {
 					/* better multi-line visual */
 					line-height: 1.3em;
 					max-height: 100%;
-					overflow : hidden;
+					overflow: hidden;
 					/* not supported by all browsers
 					   so we keep the overflow hidden
 					   as a fallback */
@@ -1505,77 +1677,93 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
 					-webkit-line-clamp: 2;
 					-webkit-box-orient: vertical;
 				}
+
 				&.quota {
 					height: 44px;
 					display: flex;
 					align-items: center;
 					justify-content: center;
+
 					progress {
 						width: 100%;
 						margin: 0 10px;
 						height: 3px;
 					}
 				}
+
 				.icon-confirm {
 					flex: 0 0 auto;
 					cursor: pointer;
+
 					&:not(:active) {
 						display: none;
 					}
 				}
+
 				&.avatar {
 					height: 32px;
 					width: 32px;
 					margin: 6px;
+
 					img {
 						display: block;
 					}
 				}
+
 				&.userActions {
-				  .action-item {
-					position: absolute;
-				  }
+					.action-item {
+						position: absolute;
+					}
+
 					#newsubmit {
 						width: 100%;
 					}
+
 					.toggleUserActions {
 						position: relative;
 						display: block;
 						align-items: center;
+
 						.icon-more {
 							width: 44px;
 							height: 44px;
 							opacity: .5;
 							cursor: pointer;
 							margin-left: 40px;
+
 							&:hover {
 								opacity: .7;
 							}
 						}
 					}
+
 					.feedback {
 						display: flex;
 						align-items: center;
 						white-space: nowrap;
 						transition: opacity 200ms ease-in-out;
+
 						.icon-checkmark {
 							opacity: .5;
 							margin-right: 5px;
 						}
 					}
 				}
+
 				/* Fill the grid cell */
 				.multiselect.multiselect-vue {
 					width: 100%;
 				}
 			}
 		}
+
 		.infinite-loading-container {
 			display: flex;
 			align-items: center;
 			justify-content: center;
 			grid-row-start: span 4;
 		}
+
 		.users-list-end {
 			opacity: .5;
 			user-select: none;
diff --git a/apps/settings/js/vue-0.js b/apps/settings/js/vue-0.js
index ded87d3fa8c6b77bd424ce14d3bc4fa5a43667ed..3cbe307be72df678fbcfaeaa32891acaa3d9eaaf 100644
Binary files a/apps/settings/js/vue-0.js and b/apps/settings/js/vue-0.js differ
diff --git a/apps/settings/js/vue-0.js.map b/apps/settings/js/vue-0.js.map
index fcc43b0366155f524086e02ba293efabd11cda7b..0d2d9ef9ada8a76b10d5f0186cdc1efcecbec90f 100644
Binary files a/apps/settings/js/vue-0.js.map and b/apps/settings/js/vue-0.js.map differ
diff --git a/apps/settings/js/vue-1.js b/apps/settings/js/vue-1.js
new file mode 100644
index 0000000000000000000000000000000000000000..c3128715eeb64228bf843b7266b1cc1ef1e6bdd8
Binary files /dev/null and b/apps/settings/js/vue-1.js differ
diff --git a/apps/settings/js/vue-1.js.map b/apps/settings/js/vue-1.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..6fd2f125c9178a4ca043598efb48a2346f07c0c9
Binary files /dev/null and b/apps/settings/js/vue-1.js.map differ
diff --git a/apps/settings/js/vue-2.js b/apps/settings/js/vue-2.js
new file mode 100644
index 0000000000000000000000000000000000000000..5256cff103337fd2c4c19e2ba1f2db5ac267c6b1
Binary files /dev/null and b/apps/settings/js/vue-2.js differ
diff --git a/apps/settings/js/vue-2.js.map b/apps/settings/js/vue-2.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..08af45fd4c64bf03050c2961e3e797c24730e3b9
Binary files /dev/null and b/apps/settings/js/vue-2.js.map differ
diff --git a/apps/settings/js/vue-3.js b/apps/settings/js/vue-3.js
new file mode 100644
index 0000000000000000000000000000000000000000..82c330b7e651369377088f5dd868a007fa34f9ac
Binary files /dev/null and b/apps/settings/js/vue-3.js differ
diff --git a/apps/settings/js/vue-3.js.map b/apps/settings/js/vue-3.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..3b3fa557d266b540abcaeaabe8da0905c30ce03c
Binary files /dev/null and b/apps/settings/js/vue-3.js.map differ
diff --git a/apps/settings/js/vue-4.js b/apps/settings/js/vue-4.js
index 15cb4918692b602d5310c219ec0e63ce9aee8d10..8282b13575a2964521e8793c6b8b39bdf961f9b8 100644
Binary files a/apps/settings/js/vue-4.js and b/apps/settings/js/vue-4.js differ
diff --git a/apps/settings/js/vue-4.js.map b/apps/settings/js/vue-4.js.map
index 61040d5a44e9626f52c656fdf93dfb5052889848..41747635c769b23baddcea5fc0314e12a2be262c 100644
Binary files a/apps/settings/js/vue-4.js.map and b/apps/settings/js/vue-4.js.map differ
diff --git a/apps/settings/js/vue-5.js b/apps/settings/js/vue-5.js
index 9dd9de1e8f6916d091e1a50ad9317562d3168d42..d855d9835be39cfddd8e3e5d34ab993bde76aa49 100644
Binary files a/apps/settings/js/vue-5.js and b/apps/settings/js/vue-5.js differ
diff --git a/apps/settings/js/vue-5.js.map b/apps/settings/js/vue-5.js.map
index bf7d1f2530438cbc9a3a8f57d6cd457dd599476e..91f8bfc26ab3210efaa857308b9d05c355dbf530 100644
Binary files a/apps/settings/js/vue-5.js.map and b/apps/settings/js/vue-5.js.map differ
diff --git a/apps/settings/js/vue-6.js b/apps/settings/js/vue-6.js
index 0e7e28b4d2769814ce69fd224045e761693465be..b364c1564d1bba21c9c6d531b1d3c5598d867dfe 100644
Binary files a/apps/settings/js/vue-6.js and b/apps/settings/js/vue-6.js differ
diff --git a/apps/settings/js/vue-6.js.map b/apps/settings/js/vue-6.js.map
index 757254f354bd55b3c92630431b704458093eacc5..389ec547bcd6c37d102f55e464f079617189835a 100644
Binary files a/apps/settings/js/vue-6.js.map and b/apps/settings/js/vue-6.js.map differ
diff --git a/apps/settings/js/vue-7.js b/apps/settings/js/vue-7.js
index f0c36f7dfe18efb8005bc3fcb03b649c61940358..5492f2bb30827d803e1f2beeb69e75296e2aae5a 100644
Binary files a/apps/settings/js/vue-7.js and b/apps/settings/js/vue-7.js differ
diff --git a/apps/settings/js/vue-7.js.map b/apps/settings/js/vue-7.js.map
index 513533c8208c8ac04447d5cb3455a78adb23b8a1..3873f826b4b9fc9bff91bd47124a5b16878cf452 100644
Binary files a/apps/settings/js/vue-7.js.map and b/apps/settings/js/vue-7.js.map differ
diff --git a/apps/settings/js/vue-settings-apps-users-management.js b/apps/settings/js/vue-settings-apps-users-management.js
index 355c89af96e2dc8889df7af0d06b54c84b372ec5..1f22e6624addee9092a63ad1418bd204478c3688 100644
Binary files a/apps/settings/js/vue-settings-apps-users-management.js and b/apps/settings/js/vue-settings-apps-users-management.js differ
diff --git a/apps/settings/js/vue-settings-apps-users-management.js.map b/apps/settings/js/vue-settings-apps-users-management.js.map
index dab1f98209b916eac216c8376fcc18f2470ccc12..02511e90735a98711864599fe55acbdd8ed61424 100644
Binary files a/apps/settings/js/vue-settings-apps-users-management.js.map and b/apps/settings/js/vue-settings-apps-users-management.js.map differ
diff --git a/apps/settings/src/components/UserList.vue b/apps/settings/src/components/UserList.vue
index 0fb1d09fbf72387b8317120dad5a6e8349a5628f..6b41ba0552a78cd7a789e7ae63aa28e2acd65817 100644
--- a/apps/settings/src/components/UserList.vue
+++ b/apps/settings/src/components/UserList.vue
@@ -22,58 +22,6 @@
 
 <template>
 	<div id="app-content" class="user-list-grid" @scroll.passive="onScroll">
-		<div id="grid-header"
-			:class="{'sticky': scrolled && !showConfig.showNewUserForm}"
-			class="row">
-			<div id="headerAvatar" class="avatar" />
-			<div id="headerName" class="name">
-				{{ t('settings', 'Username') }}
-
-				<div class="subtitle">
-					{{ t('settings', 'Display name') }}
-				</div>
-			</div>
-			<div id="headerPassword" class="password">
-				{{ t('settings', 'Password') }}
-			</div>
-			<div id="headerAddress" class="mailAddress">
-				{{ t('settings', 'Email') }}
-			</div>
-			<div id="headerGroups" class="groups">
-				{{ t('settings', 'Groups') }}
-			</div>
-			<div v-if="subAdminsGroups.length>0 && settings.isAdmin"
-				id="headerSubAdmins"
-				class="subadmins">
-				{{ t('settings', 'Group admin for') }}
-			</div>
-			<div id="headerQuota" class="quota">
-				{{ t('settings', 'Quota') }}
-			</div>
-			<div v-if="showConfig.showLanguages"
-				id="headerLanguages"
-				class="languages">
-				{{ t('settings', 'Language') }}
-			</div>
-
-			<div v-if="showConfig.showUserBackend || showConfig.showStoragePath"
-				class="headerUserBackend userBackend">
-				<div v-if="showConfig.showUserBackend" class="userBackend">
-					{{ t('settings', 'User backend') }}
-				</div>
-				<div v-if="showConfig.showStoragePath"
-					class="subtitle storageLocation">
-					{{ t('settings', 'Storage location') }}
-				</div>
-			</div>
-			<div v-if="showConfig.showLastLogin"
-				class="headerLastLogin lastLogin">
-				{{ t('settings', 'Last login') }}
-			</div>
-
-			<div class="userActions" />
-		</div>
-
 		<form v-show="showConfig.showNewUserForm"
 			id="new-user"
 			:class="{'sticky': scrolled && showConfig.showNewUserForm}"
@@ -96,16 +44,16 @@
 					pattern="[a-zA-Z0-9 _\.@\-']+"
 					required
 					type="text">
-			</div>
-			<div class="displayName">
-				<input id="newdisplayname"
-					v-model="newUser.displayName"
-					:placeholder="t('settings', 'Display name')"
-					autocapitalize="none"
-					autocomplete="off"
-					autocorrect="off"
-					name="displayname"
-					type="text">
+				<div class="displayName">
+					<input id="newdisplayname"
+						v-model="newUser.displayName"
+						:placeholder="t('settings', 'Display name')"
+						autocapitalize="none"
+						autocomplete="off"
+						autocorrect="off"
+						name="displayname"
+						type="text">
+				</div>
 			</div>
 			<div class="password">
 				<input id="newuserpassword"
@@ -204,8 +152,66 @@
 					class="button primary icon-checkmark-white has-tooltip"
 					type="submit"
 					value="">
+				<div class="closeButton">
+					<Actions>
+						<ActionButton icon="icon-close" @click="onClose">
+							{{ t('settings', 'Close') }}
+						</ActionButton>
+					</Actions>
+				</div>
 			</div>
 		</form>
+		<div id="grid-header"
+			:class="{'sticky': scrolled && !showConfig.showNewUserForm}"
+			class="row">
+			<div id="headerAvatar" class="avatar" />
+			<div id="headerName" class="name">
+				{{ t('settings', 'Username') }}
+
+				<div class="subtitle">
+					{{ t('settings', 'Display name') }}
+				</div>
+			</div>
+			<div id="headerPassword" class="password">
+				{{ t('settings', 'Password') }}
+			</div>
+			<div id="headerAddress" class="mailAddress">
+				{{ t('settings', 'Email') }}
+			</div>
+			<div id="headerGroups" class="groups">
+				{{ t('settings', 'Groups') }}
+			</div>
+			<div v-if="subAdminsGroups.length>0 && settings.isAdmin"
+				id="headerSubAdmins"
+				class="subadmins">
+				{{ t('settings', 'Group admin for') }}
+			</div>
+			<div id="headerQuota" class="quota">
+				{{ t('settings', 'Quota') }}
+			</div>
+			<div v-if="showConfig.showLanguages"
+				id="headerLanguages"
+				class="languages">
+				{{ t('settings', 'Language') }}
+			</div>
+
+			<div v-if="showConfig.showUserBackend || showConfig.showStoragePath"
+				class="headerUserBackend userBackend">
+				<div v-if="showConfig.showUserBackend" class="userBackend">
+					{{ t('settings', 'User backend') }}
+				</div>
+				<div v-if="showConfig.showStoragePath"
+					class="subtitle storageLocation">
+					{{ t('settings', 'Storage location') }}
+				</div>
+			</div>
+			<div v-if="showConfig.showLastLogin"
+				class="headerLastLogin lastLogin">
+				{{ t('settings', 'Last login') }}
+			</div>
+
+			<div class="userActions" />
+		</div>
 
 		<user-row v-for="(user, key) in filteredUsers"
 			:key="key"
@@ -236,7 +242,7 @@
 
 <script>
 import userRow from './UserList/UserRow'
-import { Multiselect } from 'nextcloud-vue'
+import { Multiselect, Actions, ActionButton } from 'nextcloud-vue'
 import InfiniteLoading from 'vue-infinite-loading'
 import Vue from 'vue'
 
@@ -268,6 +274,8 @@ export default {
 		userRow,
 		Multiselect,
 		InfiniteLoading,
+		Actions,
+		ActionButton,
 	},
 	props: {
 		users: {
@@ -561,6 +569,9 @@ export default {
 				this.$refs.infiniteLoading.stateChanger.reset()
 			}
 		},
+		onClose() {
+			this.showConfig.showNewUserForm = false
+		},
 	},
 }
 </script>
diff --git a/apps/settings/src/components/UserList/UserRow.vue b/apps/settings/src/components/UserList/UserRow.vue
index 39d98f46f97471fbb5c33a4fbb66c1df943bf312..e7c039376f5a3b28754b9fa2fb549ae1ad0faf43 100644
--- a/apps/settings/src/components/UserList/UserRow.vue
+++ b/apps/settings/src/components/UserList/UserRow.vue
@@ -56,10 +56,14 @@
 		:sub-admins-groups="subAdminsGroups"
 		:user-actions="userActions"
 		:user="user"
+		:class="{'row--menu-opened': openedMenu}"
 		@hideMenu="hideMenu"
 		@toggleMenu="toggleMenu" />
 	<div v-else
-		:class="{'disabled': loading.delete || loading.disable}"
+		:class="{
+			'disabled': loading.delete || loading.disable,
+			'row--menu-opened': openedMenu
+		}"
 		:data-id="user.id"
 		class="row row--editable">
 		<div :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"
@@ -675,3 +679,9 @@ export default {
 	},
 }
 </script>
+<style scoped lang="scss">
+	// Force menu to be above other rows
+	.row--menu-opened {
+		z-index: 1 !important;
+	}
+</style>