File

src/app/features/contact-persons/contact-person-card/contact-person-card.component.ts

Metadata

selector app-contact-person-card
styleUrls ./contact-person-card.component.scss
templateUrl ./contact-person-card.component.html

Index

Methods
Inputs

Constructor

constructor(store: Store)
Parameters :
Name Type Optional
store Store No

Inputs

contactPerson
Type : ContactPerson

Methods

onDelete
onDelete()
Returns : void
import { Component, Input } from '@angular/core';
import { ContactPerson } from 'src/app/core/data/models/contact-person.model';
import { Store } from '@ngxs/store';
import { DeleteContactPerson } from 'src/app/core/ngxs/actions/contact-person.action';

@Component({
  selector: 'app-contact-person-card',
  templateUrl: './contact-person-card.component.html',
  styleUrls: ['./contact-person-card.component.scss'],
})
export class ContactPersonCardComponent {
  @Input() contactPerson: ContactPerson;

  constructor(private store: Store) {}

  onDelete() {
    this.store.dispatch(new DeleteContactPerson(this.contactPerson.id));
  }
}
<p class="subtitle-2 mb-2" data-cy="contact-name">
  {{ contactPerson.forename + ' ' + contactPerson.surname }}
</p>

<div class="wrapper-contact-person-details">
  <div>
    <label class="label" data-cy="contact-companyname">Unternehmen</label>
    <p class="subtitle-2" data-cy="contact-companyname-entry">{{ contactPerson.companyName }}</p>
  </div>
  <div>
    <label class="label" data-cy="contact-department">Abteilung</label>
    <p *ngIf="contactPerson.department; else missing" class="subtitle-2" data-cy="contact-department-entry">{{ contactPerson.department }}</p>
  </div>
  <div>
    <label class="label" data-cy="contact-division">Unternehmensbereich</label>
    <p class="subtitle-2" data-cy="contact-division-entry">{{ contactPerson.corporateDivision }}</p>
  </div>
  <div>
    <label class="label" data-cy="contact-sector">Branche</label>
    <p *ngIf="contactPerson.sector; else missing" class="subtitle-2" data-cy="contact-sector-entry">{{ contactPerson.sector }}</p>
  </div>
  <ng-template #missing>
    <p class="subtitle-2" data-cy="missing">-</p>
  </ng-template>
</div>

<div class="action-bar">
  <a [routerLink]="contactPerson.id + '/edit'" nbPopover="Bearbeiten" nbPopoverTrigger="hint" status="primary" ghost nbButton data-cy="edit-person-button">
    <nb-icon icon="edit-outline"></nb-icon>
  </a>
  <button (click)="onDelete()" nbPopover="Löschen" nbPopoverTrigger="hint" status="basic" ghost nbButton data-cy="delete-person-button">
    <nb-icon icon="person-remove-outline"></nb-icon>
  </button>
</div>

./contact-person-card.component.scss

@import '../../../../sass/utils';

.wrapper-contact-person-details {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0 10px;

  @media screen and (max-width: 600px) {
    grid-template-columns: repeat(2, 1fr);
  }
}

:host {
  width: 100%;
  position: relative;
}

.action-bar {
  position: absolute;
  top: 0;
  right: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 10px;
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""