@apia/table 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) [year] [fullname]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Initiator
2
+
3
+ Este package se creó con la única utilidad de copiarlo entero y pegarlo a la hora de crear un nuevo package.
4
+
5
+ Este iniciador permite crear un paquete que compila typescript y puede ser importado desde otros packages.
6
+
7
+ ## IMPORTANTE
8
+
9
+ Los archivos **tsconfig.json** y **tsup.config.ts** no son archivos únicos sino symlinks a archivos de configuración comunes a todos los packages. En caso de que sea necesario modificar alguno de ellos **que en la gran mayoría de los casos no sería necesario**, es necesario eliminar el archivo a modificar y crear uno nuevo.
10
+
11
+ ## Procedimiento
12
+
13
+ - Copiar la carpeta initiator y pegarla con otro nombre dentro de packages.
14
+ - Modificar el package.json:
15
+ - Eliminar la línea ```private: true```.
16
+ - Cambiar la ocurrencia `initiator` por el nombre del nuevo paquete.
17
+ - Agregar los scripts convenientes: dev, build, etc.
18
+ - Ejecutar el comando lerna bootstrap desde la carpeta raíz.
19
+
20
+ Luego de ejecutar estos pasos, el package estaría listo para comenzar a usarse.
21
+
22
+ Este package trae como dependencias por defecto theme-ui y react. Si se desea agregar más dependencias se debe ejecutar el comando ```lerna add --scope="@apia/packageName" dependencyName```. Ejemplo, si creamos un paquete con el nombre @apia/myPackage y queremos agregar lodash como dependencia, ejecutamos el comando ```lerna add --scope="@apia/myPackage" lodash```.
23
+
24
+ **Importante 1**: Dado que estamos desarrollando packages, es importante determinar si las dependencias que vamos a agregar son de tipo dependency o de tipo peerDependency.
25
+
26
+ **Importante 2**: lerna no permite instalar de a varias dependencias a la vez como lo hace npm, por lo tanto, si se desea agregar varias dependencias se debe ejecutar el comando anterior tantas veces como dependencias se quiera agregar.
27
+
28
+ **Importante 3**: React y theme-ui vienen instalados como peerDependencies. En caso de no ser necesarios pueden ser removidos, pero en cualquier caso asegurarse de que estas dependencias no sean instaladas como dependencies puesto que esto causaría comportamientos indeseados en la aplicación.
package/cleanDist.json ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "cleanDist": 0.1481583416616694
3
+ }
@@ -0,0 +1,615 @@
1
+ import React, { FunctionComponent } from 'react';
2
+ import { BoxProps } from 'theme-ui';
3
+ import * as theme_ui_jsx_runtime from 'theme-ui/jsx-runtime';
4
+ import { IconType } from '@meronex/icons';
5
+ import * as _apia_util from '@apia/util';
6
+ import { TApiaFilter, TModify } from '@apia/util';
7
+ import * as _reduxjs_toolkit from '@reduxjs/toolkit';
8
+ import { PayloadAction } from '@reduxjs/toolkit';
9
+ import * as immer_dist_internal from 'immer/dist/internal';
10
+ import * as react_redux from 'react-redux';
11
+ import * as redux from 'redux';
12
+
13
+ type TAccordionCellRendererProps<CellProps = Record<string, unknown>> = {
14
+ cell: TResponsiveTableCell<CellProps>;
15
+ column: TResponsiveTableColumn;
16
+ columnIndex: number;
17
+ row: TResponsiveTableRow;
18
+ rowIndex: number;
19
+ };
20
+ type TAccordionCellRenderer<CellProps = Record<string, unknown>> = FunctionComponent<TAccordionCellRendererProps<CellProps>>;
21
+ declare const AccordionCell: TAccordionCellRenderer<Record<string, unknown>>;
22
+
23
+ type TColoredElement = {
24
+ background?: string;
25
+ color?: string;
26
+ };
27
+ /**
28
+ * Se encontró en algunos casos particulares que
29
+ * el servidor devuelve Up y Down para referirse
30
+ * al orden actual de una columna.
31
+ */
32
+ type TResponsiveTableSortValue = null | 'A' | 'D' | 'Down' | 'Up';
33
+ /**
34
+ * Cada vez que se hace click en el botón del
35
+ * cabezal de una columna, si la columna tiene
36
+ * habilitado el ordenamiento, se emite un
37
+ * evento de este tipo, informando cuál columna
38
+ * emitió el evento, y cuál es el nuevo sortValue.
39
+ */
40
+ type TResponsiveTableSortChangeEvent = {
41
+ name: string;
42
+ column: TResponsiveTableColumn;
43
+ columnIndex: number;
44
+ /**
45
+ * Es el orden que la columna debería tener
46
+ * si no hay ningún motivo para evitar que
47
+ * la acción de ordenamiento se lleve a cabo.
48
+ *
49
+ * Es importante notar que el componente
50
+ * responsiveTable no realiza ninguna acción
51
+ * de ordenamiento por defecto, sino que es
52
+ * quien la usa, quien debe realizar las
53
+ * acciones correspondientes e informarlo a
54
+ * la tabla actualizando los registros y el
55
+ * estado de la columna correspondiente.
56
+ */
57
+ sortValue: TResponsiveTableSortValue;
58
+ };
59
+ /**
60
+ * Cada celda admite un renderer, que recibe
61
+ * propiedades personalizadas. Este tipo define
62
+ * cuál es la forma de esas propiedades.
63
+ */
64
+ type TResponsiveTableCellRendererProps<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>, HTML = HTMLTableCellElement> = {
65
+ cell: TResponsiveTableCell<RendererPropsType>;
66
+ column: TResponsiveTableColumn;
67
+ row: TResponsiveTableRow;
68
+ } & React.AllHTMLAttributes<HTML>;
69
+ type TResponsiveTableCellRenderer<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = React.FunctionComponent<TResponsiveTableCellRendererProps<RendererPropsType>>;
70
+ /**
71
+ * Algunos elementos de la tabla admiten un
72
+ * Renderer personalizado. Dichos elementos
73
+ * extienden este tipo.
74
+ */
75
+ type TResponsiveTableWithRendererElement<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = {
76
+ /**
77
+ * Si se desea, el elemento admite un componente
78
+ * personalizado para encargarse del renderizado
79
+ * del mismo en el modo responsivo. De esta forma, se puede proveer
80
+ * de comportamiento específico a cualquier
81
+ * elemento de la tabla.
82
+ */
83
+ AccordionRenderer?: TAccordionCellRenderer<any>;
84
+ /**
85
+ * Son las propiedades que se desean pasar al
86
+ * componente de renderizado personalizado que
87
+ * se haya establecido.
88
+ *
89
+ * Estas props serán obviadas en caso de que
90
+ * no haya componente de renderizado personalizado.
91
+ */
92
+ rendererProps?: RendererPropsType;
93
+ /**
94
+ * Si se desea, el elemento admite un componente
95
+ * personalizado para encargarse del renderizado
96
+ * del mismo. De esta forma, se puede proveer
97
+ * de comportamiento específico a cualquier
98
+ * elemento de la tabla.
99
+ */
100
+ Renderer?: TResponsiveTableCellRenderer<any>;
101
+ };
102
+ type TResponsiveTableCell<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = {
103
+ children?: number | string;
104
+ } & TResponsiveTableWithRendererElement<RendererPropsType> & Partial<Pick<HTMLTableCellElement, 'ariaLabel' | 'className' | 'colSpan' | 'id' | 'rowSpan' | 'title'>> & TColoredElement;
105
+ /**
106
+ * Cada celda admite un renderer, que recibe
107
+ * propiedades personalizadas. Este tipo define
108
+ * cuál es la forma de esas propiedades.
109
+ */
110
+ type TResponsiveTableRowRendererProps<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = {
111
+ row: TResponsiveTableRow<RendererPropsType>;
112
+ rowIndex: number;
113
+ } & React.AllHTMLAttributes<HTMLTableRowElement>;
114
+ type TResponsiveTableRowRenderer<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = React.FunctionComponent<TResponsiveTableRowRendererProps<RendererPropsType>>;
115
+ type TResponsiveTableRow<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = TBasicRow & TColoredElement & {
116
+ cells: TResponsiveTableCell[];
117
+ /**
118
+ * Si se pasa en true, la fila se mostrará como un separador
119
+ */
120
+ separator?: boolean;
121
+ initiallySelected?: boolean;
122
+ renderer?: TResponsiveTableRowRenderer<RendererPropsType>;
123
+ rendererProps?: RendererPropsType;
124
+ /**
125
+ * Permite pasar propiedades arbitrarias a un row y recuperarlas en los
126
+ * eventos de onClick por ejemplo.
127
+ */
128
+ rowProps?: RendererPropsType;
129
+ isHidden?: boolean;
130
+ /**
131
+ * Los estados de la fila agregan un ícono en la columna
132
+ * especial que es la que se muestra a la izquierda y
133
+ * contiene, cuando existe, el botón de más información.
134
+ */
135
+ states?: TResponsiveTableRowState[];
136
+ } & Partial<Pick<HTMLTableCellElement, 'ariaLabel' | 'colSpan' | 'className' | 'rowSpan' | 'title'>>;
137
+ type TResponsiveTableRowState = {
138
+ /**
139
+ * Es un className que se agregará al elemento <tr>
140
+ */
141
+ className?: string;
142
+ Icon: IconType;
143
+ color?: string;
144
+ tooltip: string;
145
+ };
146
+ type TResponsiveTableColumn = TResponsiveTableWithRendererElement & {
147
+ /** Con esta propiedad se puede pasar parámetros opcionales */
148
+ additionalData?: Record<string, unknown>;
149
+ /**
150
+ * Determina si la columna admite ordenamiento.
151
+ */
152
+ allowSorting?: boolean;
153
+ children?: React.ReactNode;
154
+ /**
155
+ * Cuando la columna admite ordenamiento, muestra
156
+ * una flecha indicando el orden actual. Esta
157
+ * propiedad establece si la flecha apunta hacia
158
+ * arriba, abajo, o si la flecha es un guión.
159
+ */
160
+ currentSorting?: TResponsiveTableSortValue;
161
+ /** *
162
+ * Valor para decirle al server cuál columna se está ordenando
163
+ */
164
+ dataSortBy?: string;
165
+ hidden?: boolean;
166
+ /**
167
+ * Normalmente, todas las columnas se van a mostrar
168
+ * como renglones en el acordión, cuando este es
169
+ * expandido.
170
+ *
171
+ * Si este flag es pasado en true, la columna
172
+ * correspondiente no se va a mostrar en modo
173
+ * responsivo.
174
+ */
175
+ hideFromAccordion?: boolean;
176
+ /**
177
+ * Elemento id del dom.
178
+ */
179
+ id?: string;
180
+ /**
181
+ * Es el texto que se mostrará en el cabezal.
182
+ */
183
+ label: string;
184
+ maxWidth?: number | string;
185
+ minWidth?: number | string;
186
+ /**
187
+ * El nombre de la columna debe ser único, se utiliza
188
+ * para realizar la asosiación entre las columnas
189
+ * y los filtros, así como con los eventos de orden.
190
+ */
191
+ name: string;
192
+ /**
193
+ * Si se pasa required: true, se pone un asterisco
194
+ * rojo en el cabezal de la columna para señalar que
195
+ * la columna es requerida.
196
+ */
197
+ required?: boolean;
198
+ /**
199
+ * Algunas columnas podrán mostrarse mediante un botón
200
+ * "mostrar más", para ello deberán ser marcadas con
201
+ * esta prop en true.
202
+ */
203
+ showAsAdditional?: boolean;
204
+ /**
205
+ * Cuando no se pasa esta propiedad en ninguna columna,
206
+ * la aplicación encuentra la primera fila sin celdas
207
+ * vacías y la utiliza como título.
208
+ *
209
+ * En cambio, si al menos una columna tiene este flag
210
+ * en true, el título de cada fila del acordión estará
211
+ * compuesto por los valores de estas columnas.
212
+ */
213
+ showInAccordionTitle?: boolean;
214
+ /**
215
+ * Elemento title de html (El tooltip).
216
+ */
217
+ title?: string;
218
+ width?: number | string;
219
+ } & Partial<Pick<HTMLTableCellElement, 'ariaLabel' | 'className' | 'colSpan' | 'rowSpan'>>;
220
+ type TResponsiveTableStoreProps = {
221
+ /**
222
+ * Habla sobre el orden de las filas en función de
223
+ * las columnas. Esta propiedad habilita/deshabilita
224
+ * el ordenado de las columnas al hacer click en los
225
+ * cabezales.
226
+ *
227
+ * La tabla admite ordenamiento por defecto, a menos
228
+ * que esta prop venga en false. En caso de que se
229
+ * pase false no importa qué digan las columnas,
230
+ * el ordenamiento no estará habilitado.
231
+ */
232
+ allowSorting?: boolean;
233
+ columns: TResponsiveTableColumn[];
234
+ filters?: TApiaFilter[];
235
+ rows: TResponsiveTableRow<any>[];
236
+ /**
237
+ * Por defecto, la tabla permitirá seleccionar
238
+ * múltiples valores, a menos que esta prop venga
239
+ * en false.
240
+ */
241
+ isMultiple?: boolean;
242
+ label?: string;
243
+ /**
244
+ * Es normal que una tabla tenga paginación y que en cada página haya una
245
+ * cantidad distinta de estados. Si se quiere mantener consistencia en el
246
+ * tamaño de las páginas, es posible reservar un tamaño para una cantidad
247
+ * definida de estados con este parámetro.
248
+ */
249
+ reserveColumnsForStates?: number;
250
+ };
251
+ type TResponsiveTableRowsSelectionEvent = {
252
+ index: number;
253
+ row: TResponsiveTableRow;
254
+ }[];
255
+ type TResponsiveTableContextProps = TResponsiveTableStoreProps & Pick<ISelectableState, 'allowRowsKeyboardSorting' | 'allowEdition' | 'allowSelection'> & {
256
+ /**
257
+ * Cuando se actualiza el array de rows de la tabla
258
+ * desde las props del ResponsiveTableContext, se
259
+ * reinicia el estado de selección de acuerdo a cómo
260
+ * viene definido en el prop. **Si esta prop se pasa
261
+ * en true**, este comportamiento es deshabilitado.
262
+ */
263
+ avoidReparseSelectionOnRowChange?: boolean;
264
+ children?: React.ReactNode;
265
+ className?: string;
266
+ /**
267
+ * Permite redefinir el comportamiento de los breakpoints pasando un índice
268
+ * personalizado. Cuando es pasado, deja de prestar atención al breakpoint
269
+ * de la pantalla y comienza a prestar atención a este índice.
270
+ */
271
+ currentBreakPoint?: number;
272
+ customLabels?: typeof defaultLabels;
273
+ /**
274
+ * Se puede utilizar este booleano para que la tabla
275
+ * deshabilite las opciones de filtrado y ordenado mientras
276
+ * se está ejecutando una acción ajax.
277
+ */
278
+ isLoading?: boolean;
279
+ /**
280
+ * La tabla debe tener un nombre único que será usado para
281
+ * acceder a las propiedades de la misma en el store. En caso
282
+ * de que no se pase ninguno, la tabla lo generará
283
+ * automaticamente.
284
+ */
285
+ name?: string;
286
+ onFilterChange?: (ev: TApiaFilter) => void | Promise<boolean>;
287
+ onFilterBlur?: (ev: TApiaFilter) => unknown;
288
+ onFilterPressEnter?: (ev: TApiaFilter) => unknown;
289
+ onChangeSelection?: (ev: TResponsiveTableRowsSelectionEvent) => unknown;
290
+ /**
291
+ * Este evento será llamado cada vez que el usuario esté
292
+ * haciendo foco en la tabla, tenga una selección de
293
+ * filas no vacía y presione la tecla Enter.
294
+ */
295
+ onSelectRows?: (ev: TResponsiveTableRowsSelectionEvent, focusedRowIndex: number) => unknown;
296
+ /**
297
+ * Es llamado cada vez que el usuario hace click en el botón
298
+ * del cabezal de la columna. **Importante:** la tabla no
299
+ * realizará ninguna acción de ordenamiento, sino solamente
300
+ * avisar de que el usuario desea que las filas sean ordenadas
301
+ * por alguna columna en particular.
302
+ */
303
+ onSortChange?: (ev: TResponsiveTableSortChangeEvent) => unknown;
304
+ variant?: string;
305
+ };
306
+ /**
307
+ * Los callbacks del responsiveTable estarán
308
+ * disponibles a través de un contexto, de
309
+ * forma que cualquier elemento activo que
310
+ * desee informar de un evento en particular
311
+ * pueda hacerlo en forma sencilla.
312
+ */
313
+ type TResponsiveTableContext = TModify<Pick<TResponsiveTableContextProps, 'currentBreakPoint' | 'name' | 'onChangeSelection' | 'onFilterBlur' | 'onFilterChange' | 'onFilterPressEnter' | 'onSelectRows' | 'onSortChange' | 'label'>, {
314
+ labels: typeof defaultLabels;
315
+ name: string;
316
+ }>;
317
+ declare const defaultLabels: {
318
+ noRegisters: string;
319
+ };
320
+
321
+ type TResponsiveTableIndexColumns = {
322
+ index: number;
323
+ column: TResponsiveTableColumn;
324
+ }[];
325
+ type TResponsiveTableState = Omit<TResponsiveTableStoreProps, 'columns' | 'rows' | 'filters'> & ISelectableState<TResponsiveTableStoreProps['columns'][0], NonNullable<TResponsiveTableStoreProps['filters']>[0], TResponsiveTableStoreProps['rows'][0]> & {
326
+ accordionIndexColumns: TResponsiveTableIndexColumns;
327
+ isLoading: boolean;
328
+ };
329
+ type TResponsiveTableSlice = Record<string, TResponsiveTableState>;
330
+ type TResponsiveTableAction<P = Record<string, unknown>, T extends string = string, M = never, E = never> = PayloadAction<P & {
331
+ tableName: string;
332
+ }, T, M, E>;
333
+
334
+ /**
335
+ * Representa la intención de establecer foco en
336
+ * un elemento de la grilla y alterar el estado
337
+ * de la misma.
338
+ */
339
+ interface INewFocus {
340
+ altKey?: boolean;
341
+ ctrlKey?: boolean;
342
+ isFocused?: boolean;
343
+ newFocusedRow?: number;
344
+ newFocusedColumn?: number;
345
+ shouldSelectNewFocused?: boolean;
346
+ shiftKey?: boolean;
347
+ }
348
+ /**
349
+ * Contiene las partes importantes para el handler
350
+ * de un evento de teclado.
351
+ */
352
+ type THandleKey = {
353
+ ev: React.KeyboardEvent;
354
+ };
355
+ /**
356
+ * Son los elementos mínimos que toda columna debe
357
+ * tener para ser parte de esta grilla.
358
+ */
359
+ interface IBasicColumn {
360
+ currentSorting?: TResponsiveTableSortValue;
361
+ name: string;
362
+ }
363
+ /**
364
+ * Son los elementos mínimos que todo filtro debe
365
+ * tener para ser parte de esta grilla.
366
+ */
367
+ interface IBasicFilter {
368
+ /**
369
+ * LEGACY: El nombre de la columna a la que
370
+ * pertenece este filtro. Puede no tener columna
371
+ * y entonces será tratado como filtro adicional.
372
+ *
373
+ * Me gustaría nombrarlo columnName pero se
374
+ * estableció así desde el principio del desarrollo
375
+ * y está impregnado en todo el desarrollo, haciendo
376
+ * imposible cambiar su nombre con sencillez.
377
+ */
378
+ column?: string;
379
+ showAsAdditional?: boolean;
380
+ }
381
+ type TBasicRow = {
382
+ /**
383
+ * Si esta propiedad es pasada en true, esta fila
384
+ * no podrá ser seleccionada.
385
+ */
386
+ forbidSelection?: boolean;
387
+ /**
388
+ * El id es obligatorio para los rows, ya que de
389
+ * esta forma se logra mejorar el performance.
390
+ */
391
+ id: string;
392
+ /**
393
+ * Si esta propiedad es pasada como true, esta fila
394
+ * será bloqueada.
395
+ */
396
+ isLocked?: boolean;
397
+ };
398
+ /**
399
+ * Esta interfaz representa el estado de selección
400
+ * en una grilla. Los tipos ColumnType y RowType
401
+ * son opcionales y solamente se ofrecen como una
402
+ * utilidad para la implementación.
403
+ */
404
+ interface ISelectableState<ColumnType extends IBasicColumn = IBasicColumn, FilterType extends IBasicFilter = IBasicFilter, RowType extends TBasicRow | string = TBasicRow | string> {
405
+ /**
406
+ * IMPORTANTE: Por defecto la grilla no permitirá edición,
407
+ * para permitirlo, se debe especificar allowEdition: true.
408
+ */
409
+ allowEdition?: boolean;
410
+ /**
411
+ * Si esta propiedad se pasa en true, es posible
412
+ * reordenar las filas de la tabla. Para ello es
413
+ * necesario estar en foco en la tabla y presionar
414
+ * ctrl+m para mover una fila de lugar. Se presiona
415
+ * Enter o Escape para salir del modo orden.
416
+ */
417
+ allowRowsKeyboardSorting?: boolean;
418
+ /**
419
+ * Por defecto, la grilla permitirá la selección de filas,
420
+ * para evitar este comportamiento se debe pasar
421
+ * allowSelection: false.
422
+ */
423
+ allowSelection?: boolean;
424
+ /**
425
+ * Es importante conocer las columnas para no hacer foco
426
+ * en una columna que no exista.
427
+ */
428
+ columns: ColumnType[];
429
+ draggingRow?: number;
430
+ /**
431
+ * Es importante conocer cuáles filas están expandidas de
432
+ * modo que al filtrar las filas no seleccionables, las
433
+ * expandidas no se van a tomar en cuenta.
434
+ */
435
+ expandedRows: number[];
436
+ /**
437
+ * La grilla debe conocer los filtros que se aplican a ella
438
+ * para saber si existe fila de filtros o no.
439
+ */
440
+ filters: FilterType[];
441
+ focusedRow: number;
442
+ focusedColumn: number;
443
+ hasNonAdditionalFilters: boolean;
444
+ /**
445
+ * Hay grillas que admiten edición, con este booleano
446
+ * es posible evitar que el keyHandler altere el
447
+ * estado de la selección cuando la grilla está en ese
448
+ * modo.
449
+ */
450
+ isEditionMode?: boolean;
451
+ /**
452
+ * Para efectuar las acciones de foco, es necesario saber
453
+ * si la grilla tiene el foco activo, de modo de evitar
454
+ * que el foco se dispare cuando se está trabajando con
455
+ * otros controles.
456
+ */
457
+ isFocused: boolean;
458
+ /**
459
+ * Indica si se pueden seleccionar muchas filas o una
460
+ * sola.
461
+ */
462
+ isMultiple?: boolean;
463
+ /**
464
+ * Es importante conocer las filas para no hacer foco
465
+ * en una fila que no exista.
466
+ */
467
+ nonAdditionalColumnsCount: number;
468
+ rows: RowType[];
469
+ /**
470
+ * Representa cuáles filas fueron seleccionadas por el
471
+ * usuario. El array resultante es el conjunto de índices
472
+ * de filas seleccionadas. Este array es actualizado
473
+ * automáticamente por el keyHandler.
474
+ */
475
+ selectedRows: number[];
476
+ statesColumns: number;
477
+ }
478
+
479
+ declare const ResponsiveTable: React.MemoExoticComponent<React.ForwardRefExoticComponent<BoxProps & React.RefAttributes<HTMLDivElement>>>;
480
+
481
+ declare const ResponsiveTableContext: React.MemoExoticComponent<({ allowEdition, allowRowsKeyboardSorting, allowSelection, allowSorting, avoidReparseSelectionOnRowChange, children, className, currentBreakPoint, customLabels, columns, filters, rows, label, isMultiple, name, onChangeSelection, onFilterBlur, onFilterChange, onFilterPressEnter, onSelectRows, onSortChange, reserveColumnsForStates, variant, }: TResponsiveTableContextProps) => theme_ui_jsx_runtime.JSX.Element>;
482
+
483
+ declare const responsiveTableStore: redux.Store<redux.CombinedState<{
484
+ responsiveTableSlice: TResponsiveTableSlice;
485
+ }>, redux.AnyAction>;
486
+ declare const useResponsiveTable: <TSelected>(selector: (state: {
487
+ responsiveTableSlice: TResponsiveTableSlice;
488
+ }) => TSelected, equalityFn?: react_redux.EqualityFn<TSelected> | undefined) => TSelected;
489
+ declare const responsiveTableActions: _reduxjs_toolkit.CaseReducerActions<{
490
+ handleKey(state: immer_dist_internal.WritableDraft<Record<string, ISelectableState<IBasicColumn, IBasicFilter, string | TBasicRow>>>, { payload }: {
491
+ payload: THandleKey & {
492
+ id: string;
493
+ };
494
+ type: string;
495
+ }): void;
496
+ selectionStateUpdate(state: immer_dist_internal.WritableDraft<Record<string, ISelectableState<IBasicColumn, IBasicFilter, string | TBasicRow>>>, { payload: { id, ...payload } }: {
497
+ payload: Partial<ISelectableState<IBasicColumn, IBasicFilter, string | TBasicRow>> & {
498
+ id: string;
499
+ };
500
+ type: string;
501
+ }): void;
502
+ setNewFocused(state: immer_dist_internal.WritableDraft<Record<string, ISelectableState<IBasicColumn, IBasicFilter, string | TBasicRow>>>, { payload: { id, ...payload } }: {
503
+ payload: INewFocus & {
504
+ id: string;
505
+ };
506
+ type: string;
507
+ }): void;
508
+ updateByClick(state: immer_dist_internal.WritableDraft<Record<string, ISelectableState<IBasicColumn, IBasicFilter, string | TBasicRow>>>, { payload: { id, colIndex, rowIndex, ariaColIndex, ariaRowIndex, isFocused, ...payload }, }: {
509
+ payload: (_apia_util.TRequireOnlyOne<{
510
+ ariaRowIndex: number;
511
+ rowIndex: number;
512
+ }, "ariaRowIndex" | "rowIndex"> & _apia_util.TRequireOnlyOne<{
513
+ ariaColIndex?: number | undefined;
514
+ colIndex: number;
515
+ }, "ariaColIndex" | "colIndex"> & Pick<INewFocus, "isFocused" | "altKey" | "ctrlKey" | "shiftKey">) & {
516
+ id: string;
517
+ };
518
+ type: string;
519
+ }): void;
520
+ update(state: immer_dist_internal.WritableDraft<TResponsiveTableSlice>, { payload: { tableName, ...rest }, }: TResponsiveTableAction<Partial<TResponsiveTableState> & {
521
+ isFocused?: boolean;
522
+ }>): void;
523
+ addRows(state: immer_dist_internal.WritableDraft<TResponsiveTableSlice>, { payload }: TResponsiveTableAction<{
524
+ newRows: TResponsiveTableRow[];
525
+ }>): void;
526
+ deleteRows(state: immer_dist_internal.WritableDraft<TResponsiveTableSlice>, { payload }: TResponsiveTableAction<{
527
+ rowIndices: number[];
528
+ }>): void;
529
+ destroy(state: immer_dist_internal.WritableDraft<TResponsiveTableSlice>, { payload: { tableName } }: TResponsiveTableAction): void;
530
+ swapFocusedRow(state: immer_dist_internal.WritableDraft<TResponsiveTableSlice>, { payload: { newIndex, tableName }, }: {
531
+ payload: {
532
+ newIndex: number;
533
+ } & {
534
+ tableName: string;
535
+ };
536
+ type: string;
537
+ }): void;
538
+ }, "responsiveTableSlice">;
539
+
540
+ type TDocNameCellRendererProps$1 = {
541
+ docName: string;
542
+ docUrl: string;
543
+ };
544
+ declare const DocNameCellRenderer: TResponsiveTableCellRenderer<TDocNameCellRendererProps$1>;
545
+
546
+ type TDocNameCellRendererProps = {
547
+ docName: string;
548
+ docUrl: string;
549
+ };
550
+ type TDocNameCellRenderer = TAccordionCellRendererProps<TDocNameCellRendererProps>;
551
+ declare const AccordionDocNameCellRenderer: TAccordionCellRenderer<TDocNameCellRendererProps>;
552
+
553
+ interface IAccordionElement {
554
+ row: TResponsiveTableRow;
555
+ rowIndex: number;
556
+ }
557
+ declare const AccordionElement: ({ row, rowIndex }: IAccordionElement) => theme_ui_jsx_runtime.JSX.Element | null;
558
+
559
+ declare const AccordionHTMLCellRenderer: TAccordionCellRenderer<{
560
+ html: string;
561
+ }>;
562
+
563
+ declare const AccordionRenderer: React.MemoExoticComponent<() => theme_ui_jsx_runtime.JSX.Element>;
564
+
565
+ declare const AdditionalColumnDefaultRenderer: React.MemoExoticComponent<({ column, cell, }: TResponsiveTableCellRendererProps) => theme_ui_jsx_runtime.JSX.Element>;
566
+
567
+ declare const DefaultCellRenderer: React.ForwardRefExoticComponent<{
568
+ cell: TResponsiveTableCell<Record<string, unknown>>;
569
+ column: TResponsiveTableColumn;
570
+ row: TResponsiveTableRow<Record<string, unknown>>;
571
+ } & React.AllHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
572
+
573
+ declare const DefaultRowRenderer: TResponsiveTableRowRenderer<Record<string, unknown>>;
574
+
575
+ declare const HTMLCellRenderer: TResponsiveTableCellRenderer<{
576
+ html: string;
577
+ }>;
578
+
579
+ declare const IsLoadingRenderer: () => theme_ui_jsx_runtime.JSX.Element;
580
+
581
+ declare function makeAccordionAsyncRenderer(additionalInfoGetter: (row: TResponsiveTableRow) => Promise<{
582
+ label?: string;
583
+ name: string;
584
+ }[]>): TResponsiveTableCellRenderer<Record<string, unknown>>;
585
+
586
+ declare function makeAsyncRenderer(additionalInfoGetter: (row: TResponsiveTableRow) => Promise<{
587
+ label?: string;
588
+ name: string;
589
+ newline?: boolean;
590
+ }[]>): TResponsiveTableCellRenderer<Record<string, unknown>>;
591
+
592
+ declare const NoRegistersRenderer: () => theme_ui_jsx_runtime.JSX.Element;
593
+
594
+ declare const PriorityAccordionRenderer: TAccordionCellRenderer<Record<string, unknown>>;
595
+
596
+ declare function getPriorityHandler(priority: string | undefined): string | undefined;
597
+ declare const PriorityRenderer: TResponsiveTableCellRenderer<{
598
+ src: string;
599
+ }>;
600
+
601
+ declare const RowStatesRenderer: React.MemoExoticComponent<({ state, }: {
602
+ state: TResponsiveTableRowState;
603
+ }) => theme_ui_jsx_runtime.JSX.Element>;
604
+
605
+ declare const StatusAccordionRenderer: TAccordionCellRenderer<Record<string, unknown>>;
606
+
607
+ declare function getStatusRendererClassName(cellValue: string, columnName: string): string;
608
+ declare const StatusRenderer: TResponsiveTableCellRenderer<{
609
+ src: string;
610
+ }>;
611
+
612
+ declare const TableRenderer: React.MemoExoticComponent<() => theme_ui_jsx_runtime.JSX.Element>;
613
+
614
+ export { AccordionCell, AccordionDocNameCellRenderer, AccordionElement, AccordionHTMLCellRenderer, AccordionRenderer, AdditionalColumnDefaultRenderer, DefaultCellRenderer, DefaultRowRenderer, DocNameCellRenderer, HTMLCellRenderer, IAccordionElement, IsLoadingRenderer, NoRegistersRenderer, PriorityAccordionRenderer, PriorityRenderer, ResponsiveTable, ResponsiveTableContext, RowStatesRenderer, StatusAccordionRenderer, StatusRenderer, TAccordionCellRenderer, TAccordionCellRendererProps, TColoredElement, TDocNameCellRenderer, TDocNameCellRendererProps, TResponsiveTableCell, TResponsiveTableCellRenderer, TResponsiveTableCellRendererProps, TResponsiveTableColumn, TResponsiveTableContext, TResponsiveTableContextProps, TResponsiveTableRow, TResponsiveTableRowRenderer, TResponsiveTableRowRendererProps, TResponsiveTableRowState, TResponsiveTableRowsSelectionEvent, TResponsiveTableSortChangeEvent, TResponsiveTableSortValue, TResponsiveTableStoreProps, TResponsiveTableWithRendererElement, TableRenderer, defaultLabels, getPriorityHandler, getStatusRendererClassName, makeAccordionAsyncRenderer, makeAsyncRenderer, responsiveTableActions, responsiveTableStore, useResponsiveTable };
615
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}