Data

OrderList

Lista riordinabile con pulsanti freccia (su/giù/top/bottom) e selezione multipla degli elementi; supporta slot personalizzati per item e header.

Import

import { OrderList } from '@pzeta/vue-components'

Esempio Base

Props

PropTipoDefaultDescrizione
modelValueOrderListItem[] | nullnullArray degli elementi della lista (v-model)
selectionOrderListItem[] | nullnullArray degli elementi selezionati (v-model:selection)
dataKeystring | nullnullProprietà usata come chiave univoca per gli elementi oggetto
scrollHeightstring'14rem'Altezza massima della lista con scroll
listStylestring | Record<string, string | number> | nullnullStile inline aggiuntivo per il contenitore lista
breakpointstring'960px'Larghezza viewport sotto la quale il layout diventa verticale
stripedbooleanfalseAlterna il colore di sfondo delle righe
metaKeySelectionbooleanfalseRichiede Ctrl/Meta per la selezione multipla; senza questa prop il click toglie/aggiunge alla selezione
autoOptionFocusbooleantrueMette il focus automaticamente sul primo elemento
focusOnHoverbooleantrueSposta il focus sull'elemento al passaggio del mouse
disabledbooleanfalseDisabilita il componente
moveUpButtonPropsRecord<string, unknown> | nullnullAttributi aggiuntivi per il pulsante "sposta su"
moveTopButtonPropsRecord<string, unknown> | nullnullAttributi aggiuntivi per il pulsante "sposta in cima"
moveDownButtonPropsRecord<string, unknown> | nullnullAttributi aggiuntivi per il pulsante "sposta giù"
moveBottomButtonPropsRecord<string, unknown> | nullnullAttributi aggiuntivi per il pulsante "sposta in fondo"
ariaLabelstring | nullnullEtichetta accessibilità aria-label della lista
ariaLabelledbystring | nullnullID elemento che etichetta la lista

Emits

EventoPayloadDescrizione
update:modelValueOrderListItem[]Nuovo array dopo riordinamento (v-model)
update:selectionOrderListItem[]Aggiornamento della selezione corrente
reorderOrderListReorderEventEmesso dopo ogni operazione di riordinamento
selection-changeOrderListSelectionChangeEventEmesso quando cambia la selezione
focusFocusEventFocus sulla lista
blurFocusEventBlur dalla lista

Struttura eventi

interface OrderListReorderEvent {
  originalEvent: Event
  value: OrderListItem[]          // Nuovo array ordinato
  direction: 'up' | 'down' | 'top' | 'bottom'
}

interface OrderListSelectionChangeEvent {
  originalEvent: Event
  value: OrderListItem[]          // Elementi selezionati
}

Slot

SlotScopeDescrizione
option{ option: OrderListItem; index: number; selected: boolean }Template per ogni elemento della lista
header{ value: OrderListItem[] }Intestazione sopra la lista
controlsstartContenuto inserito prima dei pulsanti di controllo
controlsendContenuto inserito dopo i pulsanti di controllo
moveupiconIcona personalizzata per il pulsante "sposta su"
movetopiconIcona personalizzata per il pulsante "sposta in cima"
movedowniconIcona personalizzata per il pulsante "sposta giù"
movebottomiconIcona personalizzata per il pulsante "sposta in fondo"

Esempi

Template personalizzato con prodotti

Ascolto evento reorder

Lista con righe alternate e disabled

Accessibilità

  • La lista usa role="listbox" con aria-multiselectable="true".
  • Ogni elemento ha role="option" e aria-selected.
  • Navigazione da tastiera: ArrowUp/ArrowDown per navigare, Ctrl+ArrowUp/Ctrl+ArrowDown per spostare gli elementi, Ctrl+Home/Ctrl+End per spostare in cima/fondo, Ctrl+A per selezionare tutto, Space/Enter per selezionare/deselezionare l'elemento con focus.

TypeScript

import type { OrderListProps, OrderListItem, OrderListReorderEvent } from '@pzeta/vue-components'

// Tipo per gli elementi della lista
type OrderListItem = Record<string, unknown> | string | number | boolean | null