Refactor profile info settings

- Make it possible to add the new property whiout chaning foundamentally
  how the layout work each time
- Use only one grid instead of multiple nested grid
- Better mobile reponsiveness

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
This commit is contained in:
Carl Schwan 2022-11-03 14:04:19 +01:00
parent 86d9626901
commit d847eacfbd
6 changed files with 89 additions and 151 deletions

View file

@ -118,6 +118,15 @@ input#openid, input#webdav {
.personal-settings-setting-box .section input[type=text], .personal-settings-setting-box .section input[type=email], .personal-settings-setting-box .section input[type=tel], .personal-settings-setting-box .section input[type=url] {
width: 100%;
}
.personal-settings-setting-box-profile {
grid-row: 3/5;
}
.personal-settings-setting-box-detail {
grid-row: 5;
}
.personal-settings-setting-box-detail--without-profile {
grid-row: 3;
}
select#timezone {
width: 100%;
@ -126,8 +135,8 @@ select#timezone {
#personal-settings {
display: grid;
padding: 20px;
max-width: 1500px;
grid-template-columns: 1fr 3fr;
max-width: 1700px;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
#personal-settings .section {
padding: 10px 10px;
@ -177,58 +186,23 @@ select#timezone {
background-position: 24px;
}
@media (min-width: 1200px) and (max-width: 1400px) {
@media (min-width: 1400px) and (max-width: 1700px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr 2fr;
}
#personal-settings #personal-settings-avatar-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr;
}
#personal-settings .personal-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
}
#personal-settings .profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
grid-column: 2;
grid-template-columns: 1fr 1fr 1fr;
}
}
@media (max-width: 1200px) {
@media (min-width: 800px) and (max-width: 1400px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr;
}
#personal-settings #personal-settings-avatar-container {
grid-template-rows: 1fr;
}
#personal-settings .personal-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
}
#personal-settings .profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
}
}
@media (max-width: 560px) {
@media (max-width: 800px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr;
}
#personal-settings #personal-settings-avatar-container {
grid-template-rows: 1fr;
}
#personal-settings .personal-settings-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr;
}
#personal-settings .profile-settings-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr;
}
}
.personal-settings-container {
display: inline-grid;

File diff suppressed because one or more lines are too long

View file

@ -66,6 +66,17 @@ input {
}
}
}
&-profile {
grid-row: 3/5;
}
&-detail {
grid-row: 5;
}
&-detail--without-profile {
grid-row: 3;
}
}
select {
@ -77,8 +88,8 @@ select {
#personal-settings {
display: grid;
padding: 20px;
max-width: 1500px;
grid-template-columns: 1fr 3fr;
max-width: 1700px;
grid-template-columns: 1fr 1fr 1fr 1fr;
.section {
padding: 10px 10px;
@ -138,70 +149,24 @@ select {
}
}
@media (min-width: 1200px) and (max-width: 1400px) {
@media (min-width: 1400px) and (max-width: 1700px) {
#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 1fr;
}
.profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
grid-column: 2;
}
grid-template-columns: 1fr 1fr 1fr;
}
}
@media (max-width: 1200px) {
@media (min-width: 800px) and (max-width: 1400px) {
#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 1fr;
}
.profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
}
grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 560px) {
@media (max-width: 800px) {
#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;
}
}
}

View file

@ -276,6 +276,9 @@ export default {
</script>
<style lang="scss" scoped>
section {
grid-row: 1/3;
}
.avatar {
&__container {
margin: 0 auto;

View file

@ -59,7 +59,7 @@ export const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({
PROFILE_ENABLED: t('settings', 'Profile'),
ROLE: t('settings', 'Role'),
TWITTER: t('settings', 'Twitter'),
MASTODON: t('settings', 'Mastodon'),
MASTODON: t('settings', 'Fediverse (e.g. Mastodon)'),
WEBSITE: t('settings', 'Website'),
})

View file

@ -45,67 +45,63 @@ script('settings', [
<div id="personal-settings">
<h2 class="hidden-visually"><?php p($l->t('Personal info')); ?></h2>
<div id="personal-settings-avatar-container" class="personal-settings-container">
<div id="vue-avatar-section"></div>
<div class="personal-settings-setting-box personal-settings-group-box section">
<div id="vue-avatar-section"></div>
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box personal-settings-setting-box-profile">
<div id="vue-profile-section"></div>
</div>
<div class="personal-settings-setting-box personal-settings-setting-box-detail">
<div id="vue-details-section"></div>
</div>
<?php else: ?>
<div class="personal-settings-setting-box personal-settings-setting-box-detail--without-profile">
<div id="vue-details-section"></div>
</div>
<?php endif; ?>
<div class="personal-settings-setting-box">
<div id="vue-displayname-section"></div>
</div>
<div class="personal-settings-container">
<div class="personal-settings-setting-box">
<div id="vue-displayname-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-email-section"></div>
</div>
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box">
<div id="vue-profile-section"></div>
</div>
<?php endif; ?>
<div class="personal-settings-setting-box">
<div id="vue-phone-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-location-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-website-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-twitter-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-mastodon-section"></div>
</div>
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box">
<div id="vue-organisation-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-role-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-headline-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-biography-section"></div>
</div>
<?php endif; ?>
<div class="personal-settings-setting-box personal-settings-language-box">
<div id="vue-language-section"></div>
</div>
<div class="personal-settings-setting-box personal-settings-locale-box">
<div id="vue-locale-section"></div>
</div>
<span class="msg"></span>
<div class="personal-settings-setting-box">
<div id="vue-email-section"></div>
</div>
<div id="personal-settings-group-container">
<div class="personal-settings-setting-box">
<div id="vue-phone-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-location-section"></div>
</div>
<div class="personal-settings-setting-box personal-settings-language-box">
<div id="vue-language-section"></div>
</div>
<div class="personal-settings-setting-box personal-settings-locale-box">
<div id="vue-locale-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-website-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-twitter-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-mastodon-section"></div>
</div>
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box">
<div id="vue-organisation-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-role-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-headline-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-biography-section"></div>
</div>
<?php endif; ?>
<span class="msg"></span>
<div id="personal-settings-group-container"></div>
</div>
<?php if ($_['profileEnabledGlobally']) : ?>