diff --git a/apps/settings/css/settings.scss b/apps/settings/css/settings.scss index bd6446ad16555eb0e26f496afb0bdf2dcc9a8117..a07072aa8f368408ca3453e8082e9588de59b877 100644 --- a/apps/settings/css/settings.scss +++ b/apps/settings/css/settings.scss @@ -606,90 +606,6 @@ span.usersLastLoginTooltip { white-space: nowrap; } -/* 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; - margin-left: -26px; - position: relative; - top: 3px; - } - - .groupsListContainer.hidden { - display: none; - } - - thead th, - thead tr { - z-index: 100; - background-color: var(--color-main-background); - @include position('sticky'); - // positional attribute is required for position to take affect. - top: 0; - } -} - -#newuser { - .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; - } - } -} - -/* used to highlight a user row in red */ - -#userlist tr.row-warning { - background-color: #FDD; -} - /* APPS */ #app-content > svg.app-filter { float: left; @@ -1496,12 +1412,11 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { /* USERS LIST -------------------------------------------------------------- */ #body-settings { $grid-row-height: 60px; - $grid-col-min-width: 150px; + $grid-col-min-width: 160px; + overflow-x: scroll; #app-content.user-list-grid { display: grid; - grid-auto-columns: 1fr; - grid-auto-rows: $grid-row-height; grid-column-gap: 20px; .row { @@ -1509,13 +1424,20 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { // fallback for ie11 no grid display: flex; display: grid; + min-height: $grid-row-height; 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)); + grid-template-columns: + 44px + minmax($grid-col-min-width + 30px, 1fr) // username, displayname + minmax($grid-col-min-width, 1fr) // password + minmax($grid-col-min-width, 1fr) // email + minmax(1.5*$grid-col-min-width, 1fr) // groups + minmax(1.5*$grid-col-min-width, 1fr) // group admins + repeat(auto-fit, minmax($grid-col-min-width, 1fr)); border-bottom: var(--color-border) 1px solid; &.disabled { @@ -1531,16 +1453,20 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { .userBackend, .lastLogin { min-width: $grid-col-min-width; - display: flex; + color: var(--color-text-dark); vertical-align: baseline; + text-overflow: ellipsis; + overflow: hidden; } .groups, .subadmins, .quota { + min-width: $grid-col-min-width; + .multiselect { - min-width: $grid-col-min-width; + width: 100%; color: var(--color-text-dark); vertical-align: baseline; } @@ -1552,10 +1478,12 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { } .userActions { - min-width: 44px; + display: flex; + justify-content: flex-end; position: sticky; - right: 40px; - z-index: 109; + right: 0px; + min-width: 88px; + background-color: var(--color-main-background); } .subtitle { @@ -1628,12 +1556,15 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { } } + > form { + width: 100%; + } + > div, > form { grid-row: 1; display: inline-flex; color: var(--color-text-lighter); - position: relative; > input:not(:focus):not(:active) { border-color: transparent; @@ -1711,9 +1642,8 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { } &.userActions { - .action-item { - position: absolute; - } + display: flex; + justify-content: flex-end; #newsubmit { width: 100%; @@ -1721,15 +1651,15 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { .toggleUserActions { position: relative; - display: block; + display: flex; align-items: center; + background-color: var(--color-main-background); .icon-more { width: 44px; height: 44px; opacity: .5; cursor: pointer; - margin-left: 40px; &:hover { opacity: .7; diff --git a/apps/settings/js/vue-0.js b/apps/settings/js/vue-0.js index 22e73276398a63cf58463c970156e0017998152c..b8a7322c3054a8467ea74c42241daf57424b475b 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 fb8078e9baa5da09c0a77a54c7dc984bd9bf0fb5..f07540e1c3ebaf0f32d6abe9c93a076fa710802f 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-4.js b/apps/settings/js/vue-4.js index c14bd5fc32c943293f0e45c4ea0185037925b807..29ddea52ffc81b4df413ed4fd4828db641e75c12 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 4ac2f3cc1c56636ca91ea042ad66be4857ca5c68..2b0de75e7c386a5a36b4a19b6fde759c01eccdfc 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 2d98fdf99f8281ea3e3d420dd45f6eb00a591143..e77272a66506c200551358d07051dcfe2d2023b6 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 2fb2d67017e40160c756c1623e7b9a12b18638a5..86767c5c047b7235f3fcb8b814d33a669f33264c 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 8fb2b1bbbfe3e933fe6c1f0b08b44985f4f919a7..8095385663b0e42d1bfbedff68f216c276d17676 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 ecf03d4bf671c56fea66126ce3ed8f676a22f02a..3732baff879dda62051a174b7c8fee2bb2887dcc 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 4ed6980705df30d73681fe08e86a4a6fa5752b6a..2ce520cecb7a76f22008f2f5569e10a6d00738bf 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 921b6916a97ee41ad19bb083113ec1f7290afc01..30be62e62409490b1bca67e36398179d3bb66b36 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 8ba048cb0b0e478aaeb4fff99546f16f9f67219f..e05fa549618b2c9e99cdd504f9b9db59c75a822e 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 cce291fd92a759e1c2d980489132937623d008aa..5f506582a5f61cf5fae7182d8389a9f9cb7963a6 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 15462a1e7ae854b9feb1a8a4839999c7e287e43d..37b510e2079d35106db29eda06d172c396fef075 100644 --- a/apps/settings/src/components/UserList.vue +++ b/apps/settings/src/components/UserList.vue @@ -575,3 +575,8 @@ export default { }, } </script> +<style scoped> + .row::v-deep .multiselect__single { + z-index: auto !important; + } +</style> diff --git a/apps/settings/src/components/UserList/UserRow.vue b/apps/settings/src/components/UserList/UserRow.vue index 0fe438752eeeba59a9eee9375a5aae80c41cbda0..d0787b2d0e329f64ba33791c0eaf2a4c12696d38 100644 --- a/apps/settings/src/components/UserList/UserRow.vue +++ b/apps/settings/src/components/UserList/UserRow.vue @@ -76,32 +76,35 @@ width="32"> </div> <!-- dirty hack to ellipsis on two lines --> - <div class="displayName"> + <div v-if="user.backendCapabilities.setDisplayName" class="displayName"> <form :class="{'icon-loading-small': loading.displayName}" class="displayName" @submit.prevent="updateDisplayName"> - <template v-if="user.backendCapabilities.setDisplayName"> - <input v-if="user.backendCapabilities.setDisplayName" - :id="'displayName'+user.id+rand" - ref="displayName" - :disabled="loading.displayName||loading.all" - :value="user.displayname" - autocapitalize="off" - autocomplete="new-password" - autocorrect="off" - spellcheck="false" - type="text"> - <input v-if="user.backendCapabilities.setDisplayName" - class="icon-confirm" - type="submit" - value=""> - </template> - <div v-else - v-tooltip.auto="t('settings', 'The backend does not support changing the display name')" - class="name" /> + <input + :id="'displayName'+user.id+rand" + ref="displayName" + :disabled="loading.displayName||loading.all" + :value="user.displayname" + autocapitalize="off" + autocomplete="off" + autocorrect="off" + spellcheck="false" + type="text"> + <input + class="icon-confirm" + type="submit" + value=""> </form> </div> + <div v-else class="name"> + {{ user.id }} + <div class="displayName subtitle"> + <div v-tooltip="user.displayname.length > 20 ? user.displayname : ''" class="cellText"> + {{ user.displayname }} + </div> + </div> + </div> <form v-if="settings.canChangePassword && user.backendCapabilities.setPassword" :class="{'icon-loading-small': loading.password}" class="password" @@ -221,11 +224,12 @@ {{ t('settings', 'Done') }} </ActionButton> </Actions> - <div v-click-outside="hideMenu" - class="icon-more" - @click="toggleMenu" /> - <div :class="{ 'open': openedMenu }" class="popovermenu"> - <PopoverMenu :menu="userActions" /> + <div class="userPopoverMenuWrapper" v-click-outside="hideMenu"> + <div class="icon-more" + @click="toggleMenu" /> + <div :class="{ 'open': openedMenu }" class="popovermenu"> + <PopoverMenu :menu="userActions" /> + </div> </div> </div> <div :style="{opacity: feedbackMessage !== '' ? 1 : 0}" @@ -684,4 +688,7 @@ export default { .row--menu-opened { z-index: 1 !important; } + .row::v-deep .multiselect__single { + z-index: auto !important; + } </style> diff --git a/apps/settings/src/components/UserList/UserRowSimple.vue b/apps/settings/src/components/UserList/UserRowSimple.vue index f163ea64f472c387ff51772f87441631ed37347d..255043c21dbd0679b66b61b812a238df72bfe2da 100644 --- a/apps/settings/src/components/UserList/UserRowSimple.vue +++ b/apps/settings/src/components/UserList/UserRowSimple.vue @@ -46,7 +46,7 @@ <div v-if="showConfig.showUserBackend" class="userBackend"> {{ user.backend }} </div> - <div v-if="showConfig.showStoragePath" class="storageLocation subtitle"> + <div v-if="showConfig.showStoragePath" v-tooltip="user.storageLocation" class="storageLocation subtitle"> {{ user.storageLocation }} </div> </div> @@ -61,9 +61,11 @@ {{ t('settings', 'Edit User') }} </ActionButton> </Actions> - <div v-click-outside="hideMenu" class="icon-more" @click="$emit('toggleMenu')" /> - <div class="popovermenu" :class="{ 'open': openedMenu }"> - <PopoverMenu :menu="userActions" /> + <div class="userPopoverMenuWrapper"> + <div v-click-outside="hideMenu" class="icon-more" @click="$emit('toggleMenu')" /> + <div class="popovermenu" :class="{ 'open': openedMenu }"> + <PopoverMenu :menu="userActions" /> + </div> </div> </div> <div class="feedback" :style="{opacity: feedbackMessage !== '' ? 1 : 0}">