zulip/static/styles/settings.scss

2026 lines
37 KiB
SCSS
Raw Normal View History

label {
margin: 0;
.fa-question-circle-o {
left: 2px;
}
}
label,
h4,
h3 {
a {
color: inherit;
}
.fa-question-circle-o {
top: 1px;
opacity: 0.4;
position: relative;
&:hover {
opacity: 1;
}
}
}
h3 .fa-question-circle-o {
left: 5px;
}
.new-style {
.block {
display: block;
}
.center-block {
margin: 0 auto;
}
.center {
text-align: center;
}
.w-70 {
width: 70%;
}
.w-200 {
width: 200px;
}
.m-t-20 {
margin-top: 20px;
}
.m-t-10 {
margin-top: 10px;
}
.grid {
label {
min-width: 200px;
}
.warning {
display: inline-block;
vertical-align: top;
width: 150px;
padding: 5px 10px;
text-align: left;
}
}
#account-settings {
.grid {
label {
min-width: 120px;
}
.warning {
display: block;
width: calc(100% - 20px - 5px);
text-align: right;
}
}
}
.warning {
#pw_strength {
width: 140px;
height: 8px;
margin: 6px 0px 0px 0px;
}
}
.button {
ul {
text-align: left;
}
&.button i.fa.fa-pencil {
margin-left: 3px;
}
}
/* this is because the input[type=text] is also 200px wide but has
12px of padding and 2px worth of borders. These don't apply to
buttons however. */
.input-size {
width: 214px;
}
}
.realm-logo-block {
margin-bottom: 10px;
}
.user-avatar-section {
float: right;
.avatar-controls {
margin-top: 20px;
box-shadow: none;
}
.inline-block {
box-shadow: 0px 0px 10px hsla(0, 0%, 0%, 0.1);
}
}
.realm-icon-section {
float: none;
display: inline-block;
}
.user-avatar-section,
.realm-logo-section,
.realm-icon-section {
position: relative;
.inline-block {
margin: 5px 20px 0px 0px;
vertical-align: top;
border-radius: 4px;
}
}
#change_email_modal {
width: 460px;
}
#change_full_name_modal {
width: 480px;
}
.admin-realm-description {
height: 16em;
width: 100%;
max-width: 500px;
box-sizing: border-box;
}
.padded-container {
padding: 20px;
}
.side-padded-container {
padding: 0px 20px;
}
#notification_sound,
#play_notification_sound {
display: inline;
margin-right: 8px;
margin-bottom: 0px;
}
.attributions_title {
margin-top: 24px;
}
.table.table-condensed.table-striped {
margin: 0px;
}
.wrapped-table {
word-break: break-word;
word-wrap: break-word;
white-space: pre-wrap;
white-space: normal;
}
.table tbody {
border-bottom: 1px solid hsl(0, 0%, 87%);
}
.table-condensed td {
vertical-align: middle;
}
#settings_content {
table + .progressive-table-wrapper table tr.user_row td:first-of-type {
width: 20%;
}
.admin-table-wrapper table.admin_profile_fields_table tr td {
width: 28%;
}
}
#uploaded_files_table > tr > td:nth-of-type(1),
.upload-file-name {
width: 30%;
word-break: break-all;
}
#filter-settings {
#filter_pattern,
#filter_format_string {
width: calc(100% - 10em - 6em);
}
}
td .button {
margin: 2px 0px;
box-shadow: none;
}
.settings-info-icon {
padding-left: 3px;
opacity: 0.9;
}
.email-change-form,
.user-name-section {
.settings-info-icon {
position: relative;
top: 2px;
left: 1px;
}
2019-06-21 21:00:06 +02:00
}
.settings-section {
display: none;
2017-05-09 22:09:31 +02:00
width: calc(100% - 40px);
margin: 20px;
&.show {
display: block;
}
form {
margin: 0;
}
.no-padding {
padding: 0;
}
.settings-section-title {
font-size: 1.4em;
font-weight: 500;
margin: 10px 0px 10px 0px;
&.transparent {
background-color: transparent;
color: inherit;
}
.table-title {
display: inline-block;
padding: 6px 0px;
margin-left: 5px;
i {
margin-right: 5px;
}
}
}
.table-striped {
table-layout: auto;
tbody {
border-bottom: none;
}
thead th {
background-color: inherit;
color: inherit;
border-top: 1px solid hsla(0, 0%, 0%, 0.2) !important;
border-bottom: 1px solid hsla(0, 0%, 0%, 0.2) !important;
&.active::after,
&[data-sort]:hover::after {
content: " \f0d8";
white-space: pre;
display: inline-block;
position: absolute;
padding-top: 3px;
font: normal normal normal 12px/1 FontAwesome;
font-size: inherit;
}
&.active {
opacity: 1;
transition: opacity 100ms ease-out;
&.descend::after {
content: " \f0d7";
}
}
&[data-sort]:hover {
cursor: pointer;
background-color: hsla(0, 0%, 0%, 0.05);
transition: background-color 100ms ease-in-out;
&:not(.active)::after {
opacity: 0.3;
}
}
}
// Force the actions column to use the minimum space necessary
.actions {
width: 1%;
white-space: nowrap;
}
}
input[type=text].search {
float: right;
margin: 2px 5px 2px 0px;
padding: 2px 5px;
font-size: 0.9em;
}
.upgrade-tip,
.tip {
position: relative;
display: block;
background-color: hsl(46, 63%, 95%);
border: 1px solid hsl(49, 20%, 84%);
border-radius: 4px;
padding: 10px;
margin: 10px 0px;
font-size: 1rem;
line-height: 1.5;
color: hsl(0, 0%, 40%);
&::before {
display: inline;
margin-right: 8px;
font-family: FontAwesome, "Yantramanav", Source Sans Pro;
font-weight: 600;
}
}
.upgrade-tip {
&::before {
content: "\f135";
}
&:hover {
color: hsl(0, 0%, 20%);
border: 1px solid hsl(49, 20%, 60%);
box-shadow: 0px 0px 4px hsla(199, 79%, 56%, .2);
text-decoration: none;
}
}
.tip::before {
content: "\f0a2";
}
}
#admin-user-list,
#admin-bot-list {
.table tr:first-of-type td {
border-top: none;
}
}
.dynamic-input {
display: inline-block;
padding: 5px;
background-color: hsl(0, 0%, 100%);
border: 1px solid hsl(0, 0%, 80%);
border-radius: 3px;
transition: box-shadow 0.3s ease;
min-width: 208px;
&:hover {
outline: none;
box-shadow: 0px 0px 4px hsla(199, 79%, 56%, 1.0);
}
div,
label {
display: inline-block;
margin: 0;
}
div {
margin-right: -2px;
&:empty::after {
content: "username";
color: hsl(0, 0%, 67%);
}
}
&.bot_user_name div:empty::after {
content: "bot_user_name";
color: hsl(0, 0%, 67%);
}
[contenteditable=true] {
outline: none;
}
}
.button,
.input-group {
margin: 0 0 20px 0;
}
.input-group {
.thinner {
margin: 10px 0px;
}
label.checkbox + label {
cursor: pointer;
}
}
.dependent-block {
margin: -5px 0 15px 35px;
}
.dependent-inline-block {
display: inline-block;
margin: 0 0 0 10px !important;
}
.no-margin {
margin: 0px;
}
input[type=checkbox] {
+ .inline-block {
margin-left: 10px;
}
.inline-block {
margin: -2px 0px 0px 0px;
}
}
.allow-subdomains,
.new-realm-domain-allow-subdomains {
margin: 0 !important;
}
.realm_domains_info {
margin-bottom: 0px;
}
.admin-realm-form h3 {
margin-bottom: 10px;
}
#settings_page .icon-button {
border-radius: 5px;
border: 1px solid hsl(0, 0%, 80%);
font-size: 14px;
padding: 3px 14px 4px 11px;
text-decoration: none;
color: hsl(0, 0%, 47%);
min-width: 80px;
line-height: 16px;
}
#settings_page .icon-button:hover {
background-color: hsl(0, 0%, 100%);
border: 1px solid hsl(0, 0%, 61%);
color: hsl(0, 0%, 18%);
}
#settings_page .icon-button:hover .icon-button-icon {
color: hsl(0, 0%, 47%);
}
#settings_page .icon-button.primary:hover {
background-color: hsl(166, 35%, 57%);
border: 1px solid hsl(166, 35%, 57%);
}
#settings_page .icon-button.primary {
background-color: hsl(156, 30%, 50%);
color: hsl(0, 0%, 100%);
border: 1px solid hsl(155, 30%, 50%);
}
#settings_page .icon-button .icon-button-icon {
vertical-align: bottom;
margin-right: 3px;
margin-bottom: 1px;
font-size: 15px;
font-weight: 500;
}
#settings_page .icon-button.primary .icon-button-icon {
font-weight: lighter;
color: hsl(0, 0%, 100%);
}
#settings_page .save-button-controls {
display: inline;
margin-left: 15px;
}
#settings_page .save-button-controls.hide {
display: none;
}
#settings_page .save-button {
margin-right: 5px;
}
#settings_page .icon-button.save-button.saving {
background-color: hsl(156, 14%, 40%);
border-color: hsl(156, 14%, 40%);
}
#settings_page .save-button.saving .icon-button-icon {
display: none;
}
#settings_page .save-button.saving .icon-button-loading {
display: inline-block;
margin-right: 2px;
}
#settings_page .save-button .icon-button-loading {
display: none;
}
#google_hangouts_domain,
#zoom_help_text,
.organization-settings-parent div:first-of-type {
margin-top: 10px;
}
.org-settings-form .organization-submission {
margin-top: 0px;
}
.realm-logo-section {
margin-bottom: 20px;
}
#id_org_profile_preview,
.realm-icon-section {
margin-bottom: 20px;
}
.inline-block.organization-permissions-parent div:first-of-type {
margin-top: 10px;
}
.admin-realm-form .subsection-header h3 {
display: inline;
}
#default_language {
margin-left: 20px;
}
#user-settings-avatar,
#realm-icon-section {
border-radius: 5px;
box-shadow: 0px 0px 10px hsla(0, 0%, 0%, 0.1);
}
.remove-attachment {
margin-right: 5px !important;
font-size: 1.1em !important;
padding-left: 0px !important;
}
#download_attachment {
padding-left: 0px;
border-left: 0px;
}
.alert-word-information-box {
position: relative;
padding: 7px;
margin: 2px;
width: 50%;
}
.green-bg {
background-color: hsl(120, 29%, 84%);
}
.remove-alert-word {
margin-top: 1px;
}
@media (max-width: 480px) {
#pw_strength {
margin: auto;
}
#filter-settings .new-filter-form,
#profile-field-settings .new-profile-field-form {
width: 100%;
}
#filter-settings .new-filter-form .control-label,
#profile-field-settings .new-profile-field-form .control-label {
display: block;
width: 120px;
padding: 0px;
padding-top: 0;
text-align: center;
margin: auto;
float: none;
}
#filter-settings .new-filter-form .controls,
#profile-field-settings .new-profile-field-form .controls {
margin: auto;
text-align: center;
}
#settings_page .save-button-controls {
display: block;
margin: 10px 0 0 0;
}
}
.alert-notification {
display: inline-block !important;
vertical-align: top;
height: auto !important;
width: auto !important;
background-color: transparent;
border-radius: 4px;
margin-top: 14px;
margin-left: 10px;
color: hsl(156, 30%, 50%);
padding: 3px 10px;
font-size: 15px;
&:not(:empty) {
border: 1px solid hsl(156, 30%, 50%);
}
&.alert-error {
color: hsl(2, 46%, 68%);
border-color: hsl(2, 46%, 68%);
}
.loading_indicator_spinner {
width: 13px;
height: 20px;
margin: 0;
}
/* make the spinner green like the text and box. */
.loading_indicator_spinner svg path {
fill: hsl(178, 100%, 40%);
}
.loading_indicator_text {
margin-top: 0px;
font-size: inherit;
vertical-align: top;
}
img {
margin-right: 6px;
vertical-align: middle;
margin-top: -2px;
}
}
#profile-field-settings #admin-add-profile-field-status {
margin-top: 4px;
}
#notification-settings {
.notification-reminder {
text-align: left;
}
#notification-table {
th,
td {
text-align: center;
vertical-align: middle;
cursor: default;
.stream-privacy span.hashtag,
.filter-icon i {
padding-right: 0px;
}
}
td:first-child {
text-align: left;
font-weight: bold;
word-break: break-all;
}
}
2016-07-07 20:07:01 +02:00
}
#account-settings .custom-profile-fields-form .custom_user_field label {
min-width: fit-content;
}
#account-settings .alert-notification.custom-field-status {
padding-top: 0px;
padding-bottom: 0px;
margin-top: 0px;
font-size: 14px;
padding-left: 0px;
margin-left: 5px;
border: none;
}
.control-label-disabled {
color: hsl(0, 0%, 82%);
}
.control-label-disabled.enabled {
color: hsl(0, 0%, 20%);
}
.disableable {
margin-left: 22px;
margin-top: -10px;
}
#settings_page .admin-realm-time-limit-input {
width: 5ch;
text-align: right;
}
#settings_page .realm-time-limit-label {
vertical-align: middle;
}
.admin-realm-message-content-delete-limit-minutes {
width: 5ch;
text-align: right;
}
.admin-realm-message-retention-days {
width: 5ch;
text-align: right;
}
#account-settings-status {
text-align: center;
width: 50%;
margin: auto;
margin-bottom: 20px;
}
.add-new-emoji-box,
.add-new-user-group-box,
.add-new-alert-word-box,
.add-new-export-box {
margin-bottom: 20px;
}
.add-new-emoji-box .new-emoji-form,
.add-new-user-group-box .new-user-group-form,
.add-new-alert-word-box .new-alert-word-form,
.add-new-export-box {
margin: 10px 0px;
}
.add-new-emoji-box input[type=text],
.add-new-user-group-box input[type=text],
.add-new-default-stream-box input[type=text] {
padding: 6px;
}
.add-new-emoji-box #emoji-file-name {
width: 0;
top: -19px;
left: 3px;
position: relative;
display: inline-block;
vertical-align: top;
white-space: nowrap;
font-style: italic;
}
#emoji_file_input_error {
vertical-align: middle;
}
.add-new-emoji-box #emoji-file-name {
color: hsl(0, 0%, 67%);
}
.add-new-profile-field-box button,
.add-new-filter-box button {
margin-left: calc(10em - -20px) !important;
}
.grey-box .wrapper {
margin: 10px 0px;
}
.admin_profile_fields_table,
.profile_field_choices_table {
.movable-profile-field-row {
cursor: move;
.fa-ellipsis-v {
color: hsl(0, 0, 75%);
position: relative;
top: 1px;
+ i {
margin-right: 5px;
}
}
}
}
#admin-filter-pattern-status,
#admin-filter-format-status {
margin: 20px 0 0 0;
}
.progressive-table-wrapper {
position: relative;
max-height: calc(95vh - 220px);
overflow: auto;
width: 100%;
}
#admin-default-streams-list .progressive-table-wrapper {
max-height: calc(95vh - 280px);
}
.bots_list {
display: none;
list-style-type: none;
margin-left: 0px;
}
.bots_list .image {
vertical-align: top;
}
.bots_list .bot-information-box .details {
display: inline-block;
width: calc(100% - 75px);
}
.bots_list .name {
font-weight: 600;
font-size: 1.1rem;
margin: 7px 5px;
overflow: hidden;
line-height: 1.3em;
text-overflow: ellipsis;
white-space: pre;
}
.bots_list .regenerate_bot_api_key {
position: relative;
margin-left: 5px;
color: hsl(0, 0%, 67%);
transition: all 0.3s ease;
}
.bots_list .regenerate_bot_api_key:hover {
color: hsl(0, 0%, 27%);
}
.bots_list .edit-bot-buttons {
padding-top: 5px;
}
.bots_list .edit-bot-buttons button {
background-color: transparent;
}
.bots_list .edit-bot-buttons .btn {
padding: 4px;
}
.bots_list .edit-bot-buttons .sea-green {
color: hsl(177, 70%, 46%);
}
.bots_list .edit-bot-buttons .blue {
color: hsl(203, 77%, 56%);
}
.bots_list .edit-bot-buttons .danger-red {
color: hsl(0, 56%, 73%);
}
.bots_list .edit-bot-buttons .copy-gold {
color: hsl(51, 90%, 50%);
}
.bots_list .bot-information-box {
position: relative;
display: inline-block;
width: calc(50% - 10px);
max-height: 220px;
margin: 5px;
border-radius: 4px;
box-sizing: border-box;
overflow: auto;
}
.bots_list img.avatar {
margin: 10px 5px 0px 10px;
height: 50px;
width: 50px;
border-radius: 4px;
vertical-align: top;
box-shadow: 0px 0px 4px hsla(0, 0%, 0%, 0.1);
}
.bots_list .email,
.bots_list .type {
margin-bottom: 5px;
}
.bots_list .email .value,
.bots_list .api_key .api-key-value-and-button {
display: block;
margin-left: 0px;
white-space: pre-wrap;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
}
.bots_list .api_key .api-key-value-and-button {
font-family: "Inconsolata", Menlo, monospace;
font-size: 0.85em;
display: flex;
}
.bots_list .bot_info {
padding: 10px;
}
.bot_info .field {
font-weight: 300;
text-transform: uppercase;
font-weight: 600;
color: hsl(0, 0%, 67%);
}
.bot_error {
margin-top: 10px;
margin-bottom: 0 !important;
}
.edit_bot h3 {
margin: 0px;
font-weight: 400;
}
#bots_lists_navbar .active a {
background-color: hsl(0, 0%, 98%);
}
#inactive_bots_list .bot_info .reactivate_bot {
margin-top: 5px;
}
.edit_bot_form_container {
padding: 15px;
}
.edit_bot_form {
font-size: 100%;
margin: 0px;
padding: 0px;
}
.edit_bot_form label {
text-transform: uppercase;
font-weight: 600;
color: hsl(0, 0%, 67%);
margin-top: 5px;
}
.edit_bot_form .buttons {
margin: 10px 0px 5px 0px;
}
.edit_bot_email {
font-weight: 400;
font-size: 18px;
text-align: left;
margin-top: 0px;
margin-bottom: 10px;
overflow: hidden;
max-height: 1.1em;
text-overflow: ellipsis;
white-space: pre;
}
#create_bot_form .control-label,
#create_alert_word_form .control-label,
.admin-emoji-form .control-label,
.admin-filter-form .control-label,
.admin-profile-field-form .control-label,
2017-03-25 11:21:37 +01:00
.edit_bot_form .control-label {
width: 10em;
text-align: right;
margin-right: 20px;
}
.admin-profile-field-form #custom_external_account_url_pattern input {
width: 70%;
}
#upload_avatar_spinner,
#upload_icon_spinner,
.upload-logo-spinner {
font-size: 14px;
margin: auto;
}
.bot_name_header {
width: 8em;
}
2016-07-09 16:59:47 +02:00
#attachments_list {
2016-07-09 16:59:47 +02:00
list-style-type: none;
margin: auto;
background-color: hsl(0, 0%, 100%);
2016-07-09 16:59:47 +02:00
}
#alert_words_list {
margin: 0;
}
#alert_words_list li {
list-style-type: none;
}
#alert_words_list li.alert-word-item:first-child {
2016-07-09 16:59:47 +02:00
background: none;
margin-top: 8px;
}
#alert_words_list .edit-alert-word-buttons,
#attachments_list .edit-attachment-buttons {
2016-07-09 16:59:47 +02:00
position: absolute;
right: 20px;
top: 0px;
2016-07-09 16:59:47 +02:00
}
#alert_words_list .alert_word_listing .value {
display: block;
white-space: pre-wrap;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
}
.emojiset_choices {
width: 250px;
padding: 0px 10px;
}
.emojiset_choices .emoji {
height: 22px;
width: 22px;
}
.emojiset_choices label {
border-bottom: 1px solid hsla(0, 0%, 0%, 0.2);
padding: 8px 0px 10px 0px;
}
.emojiset_choices label:last-of-type {
border-bottom: none;
}
.emojiset_choices label input[type=radio] {
position: relative;
top: -2px;
margin: 0px 5px 0px 0px;
}
.emojiset_choices label input[type=radio]:checked + span {
font-weight: 600;
}
.emojiset_choices .right {
float: right;
}
.open-user-form {
min-width: initial !important;
}
#api_key_buttons {
display: inline-flex;
}
#api_key_buttons .regenerate_api_key {
margin-right: 5px;
}
.right.show .emoji_alt_code {
font-size: 1.2em;
}
#user-settings-avatar {
position: relative;
border-radius: 5px;
box-shadow: 0px 0px 10px hsla(0, 0%, 0%, 0.1);
width: 200px;
height: 200px;
transition: all 0.3s ease;
#user-avatar-block {
background-size: 100%;
height: 100%;
}
#user-avatar-background {
content: '';
background-color: hsl(0, 0%, 0%);
height: 100%;
width: 100%;
opacity: 0.6;
z-index: 99;
position: absolute;
display: none;
}
#user_avatar_delete_button {
cursor: pointer;
color: hsl(0, 0%, 75%);
opacity: 0;
font-size: 3rem;
position: absolute;
top: 10px; // 31.5px + 5px + 30px
right: 10px;
z-index: 99;
}
#user_avatar_delete_button:hover {
color: hsl(0, 0%, 100%);
}
#user_avatar_delete_button:hover ~ #user_avatar_upload_button {
visibility: hidden;
}
#user_avatar_delete_button:hover ~ #user_avatar_delete {
visibility: visible;
}
#user_avatar_delete {
color: hsl(0, 0%, 100%);
font-size: 0.85rem;
position: absolute;
top: 90px;
right: 40px;
visibility: hidden;
z-index: 99;
}
#user_avatar_upload_button {
cursor: pointer;
color: hsl(0, 0%, 85%);
opacity: 0;
font-size: 0.85rem;
position: absolute;
top: 90px;
right: 20px;
z-index: 99;
}
#user_avatar_upload_button:hover {
color: hsl(0, 0%, 100%);
}
#user-avatar-spinner {
position: absolute;
top: 40%;
right: 40%;
z-index: 99;
display: none;
}
.guest-avatar::after {
outline: 9px solid hsl(0, 0%, 100%);
}
&:hover {
#user-avatar-block::after {
content: '';
background-color: hsl(0, 0%, 0%);
height: 100%;
width: 100%;
opacity: 0.6;
z-index: 99;
position: absolute;
cursor: pointer;
}
#user_avatar_delete_button {
opacity: 1;
}
#user_avatar_upload_button {
opacity: 1;
}
}
}
#user-avatar-source {
position: absolute;
font-size: 1em;
z-index: 99;
a {
position: relative;
top: 10px;
}
}
#realm-settings-icon {
border-radius: 5px;
box-shadow: 0px 0px 10px hsla(0, 0%, 0%, 0.1);
width: 100px;
height: 100px;
}
.realm-logo-img {
box-shadow: 0px 0px 10px hsla(0, 0%, 0%, 0.2);
/* We allow actual images up to 800x100 in the main display, but the
settings UI looks bad beyond ~500px, so we limit the width here */
height: 55px;
max-width: 500px;
}
#night-logo-section .realm-logo-img {
background-color: hsl(212, 28%, 18%);
}
#day-logo-section .realm-logo-img {
background-color: hsla(0, 100%, 100%, 1);
}
.invite-user-link i {
text-decoration: none;
margin-right: 5px;
}
#user-groups {
.user-group {
margin-bottom: 20px;
padding: 10px;
border-radius: 5px;
h4 {
font-weight: normal;
margin: 0px;
display: flex;
align-items: center;
justify-content: left;
}
span[contenteditable] {
display: inline-block;
word-break: break-all;
&:empty::before {
opacity: 0.5;
display: inline-block;
content: attr(data-placeholder);
}
}
span[contenteditable]:focus,
span[contenteditable="true"]:hover {
border-bottom: 1px solid hsl(0, 0%, 80%);
margin-bottom: -1px;
outline: none;
}
.pill-container .input[contenteditable]:empty::after {
content: attr(data-placeholder);
opacity: 0.5;
}
}
.user-group-status {
margin-bottom: 10px;
}
p {
line-height: 2;
margin: 0;
}
.spacer {
margin: 0 2px;
}
.subscribers,
.user-group h4 > .name {
font-weight: bold;
}
.ntm {
cursor: not-allowed;
h4 > .button {
cursor: not-allowed;
display: none;
&:hover {
border-color: hsl(4, 56%, 82%);
}
}
}
.save-status {
background-color: transparent;
padding: 2px 5px;
border-radius: 4px;
margin-left: 10px;
border-style: solid;
border-width: 1px;
display: none;
opacity: 0;
}
.checkmark {
height: 12px;
}
.delete {
margin-left: auto;
}
.save-instructions {
display: none;
opacity: 0;
color: hsl(0, 0%, 20%);
font-size: 0.9em;
}
}
/* -- new settings overlay -- */
#settings_page {
height: 95vh;
width: 97vw;
max-width: 1024px;
margin: 2.5vh auto;
overflow: hidden;
border-radius: 4px;
}
#settings_page .sidebar {
float: left;
position: relative;
width: 250px;
height: 100%;
overflow-y: auto;
border-top-left-radius: 4px;
border-right: 1px solid hsl(0, 0%, 93%);
}
#settings_page .sidebar .tab-container {
padding: 6px;
border-bottom: 1px solid hsl(0, 0%, 87%);
}
#settings_page .sidebar .normal-settings-list,
#settings_page .sidebar .org-settings-list {
position: relative;
}
#settings_page .content-wrapper {
position: absolute;
left: 251px;
/* the width of the settings sidbar this is right of is 250px + 1px border. */
width: calc(100% - 250px - 1px);
height: 100%;
overflow: hidden;
}
#settings_page .content-wrapper .settings-header {
width: 100%;
height: 43px;
border-bottom: 1px solid hsl(0, 0%, 87%);
}
#settings_page .content-wrapper .settings-header h1 .section {
font-weight: 400;
color: inherit;
opacity: 0.6;
}
#settings_page h3 {
font-size: 1.5em;
font-weight: normal;
line-height: 1.5;
}
#settings_page h5 {
font-size: 1.2em;
font-weight: normal;
line-height: 1.2;
}
#settings_page .settings-header.mobile {
display: none;
border-bottom: 1px solid hsl(0, 0%, 87%);
}
.settings-header.mobile .fa-chevron-left {
float: left;
position: relative;
top: 14px;
left: 10px;
}
#settings_page .content-wrapper #settings_content {
position: relative;
width: 100%;
height: calc(100% - 45px);
float: left;
overflow-y: auto;
overflow-x: hidden;
2017-05-09 22:09:31 +02:00
background-color: hsla(0, 0%, 0%, 0.02);
}
.modal.fade {
/* Ensure the modal is entirely off-screen while we fade the background */
top: -50%;
transition: opacity 0.3s linear;
transform: translateY(-50%);
}
#settings_page input.search {
font-size: 0.9rem;
margin: 10px 0px 20px 0px;
}
#settings_page .form-sidebar {
position: absolute;
top: 45px;
right: 0px;
transform: translateX(303px);
width: 300px;
height: calc(100% - 45px);
background-color: hsl(0, 0%, 100%);
border-left: 1px solid hsl(0, 0%, 87%);
pointer-events: none;
transition: all 0.3s ease;
visibility: hidden;
}
#settings_page .form-sidebar.show {
pointer-events: auto;
transform: translateX(0px);
visibility: visible;
}
#settings_page .form-sidebar input[type=text] {
width: calc(100% - 10px - 4px);
}
#settings_page .form-sidebar input[type=submit],
#settings_page .form-sidebar button {
border-radius: 4px;
outline: none;
}
#settings_page .form-sidebar select {
width: 100%;
}
#settings_page .form-sidebar .title,
#settings_page .form-sidebar .content {
padding: 20px;
}
#settings_page .form-sidebar .title {
padding: 10px 20px;
background-color: hsl(0, 0%, 98%);
border-bottom: 1px solid hsl(0, 0%, 87%);
}
#settings_page .form-sidebar .title h1 {
display: inline-block;
font-size: 1.3rem;
margin: 0px;
}
#settings_page .form-sidebar .title .exit {
float: right;
font-size: 2rem;
font-weight: 300;
margin-top: 11px;
cursor: pointer;
}
#settings_page .sidebar .header {
height: auto;
position: relative;
width: calc(100% - 20px);
padding: 10px;
text-align: center;
text-transform: uppercase;
background-color: hsl(180, 6%, 93%);
border-bottom: 1px solid hsl(0, 0%, 87%);
}
#settings_page .settings-header {
padding-top: 1px;
}
#settings_page .settings-header h1 {
text-align: center;
font-size: 1.1em;
line-height: 1;
margin: 15px;
text-transform: uppercase;
}
#settings_page .settings-header .exit {
font-weight: 600;
position: absolute;
top: 10px;
right: 10px;
color: hsl(0, 0%, 67%);
cursor: pointer;
}
#settings_page .settings-header .exit-sign {
float: right;
position: relative;
top: 3px;
margin-left: 3px;
font-size: 1.5rem;
font-weight: 600;
cursor: pointer;
}
#settings_page #change_password_modal {
width: auto;
}
#account-settings,
user settings: Separate code for bot form. When editing a bot, there are only two fields that are similar to humans--full name and email--which are trivial. Before this commit we used a single codepath to build the human form and the bot form. Now we have two simple codepaths. The tricky nature of the code had already led to ugly things for the bot codepath that fortunately weren't user facing, but which were distracting: - For bots we would needlessly set things like is_admin, is_guest in the template data. - For bots we would needlessly try to update custom profile fields. The code that differs between bots and humans is nontrivial, and the code was both hard to read and hard to improve: - Humans don't have bot owners. - Bots don't have custom profile fields. The bot-owner code is nontrivial for performance reasons. In a big realm there are tens of thousands of potential bot owners. We avoid the most egregious performance problems (i.e we don't have multiple copies of the dropdown), but we may still want to refine that (at least adding a spinner). The custom-profile-fields code is nontrivial due to the dynamic nature of custom profile fields, which can bring in specialized widgets like pill fields. Now each form corresponds to a single endpoint: * human -> /json/users * bot -> /json/bots Before we had a lot of conditional logic in the template, the code to build to views, and the code to submit the data. Now everything is much flatter. The human code is still a bit messy (more work coming on that), but the bot code is fairly pristine. All three components of the bot code fit on a page, and there are no conditionals: - admin_bot_form.hbs - open_bot_form - handle_bot_form We may want to grow out the bot code a bit to allow admins to do more things, such as adding services, and this will be easier now. It would also be easier for us now to share widgets with the per-user bot settings. Note that the form for editing human data will continue to be invoked from two panels: - Users - Deactivated users There are some minor differences between users and deactivated users, but the shape of the data is the same for both, so that's still all one codepath. We eliminate `reset_edit_user` here, since it was never used. One nice thing about these forms was that they had very little custom CSS attached to them (at form-level specificity), and it turned out all the custom CSS was for the human-specific form.
2020-05-09 12:13:03 +02:00
#admin-human-form {
.user-role button {
cursor: default;
}
.custom_user_field .field_hint {
color: hsl(0, 0%, 67%);
}
#show_my_user_profile_modal {
width: 150px;
margin-top: 20px;
}
#show_my_user_profile_modal i {
padding-left: 2px;
vertical-align: middle;
}
}
#settings_page .custom_user_field {
padding-bottom: 20px;
}
body:not(.night-mode) #settings_page .custom_user_field .datepicker {
background-color: hsl(0, 0%, 100%);
}
#settings_page .custom_user_field textarea {
width: 320px;
height: 80px;
}
#settings_page .custom_user_field .remove_date {
opacity: 0.5;
display: none;
cursor: pointer;
position: relative;
top: 2px;
left: -20px;
}
#settings_page .custom_user_field:hover .remove_date {
display: inline-flex;
}
#settings_page .custom_user_field .remove_date:hover {
opacity: 1;
}
#settings_page .custom_user_field_value.datepicker {
cursor: pointer;
}
#settings_page .custom_user_field .person_picker {
min-width: 206px;
}
#settings_page #change_full_name_modal .change_full_name_info,
#settings_page #change_email_modal .change_email_info,
#settings_page #change_password_modal .change_password_info,
#settings_page #api_key_modal #api_key_status {
margin-top: 3px;
}
#confirm_dialog_modal,
#deactivation_user_modal.fade.in {
top: calc(50% - 120px);
}
.modal.fade.in {
top: 50%;
pointer-events: all;
}
#desktop_icon_count_display,
#id_realm_waiting_period_setting,
#id_realm_create_stream_policy,
#id_realm_invite_to_stream_policy,
#id_realm_org_join_restrictions,
#id_realm_bot_creation_policy,
#id_realm_user_invite_restriction {
width: 100%;
}
.m-t-10 {
margin-top: 10px;
}
2018-05-31 20:52:47 +02:00
.modal {
box-shadow: 0px 0px 75px hsla(0, 0%, 0%, 0.5);
outline: 10000px solid hsla(0, 0%, 0%, 0.3);
border: none;
border-radius: 0px;
}
#do_deactivate_self_button .loader {
display: none;
vertical-align: top;
position: relative;
height: 30px;
margin-top: -10px;
top: 5px;
}
.dropdown-list-widget {
button {
margin: 0px 5px;
&.dropdown_list_reset_button {
// Prevent night mode from overriding background.
background: unset !important;
border: none;
&:disabled {
display: none;
}
}
&:disabled i {
display: none;
}
}
.dropdown-search > input[type=text] {
margin: 9px;
}
.dropdown-list-body {
position: relative;
height: auto;
max-height: 200px;
overflow-y: auto;
margin-top: 0;
display: block;
}
}
#settings_page .sidebar ul {
list-style: none;
margin: 0;
padding: 0;
}
#settings_page .sidebar li {
padding: 5px 0px;
outline: none;
cursor: pointer;
transition: all 0.2s ease;
border-bottom: 1px solid hsl(0, 0%, 93%);
}
#settings_page .sidebar li.border-top {
border-top: 1px solid hsl(0, 0%, 93%);
border-bottom: none;
}
#settings_page .sidebar li.no-border {
border-color: transparent;
}
#settings_page .sidebar li.active {
background-color: hsl(0, 0%, 93%);
}
#settings_page .sidebar li.active {
border-bottom: 1px solid transparent;
}
#settings_page .sidebar li .text,
#settings_page .sidebar li .icon,
#settings_page .sidebar li .locked {
display: inline-block;
vertical-align: top;
}
#settings_page .sidebar li .text {
width: calc(100% - 90px);
padding: 10px 12px 10px 0px;
}
#settings_page .sidebar li .icon {
width: 18px;
height: 18px;
margin: 10px 10px;
text-align: center;
font-size: 1.4em;
color: hsl(0, 0%, 53%);
background-size: cover;
background-repeat: no-repeat;
}
#settings_page .sidebar li .locked {
width: 18px;
height: 18px;
margin: 14px 8px 6px;
font-size: 1em;
color: hsl(0, 0%, 62%);
background-size: cover;
background-repeat: no-repeat;
}
#settings_page .sidebar .org-settings-list {
display: none;
}
#settings_page .sidebar li:last-of-type .text {
border-bottom: none;
}
#settings_page .sidebar .sidebar-bottom-anchor {
width: 100%;
position: absolute;
bottom: 0px;
}
.subsection-failed-status p {
background-color: hsl(0, 43%, 91%);
padding: 2px 6px;
border-radius: 4px;
margin: 0 0 0 5px;
}
@media (max-width: 953px) {
.user-avatar-section,
.realm-icon-section {
float: none;
display: block;
}
.user-avatar-section .avatar-controls {
display: inline-block;
margin-top: 10px;
}
#settings_content .warning {
display: none;
}
.subsection-failed-status p {
margin: 5px 0 0 0;
}
.realm-logo-img {
max-width: 400px;
height: 50px;
}
}
@media (max-width: 786px) {
#user-settings-avatar {
width: 220px;
height: 220px;
}
}
@media (max-height: 530px) {
#settings_page .sidebar .sidebar-bottom-anchor {
position: static;
}
#settings_page .sidebar .sidebar-bottom-anchor .border-top {
border: none;
}
}
@media (max-width: 450px) {
#api_key_buttons,
#download_zuliprc {
flex-direction: column;
margin-top: 5px;
}
}
@media (max-width: 700px) {
#settings_page .settings-header.mobile {
display: block;
}
#settings_page .content-wrapper .settings-header {
display: none;
}
#settings_page .content-wrapper #settings_content {
height: 100%;
}
#settings_page .content-wrapper.right {
top: 47px;
}
#settings_page .sidebar {
float: left;
position: relative;
width: 250px;
height: 100%;
}
}
#muted_topics_table {
margin-bottom: 0px;
width: 90%;
margin: 0 auto;
}
#muted_topics_table tbody {
border-bottom: none;
}
#admin-user-list .last_active {
width: 100px;
}
#settings_page .display-settings-form select {
width: 245px;
}
#attachments_list:empty {
padding: 10px;
}
.required-text:empty::after {
content: attr(data-empty);
display: block;
font-style: italic;
color: hsl(0, 0%, 67%);
}
.required-text.thick:empty::after {
width: 100%;
}
#payload_url_inputbox input[type=text] {
width: 340px;
}
#service_name_list input[type=text] {
width: 340px;
}
.dropdown-title {
margin-bottom: 3px;
}
.invited-as-admin {
opacity: 0.5;
margin-left: 2px;
}
@-moz-document url-prefix() {
#settings_page select {
-moz-appearance: none;
background: hsl(0, 0%, 100%) url('../images/dropdown.png') right / 20px no-repeat;
padding-right: 20px;
}
}
2018-04-12 11:17:52 +02:00
.profile-field-choices {
display: inline-block;
}
.profile-field-choices hr {
margin-top: 0;
margin-bottom: 5px;
}
.profile-field-choices .choice-row {
margin-top: 5px;
}
.profile-field-choices > .choice-row:first-of-type {
margin-top: 0;
}
.profile-field-choices .choice-row input {
width: 190px;
2018-04-12 11:17:52 +02:00
}
.profile-field-choices .choice-row button {
margin-left: 0 !important;
2018-04-12 11:17:52 +02:00
}
.custom_user_field .pill-container {
padding: 2px 6px;
min-height: 24px;
max-width: 206px;
background-color: hsl(0, 0%, 100%);
}
.custom_user_field .pill-container:focus-within {
border-color: hsla(206, 80%, 62%, 0.8);
outline: 0;
outline: 1px dotted \9;
box-shadow: inset 0 1px 1px hsla(0, 0%, 0%, 0.075), 0 0 8px hsla(206, 80%, 62%, 0.6);
}
#get_api_key_button {
display: block;
}
#attachment-stats-holder {
position: relative;
margin-top: 13px;
display: inline-block;
}
.hide-org-settings {
display: none;
}
.collapse-settings-btn {
margin: 10px 0px 0px 10px;
color: hsl(200, 100%, 40%);
}
.collapse-settings-btn:hover {
cursor: pointer;
color: hsl(208, 56%, 38%);
}
#toggle_collapse {
margin-left: 2px;
display: inline-block;
}
.admin_exports_table {
margin: 20px;
}
@media (max-width: 430px) {
// selects the label (inline-block)
// immediately following the checkbox
.settings-box .checkbox + .inline-block {
width: calc(100% - 25px);
}
}
@media only screen and (min-width: 700px) and (max-width: 875px) {
.bots_list .bot-information-box {
width: calc(100% - 10px);
max-height: unset;
}
}
@media only screen and (max-width: 625px) {
.bots_list .bot-information-box {
width: calc(100% - 10px);
max-height: unset;
}
}