import {
  AsyncPipe,
  NgIf,
} from '@angular/common';
import {
  Component,
  ElementRef,
  OnInit,
} from '@angular/core';
import { TranslateModule } from '@ngx-translate/core';
import {
  Observable,
  Subscription,
} from 'rxjs';
import { map } from 'rxjs/operators';

import { ContextHelpService } from '../../shared/context-help.service';

/**
 * Renders a "context help toggle" button that toggles the visibility of tooltip buttons on the page.
 * If there are no tooltip buttons available on the current page, the toggle is unclickable.
 */
@Component({
  selector: 'ds-context-help-toggle',
  templateUrl: './context-help-toggle.component.html',
  styleUrls: ['./context-help-toggle.component.scss'],
  standalone: true,
  imports: [NgIf, AsyncPipe, TranslateModule],
})
export class ContextHelpToggleComponent implements OnInit {
  buttonVisible$: Observable<boolean>;

  subscriptions: Subscription[] = [];

  constructor(
    protected elRef: ElementRef,
    protected contextHelpService: ContextHelpService,
  ) {
  }

  ngOnInit(): void {
    this.buttonVisible$ = this.contextHelpService.tooltipCount$().pipe(map(x => x > 0));
    this.subscriptions.push(this.buttonVisible$.subscribe((showContextHelpToggle: boolean) => {
      if (showContextHelpToggle) {
        this.elRef.nativeElement.classList.remove('d-none');
      } else {
        this.elRef.nativeElement.classList.add('d-none');
      }
    }));
  }

  onClick() {
    this.contextHelpService.toggleIcons();
  }
}