Change server rules to be collapsible (#33039)
This commit is contained in:
		@@ -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(
 | 
			
		||||
@@ -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() {
 | 
			
		||||
  ready(loaded).catch((error: unknown) => {
 | 
			
		||||
    console.error(error);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user