File

libs/core/dynamic-form/src/info-icon/info-icon/info-icon.component.ts

Implements

OnInit

Metadata

Index

Properties
Methods

Constructor

constructor(dialogService: NxDialogService, defaultOptions: DfInfoIconOptions)
Parameters :
Name Type Optional
dialogService NxDialogService No
defaultOptions DfInfoIconOptions No

Methods

Public openDialog
openDialog()
Returns : void

Properties

config
Default value : input<DfInfoIconComponentConfig>()
Public iconHoverName
Type : string
Public iconName
Type : string
modalComponent
Default value : input<ComponentType<unknown>>()
modalConfig
Default value : input.required<unknown>()

Info icon modal config

Public show
Default value : true
Public size
Type : NxPlainButtonSize
import { ComponentType } from '@angular/cdk/overlay';
import { Component, Inject, input, OnInit } from '@angular/core';
import { NxPlainButtonSize } from '@aposin/ng-aquila/button';
import { NxDialogService } from '@aposin/ng-aquila/modal';
import { DfInfoIconComponentConfig } from '../../base/info-icon.model';
import { Df_INFO_ICON_DEFAULT_OPTIONS, DfInfoIconOptions } from './info-icon.model';

@Component({
  selector: 'df-info-icon',
  templateUrl: './info-icon.component.html',
  styleUrls: ['./info-icon.component.scss'],
  host: {
    class: 'df-info-icon'
  },
  standalone: false
})
export class DfInfoIconComponent implements OnInit {
  private _modalComponent?: ComponentType<unknown>;

  public show = true;
  public iconName: string;
  public iconHoverName: string;
  public size!: NxPlainButtonSize;

  modalComponent = input<ComponentType<unknown>>();

  /** Info icon modal config **/
  modalConfig = input.required<unknown>();
  config = input<DfInfoIconComponentConfig>();

  constructor(
    readonly dialogService: NxDialogService,
    @Inject(Df_INFO_ICON_DEFAULT_OPTIONS) readonly defaultOptions: DfInfoIconOptions
  ) {
    this.iconName = this.defaultOptions.icon;
    this.iconHoverName = this.defaultOptions.hoverIcon;
  }

  ngOnInit() {
    this.size = this.config()?.size ?? this.defaultOptions?.size;
    this._modalComponent = this.modalComponent() ?? this.defaultOptions.modalComponent;
  }

  public openDialog() {
    if (!this._modalComponent) {
      return;
    }
    this.dialogService.open(this._modalComponent, {
      width: 'auto',
      showCloseIcon: true,
      data: this.modalConfig
    });
  }
}
<button nxPlainButton (click)="openDialog()" class="df-info-icon__button" [size]="size">
  <nx-icon [name]="iconName" class="df-info-icon__button__icon"></nx-icon>
  <nx-icon [name]="iconHoverName" class="df-info-icon__button__icon-hover"></nx-icon>
</button>

./info-icon.component.scss

.df-info-icon {
  --plain-button-color: var(--df-info-icon-color-default);
  --plain-button-hover-color: var(--df-info-icon-color-hover);
  --plain-button-active-color: var(--df-info-icon-color-active);

  &__button {
    &__icon {
      display: block;
    }
    &__icon-hover {
      display: none;
    }

    &:hover {
      .df-info-icon__button__icon {
        display: none;
      }
      .df-info-icon__button__icon-hover {
        display: block;
      }
    }
  }
}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""