Gå til innhold

Utility-komponenter, direktiver og pipes

Denne siden samler mindre felleskomponenter og Angular-hjelpere som ikke trenger egne sider, men som bør brukes konsekvent.


Feature-tabell

Type Navn Selector/pipe Bruk
Komponent TimeInsightsComponent app-time-insights Viser endringshistorikk for timeregistrering.
Komponent PWAInstallPromptComponent app-pwa-install-prompt Viser PWA-installasjonsprompt.
Komponent UpdateNotificationComponent app-update-notification Varsler om service worker-oppdatering eller kritisk reload.
Komponent NgbdDatepickerI18n ngb-datepicker-i18n ng-bootstrap datepicker med oversatte måneder/dager.
Direktiv AutoResizeTextareaDirective textarea[appAutoResize] Autosizer tekstfelt opp til maks rader.
Direktiv MarkAsteriskDirective [required-asterisk] Legger required-stjerne etter label.
Pipe FormatTimePipe formatTime Formaterer HHmm til HH:mm.
Pipe ToDatePipe toDate Konverterer YYYYMMDD til Date.
Pipe Nl2brPipe nl2br Escaper tekst og legger til enkel markdown-/linjeskift-HTML.

Time insights

Del Sti
Komponent ui/ePortal.ui/src/app/shared/time-insights/time-insights.component.ts
Service ui/ePortal.ui/src/app/services/time-insights.service.ts

app-time-insights viser endringshistorikk for en wage registration. Komponenten kan åpnes via public method open.

<app-time-insights #timeInsights></app-time-insights>

<button type="button" class="btn btn-link btn-sm" (click)="timeInsights.open(row.wrID, row.employeeName, row.employeeNo)">
  {{ 'TimeInsights.Open' | translate }}
</button>
Type Navn Default Beskrivelse
Input wrID 0 Wage registration id.
Method open(wrID, employeeName, employeeNo) Åpner panelet og laster historikk.
Method close() Lukker panelet og nullstiller data.

PWA install prompt

Del Sti
Komponent ui/ePortal.ui/src/app/shared/pwa-install-prompt/pwa-install-prompt.component.ts

Komponenten har ingen inputs eller outputs. Den lytter på PWAService og viser prompt når appen kan installeres.

<app-pwa-install-prompt></app-pwa-install-prompt>

Plasser den normalt én gang i app-shell, ikke på hver feature-side.


Update notification

Del Sti
Komponent ui/ePortal.ui/src/app/shared/components/update-notification/update-notification.component.ts

Komponenten har ingen inputs eller outputs. Den lytter på Angular service worker og AppUpdateService.

<app-update-notification></app-update-notification>

Plasser den normalt én gang i app-shell.


Datepicker i18n

Del Sti
Komponent ui/ePortal.ui/src/app/shared/date-picker-i18n.ts

Wrapper rundt ngb-datepicker med oversatte måned- og dagnavn fra i18n.

<ngb-datepicker-i18n
  [(model)]="selectedDate"
  [openPopup]="true"
  [placeholder]="'Common.SelectDate' | translate"
  [disabled]="formDisabled"
  [minDate]="minDate"
  [maxDate]="maxDate">
</ngb-datepicker-i18n>
Type Navn Default Beskrivelse
Input model NgbDateStruct.
Output modelChange Emitter valgt dato.
Input openPopup false Viser input med kalenderknapp i stedet for inline datepicker.
Input placeholder '' Placeholder for popup-input.
Input readOnly false Gjør input readonly.
Input disabled false Deaktiverer knapp/input.
Input navigation arrow ng-bootstrap navigation mode.
Input footerTemplate null Valgfri footer template.
Input minDate Nedre datogrense.
Input maxDate Øvre datogrense.

Direktiver

Auto-resize textarea

<textarea
  appAutoResize
  [appAutoResizeMax]="12"
  rows="3"
  class="form-control"
  formControlName="description">
</textarea>
Input Default Beskrivelse
appAutoResizeMax 10 Maks synlige rader før textarea får scroll.

Required asterisk

<div class="form-group" required-asterisk>
  <label for="customerName">{{ 'Customer.Name' | translate }}</label>
  <input id="customerName" class="form-control" formControlName="customerName">
</div>

Direktivet finner første label i parent og legger til en span.required-asterisk hvis den ikke finnes.


Pipes

<span>{{ row.startTime | formatTime }}</span>
<span>{{ row.workDate | toDate | date: dateFormat }}</span>
<div [innerHTML]="message.body | nl2br"></div>
Pipe Input Output
formatTime HHmm HH:mm
toDate YYYYMMDD eller Date Date eller null
nl2br tekst SafeHtml med escaped HTML, enkle lister, bold og interne lenker

Kjente fallgruver

Fallgruve Riktig mønster
Legge PWA/update-komponenter i mange feature-sider Plasser dem én gang i shell.
Bruke nl2br på ubegrenset ekstern HTML Den er laget for tekst som escapes først, ikke som generell HTML-renderer.
Bruke formatTime på allerede formatert tid med sekunder Send HHmm eller lag egen formattering i parent.
Bruke required-stjerne uten label i parent Direktivet trenger en label i samme parent-element.

Relaterte sider