Table

Mantenedor:
Raubzeug
GitHub
verticalAlign
rowActionsSize
edgePadding
import {Table} from '@gravity-ui/uikit';

A Table permite seleccionar y ordenar filas, así como realizar acciones en una fila.

Propiedades

NombreDescripciónTipoPredeterminado
datoDatosany[]
columnasConfiguración de columnaTableColumnConfig[]
verticalAlignAlineación vertical del contenido"top" "middle"
getRowDescriptorControlador para obtener el descriptor de fila(item: any, index: number) => DescriptorType
getRowIdEl identificador de fila se utiliza al seleccionar y ordenar las filas. Si omites una fila, su identificador será el valor del campo en los datos de la fila con el mismo nombre que el identificador de la columna.string ((item: any, index: number) => string)
getRowClassNamesClases CSS de fila(item: any, index: number) => string[]
isRowDisabledCondición para deshabilitar las columnas(item: any, index: number) => boolean
onRowClickControlador de clics de fila(artículo: cualquiera, índice: número, evento: <HTMLTableRowElement> React.mouseEvent () = nulo>
onRowMouseEntercontrolador Row mouseenter(artículo: cualquiera, índice: número, evento: <HTMLTableRowElement> React.mouseEvent () = nulo>
onRowMouseLeaveControlador Row mouseleave(artículo: cualquiera, índice: número, evento: <HTMLTableRowElement> React.mouseEvent () = nulo>
emptyMessageDevolver un mensaje si faltan los datosstring"No data"
classNameClase CSS de tablastring
edgePaddingAñade un relleno horizontal para las celdas de los bordesboolean
stickyHorizontalScrollAñade un rollo adhesivo horizontal a una tabla. Nota: Una mesa no puede tener una altura fija y un rollo adhesivo al mismo tiempo. Un rollo adhesivo no funcionará si la mesa está desbordada.booleanfalse
stickyHorizontalScrollBreakpointUmbral que debe alcanzar el bloque principal antes de hacer que un pergamino quede pegajoso. Esto es útil en la consola, por ejemplo, cuando la groupActions barra se superpone al rollo.number0

DescriptorType

NombreDescripciónTipoPredeterminado
identificaciónID de fila que se utiliza al seleccionar y ordenar filasstring
inhabilitadoCondición para deshabilitar las columnasboolean
interactivoMostrar fila al pasar el ratónboolean
classNamesClases CSS de filastring[]

TableColumnConfig

NombreDescripciónTipoPredeterminado
identificaciónID de columnastring
nombreNombre de columna (encabezado)string (() => React.ReactNode)ID de columna
classNameClase CSS que se añadirá a todas las celdas de la columnastring
marcador de posiciónStub cuando no hay datos en una celdastring ((item: any, index: number) => React.ReactNode)— (&mdash;)
modeloContenido de la celda. Si omite una fila, el contenido de la celda será el valor del campo con el mismo nombre que esta fila.string ((item: any, index: number) => React.ReactNode)Valor del campo con el nombre igual al ID de la columna
alinearAlineación de contenido"start" "end"
pegajosoColumna adhesiva"start" "end"
primariaIdentifica una columna como principal en lugar de otrasboolean
anchuraAncho del contenido de la columna en píxelesnumber string
metaDatos varios, incluida la configuración HOCRécord<string, any>

Uso Table con el withTableActions HOC

Este HOC agrega una columna especial con acciones a las columnas de la tabla.

Propiedades

NombreDescripciónTipo
getRowActionsMatriz de configuraciones de acción para cada fila(item: any, index: number) => TableActionConfig[]
renderRowActionsFunción de renderizado para Actions Cell(props: {item: any; index: number}) => React.ReactNode
rowActionsSizeTamaño del botón de acción y de los elementos del menú emergente"s" "xl"

TableActionConfig

type TableActionConfig = TableAction | TableActionGroup;

TableAction

NombreDescripciónTipoPredeterminado
mensajeTextostring
controladorControlador de clics(item: any, index: number) => void
inhabilitadoAcción desactivadaboolean
hrefUn elemento de menú con esta propiedad se convierte en un enlace a la ubicación especificada.string
objetivoIgual que el target atributo de la <a> etiqueta.string
reléIgual que el rel atributo de la <a> etiqueta.string
canciónTema"normal" "danger""normal"
iconoIcono para mostrar junto al textoReact.ReactNode

TableActionGroup

NombreDescripciónTipo
títuloEncabezado del grupo de accionesstring
artículosElementos del grupo de accionesTableActionConfig[]

Ejemplo

import {Table, withTableActions} from '@gravity-ui/uikit';

const MyTable = withTableActions(Table);
const data = [
  {id: 1, text: 'Hello'},
  {id: 2, text: 'World'},
];
const columns = [{id: 'id'}, {id: 'text'}];
const getRowActions = () => {
  return [
    {
      text: 'Print',
      handler: () => {},
    },
    {
      text: 'Remove',
      handler: () => {},
      theme: 'danger',
    },
  ];
};

const table = <MyTable data={data} columns={columns} getRowActions={getRowActions} />;
import {Table, withTableActions, RenderRowActionsProps} from '@gravity-ui/uikit';

const MyTable = withTableActions(Table);
type Item = {id: number, text: string};

const data: Item[] = [
  {id: 1, text: 'Hello'},
  {id: 2, text: 'World'},
];
const columns = [{id: 'id'}, {id: 'text'}];

const RowAction = ({item}: RenderRowActionsProps<Item>) => {
  return <React.Fragment>{`Action for - ${item.text}`}</React.Fragment>;
};

const table = <MyTable data={data} columns={columns} renderRowActions={RowAction} />;

Uso Table con el withTableCopy HOC

Este HOC permite copiar el contenido de una celda o cualquier otro texto.

ColumnMeta

NombreDescripciónTipo
copiarTexto para copiar. Si el valor es verdadero, se permite copiar el contenido de la celda.boolean ((item: any, index: number) => number)

Ejemplo

import {Table, withTableCopy} from '@gravity-ui/uikit';

const MyTable = withTableCopy(Table);
const data = [
  {id: 1, text: 'Hello'},
  {id: 2, text: 'World'},
];
const columns = [
  {id: 'id', meta: {copy: ({id}) => `ID #${id}`}},
  {id: 'text', meta: {copy: true}},
];

const table = <MyTable data={data} columns={columns} />;

Uso Table con el withTableSelection HOC

Este HOC permite seleccionar filas de tablas.

Propiedades

NombreDescripciónTipo
selectedIdsFilas seleccionadasstring[]
onSelectionChangeGestor de cambios de fila seleccionado(ids: string[]) => void

Ejemplo

import {Table, withTableSelection} from '@gravity-ui/uikit';

const MyTable = withTableSelection(Table);
const data = [
  {id: 1, text: 'Hello'},
  {id: 2, text: 'World'},
];
const columns = [{id: 'id'}, {id: 'text'}];
const getRowId = 'id';

function SelectionTable() {
  const [selectedIds, setSelectedIds] = React.useState([1]);

  return (
    <MyTable
      data={data}
      columns={columns}
      getRowId={getRowId}
      selectedIds={selectedIds}
      onSelectionChange={setSelectedIds}
    />
  );
}

Uso Table con el withTableSettings HOC

Este HOC habilita funciones para la configuración de las columnas de la tabla. Puedes usarlo de dos maneras:

import {Table, withTableSettings} from './withTableSettings';

// No options passed
const MyTable1 = withTableSettings(Table);
// or with options
const MyTable1 = withTableSettings({sortable: false})(Table);

Opciones

NombreDescripciónTipoPredeterminado
anchuraAncho de la ventana emergente de configuraciónnumber "fit"
clasificableActiva o desactiva los elementos de configuración de clasificaciónbooleantrue
filtrableActiva o desactiva los elementos de configuración de filtradobooleanfalse

ColumnMeta

NombreDescripciónTipoPredeterminado
selectedByDefaultActiva o desactiva la selección de una columna si falta en la configuraciónbooleantrue
selectedAlwaysHace que la columna esté siempre seleccionada. No puede cambiar su visibilidad.booleanfalse

Propiedades

NombreDescripciónTipo
settingsPopupWidthTableColumnSetup ancho de ventana emergentenumber "fit"
ajustesAjustes actualesTableSettingsData
updateSettingsGestor de actualización de ajustes(datos: TableSettingsData () = Promesa><void>
renderControlsPermite renderizar acciones personalizadasRenderControls
settingsFilterPlaceholderTexto que aparece en el control cuando no hay ningún valor de búsqueda establecidostring
settingsFilterEmptyMessageTexto que aparece cuando no se encuentra ningún elementostring
filterSettingsFunción para filtrar artículos(value: string, item: TableColumnSetupItem) => boolean

TableSettingsData

type TableSettingsData = Array<{
  id: string;
  isSelected?: boolean;
}>;

RenderControls

type RenderControls = (params: {
  DefaultApplyButton: React.ComponentType;
  onApply: () => void;
}) => React.ReactNode;

Ejemplo

import {Table, withTableSettings} from '@gravity-ui/uikit';

const MyTable = withTableSettings({width: 100, sortable: false})(Table);
const data = [
  {id: 1, text: 'Hello'},
  {id: 2, text: 'World'},
];
const columns = [{id: 'id'}, {id: 'text'}];
const initialSettings = [
  {id: 'id', isSelected: false},
  {id: 'text', isSelected: true},
];

function SelectionTable() {
  const [settings, setSettings] = React.useState(initialSettings);

  return (
    <MyTable
      data={data}
      columns={columns}
      settings={settings}
      updateSettings={(settings) => {
        setSettings(settings);
        return Promise.resolve();
      }}
      renderControls={({DefaultApplyButton, onApply}) => (
        <Flex gapRow="1" direction="column">
          <Button
            view="outlined-warning"
            onClick={() => {
              onApply();
              setSettings(initialSettings);
            }}
          >
            Reset
          </Button>
          <DefaultApplyButton />
        </Flex>
      )}
    />
  );
}

Uso Table con el withTableSorting HOC

Este HOC permite la clasificación de columnas.

ColumnMeta

NombreDescripciónTipoPredeterminado
defaultSortOrderEstablece el orden de clasificación principal"asc" "desc"asc
ordenarFunción de clasificación. Debe devolver un valor para ordenar en orden ascendente. Si se establece en verdadero, los valores de las celdas se comparan y ordenan en orden ascendente.boolean ((itemA: any, itemB: any) => number)

Propiedades

NombreDescripciónTipo
defaultSortStateEstado de clasificación predeterminado para un componente no controladoTableSortState
sortStateEstado de clasificaciónTableSortState
onSortStateChangeIdentificador de cambio de estado de clasificación(sortState: TableSortState) => void

Si faltan onSortStateChange las propiedades sortState y, el estado de clasificación se almacena en el propio componente.

TableSortState

type TableSortState = Array<{
  column: string;
  order: 'asc' | 'desc';
}>;

Ejemplo

import {Table, withTableSorting} from '@gravity-ui/uikit';

const MyTable = withTableSorting(Table);
const data = [
  {id: 1, text: 'Hello', date: '2016-10-25'},
  {id: 2, text: 'World', date: '2020-08-15'},
];
const columns = [
  {id: 'id', meta: {sort: true}},
  {
    id: 'text',
    meta: {defaultSortOrder: 'desc', sort: (a, b) => Date.parse(a.date) - Date.parse(b.date)},
  },
];

const table = <MyTable data={data} columns={columns} />;