Change server rules to be collapsible (#33039)
This commit is contained in:
		
							parent
							
								
									4635ce2926
								
							
						
					
					
						commit
						986a3676d3
					
				| 
						 | 
					@ -230,62 +230,6 @@ function loaded() {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					 | 
				
			||||||
  Rails.delegate(
 | 
					 | 
				
			||||||
    document,
 | 
					 | 
				
			||||||
    'button.status__content__spoiler-link',
 | 
					 | 
				
			||||||
    'click',
 | 
					 | 
				
			||||||
    function () {
 | 
					 | 
				
			||||||
      if (!(this instanceof HTMLButtonElement)) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      const statusEl = this.parentNode?.parentNode;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (
 | 
					 | 
				
			||||||
        !(
 | 
					 | 
				
			||||||
          statusEl instanceof HTMLDivElement &&
 | 
					 | 
				
			||||||
          statusEl.classList.contains('.status__content')
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (statusEl.dataset.spoiler === 'expanded') {
 | 
					 | 
				
			||||||
        statusEl.dataset.spoiler = 'folded';
 | 
					 | 
				
			||||||
        this.textContent = new IntlMessageFormat(
 | 
					 | 
				
			||||||
          localeData['status.show_more'] ?? 'Show more',
 | 
					 | 
				
			||||||
          locale,
 | 
					 | 
				
			||||||
        ).format() as string;
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        statusEl.dataset.spoiler = 'expanded';
 | 
					 | 
				
			||||||
        this.textContent = new IntlMessageFormat(
 | 
					 | 
				
			||||||
          localeData['status.show_less'] ?? 'Show less',
 | 
					 | 
				
			||||||
          locale,
 | 
					 | 
				
			||||||
        ).format() as string;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  document
 | 
					 | 
				
			||||||
    .querySelectorAll<HTMLButtonElement>('button.status__content__spoiler-link')
 | 
					 | 
				
			||||||
    .forEach((spoilerLink) => {
 | 
					 | 
				
			||||||
      const statusEl = spoilerLink.parentNode?.parentNode;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (
 | 
					 | 
				
			||||||
        !(
 | 
					 | 
				
			||||||
          statusEl instanceof HTMLDivElement &&
 | 
					 | 
				
			||||||
          statusEl.classList.contains('.status__content')
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      const message =
 | 
					 | 
				
			||||||
        statusEl.dataset.spoiler === 'expanded'
 | 
					 | 
				
			||||||
          ? (localeData['status.show_less'] ?? 'Show less')
 | 
					 | 
				
			||||||
          : (localeData['status.show_more'] ?? 'Show more');
 | 
					 | 
				
			||||||
      spoilerLink.textContent = new IntlMessageFormat(
 | 
					 | 
				
			||||||
        message,
 | 
					 | 
				
			||||||
        locale,
 | 
					 | 
				
			||||||
      ).format() as string;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Rails.delegate(
 | 
					Rails.delegate(
 | 
				
			||||||
| 
						 | 
					@ -439,6 +383,24 @@ Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Rails.delegate(document, '.rules-list button', 'click', ({ target }) => {
 | 
				
			||||||
 | 
					  if (!(target instanceof HTMLElement)) {
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const button = target.closest('button');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!button) {
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (button.ariaExpanded === 'true') {
 | 
				
			||||||
 | 
					    button.ariaExpanded = 'false';
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    button.ariaExpanded = 'true';
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function main() {
 | 
					function main() {
 | 
				
			||||||
  ready(loaded).catch((error: unknown) => {
 | 
					  ready(loaded).catch((error: unknown) => {
 | 
				
			||||||
    console.error(error);
 | 
					    console.error(error);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -108,17 +108,6 @@
 | 
				
			||||||
  background: lighten($white, 4%);
 | 
					  background: lighten($white, 4%);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Change the background colors of status__content__spoiler-link
 | 
					 | 
				
			||||||
.reply-indicator__content .status__content__spoiler-link,
 | 
					 | 
				
			||||||
.status__content .status__content__spoiler-link {
 | 
					 | 
				
			||||||
  background: $ui-base-color;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  &:hover,
 | 
					 | 
				
			||||||
  &:focus {
 | 
					 | 
				
			||||||
    background: lighten($ui-base-color, 4%);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.account-gallery__item a {
 | 
					.account-gallery__item a {
 | 
				
			||||||
  background-color: $ui-base-color;
 | 
					  background-color: $ui-base-color;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,13 +31,41 @@ $fluid-breakpoint: $maximum-width + 20px;
 | 
				
			||||||
    padding-inline-start: 3em;
 | 
					    padding-inline-start: 3em;
 | 
				
			||||||
    font-weight: 500;
 | 
					    font-weight: 500;
 | 
				
			||||||
    counter-increment: list-counter;
 | 
					    counter-increment: list-counter;
 | 
				
			||||||
 | 
					    min-height: 4ch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    button {
 | 
				
			||||||
 | 
					      background: transparent;
 | 
				
			||||||
 | 
					      border: 0;
 | 
				
			||||||
 | 
					      padding: 0;
 | 
				
			||||||
 | 
					      margin: 0;
 | 
				
			||||||
 | 
					      text-align: start;
 | 
				
			||||||
 | 
					      font: inherit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      &:hover,
 | 
				
			||||||
 | 
					      &:focus,
 | 
				
			||||||
 | 
					      &:active {
 | 
				
			||||||
 | 
					        background: transparent;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      &[aria-expanded='false'] .rules-list__hint {
 | 
				
			||||||
 | 
					        white-space: nowrap;
 | 
				
			||||||
 | 
					        overflow: hidden;
 | 
				
			||||||
 | 
					        text-overflow: ellipsis;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @supports (-webkit-line-clamp: 2) {
 | 
				
			||||||
 | 
					          display: -webkit-box;
 | 
				
			||||||
 | 
					          -webkit-line-clamp: 2;
 | 
				
			||||||
 | 
					          -webkit-box-orient: vertical;
 | 
				
			||||||
 | 
					          white-space: normal;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    &::before {
 | 
					    &::before {
 | 
				
			||||||
      content: counter(list-counter);
 | 
					      content: counter(list-counter);
 | 
				
			||||||
      position: absolute;
 | 
					      position: absolute;
 | 
				
			||||||
      inset-inline-start: 0;
 | 
					      inset-inline-start: 0;
 | 
				
			||||||
      top: 50%;
 | 
					      top: 1em;
 | 
				
			||||||
      transform: translateY(-50%);
 | 
					 | 
				
			||||||
      background: $highlight-text-color;
 | 
					      background: $highlight-text-color;
 | 
				
			||||||
      color: $ui-base-color;
 | 
					      color: $ui-base-color;
 | 
				
			||||||
      border-radius: 50%;
 | 
					      border-radius: 50%;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1077,26 +1077,6 @@ body > [data-popper-placement] {
 | 
				
			||||||
    color: $highlight-text-color;
 | 
					    color: $highlight-text-color;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .status__content__spoiler-link {
 | 
					 | 
				
			||||||
    background: $action-button-color;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    &:hover,
 | 
					 | 
				
			||||||
    &:focus {
 | 
					 | 
				
			||||||
      background: lighten($action-button-color, 7%);
 | 
					 | 
				
			||||||
      text-decoration: none;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    &::-moz-focus-inner {
 | 
					 | 
				
			||||||
      border: 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    &::-moz-focus-inner,
 | 
					 | 
				
			||||||
    &:focus,
 | 
					 | 
				
			||||||
    &:active {
 | 
					 | 
				
			||||||
      outline: 0 !important;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  .status__content__text {
 | 
					  .status__content__text {
 | 
				
			||||||
    display: none;
 | 
					    display: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1354,21 +1334,6 @@ body > [data-popper-placement] {
 | 
				
			||||||
  color: $dark-text-color;
 | 
					  color: $dark-text-color;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.status__content__spoiler-link {
 | 
					 | 
				
			||||||
  display: inline-block;
 | 
					 | 
				
			||||||
  border-radius: 2px;
 | 
					 | 
				
			||||||
  background: transparent;
 | 
					 | 
				
			||||||
  border: 0;
 | 
					 | 
				
			||||||
  color: $inverted-text-color;
 | 
					 | 
				
			||||||
  font-weight: 700;
 | 
					 | 
				
			||||||
  font-size: 11px;
 | 
					 | 
				
			||||||
  padding: 0 6px;
 | 
					 | 
				
			||||||
  text-transform: uppercase;
 | 
					 | 
				
			||||||
  line-height: 20px;
 | 
					 | 
				
			||||||
  cursor: pointer;
 | 
					 | 
				
			||||||
  vertical-align: top;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.status__wrapper--filtered {
 | 
					.status__wrapper--filtered {
 | 
				
			||||||
  color: $dark-text-color;
 | 
					  color: $dark-text-color;
 | 
				
			||||||
  border: 0;
 | 
					  border: 0;
 | 
				
			||||||
| 
						 | 
					@ -1736,11 +1701,6 @@ body > [data-popper-placement] {
 | 
				
			||||||
      height: 24px;
 | 
					      height: 24px;
 | 
				
			||||||
      margin: -1px 0 0;
 | 
					      margin: -1px 0 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    .status__content__spoiler-link {
 | 
					 | 
				
			||||||
      line-height: 24px;
 | 
					 | 
				
			||||||
      margin: -1px 0 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .media-gallery,
 | 
					  .media-gallery,
 | 
				
			||||||
| 
						 | 
					@ -2288,17 +2248,6 @@ a.account__display-name {
 | 
				
			||||||
  .status__avatar {
 | 
					  .status__avatar {
 | 
				
			||||||
    opacity: 0.5;
 | 
					    opacity: 0.5;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  a.status__content__spoiler-link {
 | 
					 | 
				
			||||||
    background: $ui-base-lighter-color;
 | 
					 | 
				
			||||||
    color: $inverted-text-color;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    &:hover,
 | 
					 | 
				
			||||||
    &:focus {
 | 
					 | 
				
			||||||
      background: lighten($ui-base-lighter-color, 7%);
 | 
					 | 
				
			||||||
      text-decoration: none;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.notification__report {
 | 
					.notification__report {
 | 
				
			||||||
| 
						 | 
					@ -6310,15 +6259,6 @@ a.status-card {
 | 
				
			||||||
    color: $primary-text-color;
 | 
					    color: $primary-text-color;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .status__content__spoiler-link {
 | 
					 | 
				
			||||||
    color: $primary-text-color;
 | 
					 | 
				
			||||||
    background: $ui-primary-color;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    &:hover {
 | 
					 | 
				
			||||||
      background: lighten($ui-primary-color, 8%);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  .dialog-option {
 | 
					  .dialog-option {
 | 
				
			||||||
    align-items: center;
 | 
					    align-items: center;
 | 
				
			||||||
    gap: 12px;
 | 
					    gap: 12px;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,8 +19,9 @@
 | 
				
			||||||
  %ol.rules-list
 | 
					  %ol.rules-list
 | 
				
			||||||
    - @rules.each do |rule|
 | 
					    - @rules.each do |rule|
 | 
				
			||||||
      %li
 | 
					      %li
 | 
				
			||||||
        .rules-list__text= rule.text
 | 
					        %button{ type: 'button', aria: { expanded: 'false' } }
 | 
				
			||||||
        .rules-list__hint= rule.hint
 | 
					          .rules-list__text= rule.text
 | 
				
			||||||
 | 
					          .rules-list__hint= rule.hint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .stacked-actions
 | 
					  .stacked-actions
 | 
				
			||||||
    - accept_path = @invite_code.present? ? public_invite_url(invite_code: @invite_code, accept: @accept_token) : new_user_registration_path(accept: @accept_token)
 | 
					    - accept_path = @invite_code.present? ? public_invite_url(invite_code: @invite_code, accept: @accept_token) : new_user_registration_path(accept: @accept_token)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue