@m4l/components 9.3.36 → 9.3.37-JT20251128-beta.2
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 +33 -6
- package/components/DataGrid/DataGrid.js +2 -0
- package/components/DataGrid/Datagrid.styles.js +11 -2
- package/components/DataGrid/contexts/DataGridContext/index.js +43 -268
- package/components/DataGrid/contexts/DataGridContext/types.d.ts +5 -22
- 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/getViewMode/getViewMode.d.ts +41 -0
- package/components/DataGrid/helpers/getViewMode/getViewMode.js +19 -0
- package/components/DataGrid/helpers/getViewMode/getViewMode.test.d.ts +1 -0
- package/components/DataGrid/helpers/getViewMode/index.d.ts +1 -0
- package/components/DataGrid/helpers/getViewMode/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 +13 -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 +31 -0
- package/components/DataGrid/hooks/useViewMode/useViewMode.js +44 -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/subcomponents/CardHeader/index.js +15 -7
- package/components/DataGrid/subcomponents/CheckboxCellAdapter/index.js +4 -1
- package/components/DataGrid/subcomponents/Table/hooks/useSortColumnsRows.js +6 -2
- package/components/DataGrid/subcomponents/Table/subcomponents/RadioButtonFormatter.d.ts +6 -0
- package/components/DataGrid/subcomponents/Table/subcomponents/RadioButtonFormatter.js +12 -0
- package/components/DataGrid/subcomponents/Table/subcomponents/RadioSelectColumn.d.ts +64 -0
- package/components/DataGrid/subcomponents/Table/subcomponents/RadioSelectColumn.js +46 -0
- package/components/DataGrid/tests/table/subcomponents/RadioButtonFormatter.test.d.ts +1 -0
- package/components/DataGrid/tests/table/subcomponents/RadioSelectColumn.test.d.ts +1 -0
- package/components/DataGrid/types.d.ts +7 -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 +81 -0
- package/components/mui_extended/RadioButton/RadioButton.d.ts +24 -0
- package/components/mui_extended/RadioButton/RadioButton.js +110 -0
- package/components/mui_extended/RadioButton/RadioButton.styles.d.ts +2 -0
- package/components/mui_extended/RadioButton/RadioButton.styles.js +126 -0
- package/components/mui_extended/RadioButton/constants.d.ts +1 -0
- package/components/mui_extended/RadioButton/constants.js +4 -0
- package/components/mui_extended/RadioButton/icons.d.ts +4 -0
- package/components/mui_extended/RadioButton/icons.js +7 -0
- package/components/mui_extended/RadioButton/index.d.ts +1 -0
- package/components/mui_extended/RadioButton/index.js +1 -0
- package/components/mui_extended/RadioButton/slots/RadioButtonEnum.d.ts +8 -0
- package/components/mui_extended/RadioButton/slots/RadioButtonEnum.js +12 -0
- package/components/mui_extended/RadioButton/slots/RadioButtonSlots.d.ts +20 -0
- package/components/mui_extended/RadioButton/slots/RadioButtonSlots.js +39 -0
- package/components/mui_extended/RadioButton/tests/RadioButton.test.d.ts +1 -0
- package/components/mui_extended/RadioButton/types.d.ts +50 -0
- package/components/mui_extended/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 +44 -42
- package/package.json +1 -1
package/@types/export.d.ts
CHANGED
|
@@ -55,6 +55,9 @@ declare module '@mui/material/styles' {
|
|
|
55
55
|
M4LCheckBox?: {
|
|
56
56
|
styleOverrides?: ComponentsOverrides<Theme>['M4LCheckBox'];
|
|
57
57
|
};
|
|
58
|
+
M4LRadioButton?: {
|
|
59
|
+
styleOverrides?: ComponentsOverrides<Theme>['M4LRadioButton'];
|
|
60
|
+
};
|
|
58
61
|
M4LDataGrid?: {
|
|
59
62
|
styleOverrides?: ComponentsOverrides<Theme>['M4LDataGrid'];
|
|
60
63
|
};
|
package/@types/types.d.ts
CHANGED
|
@@ -76,6 +76,10 @@ import {
|
|
|
76
76
|
CheckBoxOwnerState,
|
|
77
77
|
CheckBoxSlotsType,
|
|
78
78
|
} from '../components/mui_extended/CheckBox/types';
|
|
79
|
+
import {
|
|
80
|
+
RadioButtonOwnerState,
|
|
81
|
+
RadioButtonSlotsType,
|
|
82
|
+
} from '../components/mui_extended/RadioButton/types';
|
|
79
83
|
import {
|
|
80
84
|
RHFNumberInputOwnerState,
|
|
81
85
|
RHFNumberInputSlotsType,
|
|
@@ -292,11 +296,26 @@ import {
|
|
|
292
296
|
ImageTextOwnerState,
|
|
293
297
|
ImageTextSlotsType,
|
|
294
298
|
} from '../components/ImageText/types';
|
|
295
|
-
import {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
import {
|
|
299
|
+
import {
|
|
300
|
+
FormContainerOwnerState,
|
|
301
|
+
FormContainerSlotsType,
|
|
302
|
+
} from '../components/FormContainer/types';
|
|
303
|
+
import {
|
|
304
|
+
ActionsGroupOwnerState,
|
|
305
|
+
ActionsGroupSlotsType,
|
|
306
|
+
} from '../components/ActionsGroup/types';
|
|
307
|
+
import {
|
|
308
|
+
TabsNavigatorSlotsType,
|
|
309
|
+
TabsNavigatorOwnerState,
|
|
310
|
+
} from 'src/components/TabsNavigator/types';
|
|
311
|
+
import {
|
|
312
|
+
EditLabelOwnerState,
|
|
313
|
+
EditLabelSlotsType,
|
|
314
|
+
} from '../components/EditLabel/types';
|
|
315
|
+
import {
|
|
316
|
+
MFIsolationAppOwnerState,
|
|
317
|
+
MFIsolationAppSlotsType,
|
|
318
|
+
} from '../components/MFIsolationApp/types';
|
|
300
319
|
import {
|
|
301
320
|
TagsFormatterOwnerState,
|
|
302
321
|
TagsFormatterSlotsType,
|
|
@@ -333,6 +352,7 @@ declare module '@mui/material/styles' {
|
|
|
333
352
|
M4LSelect: SelectSlotsType;
|
|
334
353
|
M4LTypography: TypographySlotsType;
|
|
335
354
|
M4LCheckBox: CheckBoxSlotsType;
|
|
355
|
+
M4LRadioButton: RadioButtonSlotsType;
|
|
336
356
|
M4LRHFNumberInput: RHFNumberInputSlotsType;
|
|
337
357
|
M4LTab: TabSlotsType;
|
|
338
358
|
M4LButton: ButtonSlotsType;
|
|
@@ -347,7 +367,8 @@ declare module '@mui/material/styles' {
|
|
|
347
367
|
M4LChip: ChipSlotsType;
|
|
348
368
|
M4LCircularProgress: CircularProgressSlotsType;
|
|
349
369
|
M4LPaperForm: PaperFormSlotsType;
|
|
350
|
-
M4LWindowBase: WindowBaseType;
|
|
370
|
+
M4LWindowBase: WindowBaseType;
|
|
371
|
+
a;
|
|
351
372
|
M4LWindowConfirm: WindowConfirmType;
|
|
352
373
|
M4LAppBar: AppBarSlotsType;
|
|
353
374
|
M4LDialog: DialogType;
|
|
@@ -427,6 +448,7 @@ declare module '@mui/material/styles' {
|
|
|
427
448
|
M4LSelect: Partial<SelectOwnerState>;
|
|
428
449
|
M4LTypography: Partial<TypographyOwnerState>;
|
|
429
450
|
M4LCheckBox: Partial<CheckBoxOwnerState>;
|
|
451
|
+
M4LRadioButton: Partial<RadioButtonOwnerState>;
|
|
430
452
|
M4LRHFNumberInput: Partial<RHFNumberInputOwnerState>;
|
|
431
453
|
M4LTab: Partial<TabOwnerState>;
|
|
432
454
|
M4LButton: Partial<ButtonOwnerState>;
|
|
@@ -620,6 +642,11 @@ declare module '@mui/material/styles' {
|
|
|
620
642
|
styleOverrides?: ComponentsOverrides<Theme>['M4LCheckBox'];
|
|
621
643
|
variants?: ComponentsVariants['M4LCheckBox'];
|
|
622
644
|
};
|
|
645
|
+
M4LRadioButton?: {
|
|
646
|
+
defaultProps?: ComponentsPropsList['M4LRadioButton'];
|
|
647
|
+
styleOverrides?: ComponentsOverrides<Theme>['M4LRadioButton'];
|
|
648
|
+
variants?: ComponentsVariants['M4LRadioButton'];
|
|
649
|
+
};
|
|
623
650
|
M4LActionCancel?: {
|
|
624
651
|
defaultProps?: ComponentsPropsList['M4LActionCancel'];
|
|
625
652
|
styleOverrides?: ComponentsOverrides<Theme>['M4LActionCancel'];
|
|
@@ -30,6 +30,7 @@ function DataGrid(props) {
|
|
|
30
30
|
initialRowHeightVariant,
|
|
31
31
|
checkedRows,
|
|
32
32
|
onCheckedRowsChange,
|
|
33
|
+
checkedRowsMultiple,
|
|
33
34
|
dataTestId = "",
|
|
34
35
|
customHeader: CustomHeader,
|
|
35
36
|
visibleCustomHeader = true,
|
|
@@ -87,6 +88,7 @@ function DataGrid(props) {
|
|
|
87
88
|
checkedRows,
|
|
88
89
|
rowActionsGetter,
|
|
89
90
|
onCheckedRowsChange,
|
|
91
|
+
checkedRowsMultiple,
|
|
90
92
|
rowKeyGetter,
|
|
91
93
|
rows,
|
|
92
94
|
onChangeUserColumns,
|
|
@@ -424,6 +424,10 @@ const dataGridStyles = {
|
|
|
424
424
|
borderColor: `${theme.vars.palette?.border.disabled} !important`,
|
|
425
425
|
...theme.colorSchemes.finalTheme.typography.body
|
|
426
426
|
},
|
|
427
|
+
"&:has(> .M4LRadioButton-root)": {
|
|
428
|
+
overflow: "visible",
|
|
429
|
+
paddingInline: 0
|
|
430
|
+
},
|
|
427
431
|
"&.rdg-cell-frozen": {
|
|
428
432
|
display: "flex",
|
|
429
433
|
boxShadow: "unset",
|
|
@@ -734,7 +738,10 @@ const dataGridStyles = {
|
|
|
734
738
|
*/
|
|
735
739
|
cardsContainer: () => ({
|
|
736
740
|
height: "auto",
|
|
737
|
-
overflow: "auto"
|
|
741
|
+
overflow: "auto",
|
|
742
|
+
"& > .M4LContainerFlow-root": {
|
|
743
|
+
alignItems: "start"
|
|
744
|
+
}
|
|
738
745
|
}),
|
|
739
746
|
/**
|
|
740
747
|
* Card de la vista cards
|
|
@@ -746,6 +753,8 @@ const dataGridStyles = {
|
|
|
746
753
|
minWidth: "280px",
|
|
747
754
|
maxWidth: "580px",
|
|
748
755
|
cursor: "pointer",
|
|
756
|
+
padding: theme.vars.size.baseSpacings["sp2-5"],
|
|
757
|
+
gap: "0 !important",
|
|
749
758
|
// Si está checked (pero no selected), border de checked
|
|
750
759
|
...ownerState?.checked && !ownerState?.selected && {
|
|
751
760
|
borderColor: theme.vars.palette.primary.activeOpacity
|
|
@@ -786,7 +795,7 @@ const dataGridStyles = {
|
|
|
786
795
|
cardHeaderRight: ({ theme }) => ({
|
|
787
796
|
display: "flex",
|
|
788
797
|
alignItems: "center",
|
|
789
|
-
gap: theme.vars.size.baseSpacings
|
|
798
|
+
gap: theme.vars.size.baseSpacings["sp0-5"]
|
|
790
799
|
}),
|
|
791
800
|
/**
|
|
792
801
|
* Contenido de la card (body)
|
|
@@ -1,146 +1,22 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState,
|
|
3
|
-
import {
|
|
4
|
-
import { useFirstRender, useIsMobile } from "@m4l/graphics";
|
|
2
|
+
import { useState, useEffect, useMemo, createContext } from "react";
|
|
3
|
+
import { useFirstRender } from "@m4l/graphics";
|
|
5
4
|
import { g as getComponentClasses } from "../../../../utils/getComponentSlotRoot.js";
|
|
6
5
|
import { a as DATAGRID_ROW_HEIGHTS, b as DATAGRID_ROW_HEADER_HEIGHTS, D as DATAGRID_PREFIX_NAME } from "../../constants.js";
|
|
7
6
|
import { C as ControlNavigateSlots, a as ColumnsConfigSlots, T as TextEditorSlots, b as TableSlots, R as RowsCountSlots, A as ActionsSlots, D as DataGridSlots } from "../../slots/DataGridEnum.js";
|
|
8
7
|
import { deepEqual } from "fast-equals";
|
|
8
|
+
import { u as useViewMode } from "../../hooks/useViewMode/useViewMode.js";
|
|
9
|
+
import { u as useRowHeight } from "../../hooks/useRowHeight/useRowHeight.js";
|
|
10
|
+
import { u as useColumnsWidth } from "../../hooks/useColumnsWidth/useColumnsWidth.js";
|
|
11
|
+
import { u as useViewConfig } from "../../hooks/useViewConfig/useViewConfig.js";
|
|
12
|
+
import { u as useChangeColumnsConfig } from "../../hooks/useChangeColumnsConfig/useChangeColumnsConfig.js";
|
|
13
|
+
import { u as useChangeColumnsOrder } from "../../hooks/useChangeColumnsOrder/useChangeColumnsOrder.js";
|
|
14
|
+
import { g as getColumnsWidth } from "../../helpers/getColumnsWidth/getColumnsWidth.js";
|
|
15
|
+
import { g as getInitialColumnsConfig } from "../../helpers/getInitialColumnsConfig/getInitialColumnsConfig.js";
|
|
16
|
+
import { g as getAllViewModes } from "../../helpers/getAllViewModes/getAllViewModes.js";
|
|
17
|
+
import { g as getViewSpecificConfig } from "../../helpers/getViewSpecificConfig/getViewSpecificConfig.js";
|
|
18
|
+
import { g as getViewMode } from "../../helpers/getViewMode/getViewMode.js";
|
|
9
19
|
const DataGridContext = createContext(null);
|
|
10
|
-
function getColumnsWidth(id, columns, defaultUserColumns) {
|
|
11
|
-
const newMap = /* @__PURE__ */ new Map();
|
|
12
|
-
let storeColumnsWidth;
|
|
13
|
-
try {
|
|
14
|
-
const item = window.localStorage.getItem(`${id}_columns_width`);
|
|
15
|
-
storeColumnsWidth = item !== null ? new Map(JSON.parse(item)) : /* @__PURE__ */ new Map();
|
|
16
|
-
} catch (_e) {
|
|
17
|
-
storeColumnsWidth = /* @__PURE__ */ new Map();
|
|
18
|
-
}
|
|
19
|
-
for (let i = 0; i < columns.length; i++) {
|
|
20
|
-
let width;
|
|
21
|
-
if (defaultUserColumns) {
|
|
22
|
-
try {
|
|
23
|
-
width = defaultUserColumns.columnsWidths[columns[i].key];
|
|
24
|
-
} catch (_e) {
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (width === void 0) {
|
|
28
|
-
const storeWidth = storeColumnsWidth.get(columns[i].key);
|
|
29
|
-
if (typeof storeWidth === "number") {
|
|
30
|
-
width = storeWidth;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
if (width !== void 0) {
|
|
34
|
-
newMap.set(columns[i].key, width);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return newMap;
|
|
38
|
-
}
|
|
39
|
-
function saveColumnsWidth(id, storeColumnsWidth, onChangeUserColumns) {
|
|
40
|
-
if (onChangeUserColumns) {
|
|
41
|
-
const columnsWidthObject = castMapColumnsWidthToRecord(storeColumnsWidth);
|
|
42
|
-
onChangeUserColumns({
|
|
43
|
-
reason: "columnsWidths",
|
|
44
|
-
userConfig: columnsWidthObject
|
|
45
|
-
});
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
localStorage.setItem(
|
|
49
|
-
`${id}_columns_width`,
|
|
50
|
-
JSON.stringify([...storeColumnsWidth])
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
const getAllViewModes = () => {
|
|
54
|
-
return ["table", "cards"];
|
|
55
|
-
};
|
|
56
|
-
const getViewSpecificConfig = (viewMode) => {
|
|
57
|
-
const configs = {
|
|
58
|
-
table: {
|
|
59
|
-
defaults: { frozen: false },
|
|
60
|
-
originalDefaults: { originalFrozen: false },
|
|
61
|
-
dynamicOriginalProperty: (item) => ({
|
|
62
|
-
originalFrozen: item?.frozen ?? false
|
|
63
|
-
})
|
|
64
|
-
},
|
|
65
|
-
cards: {
|
|
66
|
-
defaults: { showTitle: true },
|
|
67
|
-
originalDefaults: { originalShowTitle: true },
|
|
68
|
-
dynamicOriginalProperty: (item) => ({
|
|
69
|
-
originalShowTitle: item?.showTitle ?? true
|
|
70
|
-
})
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
return configs[viewMode] || configs.table;
|
|
74
|
-
};
|
|
75
|
-
const getViewSuffix = (viewMode) => {
|
|
76
|
-
if (viewMode === "table") {
|
|
77
|
-
return "";
|
|
78
|
-
}
|
|
79
|
-
return `_${viewMode}`;
|
|
80
|
-
};
|
|
81
|
-
function getInitialColumnsConfig(id, columns, viewMode, defaultUserConfig, viewSpecificDefaults, originalViewSpecificDefaults) {
|
|
82
|
-
let columnsConfig;
|
|
83
|
-
if (defaultUserConfig) {
|
|
84
|
-
columnsConfig = defaultUserConfig;
|
|
85
|
-
} else {
|
|
86
|
-
columnsConfig = loadViewConfig(
|
|
87
|
-
id,
|
|
88
|
-
getViewSuffix(viewMode)
|
|
89
|
-
) || [];
|
|
90
|
-
}
|
|
91
|
-
return columns.map((column, index) => {
|
|
92
|
-
const existingConfig = columnsConfig.find((c) => c.key === column.key);
|
|
93
|
-
const columnConfigIndex = existingConfig ? columnsConfig.indexOf(existingConfig) : -1;
|
|
94
|
-
const baseConfig = {
|
|
95
|
-
key: column.key,
|
|
96
|
-
name: typeof column.name === "string" ? column.name : String(column.name),
|
|
97
|
-
hidden: column.hidden === void 0 ? false : column.hidden,
|
|
98
|
-
index: columnConfigIndex > -1 ? columnConfigIndex : index,
|
|
99
|
-
visible: existingConfig?.visible !== void 0 ? existingConfig.visible : column.visible === void 0 ? true : column.visible,
|
|
100
|
-
originalIndex: index,
|
|
101
|
-
originalVisible: column.visible === void 0 ? true : column.visible
|
|
102
|
-
};
|
|
103
|
-
return {
|
|
104
|
-
...baseConfig,
|
|
105
|
-
...viewSpecificDefaults,
|
|
106
|
-
...originalViewSpecificDefaults,
|
|
107
|
-
...existingConfig || {}
|
|
108
|
-
};
|
|
109
|
-
}).sort((a, b) => a.index - b.index);
|
|
110
|
-
}
|
|
111
|
-
function saveViewConfig(id, viewSuffix, config, onChangeCallback) {
|
|
112
|
-
if (onChangeCallback) {
|
|
113
|
-
const reason = viewSuffix === "" ? "columnsConfig" : `columnsConfig${viewSuffix.replace("_", "")}`;
|
|
114
|
-
onChangeCallback({
|
|
115
|
-
reason,
|
|
116
|
-
userConfig: config
|
|
117
|
-
});
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
const storageKey = viewSuffix === "" ? `${id}_columns_config` : `${id}_columns_config${viewSuffix}`;
|
|
121
|
-
localStorage.setItem(storageKey, JSON.stringify(config));
|
|
122
|
-
}
|
|
123
|
-
function loadViewConfig(id, viewSuffix) {
|
|
124
|
-
try {
|
|
125
|
-
const storageKey = viewSuffix === "" ? `${id}_columns_config` : `${id}_columns_config${viewSuffix}`;
|
|
126
|
-
const stored = localStorage.getItem(storageKey);
|
|
127
|
-
return stored ? JSON.parse(stored) : null;
|
|
128
|
-
} catch (_e) {
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
function saveViewMode(id, viewMode) {
|
|
133
|
-
localStorage.setItem(`${id}_view_mode`, viewMode);
|
|
134
|
-
}
|
|
135
|
-
function getIndexRowHeightVariant(variant) {
|
|
136
|
-
if (variant === "compact") {
|
|
137
|
-
return 0;
|
|
138
|
-
}
|
|
139
|
-
if (variant === "standard") {
|
|
140
|
-
return 1;
|
|
141
|
-
}
|
|
142
|
-
return 2;
|
|
143
|
-
}
|
|
144
20
|
function DataGridProvider(props) {
|
|
145
21
|
const {
|
|
146
22
|
id,
|
|
@@ -155,6 +31,7 @@ function DataGridProvider(props) {
|
|
|
155
31
|
initialRowHeightVariant = "standard",
|
|
156
32
|
checkedRows,
|
|
157
33
|
onCheckedRowsChange,
|
|
34
|
+
checkedRowsMultiple,
|
|
158
35
|
rowKeyGetter,
|
|
159
36
|
onChangeUserColumns,
|
|
160
37
|
externalSortSettings: sortSettings,
|
|
@@ -166,7 +43,32 @@ function DataGridProvider(props) {
|
|
|
166
43
|
cardsViewConfig
|
|
167
44
|
} = props;
|
|
168
45
|
const isFirstRender = useFirstRender([columns, id]);
|
|
169
|
-
const
|
|
46
|
+
const { viewModeState, setViewModeState, handleViewModeChange } = useViewMode({
|
|
47
|
+
id,
|
|
48
|
+
viewMode,
|
|
49
|
+
defaultViewMode,
|
|
50
|
+
onViewModeChange,
|
|
51
|
+
onChangeUserColumns
|
|
52
|
+
});
|
|
53
|
+
const { currentRowHeightVariant, setRowHeightVariant } = useRowHeight({
|
|
54
|
+
rowHeights,
|
|
55
|
+
rowHeaderHeights,
|
|
56
|
+
initialRowHeightVariant
|
|
57
|
+
});
|
|
58
|
+
const { columnsWidths, setColumnsWidths, onChangeColumnWidth } = useColumnsWidth({
|
|
59
|
+
id,
|
|
60
|
+
onChangeUserColumns
|
|
61
|
+
});
|
|
62
|
+
const { getConfigColumns, updateConfigColumns } = useViewConfig();
|
|
63
|
+
const { onChangeColumnsConfig } = useChangeColumnsConfig({
|
|
64
|
+
id,
|
|
65
|
+
onChangeUserColumns,
|
|
66
|
+
updateConfigColumns
|
|
67
|
+
});
|
|
68
|
+
const { onChangeColumnsOrder } = useChangeColumnsOrder({
|
|
69
|
+
getConfigColumns,
|
|
70
|
+
onChangeColumnsConfig
|
|
71
|
+
});
|
|
170
72
|
const classes = getComponentClasses(DATAGRID_PREFIX_NAME, {
|
|
171
73
|
...DataGridSlots,
|
|
172
74
|
...ActionsSlots,
|
|
@@ -176,80 +78,8 @@ function DataGridProvider(props) {
|
|
|
176
78
|
...ColumnsConfigSlots,
|
|
177
79
|
...ControlNavigateSlots
|
|
178
80
|
});
|
|
179
|
-
const [columnsWidths, setColumnsWidths] = useState(/* @__PURE__ */ new Map());
|
|
180
|
-
const [viewConfig, setViewConfig] = useState(() => ({
|
|
181
|
-
table: [],
|
|
182
|
-
cards: []
|
|
183
|
-
}));
|
|
184
|
-
const getConfigColumns = useCallback(
|
|
185
|
-
(viewModeParam) => {
|
|
186
|
-
return viewConfig[viewModeParam];
|
|
187
|
-
},
|
|
188
|
-
[viewConfig]
|
|
189
|
-
);
|
|
190
|
-
const updateConfigColumns = useCallback(
|
|
191
|
-
(viewModeParam, config) => {
|
|
192
|
-
setViewConfig((prev) => ({
|
|
193
|
-
...prev,
|
|
194
|
-
[viewModeParam]: config
|
|
195
|
-
}));
|
|
196
|
-
},
|
|
197
|
-
[]
|
|
198
|
-
);
|
|
199
81
|
const [rowsFilterCount, setRowFilterCount] = useState(rowsCount);
|
|
200
82
|
const [sortColumns, setSortColumns] = useState([]);
|
|
201
|
-
const [viewModeState, setViewModeState] = useState(() => {
|
|
202
|
-
if (viewMode) {
|
|
203
|
-
return viewMode;
|
|
204
|
-
}
|
|
205
|
-
try {
|
|
206
|
-
const savedViewMode = localStorage.getItem(`${id}_view_mode`);
|
|
207
|
-
if (savedViewMode === "cards" || savedViewMode === "table") {
|
|
208
|
-
return savedViewMode;
|
|
209
|
-
}
|
|
210
|
-
} catch (_e) {
|
|
211
|
-
}
|
|
212
|
-
if (defaultViewMode) {
|
|
213
|
-
return defaultViewMode;
|
|
214
|
-
}
|
|
215
|
-
return isMobile ? "cards" : "table";
|
|
216
|
-
});
|
|
217
|
-
const handleViewModeChange = useCallback(
|
|
218
|
-
(newViewMode) => {
|
|
219
|
-
setViewModeState(newViewMode);
|
|
220
|
-
saveViewMode(id, newViewMode);
|
|
221
|
-
onViewModeChange?.(newViewMode);
|
|
222
|
-
},
|
|
223
|
-
[onViewModeChange, id]
|
|
224
|
-
);
|
|
225
|
-
useEffect(() => {
|
|
226
|
-
if (viewMode !== void 0) {
|
|
227
|
-
setViewModeState(viewMode);
|
|
228
|
-
}
|
|
229
|
-
}, [viewMode]);
|
|
230
|
-
const [currentRowHeightVariant, setCurrentRowHeightVariant] = useState(() => {
|
|
231
|
-
if (typeof rowHeights !== typeof rowHeaderHeights) {
|
|
232
|
-
throw new Error("Must be same type rowheights and rowHeaderTypes");
|
|
233
|
-
}
|
|
234
|
-
if (typeof rowHeights === "number" && typeof rowHeaderHeights === "number") {
|
|
235
|
-
return {
|
|
236
|
-
rowHVariant: "compact",
|
|
237
|
-
rowHeight: rowHeights,
|
|
238
|
-
rowHeaderHeight: rowHeaderHeights
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
if (typeof rowHeights !== "number" && rowHeights.length !== 3) {
|
|
242
|
-
throw new Error("Must be 3 heights");
|
|
243
|
-
}
|
|
244
|
-
if (typeof rowHeaderHeights !== "number" && rowHeaderHeights.length !== 3) {
|
|
245
|
-
throw new Error("Must be 3 HeaderHeights");
|
|
246
|
-
}
|
|
247
|
-
return {
|
|
248
|
-
rowHVariant: initialRowHeightVariant,
|
|
249
|
-
rowHeight: typeof rowHeights !== "number" ? rowHeights[getIndexRowHeightVariant(initialRowHeightVariant)] : rowHeights,
|
|
250
|
-
rowHeaderHeight: typeof rowHeaderHeights !== "number" ? rowHeaderHeights[getIndexRowHeightVariant(initialRowHeightVariant)] : rowHeaderHeights
|
|
251
|
-
};
|
|
252
|
-
});
|
|
253
83
|
useEffect(() => {
|
|
254
84
|
const keys = new Set(columns.map((c) => c.key));
|
|
255
85
|
if (sortSettings?.sortsColumns) {
|
|
@@ -315,10 +145,10 @@ function DataGridProvider(props) {
|
|
|
315
145
|
}
|
|
316
146
|
}, [columns, sortSettings, filterSettings, cardsViewConfig]);
|
|
317
147
|
const finalRowHeights = useMemo(() => rowHeights, [rowHeights]);
|
|
318
|
-
let timerSaveColumns;
|
|
319
148
|
useEffect(() => {
|
|
320
149
|
if (isFirstRender) {
|
|
321
150
|
setColumnsWidths(getColumnsWidth(id, columns, defaultUserColumns));
|
|
151
|
+
setViewModeState(getViewMode(id, defaultUserColumns, defaultViewMode) ?? "table");
|
|
322
152
|
updateConfigColumns(
|
|
323
153
|
"table",
|
|
324
154
|
getInitialColumnsConfig(
|
|
@@ -450,65 +280,9 @@ function DataGridProvider(props) {
|
|
|
450
280
|
});
|
|
451
281
|
}
|
|
452
282
|
}, [columns, id]);
|
|
453
|
-
const onChangeColumnsConfig = useCallback(
|
|
454
|
-
(viewModeParam, newConfig) => {
|
|
455
|
-
saveViewConfig(
|
|
456
|
-
id,
|
|
457
|
-
getViewSuffix(viewModeParam),
|
|
458
|
-
newConfig,
|
|
459
|
-
onChangeUserColumns
|
|
460
|
-
);
|
|
461
|
-
updateConfigColumns(viewModeParam, newConfig);
|
|
462
|
-
},
|
|
463
|
-
[id, onChangeUserColumns, updateConfigColumns]
|
|
464
|
-
);
|
|
465
|
-
const onChangeColumnsOrder = useCallback(
|
|
466
|
-
(viewModeParam, sourceKey, targetKey) => {
|
|
467
|
-
if (sourceKey === targetKey) {
|
|
468
|
-
return;
|
|
469
|
-
}
|
|
470
|
-
const currentConfig = getConfigColumns(viewModeParam);
|
|
471
|
-
const sourceColumnIndex = currentConfig.findIndex(
|
|
472
|
-
(c) => c.key === sourceKey
|
|
473
|
-
);
|
|
474
|
-
const targetColumnIndex = currentConfig.findIndex(
|
|
475
|
-
(c) => c.key === targetKey
|
|
476
|
-
);
|
|
477
|
-
const reorderedConfig = [...currentConfig];
|
|
478
|
-
reorderedConfig.splice(
|
|
479
|
-
targetColumnIndex,
|
|
480
|
-
0,
|
|
481
|
-
reorderedConfig.splice(sourceColumnIndex, 1)[0]
|
|
482
|
-
);
|
|
483
|
-
onChangeColumnsConfig(viewModeParam, reorderedConfig);
|
|
484
|
-
},
|
|
485
|
-
[getConfigColumns, onChangeColumnsConfig]
|
|
486
|
-
);
|
|
487
|
-
const onChangeColumnWidth = (columnKey, width) => {
|
|
488
|
-
columnsWidths.set(columnKey, Math.round(width));
|
|
489
|
-
if (timerSaveColumns) {
|
|
490
|
-
clearTimeout(timerSaveColumns);
|
|
491
|
-
}
|
|
492
|
-
timerSaveColumns = setTimeout(() => {
|
|
493
|
-
saveColumnsWidth(id, columnsWidths, onChangeUserColumns);
|
|
494
|
-
}, 500);
|
|
495
|
-
};
|
|
496
283
|
const setRowFilterCountInternal = (newRowsCount) => {
|
|
497
284
|
setRowFilterCount(newRowsCount);
|
|
498
285
|
};
|
|
499
|
-
const setCurrentRowHeightInternal = useCallback(
|
|
500
|
-
(newVariant) => {
|
|
501
|
-
if (typeof rowHeights === "number" || typeof rowHeaderHeights === "number") {
|
|
502
|
-
throw new Error("Only use setCurrentRowHeight with vector rowHeights");
|
|
503
|
-
}
|
|
504
|
-
setCurrentRowHeightVariant({
|
|
505
|
-
rowHVariant: newVariant,
|
|
506
|
-
rowHeight: rowHeights[getIndexRowHeightVariant(newVariant)],
|
|
507
|
-
rowHeaderHeight: rowHeaderHeights[getIndexRowHeightVariant(newVariant)]
|
|
508
|
-
});
|
|
509
|
-
},
|
|
510
|
-
[setCurrentRowHeightVariant, rowHeights, rowHeaderHeights]
|
|
511
|
-
);
|
|
512
286
|
return /* @__PURE__ */ jsx(
|
|
513
287
|
DataGridContext.Provider,
|
|
514
288
|
{
|
|
@@ -528,8 +302,9 @@ function DataGridProvider(props) {
|
|
|
528
302
|
onChangeColumnWidth,
|
|
529
303
|
setRowsCount: setRowFilterCountInternal,
|
|
530
304
|
rowActionsGetter,
|
|
531
|
-
setRowHeightVariant
|
|
305
|
+
setRowHeightVariant,
|
|
532
306
|
onCheckedRowsChange,
|
|
307
|
+
checkedRowsMultiple,
|
|
533
308
|
rowKeyGetter,
|
|
534
309
|
onChangeUserColumns,
|
|
535
310
|
sortColumns,
|
|
@@ -3,21 +3,12 @@ import { RowKey, RowHeightVariants, GridProps } from '../../types';
|
|
|
3
3
|
import { Maybe } from '@m4l/core';
|
|
4
4
|
import { ActionsSlots, ColumnsConfigSlots, ControlNavigateSlots, DataGridSlots, RowsCountSlots, TableSlots, TextEditorSlots } from '../../slots/DataGridEnum';
|
|
5
5
|
import { SortColumn } from 'react-data-grid';
|
|
6
|
-
|
|
7
|
-
* Configuración base genérica que puede extenderse con propiedades específicas de cualquier vista
|
|
8
|
-
* USO INTERNO: El sistema usa esto para manejar genéricamente las configuraciones
|
|
9
|
-
*/
|
|
10
|
-
export type BaseViewConfig<TViewSpecific = {}> = TViewSpecific & {
|
|
11
|
-
key: string;
|
|
12
|
-
visible: boolean;
|
|
13
|
-
index: number;
|
|
14
|
-
name?: string;
|
|
15
|
-
};
|
|
6
|
+
import { IGridConfig, BaseViewConfig } from '../../types.helpers';
|
|
16
7
|
/**
|
|
17
8
|
* Configuración extendida genérica con propiedades originales
|
|
18
9
|
* USO INTERNO: El contexto usa esto para el estado interno con propiedades de tracking
|
|
19
10
|
*/
|
|
20
|
-
export type IViewConfig<TViewSpecific =
|
|
11
|
+
export type IViewConfig<TViewSpecific = object, TOriginalViewSpecific = object> = BaseViewConfig<TViewSpecific> & {
|
|
21
12
|
hidden: boolean;
|
|
22
13
|
originalIndex: number;
|
|
23
14
|
originalVisible: boolean;
|
|
@@ -62,15 +53,6 @@ export interface IConfigColumnCards extends Omit<IConfigColumn, 'frozen' | 'orig
|
|
|
62
53
|
originalShowTitle: boolean;
|
|
63
54
|
}
|
|
64
55
|
export type ViewMode = 'table' | 'cards';
|
|
65
|
-
/**
|
|
66
|
-
* Configuración base del Grid (API pública original)
|
|
67
|
-
* USO: Tipo base para defaultUserColumns - mantiene retrocompatibilidad
|
|
68
|
-
* IMPORTANTE: No modificar para mantener retrocompatibilidad con código existente
|
|
69
|
-
*/
|
|
70
|
-
export interface IGridConfig {
|
|
71
|
-
columnsConfig: BaseConfigColumn[];
|
|
72
|
-
columnsWidths: Record<RowKey, number>;
|
|
73
|
-
}
|
|
74
56
|
/**
|
|
75
57
|
* Configuración extendida del Grid para soportar múltiples vistas
|
|
76
58
|
* USO: Para nuevas implementaciones que soporten cards y futuras vistas
|
|
@@ -78,8 +60,9 @@ export interface IGridConfig {
|
|
|
78
60
|
*/
|
|
79
61
|
export interface IGridConfigExtended extends IGridConfig {
|
|
80
62
|
columnsConfigCards?: BaseConfigColumnCards[];
|
|
63
|
+
viewMode?: ViewMode;
|
|
81
64
|
}
|
|
82
|
-
export interface DataGridProviderProps<TRow, TSummaryRow, TKey extends RowKey = RowKey> extends Pick<GridProps<TRow, TSummaryRow, TKey>, 'rows' | 'columns' | 'rowActionsGetter' | 'rowHeaderHeights' | 'rowHeights' | 'initialRowHeightVariant' | 'checkedRows' | 'onCheckedRowsChange' | 'rowKeyGetter' | 'onChangeUserColumns' | 'defaultUserColumns' | 'externalSortSettings' | 'externalFilterSettings' | 'defaultViewMode' | 'cardsViewConfig'> {
|
|
65
|
+
export interface DataGridProviderProps<TRow, TSummaryRow, TKey extends RowKey = RowKey> extends Pick<GridProps<TRow, TSummaryRow, TKey>, 'rows' | 'columns' | 'rowActionsGetter' | 'rowHeaderHeights' | 'rowHeights' | 'initialRowHeightVariant' | 'checkedRows' | 'onCheckedRowsChange' | 'checkedRowsMultiple' | 'rowKeyGetter' | 'onChangeUserColumns' | 'defaultUserColumns' | 'externalSortSettings' | 'externalFilterSettings' | 'defaultViewMode' | 'cardsViewConfig'> {
|
|
83
66
|
id: number | string;
|
|
84
67
|
children: ReactNode;
|
|
85
68
|
rowsCount: number;
|
|
@@ -92,7 +75,7 @@ export type RowHeightState = {
|
|
|
92
75
|
rowHeight: number;
|
|
93
76
|
rowHeaderHeight: number;
|
|
94
77
|
};
|
|
95
|
-
export interface DataGridContextProps<TRow, TSummaryRow, TKey extends RowKey = RowKey> extends Pick<DataGridProviderProps<TRow, TSummaryRow, TKey>, 'rows' | 'checkedRows' | 'onCheckedRowsChange' | 'rowHeights' | 'rowsCount' | 'rowActionsGetter' | 'rowKeyGetter' | 'onChangeUserColumns' | 'externalSortSettings' | 'externalFilterSettings' | 'viewMode' | 'onViewModeChange' | 'defaultViewMode' | 'cardsViewConfig'> {
|
|
78
|
+
export interface DataGridContextProps<TRow, TSummaryRow, TKey extends RowKey = RowKey> extends Pick<DataGridProviderProps<TRow, TSummaryRow, TKey>, 'rows' | 'checkedRows' | 'onCheckedRowsChange' | 'checkedRowsMultiple' | 'rowHeights' | 'rowsCount' | 'rowActionsGetter' | 'rowKeyGetter' | 'onChangeUserColumns' | 'externalSortSettings' | 'externalFilterSettings' | 'viewMode' | 'onViewModeChange' | 'defaultViewMode' | 'cardsViewConfig'> {
|
|
96
79
|
getConfigColumns: (viewMode: ViewMode) => IViewConfig[];
|
|
97
80
|
onChangeColumnsConfig: (viewMode: ViewMode, config: IViewConfig[]) => void;
|
|
98
81
|
onChangeColumnsOrder: (viewMode: ViewMode, sourceKey: string, targetKey: string) => void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ViewMode } from '../../contexts/DataGridContext/types';
|
|
2
|
+
/**
|
|
3
|
+
* Obtiene todos los modos de vista disponibles en el DataGrid.
|
|
4
|
+
*
|
|
5
|
+
* ## Modos disponibles
|
|
6
|
+
*
|
|
7
|
+
* - `table`: Vista de tabla tradicional con filas y columnas
|
|
8
|
+
* - `cards`: Vista de tarjetas para visualización compacta
|
|
9
|
+
*
|
|
10
|
+
* ## Uso
|
|
11
|
+
*
|
|
12
|
+
* Esta función centraliza los modos de vista disponibles,
|
|
13
|
+
* facilitando la extensión futura si se agregan nuevos modos.
|
|
14
|
+
* @returns Array con los modos de vista disponibles
|
|
15
|
+
* @example
|
|
16
|
+
* const modes = getAllViewModes();
|
|
17
|
+
* // ['table', 'cards']
|
|
18
|
+
*/
|
|
19
|
+
export declare const getAllViewModes: () => ViewMode[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getAllViewModes } from './getAllViewModes';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Column } from 'react-data-grid';
|
|
2
|
+
import { Maybe } from '@m4l/core';
|
|
3
|
+
import { RowKey } from '../../types';
|
|
4
|
+
import { IGridConfig } from '../../types.helpers';
|
|
5
|
+
/**
|
|
6
|
+
* Obtiene la configuración de anchos de las columnas del DataGrid.
|
|
7
|
+
*
|
|
8
|
+
* ## Flujo de persistencia
|
|
9
|
+
*
|
|
10
|
+
* Esta función obtiene los anchos de columnas siguiendo una jerarquía de precedencia:
|
|
11
|
+
*
|
|
12
|
+
* 1. **defaultUserColumns** (Backend/API) - Prioridad máxima
|
|
13
|
+
* Configuración que viene del backend cuando el componente se monta.
|
|
14
|
+
* En producción, esta es la fuente principal de datos persistidos.
|
|
15
|
+
*
|
|
16
|
+
* 2. **localStorage** - Fallback local
|
|
17
|
+
* Solo se usa cuando NO hay configuración del backend.
|
|
18
|
+
* Útil para desarrollo o cuando no hay integración con backend.
|
|
19
|
+
*
|
|
20
|
+
* Si no se encuentra configuración en ninguna fuente, la columna no se incluye
|
|
21
|
+
* en el Map resultante y usará el ancho por defecto definido en la columna.
|
|
22
|
+
*
|
|
23
|
+
* ## Relación con saveColumnsWidth
|
|
24
|
+
*
|
|
25
|
+
* - Cuando el usuario modifica anchos, `saveColumnsWidth` envía los cambios al backend
|
|
26
|
+
* mediante el callback `onChangeUserColumns`
|
|
27
|
+
* - En la siguiente carga, esos datos vuelven como `defaultUserColumns`
|
|
28
|
+
* - localStorage es solo un fallback cuando no hay callback configurado
|
|
29
|
+
* @template TRow - Tipo de datos de cada fila del DataGrid
|
|
30
|
+
* @template TSummaryRow - Tipo de datos de la fila de resumen del DataGrid
|
|
31
|
+
* @param id - Identificador único del DataGrid. Se usa como prefijo para la key en localStorage (fallback)
|
|
32
|
+
* @param columns - Array de columnas del DataGrid con su configuración
|
|
33
|
+
* @param defaultUserColumns - Configuración del usuario obtenida del backend/API.
|
|
34
|
+
* Esta es la fuente principal en producción.
|
|
35
|
+
* @returns Map donde la key es el identificador de la columna (column.key) y el value
|
|
36
|
+
* es el ancho configurado (número en píxeles o string con unidad CSS)
|
|
37
|
+
* @example
|
|
38
|
+
* // Sin configuración del backend (usa localStorage como fallback)
|
|
39
|
+
* const columnsWidths = getColumnsWidth('my-grid', columns, null);
|
|
40
|
+
* @example
|
|
41
|
+
* // Con configuración del backend (caso típico en producción)
|
|
42
|
+
* const columnsWidths = getColumnsWidth('my-grid', columns, {
|
|
43
|
+
* columnsWidths: { name: 200, email: 300 }
|
|
44
|
+
* });
|
|
45
|
+
* @see saveColumnsWidth - Función complementaria para persistir la configuración
|
|
46
|
+
*/
|
|
47
|
+
export declare function getColumnsWidth<TRow, TSummaryRow>(id: RowKey, columns: readonly Column<TRow, TSummaryRow>[], defaultUserColumns: Maybe<IGridConfig>): Map<string, Maybe<string | number>>;
|