@apia/table 0.3.3 → 0.3.4

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 CHANGED
@@ -1,21 +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
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
21
  SOFTWARE.
package/README.md CHANGED
@@ -1,28 +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
-
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
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
+ }
package/dist/index.d.ts CHANGED
@@ -115,6 +115,10 @@ type TResponsiveTableRowRendererProps<RendererPropsType extends Partial<Record<k
115
115
  } & React__default.AllHTMLAttributes<HTMLTableRowElement>;
116
116
  type TResponsiveTableRowRenderer<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = React__default.FunctionComponent<TResponsiveTableRowRendererProps<RendererPropsType>>;
117
117
  type TResponsiveTableRow<RendererPropsType extends Partial<Record<keyof RendererPropsType, unknown>> = Record<string, unknown>> = TBasicRow & TColoredElement & {
118
+ accordionButtonProps?: {
119
+ rightButtons?: React__default.ReactNode;
120
+ onUserPressEnter?: (ev: React__default.KeyboardEvent) => unknown;
121
+ };
118
122
  cells: TResponsiveTableCell[];
119
123
  /**
120
124
  * Si se pasa en true, la fila se mostrará como un separador
@@ -485,6 +489,7 @@ interface ISelectableState<ColumnType extends IBasicColumn = IBasicColumn, Filte
485
489
 
486
490
  declare const ResponsiveTable: React__default.MemoExoticComponent<React__default.ForwardRefExoticComponent<BoxProps & React__default.RefAttributes<HTMLDivElement>>>;
487
491
 
492
+ declare function useResponsiveTableContext(): TResponsiveTableContext;
488
493
  declare const ResponsiveTableContext: React__default.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) => React__default.JSX.Element>;
489
494
 
490
495
  declare const responsiveTableStore: _reduxjs_toolkit_dist_configureStore.ToolkitStore<{
@@ -620,4 +625,4 @@ declare const StatusRenderer: TResponsiveTableCellRenderer<{
620
625
 
621
626
  declare const TableRenderer: React__default.MemoExoticComponent<() => React__default.JSX.Element>;
622
627
 
623
- 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 };
628
+ 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, useResponsiveTableContext };
package/dist/index.js CHANGED
@@ -2454,17 +2454,17 @@ const NoMemoTableRenderer = () => {
2454
2454
  const TableRenderer = React.memo(NoMemoTableRenderer);
2455
2455
 
2456
2456
  const NoMemoAccordionCell = ({ cell, column }) => {
2457
- var _a;
2457
+ var _a, _b;
2458
2458
  return /* @__PURE__ */ jsxs(
2459
2459
  Box,
2460
2460
  {
2461
- className: "responsiveTable__accordionElement__column",
2461
+ className: `responsiveTable__accordionElement__column ${(_a = cell.className) != null ? _a : ""}`,
2462
2462
  children: [
2463
2463
  /* @__PURE__ */ jsxs(Box, { as: "strong", children: [
2464
- (_a = column.label) != null ? _a : column.name,
2464
+ (_b = column.label) != null ? _b : column.name,
2465
2465
  ": "
2466
2466
  ] }),
2467
- /* @__PURE__ */ jsx(Box, { as: "span", children: cell == null ? void 0 : cell.children })
2467
+ /* @__PURE__ */ jsx(Box, { as: "span", sx: { color: cell.color, background: cell.background }, children: cell == null ? void 0 : cell.children })
2468
2468
  ]
2469
2469
  },
2470
2470
  column.name
@@ -2473,6 +2473,7 @@ const NoMemoAccordionCell = ({ cell, column }) => {
2473
2473
  const AccordionCell = NoMemoAccordionCell;
2474
2474
 
2475
2475
  const NoMemoAccordionElement = ({ row, rowIndex }) => {
2476
+ var _a, _b;
2476
2477
  const { name } = useResponsiveTableContext();
2477
2478
  const indexColumns = useResponsiveTable((global) => {
2478
2479
  const tableState = global.responsiveTableSlice[name];
@@ -2483,7 +2484,7 @@ const NoMemoAccordionElement = ({ row, rowIndex }) => {
2483
2484
  return tableState == null ? void 0 : tableState.columns;
2484
2485
  }, shallowEqual);
2485
2486
  const title = React.useMemo(() => {
2486
- var _a;
2487
+ var _a2;
2487
2488
  if (row.title)
2488
2489
  return row.title;
2489
2490
  if (Array.isArray(indexColumns))
@@ -2493,7 +2494,7 @@ const NoMemoAccordionElement = ({ row, rowIndex }) => {
2493
2494
  row.cells[current.index].title || row.cells[current.index].children
2494
2495
  )
2495
2496
  ).join(" | ");
2496
- return (_a = row.cells[0].title) != null ? _a : row.cells[0].children;
2497
+ return (_a2 = row.cells[0].title) != null ? _a2 : row.cells[0].children;
2497
2498
  }, [indexColumns, row.cells, row.title]);
2498
2499
  const isSelected = useResponsiveTable(
2499
2500
  (global) => global.responsiveTableSlice[name].allowSelection !== false ? global.responsiveTableSlice[name].selectedRows.includes(rowIndex) : void 0
@@ -2502,34 +2503,56 @@ const NoMemoAccordionElement = ({ row, rowIndex }) => {
2502
2503
  (global) => global.responsiveTableSlice[name].focusedRow === rowIndex
2503
2504
  );
2504
2505
  const buttonProps = useMemo(
2505
- () => ({
2506
- title,
2507
- ariaLabel: title,
2508
- label: title,
2509
- checked: isSelected,
2510
- onChange: (isChecked) => {
2511
- responsiveTableStore.dispatch(
2512
- responsiveTableActions.update({
2513
- tableName: name,
2514
- selectedRows: isChecked ? [
2515
- ...responsiveTableStore.getState().responsiveTableSlice[name].selectedRows,
2516
- rowIndex
2517
- ] : responsiveTableStore.getState().responsiveTableSlice[name].selectedRows.filter(
2518
- (current) => current !== rowIndex
2519
- )
2520
- })
2521
- );
2522
- },
2523
- tabIndex: isFocused ? 0 : -1
2524
- }),
2525
- [isFocused, isSelected, name, rowIndex, title]
2506
+ () => {
2507
+ var _a2, _b2;
2508
+ return {
2509
+ title,
2510
+ ariaLabel: title,
2511
+ label: title,
2512
+ checked: isSelected,
2513
+ onChange: (isChecked) => {
2514
+ const isMultiple = responsiveTableStore.getState().responsiveTableSlice[name].isMultiple;
2515
+ responsiveTableStore.dispatch(
2516
+ responsiveTableActions.update({
2517
+ tableName: name,
2518
+ selectedRows: isMultiple ? isChecked ? [
2519
+ ...responsiveTableStore.getState().responsiveTableSlice[name].selectedRows,
2520
+ rowIndex
2521
+ ] : responsiveTableStore.getState().responsiveTableSlice[name].selectedRows.filter(
2522
+ (current) => current !== rowIndex
2523
+ ) : [rowIndex]
2524
+ })
2525
+ );
2526
+ },
2527
+ tabIndex: isFocused ? 0 : -1,
2528
+ rightButtons: (_a2 = row.accordionButtonProps) == null ? void 0 : _a2.rightButtons,
2529
+ onUserPressEnter: (_b2 = row.accordionButtonProps) == null ? void 0 : _b2.onUserPressEnter,
2530
+ domButtonProps: {
2531
+ buttonSx: {
2532
+ "&.accordion__item__button .accordion__item__button__label": {
2533
+ color: row.color
2534
+ }
2535
+ }
2536
+ }
2537
+ };
2538
+ },
2539
+ [
2540
+ isFocused,
2541
+ isSelected,
2542
+ name,
2543
+ (_a = row.accordionButtonProps) == null ? void 0 : _a.onUserPressEnter,
2544
+ (_b = row.accordionButtonProps) == null ? void 0 : _b.rightButtons,
2545
+ row.color,
2546
+ rowIndex,
2547
+ title
2548
+ ]
2526
2549
  );
2527
2550
  if (!Array.isArray(indexColumns) || !columns)
2528
2551
  return null;
2529
2552
  return /* @__PURE__ */ jsxs(AccordionItem, { id: row.id, buttonProps, children: [
2530
2553
  columns.map((currentColumn, columnIndex) => {
2531
- var _a, _b;
2532
- const Renderer = (_b = (_a = row.cells[columnIndex].AccordionRenderer) != null ? _a : currentColumn.AccordionRenderer) != null ? _b : AccordionCell;
2554
+ var _a2, _b2;
2555
+ const Renderer = (_b2 = (_a2 = row.cells[columnIndex].AccordionRenderer) != null ? _a2 : currentColumn.AccordionRenderer) != null ? _b2 : AccordionCell;
2533
2556
  return currentColumn.hideFromAccordion || currentColumn.showAsAdditional ? null : /* @__PURE__ */ jsx(
2534
2557
  Renderer,
2535
2558
  {
@@ -2543,8 +2566,8 @@ const NoMemoAccordionElement = ({ row, rowIndex }) => {
2543
2566
  );
2544
2567
  }),
2545
2568
  columns.filter((current) => !!current.showAsAdditional).map((currentColumn, columnIndex) => {
2546
- var _a, _b;
2547
- const Renderer = (_b = (_a = row.cells[columnIndex].AccordionRenderer) != null ? _a : currentColumn.AccordionRenderer) != null ? _b : AccordionCell;
2569
+ var _a2, _b2;
2570
+ const Renderer = (_b2 = (_a2 = row.cells[columnIndex].AccordionRenderer) != null ? _a2 : currentColumn.AccordionRenderer) != null ? _b2 : AccordionCell;
2548
2571
  return currentColumn.hideFromAccordion ? null : /* @__PURE__ */ jsx(
2549
2572
  Renderer,
2550
2573
  {
@@ -3237,4 +3260,4 @@ const NoMemoStatusAccordionRenderer = React.forwardRef(({ cell, column }, curren
3237
3260
  NoMemoStatusAccordionRenderer.displayName = "StatusAccordionRenderer";
3238
3261
  const StatusAccordionRenderer = NoMemoStatusAccordionRenderer;
3239
3262
 
3240
- export { AccordionCell, AccordionDocNameCellRenderer, AccordionElement, AccordionHTMLCellRenderer, AccordionRenderer, AdditionalColumnDefaultRenderer, DefaultCellRenderer, DefaultRowRenderer, DocNameCellRenderer, HTMLCellRenderer, IsLoadingRenderer, NoRegistersRenderer, PriorityAccordionRenderer, PriorityRenderer, ResponsiveTable, ResponsiveTableContext, RowStatesRenderer, StatusAccordionRenderer, StatusRenderer, TableRenderer, defaultLabels, getPriorityHandler, getStatusRendererClassName, makeAccordionAsyncRenderer, makeAsyncRenderer, responsiveTableActions, responsiveTableStore, useResponsiveTable };
3263
+ export { AccordionCell, AccordionDocNameCellRenderer, AccordionElement, AccordionHTMLCellRenderer, AccordionRenderer, AdditionalColumnDefaultRenderer, DefaultCellRenderer, DefaultRowRenderer, DocNameCellRenderer, HTMLCellRenderer, IsLoadingRenderer, NoRegistersRenderer, PriorityAccordionRenderer, PriorityRenderer, ResponsiveTable, ResponsiveTableContext, RowStatesRenderer, StatusAccordionRenderer, StatusRenderer, TableRenderer, defaultLabels, getPriorityHandler, getStatusRendererClassName, makeAccordionAsyncRenderer, makeAsyncRenderer, responsiveTableActions, responsiveTableStore, useResponsiveTable, useResponsiveTableContext };