@m4l/components 9.3.34 → 9.3.35-JT27112025.beta.1
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/@types/export.d.ts +3 -0
- package/@types/types.d.ts +11 -0
- package/components/DataGrid/Datagrid.styles.js +1 -0
- package/components/DataGrid/contexts/DataGridContext/index.js +39 -268
- package/components/DataGrid/contexts/DataGridContext/types.d.ts +3 -20
- package/components/DataGrid/formatters/ColumnImageFormatter/ImageFormatterCell.d.ts +13 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/ImageFormatterCell.js +33 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/constants.d.ts +6 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/constants.js +6 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/formatter.d.ts +8 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/formatter.js +25 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/index.d.ts +3 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/index.js +1 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/tests/ColumnImageFormatter.test.d.ts +1 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/types.d.ts +44 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/types.js +1 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/useColumnImage.d.ts +9 -0
- package/components/DataGrid/formatters/ColumnImageFormatter/useColumnImage.js +22 -0
- package/components/DataGrid/formatters/index.d.ts +1 -0
- package/components/DataGrid/helpers/getAllViewModes/getAllViewModes.d.ts +19 -0
- package/components/DataGrid/helpers/getAllViewModes/getAllViewModes.js +6 -0
- package/components/DataGrid/helpers/getAllViewModes/getAllViewModes.test.d.ts +1 -0
- package/components/DataGrid/helpers/getAllViewModes/index.d.ts +1 -0
- package/components/DataGrid/helpers/getAllViewModes/index.js +1 -0
- package/components/DataGrid/helpers/getColumnsWidth/getColumnsWidth.d.ts +47 -0
- package/components/DataGrid/helpers/getColumnsWidth/getColumnsWidth.js +32 -0
- package/components/DataGrid/helpers/getColumnsWidth/getColumnsWidth.test.d.ts +1 -0
- package/components/DataGrid/helpers/getColumnsWidth/index.d.ts +1 -0
- package/components/DataGrid/helpers/getColumnsWidth/index.js +1 -0
- package/components/DataGrid/helpers/getIndexRowHeightVariant/getIndexRowHeightVariant.d.ts +24 -0
- package/components/DataGrid/helpers/getIndexRowHeightVariant/getIndexRowHeightVariant.js +12 -0
- package/components/DataGrid/helpers/getIndexRowHeightVariant/getIndexRowHeightVariant.test.d.ts +1 -0
- package/components/DataGrid/helpers/getIndexRowHeightVariant/index.d.ts +1 -0
- package/components/DataGrid/helpers/getIndexRowHeightVariant/index.js +1 -0
- package/components/DataGrid/helpers/getInitialColumnsConfig/getInitialColumnsConfig.d.ts +48 -0
- package/components/DataGrid/helpers/getInitialColumnsConfig/getInitialColumnsConfig.js +35 -0
- package/components/DataGrid/helpers/getInitialColumnsConfig/getInitialColumnsConfig.test.d.ts +1 -0
- package/components/DataGrid/helpers/getInitialColumnsConfig/index.d.ts +1 -0
- package/components/DataGrid/helpers/getInitialColumnsConfig/index.js +1 -0
- package/components/DataGrid/helpers/getViewSpecificConfig/getViewSpecificConfig.d.ts +28 -0
- package/components/DataGrid/helpers/getViewSpecificConfig/getViewSpecificConfig.js +22 -0
- package/components/DataGrid/helpers/getViewSpecificConfig/getViewSpecificConfig.test.d.ts +1 -0
- package/components/DataGrid/helpers/getViewSpecificConfig/index.d.ts +1 -0
- package/components/DataGrid/helpers/getViewSpecificConfig/index.js +1 -0
- package/components/DataGrid/helpers/getViewSuffix/getViewSuffix.d.ts +24 -0
- package/components/DataGrid/helpers/getViewSuffix/getViewSuffix.js +9 -0
- package/components/DataGrid/helpers/getViewSuffix/getViewSuffix.test.d.ts +1 -0
- package/components/DataGrid/helpers/getViewSuffix/index.d.ts +1 -0
- package/components/DataGrid/helpers/getViewSuffix/index.js +1 -0
- package/components/DataGrid/helpers/index.d.ts +12 -0
- package/components/DataGrid/helpers/index.js +1 -0
- package/components/DataGrid/helpers/loadViewConfig/index.d.ts +1 -0
- package/components/DataGrid/helpers/loadViewConfig/index.js +1 -0
- package/components/DataGrid/helpers/loadViewConfig/loadViewConfig.d.ts +23 -0
- package/components/DataGrid/helpers/loadViewConfig/loadViewConfig.js +12 -0
- package/components/DataGrid/helpers/loadViewConfig/loadViewConfig.test.d.ts +1 -0
- package/components/DataGrid/helpers/saveColumnsWidth/index.d.ts +1 -0
- package/components/DataGrid/helpers/saveColumnsWidth/index.js +1 -0
- package/components/DataGrid/helpers/saveColumnsWidth/saveColumnsWidth.d.ts +52 -0
- package/components/DataGrid/helpers/saveColumnsWidth/saveColumnsWidth.js +18 -0
- package/components/DataGrid/helpers/saveColumnsWidth/saveColumnsWidth.test.d.ts +1 -0
- package/components/DataGrid/helpers/saveViewConfig/index.d.ts +1 -0
- package/components/DataGrid/helpers/saveViewConfig/index.js +1 -0
- package/components/DataGrid/helpers/saveViewConfig/saveViewConfig.d.ts +35 -0
- package/components/DataGrid/helpers/saveViewConfig/saveViewConfig.js +15 -0
- package/components/DataGrid/helpers/saveViewConfig/saveViewConfig.test.d.ts +1 -0
- package/components/DataGrid/helpers/saveViewMode/index.d.ts +1 -0
- package/components/DataGrid/helpers/saveViewMode/index.js +1 -0
- package/components/DataGrid/helpers/saveViewMode/saveViewMode.d.ts +33 -0
- package/components/DataGrid/helpers/saveViewMode/saveViewMode.js +13 -0
- package/components/DataGrid/helpers/saveViewMode/saveViewMode.test.d.ts +1 -0
- package/components/DataGrid/hooks/index.d.ts +6 -0
- package/components/DataGrid/hooks/index.js +1 -0
- package/components/DataGrid/hooks/useChangeColumnsConfig/index.d.ts +1 -0
- package/components/DataGrid/hooks/useChangeColumnsConfig/index.js +1 -0
- package/components/DataGrid/hooks/useChangeColumnsConfig/useChangeColumnsConfig.d.ts +9 -0
- package/components/DataGrid/hooks/useChangeColumnsConfig/useChangeColumnsConfig.js +27 -0
- package/components/DataGrid/hooks/useChangeColumnsConfig/useChangeColumnsConfig.test.d.ts +1 -0
- package/components/DataGrid/hooks/useChangeColumnsOrder/index.d.ts +1 -0
- package/components/DataGrid/hooks/useChangeColumnsOrder/index.js +1 -0
- package/components/DataGrid/hooks/useChangeColumnsOrder/useChangeColumnsOrder.d.ts +10 -0
- package/components/DataGrid/hooks/useChangeColumnsOrder/useChangeColumnsOrder.js +34 -0
- package/components/DataGrid/hooks/useChangeColumnsOrder/useChangeColumnsOrder.test.d.ts +1 -0
- package/components/DataGrid/hooks/useColumnsWidth/index.d.ts +1 -0
- package/components/DataGrid/hooks/useColumnsWidth/index.js +1 -0
- package/components/DataGrid/hooks/useColumnsWidth/useColumnsWidth.d.ts +11 -0
- package/components/DataGrid/hooks/useColumnsWidth/useColumnsWidth.js +29 -0
- package/components/DataGrid/hooks/useColumnsWidth/useColumnsWidth.test.d.ts +1 -0
- package/components/DataGrid/hooks/useRowHeight/index.d.ts +1 -0
- package/components/DataGrid/hooks/useRowHeight/index.js +1 -0
- package/components/DataGrid/hooks/useRowHeight/useRowHeight.d.ts +28 -0
- package/components/DataGrid/hooks/useRowHeight/useRowHeight.js +51 -0
- package/components/DataGrid/hooks/useRowHeight/useRowHeight.test.d.ts +1 -0
- package/components/DataGrid/hooks/useViewConfig/index.d.ts +1 -0
- package/components/DataGrid/hooks/useViewConfig/index.js +1 -0
- package/components/DataGrid/hooks/useViewConfig/useViewConfig.d.ts +9 -0
- package/components/DataGrid/hooks/useViewConfig/useViewConfig.js +30 -0
- package/components/DataGrid/hooks/useViewConfig/useViewConfig.test.d.ts +1 -0
- package/components/DataGrid/hooks/useViewMode/index.d.ts +1 -0
- package/components/DataGrid/hooks/useViewMode/index.js +1 -0
- package/components/DataGrid/hooks/useViewMode/useViewMode.d.ts +44 -0
- package/components/DataGrid/hooks/useViewMode/useViewMode.js +48 -0
- package/components/DataGrid/hooks/useViewMode/useViewMode.test.d.ts +1 -0
- package/components/DataGrid/index.d.ts +5 -4
- package/components/DataGrid/subcomponents/Cards/helpers/scrollToCardElement.js +2 -2
- package/components/DataGrid/subcomponents/Cards/index.js +16 -3
- package/components/DataGrid/subcomponents/Cards/subcomponents/CardRow/index.js +1 -0
- package/components/DataGrid/subcomponents/Table/index.js +10 -1
- package/components/DataGrid/tests/helpers/types.d.ts +10 -0
- package/components/DataGrid/types.helpers.d.ts +55 -0
- package/components/DataGrid/types.helpers.js +1 -0
- package/components/DataGrid/types.hooks.d.ts +79 -0
- package/components/formatters/ImageFormatter/ImageFormatter.d.ts +10 -0
- package/components/formatters/ImageFormatter/ImageFormatter.js +72 -0
- package/components/formatters/ImageFormatter/ImageFormatter.styles.d.ts +2 -0
- package/components/formatters/ImageFormatter/ImageFormatter.styles.js +42 -0
- package/components/formatters/ImageFormatter/constants.d.ts +5 -0
- package/components/formatters/ImageFormatter/constants.js +10 -0
- package/components/formatters/ImageFormatter/index.d.ts +2 -0
- package/components/formatters/ImageFormatter/index.js +1 -0
- package/components/formatters/ImageFormatter/slots/ImageFormatterEnum.d.ts +5 -0
- package/components/formatters/ImageFormatter/slots/ImageFormatterEnum.js +9 -0
- package/components/formatters/ImageFormatter/slots/ImageFormatterSlots.d.ts +9 -0
- package/components/formatters/ImageFormatter/slots/ImageFormatterSlots.js +23 -0
- package/components/formatters/ImageFormatter/tests/ImageFormatter.test.d.ts +1 -0
- package/components/formatters/ImageFormatter/types.d.ts +51 -0
- package/components/formatters/ImageFormatter/types.js +1 -0
- package/components/formatters/index.d.ts +1 -0
- package/hooks/useDataGridPersistence/constants.d.ts +1 -0
- package/hooks/useDataGridPersistence/constants.js +4 -2
- package/hooks/useDataGridPersistence/useDataGridPersistence.js +5 -2
- package/index.js +68 -62
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UseChangeColumnsConfigParams, UseChangeColumnsConfigReturn } from '../../types.hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Hook para manejar el cambio de configuración de columnas.
|
|
4
|
+
*
|
|
5
|
+
* Guarda la configuración en localStorage y actualiza el estado.
|
|
6
|
+
* @param params - Parámetros del hook
|
|
7
|
+
* @returns Función para cambiar la configuración de columnas
|
|
8
|
+
*/
|
|
9
|
+
export declare const useChangeColumnsConfig: ({ id, onChangeUserColumns, updateConfigColumns, }: UseChangeColumnsConfigParams) => UseChangeColumnsConfigReturn;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { s as saveViewConfig } from "../../helpers/saveViewConfig/saveViewConfig.js";
|
|
3
|
+
import { g as getViewSuffix } from "../../helpers/getViewSuffix/getViewSuffix.js";
|
|
4
|
+
const useChangeColumnsConfig = ({
|
|
5
|
+
id,
|
|
6
|
+
onChangeUserColumns,
|
|
7
|
+
updateConfigColumns
|
|
8
|
+
}) => {
|
|
9
|
+
const onChangeColumnsConfig = useCallback(
|
|
10
|
+
(viewModeParam, newConfig) => {
|
|
11
|
+
saveViewConfig(
|
|
12
|
+
id,
|
|
13
|
+
getViewSuffix(viewModeParam),
|
|
14
|
+
newConfig,
|
|
15
|
+
onChangeUserColumns
|
|
16
|
+
);
|
|
17
|
+
updateConfigColumns(viewModeParam, newConfig);
|
|
18
|
+
},
|
|
19
|
+
[id, onChangeUserColumns, updateConfigColumns]
|
|
20
|
+
);
|
|
21
|
+
return {
|
|
22
|
+
onChangeColumnsConfig
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
useChangeColumnsConfig as u
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useChangeColumnsOrder } from './useChangeColumnsOrder';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { UseChangeColumnsOrderParams, UseChangeColumnsOrderReturn } from '../../types.hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Hook para manejar el cambio de orden de columnas.
|
|
4
|
+
*
|
|
5
|
+
* Reordena las columnas y llama a onChangeColumnsConfig para persistir.
|
|
6
|
+
* @param getConfigColumns Función para obtener la configuración de columnas
|
|
7
|
+
* @param onChangeColumnsConfig Función para cambiar la configuración de columnas
|
|
8
|
+
* @returns Función para cambiar el orden de columnas
|
|
9
|
+
*/
|
|
10
|
+
export declare const useChangeColumnsOrder: ({ getConfigColumns, onChangeColumnsConfig, }: UseChangeColumnsOrderParams) => UseChangeColumnsOrderReturn;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
const useChangeColumnsOrder = ({
|
|
3
|
+
getConfigColumns,
|
|
4
|
+
onChangeColumnsConfig
|
|
5
|
+
}) => {
|
|
6
|
+
const onChangeColumnsOrder = useCallback(
|
|
7
|
+
(viewModeParam, sourceKey, targetKey) => {
|
|
8
|
+
if (sourceKey === targetKey) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const currentConfig = getConfigColumns(viewModeParam);
|
|
12
|
+
const sourceColumnIndex = currentConfig.findIndex(
|
|
13
|
+
(c) => c.key === sourceKey
|
|
14
|
+
);
|
|
15
|
+
const targetColumnIndex = currentConfig.findIndex(
|
|
16
|
+
(c) => c.key === targetKey
|
|
17
|
+
);
|
|
18
|
+
const reorderedConfig = [...currentConfig];
|
|
19
|
+
reorderedConfig.splice(
|
|
20
|
+
targetColumnIndex,
|
|
21
|
+
0,
|
|
22
|
+
reorderedConfig.splice(sourceColumnIndex, 1)[0]
|
|
23
|
+
);
|
|
24
|
+
onChangeColumnsConfig(viewModeParam, reorderedConfig);
|
|
25
|
+
},
|
|
26
|
+
[getConfigColumns, onChangeColumnsConfig]
|
|
27
|
+
);
|
|
28
|
+
return {
|
|
29
|
+
onChangeColumnsOrder
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
useChangeColumnsOrder as u
|
|
34
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useColumnsWidth } from './useColumnsWidth';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UseColumnsWidthParams, UseColumnsWidthReturn } from '../../types.hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Hook para manejar el estado del ancho de las columnas del DataGrid.
|
|
4
|
+
*
|
|
5
|
+
* Maneja:
|
|
6
|
+
* - Estado del ancho de cada columna
|
|
7
|
+
* - Guardado con debounce de 500ms al cambiar el ancho
|
|
8
|
+
* @param params - Parámetros del hook
|
|
9
|
+
* @returns Estado y función para cambiar el ancho de columnas
|
|
10
|
+
*/
|
|
11
|
+
export declare const useColumnsWidth: ({ id, onChangeUserColumns, }: UseColumnsWidthParams) => UseColumnsWidthReturn;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useState, useRef, useCallback } from "react";
|
|
2
|
+
import { s as saveColumnsWidth } from "../../helpers/saveColumnsWidth/saveColumnsWidth.js";
|
|
3
|
+
const useColumnsWidth = ({
|
|
4
|
+
id,
|
|
5
|
+
onChangeUserColumns
|
|
6
|
+
}) => {
|
|
7
|
+
const [columnsWidths, setColumnsWidths] = useState(/* @__PURE__ */ new Map());
|
|
8
|
+
const timerRef = useRef(null);
|
|
9
|
+
const onChangeColumnWidth = useCallback(
|
|
10
|
+
(columnKey, width) => {
|
|
11
|
+
columnsWidths.set(columnKey, Math.round(width));
|
|
12
|
+
if (timerRef.current) {
|
|
13
|
+
clearTimeout(timerRef.current);
|
|
14
|
+
}
|
|
15
|
+
timerRef.current = setTimeout(() => {
|
|
16
|
+
saveColumnsWidth(id, columnsWidths, onChangeUserColumns);
|
|
17
|
+
}, 500);
|
|
18
|
+
},
|
|
19
|
+
[id, columnsWidths, onChangeUserColumns]
|
|
20
|
+
);
|
|
21
|
+
return {
|
|
22
|
+
columnsWidths,
|
|
23
|
+
setColumnsWidths,
|
|
24
|
+
onChangeColumnWidth
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
useColumnsWidth as u
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useRowHeight } from './useRowHeight';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { UseRowHeightParams, UseRowHeightReturn } from '../../types.hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Hook para manejar el estado de la altura de las filas del DataGrid.
|
|
4
|
+
*
|
|
5
|
+
* Soporta dos modos:
|
|
6
|
+
* - **Modo fijo**: rowHeights y rowHeaderHeights son números fijos
|
|
7
|
+
* - **Modo variable**: rowHeights y rowHeaderHeights son arrays de 3 elementos [compact, standard, confortable]
|
|
8
|
+
* @param params - Parámetros del hook
|
|
9
|
+
* @returns Estado actual y función para cambiar el variant
|
|
10
|
+
* @throws Error si rowHeights y rowHeaderHeights no son del mismo tipo
|
|
11
|
+
* @throws Error si los arrays no tienen exactamente 3 elementos
|
|
12
|
+
* @throws Error si se intenta cambiar el variant en modo fijo
|
|
13
|
+
* @example
|
|
14
|
+
* // Modo variable (permite cambiar variant)
|
|
15
|
+
* const { currentRowHeightVariant, setRowHeightVariant } = useRowHeight({
|
|
16
|
+
* rowHeights: [32, 40, 48],
|
|
17
|
+
* rowHeaderHeights: [36, 44, 52],
|
|
18
|
+
* initialRowHeightVariant: 'standard',
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Modo fijo (altura constante)
|
|
22
|
+
* const { currentRowHeightVariant } = useRowHeight({
|
|
23
|
+
* rowHeights: 40,
|
|
24
|
+
* rowHeaderHeights: 44,
|
|
25
|
+
* initialRowHeightVariant: 'standard',
|
|
26
|
+
* });
|
|
27
|
+
*/
|
|
28
|
+
export declare const useRowHeight: ({ rowHeights, rowHeaderHeights, initialRowHeightVariant, }: UseRowHeightParams) => UseRowHeightReturn;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { useState, useCallback } from "react";
|
|
2
|
+
import { g as getIndexRowHeightVariant } from "../../helpers/getIndexRowHeightVariant/getIndexRowHeightVariant.js";
|
|
3
|
+
const useRowHeight = ({
|
|
4
|
+
rowHeights,
|
|
5
|
+
rowHeaderHeights,
|
|
6
|
+
initialRowHeightVariant
|
|
7
|
+
}) => {
|
|
8
|
+
const [currentRowHeightVariant, setCurrentRowHeightVariant] = useState(() => {
|
|
9
|
+
if (typeof rowHeights !== typeof rowHeaderHeights) {
|
|
10
|
+
throw new Error("Must be same type rowheights and rowHeaderTypes");
|
|
11
|
+
}
|
|
12
|
+
if (typeof rowHeights === "number" && typeof rowHeaderHeights === "number") {
|
|
13
|
+
return {
|
|
14
|
+
rowHVariant: "compact",
|
|
15
|
+
rowHeight: rowHeights,
|
|
16
|
+
rowHeaderHeight: rowHeaderHeights
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (typeof rowHeights !== "number" && rowHeights.length !== 3) {
|
|
20
|
+
throw new Error("Must be 3 heights");
|
|
21
|
+
}
|
|
22
|
+
if (typeof rowHeaderHeights !== "number" && rowHeaderHeights.length !== 3) {
|
|
23
|
+
throw new Error("Must be 3 HeaderHeights");
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
rowHVariant: initialRowHeightVariant,
|
|
27
|
+
rowHeight: typeof rowHeights !== "number" ? rowHeights[getIndexRowHeightVariant(initialRowHeightVariant)] : rowHeights,
|
|
28
|
+
rowHeaderHeight: typeof rowHeaderHeights !== "number" ? rowHeaderHeights[getIndexRowHeightVariant(initialRowHeightVariant)] : rowHeaderHeights
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
const setRowHeightVariant = useCallback(
|
|
32
|
+
(newVariant) => {
|
|
33
|
+
if (typeof rowHeights === "number" || typeof rowHeaderHeights === "number") {
|
|
34
|
+
throw new Error("Only use setCurrentRowHeight with vector rowHeights");
|
|
35
|
+
}
|
|
36
|
+
setCurrentRowHeightVariant({
|
|
37
|
+
rowHVariant: newVariant,
|
|
38
|
+
rowHeight: rowHeights[getIndexRowHeightVariant(newVariant)],
|
|
39
|
+
rowHeaderHeight: rowHeaderHeights[getIndexRowHeightVariant(newVariant)]
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
[rowHeights, rowHeaderHeights]
|
|
43
|
+
);
|
|
44
|
+
return {
|
|
45
|
+
currentRowHeightVariant,
|
|
46
|
+
setRowHeightVariant
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
useRowHeight as u
|
|
51
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useViewConfig } from './useViewConfig';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UseViewConfigReturn } from '../../types.hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Hook para manejar el estado de la configuración de columnas por vista.
|
|
4
|
+
*
|
|
5
|
+
* Maneja un estado genérico unificado para las configuraciones de TODAS las vistas
|
|
6
|
+
* (table, cards, etc).
|
|
7
|
+
* @returns Estado y funciones para manejar la configuración de vistas
|
|
8
|
+
*/
|
|
9
|
+
export declare const useViewConfig: () => UseViewConfigReturn;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useState, useCallback } from "react";
|
|
2
|
+
const useViewConfig = () => {
|
|
3
|
+
const [viewConfig, setViewConfig] = useState(() => ({
|
|
4
|
+
table: [],
|
|
5
|
+
cards: []
|
|
6
|
+
}));
|
|
7
|
+
const getConfigColumns = useCallback(
|
|
8
|
+
(viewModeParam) => {
|
|
9
|
+
return viewConfig[viewModeParam];
|
|
10
|
+
},
|
|
11
|
+
[viewConfig]
|
|
12
|
+
);
|
|
13
|
+
const updateConfigColumns = useCallback(
|
|
14
|
+
(viewModeParam, config) => {
|
|
15
|
+
setViewConfig((prev) => ({
|
|
16
|
+
...prev,
|
|
17
|
+
[viewModeParam]: config
|
|
18
|
+
}));
|
|
19
|
+
},
|
|
20
|
+
[]
|
|
21
|
+
);
|
|
22
|
+
return {
|
|
23
|
+
viewConfig,
|
|
24
|
+
getConfigColumns,
|
|
25
|
+
updateConfigColumns
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
useViewConfig as u
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useViewMode } from './useViewMode';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { UseViewModeParams, UseViewModeReturn } from '../../types.hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Hook para manejar el estado del modo de visualización (table/cards).
|
|
4
|
+
*
|
|
5
|
+
* ## Precedencia para determinar el viewMode inicial
|
|
6
|
+
*
|
|
7
|
+
* 1. `viewMode` prop - Modo controlado (el padre controla completamente el estado)
|
|
8
|
+
* 2. localStorage - Preferencia del usuario guardada previamente
|
|
9
|
+
* 3. `defaultViewMode` prop - Valor inicial establecido por el desarrollador
|
|
10
|
+
* 4. `useIsMobile()` - Fallback automático según el dispositivo:
|
|
11
|
+
* - Móvil: 'cards'
|
|
12
|
+
* - Escritorio: 'table'
|
|
13
|
+
*
|
|
14
|
+
* ## Persistencia del viewMode
|
|
15
|
+
*
|
|
16
|
+
* - Si `onChangeUserColumns` está definido → Guarda en backend (cookies de red)
|
|
17
|
+
* - Si no está definido → Fallback a localStorage
|
|
18
|
+
*
|
|
19
|
+
* ## Modo controlado vs no controlado
|
|
20
|
+
*
|
|
21
|
+
* - **Controlado**: Cuando se pasa `viewMode` prop, el padre controla el estado
|
|
22
|
+
* - **No controlado**: El hook maneja internamente el estado y persiste
|
|
23
|
+
* @param id - Identificador único del DataGrid
|
|
24
|
+
* @param viewMode - ViewMode controlado por el padre (opcional)
|
|
25
|
+
* @param defaultViewMode - ViewMode por defecto cuando no hay valor guardado (opcional)
|
|
26
|
+
* @param onViewModeChange - Callback cuando cambia el viewMode (opcional)
|
|
27
|
+
* @param onChangeUserColumns - Callback para guardar en backend (opcional)
|
|
28
|
+
* @returns viewModeState - Estado actual del viewMode
|
|
29
|
+
* @returns handleViewModeChange - Función para cambiar el viewMode
|
|
30
|
+
* @example
|
|
31
|
+
* // Con persistencia en backend
|
|
32
|
+
* const { viewModeState, handleViewModeChange } = useViewMode({
|
|
33
|
+
* id: 'my-grid',
|
|
34
|
+
* defaultViewMode: 'table',
|
|
35
|
+
* onChangeUserColumns, // Guarda en backend
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* // Sin backend (solo localStorage)
|
|
39
|
+
* const { viewModeState, handleViewModeChange } = useViewMode({
|
|
40
|
+
* id: 'my-grid',
|
|
41
|
+
* defaultViewMode: 'table',
|
|
42
|
+
* });
|
|
43
|
+
*/
|
|
44
|
+
export declare const useViewMode: ({ id, viewMode, defaultViewMode, onViewModeChange, onChangeUserColumns, }: UseViewModeParams) => UseViewModeReturn;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useState, useCallback, useEffect } from "react";
|
|
2
|
+
import { useIsMobile } from "@m4l/graphics";
|
|
3
|
+
import { s as saveViewMode } from "../../helpers/saveViewMode/saveViewMode.js";
|
|
4
|
+
const useViewMode = ({
|
|
5
|
+
id,
|
|
6
|
+
viewMode,
|
|
7
|
+
defaultViewMode,
|
|
8
|
+
onViewModeChange,
|
|
9
|
+
onChangeUserColumns
|
|
10
|
+
}) => {
|
|
11
|
+
const isMobile = useIsMobile();
|
|
12
|
+
const [viewModeState, setViewModeState] = useState(() => {
|
|
13
|
+
if (viewMode) {
|
|
14
|
+
return viewMode;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const savedViewMode = localStorage.getItem(`${id}_view_mode`);
|
|
18
|
+
if (savedViewMode === "cards" || savedViewMode === "table") {
|
|
19
|
+
return savedViewMode;
|
|
20
|
+
}
|
|
21
|
+
} catch (_e) {
|
|
22
|
+
}
|
|
23
|
+
if (defaultViewMode) {
|
|
24
|
+
return defaultViewMode;
|
|
25
|
+
}
|
|
26
|
+
return isMobile ? "cards" : "table";
|
|
27
|
+
});
|
|
28
|
+
const handleViewModeChange = useCallback(
|
|
29
|
+
(newViewMode) => {
|
|
30
|
+
setViewModeState(newViewMode);
|
|
31
|
+
saveViewMode(id, newViewMode, onChangeUserColumns);
|
|
32
|
+
onViewModeChange?.(newViewMode);
|
|
33
|
+
},
|
|
34
|
+
[id, onViewModeChange, onChangeUserColumns]
|
|
35
|
+
);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (viewMode !== void 0) {
|
|
38
|
+
setViewModeState(viewMode);
|
|
39
|
+
}
|
|
40
|
+
}, [viewMode]);
|
|
41
|
+
return {
|
|
42
|
+
viewModeState,
|
|
43
|
+
handleViewModeChange
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export {
|
|
47
|
+
useViewMode as u
|
|
48
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export { DataGrid } from './DataGrid';
|
|
2
2
|
export * from './formatters';
|
|
3
|
-
export type { Column, RenderEditCellProps, RenderCellProps } from 'react-data-grid';
|
|
4
|
-
export type { RowKey, ChangeUserColumn, RowActionsGetter, RowKeyGetter } from './types';
|
|
3
|
+
export type { Column, RenderEditCellProps, RenderCellProps, } from 'react-data-grid';
|
|
4
|
+
export type { RowKey, ChangeUserColumn, RowActionsGetter, RowKeyGetter, } from './types';
|
|
5
5
|
export { getDataGridComponentsDictionary } from './dictionary';
|
|
6
6
|
export { TextEditor, NumberEditor } from './subcomponents/editors/TextEditor';
|
|
7
7
|
export { getDataGridRowsFromSet } from './utils/getDataGridRowsFromSet';
|
|
8
|
-
export type {
|
|
9
|
-
export { DATAGRID_SEMANTIC_WIDTHS, DATAGRID_ROW_HEADER_HEIGHTS, DATAGRID_ROW_HEIGHTS } from './constants';
|
|
8
|
+
export type { IGridConfigExtended, BaseConfigColumn, } from './contexts/DataGridContext/types';
|
|
9
|
+
export { DATAGRID_SEMANTIC_WIDTHS, DATAGRID_ROW_HEADER_HEIGHTS, DATAGRID_ROW_HEIGHTS, } from './constants';
|
|
10
|
+
export * from './types.helpers';
|
|
@@ -13,8 +13,8 @@ function scrollToCardElement(containerElement, rowKey, selectorType = "data-attr
|
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
foundElement.scrollIntoView({
|
|
16
|
-
behavior: "
|
|
17
|
-
block: "
|
|
16
|
+
behavior: "smooth",
|
|
17
|
+
block: "end"
|
|
18
18
|
});
|
|
19
19
|
} catch (error) {
|
|
20
20
|
console.error("scrollToCardElement: Error al hacer scroll", error);
|
|
@@ -21,6 +21,7 @@ function Cards(props) {
|
|
|
21
21
|
onCheckedRowsChange
|
|
22
22
|
} = props;
|
|
23
23
|
const containerRef = useRef(null);
|
|
24
|
+
const hasScrolledToFocusRow = useRef(false);
|
|
24
25
|
const processedColumns = useProcessedColumns(columns);
|
|
25
26
|
const allProcessedColumns = useProcessedColumns(columns, {
|
|
26
27
|
applyVisibilityFilter: false
|
|
@@ -31,13 +32,21 @@ function Cards(props) {
|
|
|
31
32
|
onRowsChange
|
|
32
33
|
});
|
|
33
34
|
const cardHeight = useMemo(() => {
|
|
35
|
+
const imageHeight = processedColumns.reduce((totalHeight, col) => {
|
|
36
|
+
const formatterHeight = col.renderCell?.__imageFormatterHeight;
|
|
37
|
+
return formatterHeight ? totalHeight + formatterHeight : totalHeight;
|
|
38
|
+
}, 0);
|
|
34
39
|
return calculateCardHeight({
|
|
35
40
|
visibleColumnsCount: processedColumns.length,
|
|
36
41
|
customMinHeight: cardsViewConfig?.customRender?.minHeight
|
|
37
|
-
});
|
|
38
|
-
}, [processedColumns
|
|
42
|
+
}) + imageHeight;
|
|
43
|
+
}, [processedColumns, cardsViewConfig]);
|
|
39
44
|
useEffect(() => {
|
|
40
45
|
if (!focusOnRowKey) {
|
|
46
|
+
hasScrolledToFocusRow.current = false;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (hasScrolledToFocusRow.current) {
|
|
41
50
|
return;
|
|
42
51
|
}
|
|
43
52
|
const rowIndex = rows.findIndex(
|
|
@@ -58,9 +67,13 @@ function Cards(props) {
|
|
|
58
67
|
"data-attribute",
|
|
59
68
|
"data-row-key"
|
|
60
69
|
);
|
|
70
|
+
if (onSelectedRowsChange) {
|
|
71
|
+
onSelectedRowsChange(/* @__PURE__ */ new Set([focusOnRowKey]));
|
|
72
|
+
}
|
|
73
|
+
hasScrolledToFocusRow.current = true;
|
|
61
74
|
}, 300);
|
|
62
75
|
return () => clearTimeout(timer);
|
|
63
|
-
}, [focusOnRowKey, rows, rowKeyGetter, cardHeight]);
|
|
76
|
+
}, [focusOnRowKey, rows, rowKeyGetter, cardHeight, onSelectedRowsChange]);
|
|
64
77
|
if (processedColumns.length === 0) {
|
|
65
78
|
return null;
|
|
66
79
|
}
|
|
@@ -68,6 +68,7 @@ function Table(props) {
|
|
|
68
68
|
anchorEl: null,
|
|
69
69
|
columnKey: null
|
|
70
70
|
});
|
|
71
|
+
const hasScrolledToFocusRow = useRef(false);
|
|
71
72
|
const [allowSortChange, setAllowSortChange] = useState(false);
|
|
72
73
|
const handleSortColumnsChange = (newSortColumns) => {
|
|
73
74
|
if (allowSortChange) {
|
|
@@ -113,6 +114,10 @@ function Table(props) {
|
|
|
113
114
|
}, [finalRows]);
|
|
114
115
|
useEffect(() => {
|
|
115
116
|
if (!focusOnRowKey) {
|
|
117
|
+
hasScrolledToFocusRow.current = false;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (hasScrolledToFocusRow.current) {
|
|
116
121
|
return;
|
|
117
122
|
}
|
|
118
123
|
const rowIndex = finalRows.findIndex(
|
|
@@ -120,8 +125,12 @@ function Table(props) {
|
|
|
120
125
|
);
|
|
121
126
|
if (rowIndex !== -1) {
|
|
122
127
|
ref_data_grid.current?.scrollToCell({ rowIdx: rowIndex });
|
|
128
|
+
if (onSelectedRowsChange) {
|
|
129
|
+
onSelectedRowsChange(/* @__PURE__ */ new Set([focusOnRowKey]));
|
|
130
|
+
}
|
|
131
|
+
hasScrolledToFocusRow.current = true;
|
|
123
132
|
}
|
|
124
|
-
}, [focusOnRowKey, finalRows, rowKeyGetter]);
|
|
133
|
+
}, [focusOnRowKey, finalRows, rowKeyGetter, onSelectedRowsChange]);
|
|
125
134
|
const onColumnResize = (idx, width) => {
|
|
126
135
|
onChangeColumnWidth(finalColumns[idx].key, width);
|
|
127
136
|
};
|
|
@@ -20,6 +20,12 @@ export interface SeedProps {
|
|
|
20
20
|
withCesar?: boolean;
|
|
21
21
|
withChipStatus?: boolean;
|
|
22
22
|
withTags?: boolean;
|
|
23
|
+
withImage?: boolean;
|
|
24
|
+
withImageCustomSize?: {
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
};
|
|
28
|
+
withImageWithoutText?: boolean;
|
|
23
29
|
withActions?: boolean;
|
|
24
30
|
withActionsUser?: boolean;
|
|
25
31
|
withBooleanStatus?: boolean;
|
|
@@ -69,6 +75,10 @@ export interface RowType {
|
|
|
69
75
|
currentStatus: 'superadmin' | 'admin' | 'user';
|
|
70
76
|
};
|
|
71
77
|
color?: string;
|
|
78
|
+
image?: {
|
|
79
|
+
url: string;
|
|
80
|
+
text?: string;
|
|
81
|
+
};
|
|
72
82
|
}
|
|
73
83
|
interface RangesUncertainty {
|
|
74
84
|
cmcMin: number;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { RowKey } from './types';
|
|
2
|
+
import { BaseConfigColumn } from './contexts/DataGridContext/types';
|
|
3
|
+
/**
|
|
4
|
+
* Configuración base genérica que puede extenderse con propiedades específicas de cualquier vista.
|
|
5
|
+
*
|
|
6
|
+
* USO INTERNO: El sistema usa esto para manejar genéricamente las configuraciones
|
|
7
|
+
* de columnas sin importar el tipo de vista (table, cards, etc).
|
|
8
|
+
* @example
|
|
9
|
+
* // Para vista table
|
|
10
|
+
* BaseViewConfig<{ frozen: boolean }>
|
|
11
|
+
*
|
|
12
|
+
* // Para vista cards
|
|
13
|
+
* BaseViewConfig<{ showTitle: boolean }>
|
|
14
|
+
*/
|
|
15
|
+
export type BaseViewConfig<TViewSpecific = object> = TViewSpecific & {
|
|
16
|
+
key: string;
|
|
17
|
+
visible: boolean;
|
|
18
|
+
index: number;
|
|
19
|
+
name?: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
*Este tipo define la estructura de configuración que el usuario puede
|
|
24
|
+
*pasar al DataGrid para personalizar columnas y sus anchos.
|
|
25
|
+
*
|
|
26
|
+
*- `columnsConfig`: Configuración de visibilidad y orden de columnas para vista table
|
|
27
|
+
*- `columnsWidths`: Anchos personalizados de columnas
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const userConfig: IGridConfig = {
|
|
31
|
+
* columnsConfig: [
|
|
32
|
+
* { key: 'name', visible: true, index: 0, frozen: false },
|
|
33
|
+
* { key: 'email', visible: true, index: 1, frozen: false },
|
|
34
|
+
* ],
|
|
35
|
+
* columnsWidths: { name: 200, email: 300 }
|
|
36
|
+
* };
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export interface IGridConfig {
|
|
40
|
+
/** Configuración de columnas para vista table (visibilidad, orden, frozen) */
|
|
41
|
+
columnsConfig: BaseConfigColumn[];
|
|
42
|
+
/** Anchos de columnas en píxeles */
|
|
43
|
+
columnsWidths: Record<RowKey, number>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Configuración específica retornada por getViewSpecificConfig
|
|
47
|
+
*/
|
|
48
|
+
export interface ViewSpecificConfig {
|
|
49
|
+
/** Valores por defecto para propiedades específicas de la vista */
|
|
50
|
+
defaults: Record<string, unknown>;
|
|
51
|
+
/** Valores originales por defecto para tracking de cambios */
|
|
52
|
+
originalDefaults: Record<string, unknown>;
|
|
53
|
+
/** Función para obtener propiedades originales dinámicas de un item */
|
|
54
|
+
dynamicOriginalProperty: (item: unknown) => Record<string, unknown>;
|
|
55
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|