zulip/web/styles/subscriptions.css
Sahil Batra 1fac997338 settings: Refactor CSS for "control-label-disabled" class.
We previously had two CSS rules for control-label-disabled
class, one in settings.css and one in subscriptions.css
and the rule in subscriptions.css was being used by all
the elements with that class.

This commit refactors the code to have only single CSS rule
for that class with the value being set to the one used in
subscriptions.css, because that was the one being used and
that also looks better in terms of design, and the CSS is
defined in settings.css since it can be considered more
general file for writing CSS used in organization/personal
settings along with stream settings.

This commit also removes the unused code for
".control-label-disabled.enabled" selector since we no
longer use that selector.
2024-06-26 14:22:47 -07:00

1254 lines
27 KiB
CSS

#subs_page_loading_indicator {
margin: 10px auto;
}
.member_list_loading_indicator,
.subscriber_list_loading_indicator {
margin: 10px auto;
}
.member_list_loading_indicator:empty,
.subscriber_list_loading_indicator:empty {
margin: 0;
}
.subscriptions div #response {
overflow-wrap: break-word;
}
.subscription_settings .btn {
border-radius: 2px;
}
.stream-email {
font-family: "Source Code Pro", monospace;
padding: 10px;
font-size: 0.85rem;
background-color: hsl(0deg 0% 98%);
border: 1px solid hsl(0deg 0% 87%);
border-radius: 4px;
}
.sp-preview {
width: 20px;
border: none;
box-shadow: 0 0 1px hsl(0deg 0% 0%);
}
.sp-replacer {
margin-right: 12px;
border: none;
box-shadow: 0 0 2px hsl(0deg 0% 0% / 80%);
}
.stream-email .email-address {
display: block;
margin: auto;
word-wrap: break-word;
word-break: break-all;
white-space: normal;
}
.sub_setting_checkbox {
display: flex;
& .control-label-disabled label.checkbox + label {
cursor: not-allowed;
}
}
.mute-note {
font-size: 90%;
opacity: 0.5;
}
.hide-mute-note {
display: none;
}
.sub_setting_control {
display: inline-block;
margin-right: 10px;
}
.create_user_group_plus_button,
.create_stream_plus_button {
font-size: 24px;
font-weight: 400;
position: relative;
top: 2px;
border: 1px solid hsl(0deg 0% 80%);
border-radius: 5px;
background-color: hsl(0deg 0% 100%);
color: hsl(0deg 0% 0%);
margin: 0 0 0 5px;
height: 27px;
&:hover {
border: 1px solid hsl(0deg 0% 47%);
}
& span {
position: relative;
top: -5px;
}
}
#create_user_group_description,
#create_stream_description {
width: calc(100% - 15px);
}
.user_group_creation_error,
.stream_creation_error {
display: none;
margin-left: 2px;
color: hsl(0deg 100% 50%);
}
/* TODO: Unify with settings.css definition */
h3.stream_setting_subsection_title,
h3.user_group_setting_subsection_title {
display: inline-block;
font-size: 1.5em;
font-weight: normal;
line-height: 1.5;
}
h4.stream_setting_subsection_title {
margin-bottom: 5px;
}
h4.stream_setting_subsection_title,
h4.user_group_setting_subsection_title {
display: inline-block;
font-size: 1.35em;
font-weight: normal;
line-height: 1.5;
}
.member-list-box,
.subscriber-list-box {
text-align: center;
border-left: 1px solid hsl(0deg 0% 87%);
border-right: 1px solid hsl(0deg 0% 87%);
border-radius: 4px;
.member_list_container,
.subscriber_list_container {
position: relative;
max-height: var(--stream-subscriber-list-max-height);
overflow: auto;
text-align: left;
-webkit-overflow-scrolling: touch;
.member-list,
.subscriber-list {
width: 100%;
margin: auto;
& tbody {
border-bottom: none;
}
& tr {
& td,
th {
padding: 4px 0 4px 5px;
vertical-align: middle;
&:first-of-type {
padding-left: 10px;
}
}
}
.subscriber_list_remove {
padding-right: 16px;
display: inline-block;
}
& thead th {
&:first-of-type {
border-top-left-radius: 4px;
}
&:last-of-type {
border-top-right-radius: 4px;
}
position: sticky;
top: 0;
z-index: 1;
}
& tbody tr:last-child td {
border-bottom: 1px solid hsl(0deg 0% 87%);
&:first-of-type {
border-bottom-left-radius: 4px;
}
&:last-of-type {
border-bottom-right-radius: 4px;
}
}
.hidden-subscriber-email {
font-style: italic;
}
th.user-remove-actions {
min-width: 80px;
}
}
}
}
.subscriber-name,
.subscriber-email {
padding: 5px;
}
.subscriber-email {
margin-left: 20px;
padding-right: 8px;
}
.subscriber_list_add,
.member_list_add {
width: 100%;
margin: 0 0 10px;
.user_group_subscription_request_result,
.stream_subscription_request_result {
& a {
color: inherit;
}
}
}
.member-search,
.subscriber-search {
margin: 10px 0 0;
.search {
max-width: 160px;
}
@media (max-width: $ms_min) {
float: none;
display: flex;
justify-content: flex-start;
align-items: center;
margin: 0 0 5px;
}
}
.subscriber_list_add .form-inline,
.member_list_add .form-inline {
margin-bottom: 0;
}
.add_subscribers_container,
.add_members_container {
display: inline-flex;
width: 100%;
align-items: center;
}
.add_subscribers_container .add_subscriber_btn_wrapper,
.add_members_container .add_member_btn_wrapper {
padding-left: 5px;
}
.remove-subscriber-form {
margin: 0;
}
#subscriptions h1 {
font-size: 25px;
font-weight: 300;
padding-top: 40px;
}
.subscriptions-container .subscriptions-header .fa-chevron-left,
.user-groups-container .user-groups-header .fa-chevron-left,
#settings_overlay_container .settings-header.mobile .fa-chevron-left {
position: relative;
transform: translate(-50px, 0);
opacity: 0;
color: hsl(0deg 0% 67%);
float: left;
padding: 2px 10px;
cursor: pointer;
transition: all 0.3s ease;
}
.user-groups-container .user-groups-header.slide-left .fa-chevron-left,
.subscriptions-container .subscriptions-header.slide-left .fa-chevron-left,
#settings_overlay_container
.settings-header.mobile.slide-left
.fa-chevron-left {
transform: translate(0, 0);
opacity: 1;
}
.user-groups-container,
.subscriptions-container {
position: relative;
height: 95%;
border-radius: 4px;
padding: 0;
width: 97%;
overflow: hidden;
max-width: 1200px;
max-height: var(--overlay-container-max-height);
.list-toggler-container .tab-switcher .ind-tab {
width: auto;
}
.user-groups-header,
.subscriptions-header {
padding: 12px;
text-align: center;
text-transform: uppercase;
font-weight: 700;
border-bottom: 1px solid hsl(0deg 0% 87%);
.fa-chevron-left {
display: none;
}
.user-groups-title,
.subscriptions-title {
display: inline-block;
transition: all 0.3s ease;
transform: translate(-13px, 0);
}
.exit {
font-weight: 600;
position: absolute;
top: 10px;
right: 10px;
color: hsl(0deg 0% 67%);
cursor: pointer;
}
}
.exit-sign {
position: relative;
top: 1px;
margin-left: 3px;
font-size: 1.5rem;
line-height: 1;
font-weight: 600;
cursor: pointer;
}
.left,
.right {
position: relative;
display: inline-block;
vertical-align: top;
width: 50%;
height: calc(100% - 45px);
margin: 0 -2px;
}
.left .no-streams-to-show,
.left .no-groups-to-show,
.right .nothing-selected {
display: block;
margin-top: calc(45vh - 75px);
text-align: center;
font-size: 1em;
margin-left: 2em;
margin-right: 2em;
& span {
color: hsl(0deg 0% 67%);
}
}
.left {
border-right: 1px solid hsl(0deg 0% 87%);
.list-toggler-container {
padding: 6px 8px;
border-bottom: 1px solid hsl(0deg 0% 87%);
display: flex;
justify-content: space-between;
}
}
.right {
width: calc(50% + 1px);
.nothing-selected {
& button {
padding: 6px 10px 8px;
display: block;
margin: 0 auto 10px;
}
}
.display-type {
padding: 2px;
text-align: center;
font-weight: 600;
border-bottom: 1px solid hsl(0deg 0% 87%);
& a {
color: inherit;
&:hover {
color: inherit;
text-decoration: none;
}
}
&.preview::after {
content: "Preview";
}
&.preferences::after {
content: "Preferences";
}
.stream-info-title,
.user-group-info-title {
display: none;
font-size: 1.5em;
line-height: 1;
margin: 9px;
font-weight: 600;
word-break: break-all;
.large-icon {
display: inline-block;
.zulip-icon {
font-size: 20px;
position: relative;
top: 3px;
}
}
.zulip-icon-globe {
font-size: 15px;
}
}
}
}
& input[type="text"].small {
border: 1px solid hsl(0deg 0% 80%);
border-radius: 4px;
padding: 3px;
outline: none;
color: hsl(0deg 0% 27%);
text-align: center;
&:focus {
text-align: left;
}
&:valid {
text-align: left;
}
}
}
#search_stream_name,
#search_group_name {
width: 100%;
padding: 3px 5px;
margin: 8px 0;
margin-left: 10px;
margin-right: -15px !important;
display: inline-block;
border-radius: 5px;
box-shadow: none;
padding-right: 20px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.stream_name_search_section,
.group_name_search_section {
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
margin-bottom: 0;
height: auto;
border-bottom: 1px solid hsl(0deg 0% 87%);
}
.user-groups-list,
.streams-list {
position: relative;
overflow: auto;
-webkit-overflow-scrolling: touch;
height: calc(100% - 85px);
width: 100%;
}
#clear_search_stream_name,
#clear_search_group_name {
right: 5px !important;
margin-left: -1px;
}
.stream-title {
font-size: 1.3em;
font-weight: 400;
}
.user-group-creation-body,
.stream-creation-body {
& section.block {
margin-bottom: 20px;
}
#announce-new-stream {
margin: 20px auto;
& div[class^="fa"] {
margin-left: 3px;
margin-right: 8px;
}
}
}
.stream-row,
.group-row {
padding: 15px 10px 11px;
border-bottom: 1px solid hsl(0deg 0% 93%);
cursor: pointer;
.check {
width: 25px;
height: 25px;
position: relative;
margin-right: 8px;
margin-top: 9px;
background-size: 60% auto;
background-repeat: no-repeat;
background-position: center center;
& svg {
fill: hsl(0deg 0% 72%);
width: 70%;
margin: 0% 15%;
}
&.checked:hover svg {
fill: hsl(240deg 41% 50%);
}
&.disabled:not(.checked) svg {
fill: hsl(0deg 0% 87%);
cursor: not-allowed;
}
.sub_unsub_status,
.join_leave_status {
display: inline-block !important;
height: auto !important;
width: auto !important;
.loading_indicator_spinner {
width: 100%;
height: 100%;
margin: 0;
}
.loading_indicator_spinner svg path {
fill: hsl(178deg 100% 40%);
}
}
}
.checked svg {
fill: hsl(240deg 96% 68%);
}
.icon {
width: 35px;
height: 35px;
margin-right: 8px;
margin-top: 4px;
background-color: hsl(300deg 100% 25%);
border-radius: 4px;
color: hsl(0deg 0% 100%);
.symbol {
font-weight: 600;
font-size: 1.1em;
}
.hashtag {
font-size: 1.4em;
font-weight: 600;
}
}
.sub-info-box,
.group-info-box {
width: calc(100% - 90px);
.top-bar,
.bottom-bar {
display: flex;
justify-content: space-between;
position: relative;
}
.top-bar .stream-name,
.top-bar .group-name-wrapper,
.bottom-bar .description {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-right: 12px;
}
.top-bar .subscriber-count,
.bottom-bar .stream-message-count {
white-space: nowrap;
color: hsl(0deg 0% 67%);
}
.top-bar .subscriber-count-text,
.top-bar .subscriber-count-lock,
.bottom-bar .stream-message-count-text {
margin-right: 5px;
}
.top-bar > div {
display: inline-block;
vertical-align: top;
}
.top-bar .stream-name,
.top-bar .group-name-wrapper {
font-weight: 600;
}
.bottom-bar {
margin-top: 2px;
line-height: 1.5;
}
.bottom-bar > div {
display: inline-block;
vertical-align: bottom;
}
}
&.active {
background-color: hsl(0deg 0% 93%);
}
> div {
display: inline-block;
vertical-align: top;
}
.check:not(.checked, .disabled):hover svg,
&.active .check:not(.checked, .disabled):hover svg {
fill: hsl(0deg 0% 27%);
}
&::selection,
.icon .hashtag::selection {
background-color: transparent;
}
}
.stream-row .sub-info-box .description:empty::after,
.group-row .group-info-box .description:empty::after {
content: attr(data-no-description);
font-style: italic;
color: hsl(0deg 0% 67%);
}
.subscriber_list_settings .add_subscribers_disabled,
.member_list_settings .add_members_disabled {
cursor: not-allowed;
.pill-container {
cursor: not-allowed;
}
}
.subscriber_list_settings,
.member_list_settings {
& button[disabled] {
pointer-events: none;
}
}
#groups_overlay,
#subscription_overlay {
#user-group-creation,
#stream-creation {
overflow: auto;
outline: none;
-webkit-overflow-scrolling: touch;
.stream-creation-simplebar-container,
.user-group-creation-simplebar-container {
height: calc(
var(--overlay-container-height) -
var(--subscriptions-overlay-header-height) -
var(--subscriptions-overlay-display-type-height) -
var(--subscriptions-overlay-sticky-footer-height)
);
max-height: calc(
var(--overlay-container-max-height) -
var(--subscriptions-overlay-header-height) -
var(--subscriptions-overlay-display-type-height) -
var(--subscriptions-overlay-sticky-footer-height)
);
}
.user-group-creation-body,
.stream-creation-body {
padding: 15px 15px 0;
}
.settings-sticky-footer {
display: flex;
justify-content: space-between;
position: absolute;
bottom: 0;
width: calc(100% - 27px);
padding: 9px 15px 15px;
text-align: right;
background-color: hsl(0deg 0% 96%);
border-top: 1px solid hsl(0deg 0% 87%);
box-shadow: inset 0 1px 0 hsl(0deg 0% 100%);
}
@media (width > $md_min) {
.settings-sticky-footer {
border-radius: 0 0 6px;
}
}
.add_all_users_to_user_group,
.add_all_users_to_stream {
margin-left: 10px;
}
.create_user_group_member_list_header,
.create_stream_subscriber_list_header {
margin-top: 10px;
margin-bottom: 3px;
& h5 {
display: inline-block;
}
}
.add-user-list-filter {
width: 140px;
float: right;
}
#user_group_creation_form,
#stream_creation_form {
margin: 0;
.user_group_create_info.show {
margin: 5px;
}
#user_group_creating_indicator,
#stream_creating_indicator {
&:not(:empty) {
position: absolute;
width: 100% !important;
height: calc(100% - 105px) !important;
display: flex !important;
justify-content: center;
align-items: center;
background-color: hsl(0deg 0% 100% / 90%);
z-index: 1;
}
.loading_indicator_text {
font-weight: 400;
}
}
}
}
.inner-box {
margin: 20px;
}
.group_settings_header,
.stream_settings_header {
white-space: nowrap;
display: flex;
margin-left: 15px;
.tab-container {
.ind-tab {
padding: 3px 4px;
width: 80px;
}
}
.button-group {
padding-top: 5px;
margin-left: auto;
margin-right: 18px;
.subscribe-button,
.join_leave_button,
#preview-stream-button,
.deactivate {
margin-right: 3px;
text-decoration: none;
}
}
}
.group-header,
.stream-header {
white-space: nowrap;
padding-top: 10px;
display: flex;
align-items: center;
.group-name-wrapper,
.stream-name {
position: relative;
font-size: 1.5em;
font-weight: 600;
margin-left: -3px;
margin-top: -5px;
white-space: nowrap;
max-width: 90%;
flex: auto;
min-width: 0;
overflow-x: clip;
text-overflow: ellipsis;
.group-name,
.sub-stream-name {
display: block;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
}
.button-group {
margin-left: auto;
.deactivate {
margin-right: 3px;
text-decoration: none;
}
}
.large-icon {
display: inline-block;
vertical-align: top;
margin-right: 8px;
margin-top: -5px;
&.hash::after {
top: -1px;
font-size: 1.09em;
font-weight: 700;
}
.zulip-icon {
font-size: 18px;
position: relative;
top: 1px;
}
}
.group_change_property_info,
.stream_change_property_info {
vertical-align: top;
margin: 0 5px 0 0;
}
}
.group-description-wrapper,
.stream-description {
word-break: break-all;
margin-bottom: 5px;
.no-description {
font-style: italic;
color: hsl(0deg 0% 67%);
}
}
.checkmark {
display: none;
margin-left: 5px;
color: hsl(0deg 0% 67%);
cursor: pointer;
&.show {
display: block;
}
}
.hash::after {
position: relative;
content: "#";
}
.settings {
position: relative;
height: calc(100% - 45px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
.tab-container {
padding-top: 5px;
}
}
.subscription_settings {
display: none;
position: relative;
width: 100%;
margin: 0 auto;
border-radius: 4px;
top: -1px;
&.show {
display: block;
}
}
#personal-stream-settings {
.stream_change_property_status {
margin: 9px auto 3px 3px;
}
}
.stream_details_box {
> .stream_details_subsection {
margin: 0 0 10px; /* mimic paragraph spacing */
}
.stream_email_address_error {
vertical-align: top;
margin-left: 15px;
}
}
.loading_indicator_text {
font-weight: 400;
line-height: 20px;
}
.subsection-parent .input-group {
& input[type="checkbox"] {
margin-top: 0;
}
&:last-of-type {
border-bottom: none;
}
.sp-replacer {
box-shadow: none;
}
& input[type="radio"] {
margin-right: 5px;
}
.inline {
display: inline !important;
}
}
}
div.settings-radio-input-parent {
border-bottom: 1px solid hsl(0deg 0% 87%);
margin: 2px 0 2px 5px;
padding: 2px 0;
&:last-of-type {
border-bottom: none;
}
& label.radio {
display: inline;
margin: 5px;
}
& input {
float: left;
width: auto;
cursor: pointer;
margin: 3.5px 0 1px;
&:focus {
outline: 1px dotted hsl(0deg 0% 20%);
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
&:disabled {
cursor: not-allowed;
}
}
&.default_stream_private_tooltip {
cursor: not-allowed;
& label {
pointer-events: none;
}
}
}
.stream-permissions,
.stream-creation-body,
.group-permissions {
.input-group {
margin-bottom: 10px;
&.message-retention-setting-group {
& input {
width: 5ch;
text-align: right;
}
}
}
.settings_select {
/* Match with select elements in settings page */
min-width: 325px;
max-width: 100%;
height: 30px;
}
& select.stream_post_policy_setting {
margin-bottom: 10px;
}
.dropdown-widget-button {
/* Match the margin with other input groups around. */
margin-bottom: 20px;
min-width: 325px;
max-width: 100%;
height: 30px;
}
.default-stream {
margin: 20px 0;
width: fit-content;
.inline {
display: inline;
}
}
}
#change_user_group_description,
#change_stream_description {
width: 100%;
height: 80px;
margin-bottom: 4px;
box-sizing: border-box;
}
.stream-permissions .stream-message-retention-days-input input[type="text"] {
border-radius: 5px;
box-shadow: none;
margin: 0;
height: inherit;
}
@media (width < $lg_min) {
.user-groups-container,
.subscriptions-container {
max-width: 95%;
}
#groups_overlay,
#subscription_overlay {
.left {
width: 40%;
}
.right {
width: calc(60% - 1px);
}
}
}
@media (width < $lg_min) {
.subscriptions-container .left .list-toggler-container {
flex-wrap: wrap;
}
.list-toggler-container {
text-align: center;
}
#groups_overlay .group_settings_header,
#subscription_overlay .stream_settings_header {
flex-wrap: wrap;
}
}
/* Note that this block has settings_page CSS as well, and thus needs
to match the media queries in settings.css.
Longer-term we should extract this logic two-column-overlay class
to read more naturally. */
@media (width < $md_min) {
.user-groups-container,
.subscriptions-container {
position: relative;
overflow: hidden;
.list-toggler-container {
text-align: left;
}
.user-groups-header .fa-chevron-left,
.subscriptions-header .fa-chevron-left {
display: block;
}
}
#groups_overlay .left,
#groups_overlay .right,
#subscription_overlay .left,
#subscription_overlay .right,
#settings_page .content-wrapper.right {
position: absolute;
display: block;
margin: 0;
width: 100%;
height: calc(100% - 45px);
border: none;
}
#groups_overlay .right,
#subscription_overlay .right,
#settings_page .content-wrapper.right {
position: absolute;
left: 101%;
top: 45px;
background-color: var(--color-background-modal);
border-top: none;
transition: all 0.3s ease;
z-index: 10;
&.show {
left: 0%;
}
}
#groups_overlay {
.display-type {
display: none;
}
}
#subscription_overlay,
#groups_overlay {
.user-groups-container,
.subscriptions-container {
height: 95%;
}
.settings {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
}
}
@media (width < $sm_min) {
#groups_overlay .user_group_settings_wrapper,
#subscription_overlay .subscription_settings {
.button-group {
display: block;
float: right;
margin-top: 10px;
}
.group-header,
.stream-header {
.button-group {
margin-top: -5px;
}
}
.group_change_property_info,
.stream_change_property_info {
/* For small widths where there is not enough space
to show alert beside stream name we set its display
to block so it is shown in new line. But to avoid
it covering whole screen width we set max-width
so that it does not losses inline-block appearance. */
/* TODO: This will probably be not required once
we have tabbed navigation as button group width
will be smaller. */
display: block;
max-width: max-content;
white-space: nowrap;
}
.save-button-controls {
display: block;
margin: 0 0 10px;
&.hide {
display: none;
}
}
}
}
@media (width <= 500px) {
#groups_overlay,
#subscription_overlay {
.groups_settings_header,
.stream_settings_header {
display: block;
text-align: center;
margin-left: 0;
.tab-container {
.ind-tab {
width: 85px;
}
}
}
}
}