Saltar al contenido principal

device-display

Paquetes: @tiendana/ngx-core/ui @tiendana/api-types

Template para mostrar un dispositivo registrado: una terminal POS, una pantalla de cocina (KDS) o un kiosko de autoservicio. Se usa como plantilla de ítem en tdn-select o de forma independiente en listados. Es el único display template para dispositivos y forma parte de la familia de Display Templates.

Antes terminal-pos-display

Desde ngx-core 0.8.0 el selector terminal-pos-display y la clase TerminalPosDisplayComponent ya no existen. Reemplaza por device-display y DeviceDisplayComponent. Los inputs (data, full) no cambian.

Características​

✅ Cubre los tres tipos de app que comparten el registro: POS, KDS y Kiosko
✅ Etiqueta con la app que corre el dispositivo, calculada desde type_app
✅ Icono del tipo de dispositivo (type_device)
✅ Segunda línea con ID, versión de la app, prefijo de factura y marca
✅ Modo full que añade el modelo
✅ Standalone, OnPush y signal inputs

API​

Inputs​

InputTipoDefaultDescripción
dataInputSignal<TerminalPOS | undefined | null>requeridoDispositivo a mostrar, de cualquier TypeApp. null dibuja una carcasa vacía
fullInputSignal<boolean | undefined | null>falseMuestra además el modelo y agrega la clase full al host

Signals​

SignalTipoDescripción
appLabelSignal<string>Nombre de la app que corre el dispositivo. Cadena vacía si el registro no lo indica

Qué dibuja​

Primera línea. El icono del tipo de dispositivo, el nombre (name, o prefix_invoice si no hay nombre) y la etiqueta de la app.

type_app (TypeApp)Etiqueta
POSPOS
KDSKDS
KIOSKKiosko
ausente o desconocidosin etiqueta

Un dispositivo cuya app no se conoce no se dibuja como POS: la ausencia de etiqueta se lee como un dato pendiente, mientras que «POS» se leería como un hecho.

Segunda línea. Solo se muestran los datos que la fila tiene, cada uno con un title en español que nombra el campo:

DatoPrefijo visibletitle
idID:ID
current_versionvVersión de App
prefix_invoiceP:Prefijo
brandM:Marca
model (solo con full)M:Modelo

Marca y modelo comparten el prefijo M:; solo el tooltip los distingue.

Icono por type_device. El icono se pinta con la clase .type.type-N:

type_deviceValorImagen
ANDROID1android.svg
IOS2apple.svg
WEB3android.svg
DESKTOP4windows.svg
Textos fijos

Las etiquetas (POS, KDS, Kiosko) y los title son cadenas fijas en español, no claves de traducción.

Uso​

Dentro de tdn-select​

<tdn-select formControlName="device" [data]="devices()" simple labelKey="name">
<ng-template #listItem let-item="item">
<device-display [data]="item" />
</ng-template>
</tdn-select>

Encabezado de detalle, con el modelo​

<device-display [data]="device()" [full]="true" />

Importación​

import { Component, input } from '@angular/core';
import { TerminalPOS } from '@tiendana/api-types';
import { DeviceDisplayComponent } from '@tiendana/ngx-core/ui';

@Component({
selector: 'app-device-row',
imports: [DeviceDisplayComponent],
template: `<device-display [data]="device()" />`
})
export class DeviceRowComponent {
readonly device = input.required<TerminalPOS>();
}

Estilos​

Sin full, el host usa una fuente de 11px; con full la primera línea hereda la fuente del contenedor y la segunda línea se mantiene en 11px. La etiqueta de app usa --bg-2dp, 10px y mayúsculas. Los datos de la segunda línea (salvo el ID) se separan con un borde izquierdo de --border-accn-color, una variable que define la app (no @tiendana/web-foundation): sin ella el separador no se dibuja. La marca se muestra con la primera letra en mayúscula.

Accesibilidad​

  • El icono del tipo de dispositivo es una imagen de fondo sin texto alternativo: el nombre del dispositivo y la etiqueta de app llevan la información.
  • Los datos de la segunda línea exponen su significado en el atributo title, que los lectores de pantalla no siempre anuncian; en vistas de detalle incluye también el texto visible de cada dato.

Ver También​