@m4l/components 9.2.64 → 9.2.65-JT17072025.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.
Files changed (129) hide show
  1. package/components/AppBar/AppBar.js +12 -10
  2. package/components/AppBar/constants.d.ts +1 -1
  3. package/components/AppBar/constants.js +1 -1
  4. package/components/AppBar/slots/AppBarEnum.d.ts +1 -5
  5. package/components/AppBar/slots/AppBarEnum.js +0 -4
  6. package/components/AppBar/slots/AppBarSlots.d.ts +4 -18
  7. package/components/AppBar/slots/AppBarSlots.js +3 -27
  8. package/components/AppBar/styles.js +0 -42
  9. package/components/AppBar/types.d.ts +8 -0
  10. package/components/Chip/ChipStyles.js +1 -1
  11. package/components/DataGrid/Datagrid.styles.js +95 -8
  12. package/components/DataGrid/formatters/ColumnBooleanFormatter/formatter.d.ts +2 -1
  13. package/components/DataGrid/formatters/ColumnBooleanFormatter/formatter.js +2 -3
  14. package/components/DataGrid/formatters/ColumnBooleanFormatter/useColumnBoolean.d.ts +1 -1
  15. package/components/DataGrid/formatters/ColumnChipStatusFormatter/formatter.d.ts +2 -1
  16. package/components/DataGrid/formatters/ColumnChipStatusFormatter/formatter.js +5 -4
  17. package/components/DataGrid/formatters/ColumnChipStatusFormatter/useColumnChipStatus.d.ts +1 -1
  18. package/components/DataGrid/formatters/ColumnConcatenatedValuesFormatter/formatter.d.ts +2 -1
  19. package/components/DataGrid/formatters/ColumnConcatenatedValuesFormatter/formatter.js +11 -4
  20. package/components/DataGrid/formatters/ColumnConcatenatedValuesFormatter/useColumnConcatenatedValues.d.ts +1 -1
  21. package/components/DataGrid/formatters/ColumnDateFormatter/formatter.d.ts +2 -1
  22. package/components/DataGrid/formatters/ColumnDateFormatter/formatter.js +13 -4
  23. package/components/DataGrid/formatters/ColumnDateFormatter/useColumnDate.d.ts +1 -1
  24. package/components/DataGrid/formatters/ColumnIconFormatter/formatter.d.ts +2 -1
  25. package/components/DataGrid/formatters/ColumnIconFormatter/formatter.js +2 -2
  26. package/components/DataGrid/formatters/ColumnIconFormatter/useColumnIcon.d.ts +1 -1
  27. package/components/DataGrid/formatters/ColumnInteractiveCheckFormatter/types.d.ts +2 -2
  28. package/components/DataGrid/formatters/ColumnNestedValueFormatter/formatter.d.ts +2 -1
  29. package/components/DataGrid/formatters/ColumnNestedValueFormatter/formatter.js +4 -3
  30. package/components/DataGrid/formatters/ColumnNestedValueFormatter/useColumnNestedValue.d.ts +1 -1
  31. package/components/DataGrid/formatters/ColumnPointsFormatter/formatter.d.ts +2 -1
  32. package/components/DataGrid/formatters/ColumnPointsFormatter/formatter.js +13 -5
  33. package/components/DataGrid/formatters/ColumnPointsFormatter/useColumnPoints.d.ts +1 -1
  34. package/components/DataGrid/formatters/ColumnPriceFormatter/formatter.d.ts +2 -1
  35. package/components/DataGrid/formatters/ColumnPriceFormatter/formatter.js +11 -4
  36. package/components/DataGrid/formatters/ColumnPriceFormatter/useColumnPrice.d.ts +1 -1
  37. package/components/DataGrid/formatters/ColumnSetCheckFormatter/formatter.d.ts +2 -2
  38. package/components/DataGrid/formatters/ColumnSetCheckFormatter/formatter.js +1 -1
  39. package/components/DataGrid/formatters/ColumnSetCheckFormatter/useColumnSetCheck.d.ts +1 -1
  40. package/components/DataGrid/formatters/ColumnUncertaintyFormatter/formatter.d.ts +2 -1
  41. package/components/DataGrid/formatters/ColumnUncertaintyFormatter/formatter.js +15 -6
  42. package/components/DataGrid/formatters/ColumnUncertaintyFormatter/useColumnUncertainty.d.ts +1 -1
  43. package/components/DataGrid/index.d.ts +1 -1
  44. package/components/DataGrid/subcomponents/HeaderActions/subcomponents/Settings/subcomponents/ColumnsConfig/index.js +4 -5
  45. package/components/DataGrid/subcomponents/Table/hooks/getDragHeaderRenderer.d.ts +2 -2
  46. package/components/DataGrid/subcomponents/Table/hooks/useHeaderMenuActions.d.ts +2 -2
  47. package/components/DataGrid/subcomponents/Table/hooks/useHeaderMenuActions.js +15 -6
  48. package/components/DataGrid/subcomponents/Table/hooks/useSortColumnsRows.js +13 -7
  49. package/components/DataGrid/subcomponents/Table/index.d.ts +3 -1
  50. package/components/DataGrid/subcomponents/Table/index.js +38 -9
  51. package/components/DataGrid/subcomponents/Table/subcomponents/ActionsColumn.js +1 -1
  52. package/components/DataGrid/subcomponents/Table/subcomponents/CheckboxFormatter.d.ts +2 -2
  53. package/components/DataGrid/subcomponents/Table/subcomponents/DraggableHeaderRenderer.d.ts +2 -2
  54. package/components/DataGrid/subcomponents/Table/subcomponents/DraggableHeaderRenderer.js +10 -8
  55. package/components/DataGrid/subcomponents/Table/subcomponents/HeaderRenderClick/HeaderRenderClick.js +1 -1
  56. package/components/DataGrid/subcomponents/Table/subcomponents/SelectColumn.js +7 -7
  57. package/components/DataGrid/subcomponents/editors/TextEditor/index.d.ts +15 -5
  58. package/components/DataGrid/types.d.ts +9 -4
  59. package/components/LoadingError/slots/LoadingErrorSlots.js +1 -1
  60. package/components/NumberInput/hooks/useNumberInput/useNumberInput.js +0 -2
  61. package/components/SideBar/SideBar.js +6 -2
  62. package/components/SideBar/constants.d.ts +8 -6
  63. package/components/SideBar/constants.js +8 -8
  64. package/components/SideBar/context/sideBarContext/index.js +9 -10
  65. package/components/SideBar/context/sideBarContext/types.d.ts +2 -10
  66. package/components/SideBar/slots/SideBarEnum.d.ts +8 -7
  67. package/components/SideBar/slots/SideBarEnum.js +6 -5
  68. package/components/SideBar/slots/SideBarSlots.d.ts +12 -9
  69. package/components/SideBar/slots/SideBarSlots.js +36 -28
  70. package/components/SideBar/styles.js +3 -3
  71. package/components/SideBar/subcomponents/ContentComponent/index.js +12 -68
  72. package/components/SideBar/subcomponents/ContentComponent/style.js +134 -107
  73. package/components/SideBar/subcomponents/{Promotion → FooterComponent}/index.d.ts +1 -1
  74. package/components/SideBar/subcomponents/{Promotion → FooterComponent}/index.js +4 -4
  75. package/components/SideBar/subcomponents/{Promotion → FooterComponent}/styles.js +8 -2
  76. package/components/SideBar/subcomponents/HeaderComponent/HeaderComponent.d.ts +5 -0
  77. package/components/SideBar/subcomponents/HeaderComponent/HeaderComponent.js +37 -0
  78. package/components/SideBar/subcomponents/HeaderComponent/index.d.ts +1 -0
  79. package/components/SideBar/subcomponents/HeaderComponent/index.js +1 -0
  80. package/components/SideBar/subcomponents/HeaderComponent/styles.d.ts +2 -0
  81. package/components/SideBar/subcomponents/HeaderComponent/styles.js +40 -0
  82. package/components/SideBar/subcomponents/SideBarDesktop/index.js +4 -3
  83. package/components/SideBar/subcomponents/SideBarDesktop/styles.js +4 -32
  84. package/components/SideBar/subcomponents/SideBarMobile/index.js +1 -1
  85. package/components/SideBar/subcomponents/TreeGroupItems/index.js +4 -3
  86. package/components/SideBar/subcomponents/TreeGroupItems/styles.js +112 -2
  87. package/components/SideBar/subcomponents/TreeGroupItems/subcomponents/AdormentIcon/AdormentIcon.d.ts +7 -0
  88. package/components/SideBar/subcomponents/TreeGroupItems/subcomponents/AdormentIcon/AdormentIcon.js +12 -0
  89. package/components/SideBar/subcomponents/TreeGroupItems/subcomponents/AdormentIcon/types.d.ts +4 -0
  90. package/components/SideBar/subcomponents/TreeGroupItems/subcomponents/NodeMenuItem/index.js +9 -7
  91. package/components/SideBar/subcomponents/TreeGroupItems/subcomponents/NodeMenuItem/types.d.ts +1 -0
  92. package/components/SideBar/subcomponents/TreeGroupItems/subcomponents/NodeMenuItemMain/NodeMenuItemMain.js +11 -6
  93. package/components/SideBar/types.d.ts +12 -7
  94. package/components/areas/contexts/AreasContext/store.js +2 -2
  95. package/components/commercial/HamburgerMenu/HamburgerMenu.js +1 -2
  96. package/components/hook-form/RHFAutocompleteAsync/reducer/RHFAutocompleteReducer.js +0 -5
  97. package/components/hook-form/RHFPeriod/subcomponents/Period/Period.js +4 -4
  98. package/components/hook-form/RHFPeriod/subcomponents/Period/dictionary.d.ts +1 -1
  99. package/components/hook-form/RHFPeriod/subcomponents/Period/dictionary.js +7 -6
  100. package/components/mui_extended/MenuItem/MenuItem.js +3 -2
  101. package/components/mui_extended/MenuItem/types.d.ts +4 -0
  102. package/components/mui_extended/TabContent/TabContent.js +2 -2
  103. package/components/mui_extended/TabContent/TabContent.styles.js +1 -1
  104. package/components/mui_extended/TabContent/types.d.ts +13 -1
  105. package/package.json +2 -2
  106. package/storybook/components/DataGrid/DataGrid.stories.d.ts +4 -0
  107. package/storybook/components/DataGrid/helpers/types.d.ts +3 -2
  108. package/storybook/components/SideBar/SideBar.stories.d.ts +5 -11
  109. package/storybook/components/SideBar/subcomponents/FooterComponentHost/FooterComponentHost.d.ts +4 -0
  110. package/storybook/components/SideBar/subcomponents/FooterComponentHost/index.d.ts +1 -0
  111. package/storybook/components/SideBar/subcomponents/FooterComponentMicrofrontend/FooterComponentMicrofrontend.d.ts +4 -0
  112. package/storybook/components/SideBar/subcomponents/FooterComponentMicrofrontend/FooterComponentMicrofrontend.stories.d.ts +14 -0
  113. package/storybook/components/SideBar/subcomponents/FooterComponentMicrofrontend/constants.d.ts +1 -0
  114. package/storybook/components/SideBar/subcomponents/FooterComponentMicrofrontend/index.d.ts +1 -0
  115. package/storybook/components/SideBar/subcomponents/HeaderComponentHost/HeaderComponentHost.d.ts +5 -0
  116. package/storybook/components/SideBar/subcomponents/HeaderComponentHost/constants.d.ts +1 -0
  117. package/storybook/components/SideBar/subcomponents/HeaderComponentMicrofrontend/HeaderComponentMicrofrontend.d.ts +5 -0
  118. package/storybook/components/SideBar/subcomponents/HeaderComponentMicrofrontend/constants.d.ts +1 -0
  119. package/utils/getSizeStyles/getSizeStyles.d.ts +1 -1
  120. package/components/SideBar/subcomponents/HeaderSidebar/index.d.ts +0 -6
  121. package/components/SideBar/subcomponents/HeaderSidebar/styles.d.ts +0 -2
  122. package/components/SideBar/subcomponents/HeaderSidebar/styles.js +0 -24
  123. package/components/SideBar/subcomponents/HeaderSidebar/types.d.ts +0 -5
  124. package/helpers/getFieldValueWithRow.js +0 -10
  125. package/storybook/components/SideBar/subcomponents/FooterPromotion/FooterPromotion.d.ts +0 -4
  126. package/storybook/components/SideBar/subcomponents/FooterPromotion/index.d.ts +0 -1
  127. /package/components/SideBar/subcomponents/{Promotion → FooterComponent}/styles.d.ts +0 -0
  128. /package/components/SideBar/subcomponents/{Promotion → FooterComponent}/types.d.ts +0 -0
  129. /package/storybook/components/SideBar/subcomponents/{FooterPromotion → FooterComponentHost}/constants.d.ts +0 -0
@@ -3,18 +3,19 @@ import { useModuleDictionary, useModuleSkeleton } from "@m4l/core";
3
3
  import { u as useSideBar } from "../../hooks/useSideBar/index.js";
4
4
  import { T as TEST_PROP_ID } from "../../../../test/constants_no_mock.js";
5
5
  import { g as getNameDataTestId } from "../../tests/utils.js";
6
- import { h as ContainerTreeGroupItemsStyled, i as ContainerContentGroupsStyled, j as ContainerContentTitleStyled } from "../../slots/SideBarSlots.js";
6
+ import { f as ContainerTreeGroupItemsStyled, g as ContainerContentGroupsStyled, h as ContainerContentTitleStyled } from "../../slots/SideBarSlots.js";
7
7
  import { N as NodeMenuItemMain } from "./subcomponents/NodeMenuItemMain/NodeMenuItemMain.js";
8
8
  import { u as useComponentSize } from "../../../../hooks/useComponentSize/useComponentSize.js";
9
9
  import { M as MenuItem } from "../../../mui_extended/MenuItem/MenuItem.js";
10
10
  const TreeGroupItems = (contentGroupsProps) => {
11
- const { menuData } = useSideBar();
11
+ const { menuData, anchored } = useSideBar();
12
12
  const { getLabel } = useModuleDictionary();
13
13
  const { size } = contentGroupsProps;
14
14
  const { currentSize } = useComponentSize(size);
15
15
  const isSkeleton = useModuleSkeleton();
16
16
  const ownerState = {
17
- noItems: menuData.length === 0
17
+ noItems: menuData.length === 0,
18
+ anchored
18
19
  };
19
20
  const renderItemsDisabled = () => {
20
21
  return /* @__PURE__ */ jsx(ContainerContentTitleStyled, { ownerState: { disabled: true }, children: /* @__PURE__ */ jsx(
@@ -1,3 +1,4 @@
1
+ import { g as getSizeStyles } from "../../../../utils/getSizeStyles/getSizeStyles.js";
1
2
  const contentGroupStyles = {
2
3
  /**
3
4
  * Container for the group items in the sidebar
@@ -9,9 +10,17 @@ const contentGroupStyles = {
9
10
  flex: 1,
10
11
  flexDirection: "column",
11
12
  overflowY: "auto",
12
- padding: `${theme.vars.size.baseSpacings.sp3} 0px 0px 0px`,
13
13
  alignItems: "center",
14
- justifyContent: ownerState?.noItems ? "center" : "flex-start"
14
+ justifyContent: ownerState?.noItems ? "center" : "flex-start",
15
+ transition: "all 0.5s",
16
+ paddingTop: theme.vars.size.baseSpacings.sp3,
17
+ paddingLeft: theme.vars.size.baseSpacings.sp4,
18
+ paddingRight: theme.vars.size.baseSpacings.sp4,
19
+ gap: theme.vars.size.baseSpacings.sp4,
20
+ ...!ownerState?.anchored && !theme.generalSettings.isMobile && {
21
+ transition: "all 0.5s",
22
+ visibility: "hidden"
23
+ }
15
24
  }),
16
25
  /**
17
26
  * Wrapper for every principal item group in the sidebar
@@ -28,6 +37,7 @@ const contentGroupStyles = {
28
37
  containerContentTitle: ({ theme, ownerState }) => ({
29
38
  padding: `${theme.vars.size.baseSpacings.sp3} ${theme.vars.size.baseSpacings.sp4} ${theme.vars.size.baseSpacings.sp1}`,
30
39
  color: theme.vars.palette.text.primary,
40
+ width: "100%",
31
41
  textAlign: "left",
32
42
  "& .MuiTypography-root": {
33
43
  color: !ownerState?.disabled ? theme.vars.palette.text.primary : `${theme.vars.palette.text.primary} !important`
@@ -62,6 +72,106 @@ const contentGroupStyles = {
62
72
  alignSelf: "center",
63
73
  lineHeight: 0,
64
74
  marginLeft: "auto"
75
+ }),
76
+ /**
77
+ * Wrapper for the menu item
78
+ */
79
+ wrapperMenuItem: ({ theme, ownerState }) => ({
80
+ display: "flex",
81
+ position: "relative",
82
+ paddingTop: theme.vars.size.baseSpacings.sp2,
83
+ paddingBottom: theme.vars.size.baseSpacings.sp2,
84
+ paddingLeft: theme.vars.size.baseSpacings.sp2,
85
+ paddingRight: theme.vars.size.baseSpacings.sp2,
86
+ ...getSizeStyles(
87
+ theme,
88
+ ownerState?.size || "medium",
89
+ "container",
90
+ (size) => ({
91
+ minHeight: size,
92
+ height: "auto"
93
+ })
94
+ )
95
+ }),
96
+ /**
97
+ * Styles applied to the container of the adornment icon in the header component
98
+ */
99
+ containerAdornmentIcon: ({ theme, ownerState }) => ({
100
+ overflow: "hidden",
101
+ borderRadius: theme.vars.size.borderRadius["r1-5"],
102
+ display: "flex",
103
+ justifyContent: "center",
104
+ alignItems: "center",
105
+ position: "relative",
106
+ width: "fit-content",
107
+ height: "fit-content",
108
+ minWidth: "fit-content",
109
+ minHeight: "fit-content",
110
+ padding: "1px",
111
+ "& .M4LIcon-root": {
112
+ width: "fit-content",
113
+ height: "fit-content",
114
+ padding: theme.vars.size.baseSpacings["sp0-5"],
115
+ "& .M4LIcon-icon": {
116
+ ...getSizeStyles(
117
+ theme,
118
+ ownerState?.size || "medium",
119
+ "case",
120
+ (sizeValue) => ({
121
+ width: `${sizeValue}!important`,
122
+ height: `${sizeValue}!important`,
123
+ minWidth: `${sizeValue}!important`,
124
+ minHeight: `${sizeValue}!important`
125
+ })
126
+ )
127
+ }
128
+ },
129
+ ...ownerState?.variant !== "itemActive" && ownerState?.variant !== "normal" && {
130
+ "& .M4LIcon-icon": {
131
+ backgroundColor: `${theme.vars.palette.chips.persianGreen.contained.colorTone}!important`
132
+ }
133
+ },
134
+ ...ownerState?.variant === "normal" && {
135
+ "& .M4LIcon-icon": {
136
+ backgroundColor: `${theme.vars.palette.text.secondary}!important`
137
+ }
138
+ },
139
+ ...ownerState?.variant === "main" && {
140
+ backgroundColor: theme.vars.palette.chips.persianGreen.contained.backgroundColorTone
141
+ },
142
+ ...ownerState?.variant === "root" && {
143
+ backgroundColor: theme.vars.palette.primary.enabled
144
+ },
145
+ ...ownerState?.variant === "itemActive" && {
146
+ boxShadow: theme.vars.customShadows.primary2,
147
+ background: `linear-gradient(to right,
148
+ ${theme.vars.palette.primary.opacityGradient1},
149
+ ${theme.vars.palette.primary.opacityGradient2})`,
150
+ "& .M4LSideBar-backgroundAdornmentIcon": {
151
+ background: theme.vars.palette.background.default
152
+ },
153
+ "&::before": {
154
+ content: '""',
155
+ position: "absolute",
156
+ inset: "1.4px",
157
+ background: theme.vars.palette.primary.enabledOpacity,
158
+ borderRadius: "5px"
159
+ },
160
+ "& .M4LIcon-icon": {
161
+ backgroundColor: `${theme.vars.palette.primary.enabled}!important`
162
+ }
163
+ }
164
+ }),
165
+ /**
166
+ * Styles applied to the background of the adornment icon in the header component
167
+ */
168
+ backgroundAdornmentIcon: () => ({
169
+ width: "100%",
170
+ height: "100%",
171
+ display: "flex",
172
+ justifyContent: "center",
173
+ alignItems: "center",
174
+ borderRadius: "5px"
65
175
  })
66
176
  };
67
177
  export {
@@ -0,0 +1,7 @@
1
+ import { AdornmentIconProps } from './types';
2
+ /**
3
+ * Adornment icon component
4
+ * @param props - Adornment icon props
5
+ * @returns Adornment icon component
6
+ */
7
+ export declare const AdornmentIcon: (props: AdornmentIconProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { u as useSideBar } from "../../../../hooks/useSideBar/index.js";
3
+ import { i as ContainerAdornmentIconStyled, j as BackgroundAdornmentIconStyled } from "../../../../slots/SideBarSlots.js";
4
+ import { I as Icon } from "../../../../../Icon/Icon.js";
5
+ const AdornmentIcon = (props) => {
6
+ const { icon, variant = "main" } = props;
7
+ const { classes } = useSideBar();
8
+ return /* @__PURE__ */ jsx(ContainerAdornmentIconStyled, { ownerState: { variant }, children: /* @__PURE__ */ jsx(BackgroundAdornmentIconStyled, { className: classes.backgroundAdornmentIcon, children: /* @__PURE__ */ jsx(Icon, { src: icon }) }) });
9
+ };
10
+ export {
11
+ AdornmentIcon as A
12
+ };
@@ -0,0 +1,4 @@
1
+ export interface AdornmentIconProps {
2
+ icon: string;
3
+ variant: 'main' | 'root' | 'itemActive' | 'normal';
4
+ }
@@ -5,14 +5,15 @@ import { u as useSideBar } from "../../../../hooks/useSideBar/index.js";
5
5
  import { T as TEST_PROP_ID } from "../../../../../../test/constants_no_mock.js";
6
6
  import { g as getNameDataTestId } from "../../../../tests/utils.js";
7
7
  import { A as ArrowIcon } from "../ArrowIcon/index.js";
8
- import { l as ContainerNodeMenuItemStyled } from "../../../../slots/SideBarSlots.js";
9
- import { c as CLASS_NAME_MENU_ACTIVE, d as CLASS_NAME_ITEM_IN_TREE_ACTIVE, e as CLASS_NAME_HAS_CHILDREN } from "../../../../constants.js";
8
+ import { l as ContainerNodeMenuItemStyled, W as WrapperMenuItemStyled } from "../../../../slots/SideBarSlots.js";
9
+ import { a as CLASS_NAME_MENU_ACTIVE, b as CLASS_NAME_ITEM_IN_TREE_ACTIVE, c as CLASS_NAME_HAS_CHILDREN, d as CLASS_NAME_ITEM_CLOSED } from "../../../../constants.js";
10
10
  import { useModuleSkeleton } from "@m4l/core";
11
+ import { A as AdornmentIcon } from "../AdormentIcon/AdormentIcon.js";
11
12
  import { u as useCollapse } from "../../../../hooks/useCollapse/useCollapse.js";
12
13
  import { u as useComponentSize } from "../../../../../../hooks/useComponentSize/useComponentSize.js";
13
14
  import { M as MenuItem } from "../../../../../mui_extended/MenuItem/MenuItem.js";
14
15
  function NodeMenuItem(props) {
15
- const { item, size, defaultOpen = false, className, isLastSibling = false } = props;
16
+ const { item, size, defaultOpen = false, className, isLastSibling = false, isRoot = false } = props;
16
17
  const { urlIconPrefix, classes } = useSideBar();
17
18
  const { isOpen, handlerClick, hasChildren } = useCollapse(item, defaultOpen);
18
19
  const { currentSize } = useComponentSize(size);
@@ -33,23 +34,24 @@ function NodeMenuItem(props) {
33
34
  ownerState,
34
35
  ...process.env.NODE_ENV !== "production" ? { [TEST_PROP_ID]: getNameDataTestId("menuItems") } : {},
35
36
  children: [
36
- /* @__PURE__ */ jsx(
37
+ /* @__PURE__ */ jsx(WrapperMenuItemStyled, { ownerState, className: classes.wrapperMenuItem, children: /* @__PURE__ */ jsx(
37
38
  MenuItem,
38
39
  {
39
40
  className: clsx(
40
41
  CLASS_NAME_ITEM_STATE,
41
42
  className,
42
43
  item.children && item.children.length > 0 && CLASS_NAME_HAS_CHILDREN,
43
- item.itemInTreeActive && CLASS_NAME_ITEM_IN_TREE_ACTIVE
44
+ item.itemInTreeActive && CLASS_NAME_ITEM_IN_TREE_ACTIVE,
45
+ !isOpen && CLASS_NAME_ITEM_CLOSED
44
46
  ),
45
47
  label: item.title,
46
48
  selected: item.active,
47
- startIcon: `${urlIconPrefix}${item.iconUrl}`,
49
+ startIcon: /* @__PURE__ */ jsx(AdornmentIcon, { icon: `${urlIconPrefix}${item.iconUrl}`, variant: isRoot && item.itemInTreeActive ? "root" : item.active ? "itemActive" : "normal" }),
48
50
  endIcon: hasChildren ? /* @__PURE__ */ jsx(ArrowIcon, { openState: isOpen, active: item.active }) : null,
49
51
  onClick: () => handlerClick(),
50
52
  size: currentSize
51
53
  }
52
- ),
54
+ ) }),
53
55
  hasChildren ? /* @__PURE__ */ jsx(Collapse, { in: isOpen, timeout: "auto", unmountOnExit: true, children: (item.children || []).map((child, index) => /* @__PURE__ */ jsx(
54
56
  NodeMenuItem,
55
57
  {
@@ -6,4 +6,5 @@ export type NodeMenuItemProps = {
6
6
  size: Extract<Sizes, 'small' | 'medium'>;
7
7
  className?: string;
8
8
  isLastSibling?: boolean;
9
+ isRoot?: boolean;
9
10
  };
@@ -1,17 +1,20 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
- import { m as ContainerNodeMenuItemMainStyled, M as MenuItemMainStyled } from "../../../../slots/SideBarSlots.js";
2
+ import { m as ContainerNodeMenuItemMainStyled, W as WrapperMenuItemStyled, M as MenuItemMainStyled } from "../../../../slots/SideBarSlots.js";
3
3
  import { g as getNameDataTestId } from "../../../../tests/utils.js";
4
4
  import { T as TEST_PROP_ID } from "../../../../../../test/constants_no_mock.js";
5
5
  import { A as ArrowIcon } from "../ArrowIcon/index.js";
6
6
  import { Collapse } from "@mui/material";
7
7
  import { N as NodeMenuItem } from "../NodeMenuItem/index.js";
8
- import { b as CLASS_NAME_IS_ROOT } from "../../../../constants.js";
8
+ import { C as CLASS_NAME_IS_ROOT } from "../../../../constants.js";
9
9
  import clsx from "clsx";
10
10
  import { useModuleSkeleton } from "@m4l/core";
11
+ import { u as useSideBar } from "../../../../hooks/useSideBar/index.js";
12
+ import { A as AdornmentIcon } from "../AdormentIcon/AdormentIcon.js";
11
13
  import { u as useComponentSize } from "../../../../../../hooks/useComponentSize/useComponentSize.js";
12
14
  import { u as useCollapse } from "../../../../hooks/useCollapse/useCollapse.js";
13
15
  const NodeMenuItemMain = (props) => {
14
16
  const { item, size, defaultOpen = false } = props;
17
+ const { urlIconPrefix, classes } = useSideBar();
15
18
  const { currentSize } = useComponentSize(size);
16
19
  const { isOpen, handlerClick, hasChildren } = useCollapse(item, defaultOpen);
17
20
  const isSkeleton = useModuleSkeleton();
@@ -27,15 +30,16 @@ const NodeMenuItemMain = (props) => {
27
30
  ownerState,
28
31
  ...process.env.NODE_ENV !== "production" ? { [TEST_PROP_ID]: getNameDataTestId("menuItems") } : {},
29
32
  children: [
30
- /* @__PURE__ */ jsx(
33
+ /* @__PURE__ */ jsx(WrapperMenuItemStyled, { ownerState, className: classes.wrapperMenuItem, children: /* @__PURE__ */ jsx(
31
34
  MenuItemMainStyled,
32
35
  {
33
36
  label: item.title,
34
- startIcon: hasChildren ? /* @__PURE__ */ jsx(ArrowIcon, { openState: isOpen, active: item.active }) : null,
37
+ startIcon: /* @__PURE__ */ jsx(AdornmentIcon, { icon: `${urlIconPrefix}${item.iconUrl}`, variant: "main" }),
38
+ endIcon: hasChildren ? /* @__PURE__ */ jsx(ArrowIcon, { openState: isOpen, active: item.active }) : null,
35
39
  onClick: () => handlerClick(),
36
40
  size: currentSize
37
41
  }
38
- ),
42
+ ) }),
39
43
  /* @__PURE__ */ jsx(Collapse, { in: isOpen, timeout: "auto", unmountOnExit: true, children: (item.children || []).map((child, index) => /* @__PURE__ */ jsx(
40
44
  NodeMenuItem,
41
45
  {
@@ -43,7 +47,8 @@ const NodeMenuItemMain = (props) => {
43
47
  size: currentSize,
44
48
  className: clsx(CLASS_NAME_IS_ROOT),
45
49
  defaultOpen: isSkeleton ? false : true,
46
- isLastSibling: item.children?.length === index + 1
50
+ isLastSibling: item.children?.length === index + 1,
51
+ isRoot: true
47
52
  },
48
53
  child.title
49
54
  )) })
@@ -51,10 +51,6 @@ export interface SideBarProps {
51
51
  * Slogan de la empresa
52
52
  */
53
53
  companySlogan?: string;
54
- /**
55
- * Indica la variación de estilo del componente
56
- */
57
- variantStyle?: 'variantDefault' | 'variantComercial';
58
54
  moduleSelectedId?: string | undefined;
59
55
  onMenuItemClick: (item: MenuDataType) => void;
60
56
  /**
@@ -74,10 +70,19 @@ export interface SideBarProps {
74
70
  */
75
71
  urlIconPrefix?: string;
76
72
  /**
77
- * Promoción del sidebar, se renderiza en el footer del sidebar
73
+ * Variación del componente, puede ser uno de los valores definidos en 'variantDefault' , 'variantComercial'
74
+ */
75
+ variant?: SidebarVariants;
76
+ /**
77
+ * Componente que se renderiza en el encabezado del sidebar
78
+ */
79
+ headerComponent?: ReactElement;
80
+ /**
81
+ * Componente que se renderiza en el pie de página del sidebar
78
82
  */
79
- promotion?: ReactElement;
83
+ footerComponent?: ReactElement;
80
84
  }
85
+ export type SidebarVariants = 'host' | 'microfrontend';
81
86
  /**
82
87
  * Interface que representa el estado de un elemento de menú en la barra lateral.
83
88
  */
@@ -96,7 +101,7 @@ export type SideBarOwnerState = Pick<IMenuDataWithState, 'active' | 'itemInTreeA
96
101
  export type SideBarStyles = M4LOverridesStyleRules<SideBarSlotsType, typeof SIDEBAR_KEY_COMPONENT, Theme>;
97
102
  export type SideBarDesktopStyles = M4LOverridesStyleRules<SideBarDesktopSlots, typeof SIDEBAR_KEY_COMPONENT, Theme>;
98
103
  export type ContentGroupsStyles = M4LOverridesStyleRules<ContentGroupsSlots, typeof SIDEBAR_KEY_COMPONENT, Theme>;
99
- export type HeaderSidebarStyles = M4LOverridesStyleRules<HeaderSidebarSlots, typeof SIDEBAR_KEY_COMPONENT, Theme>;
104
+ export type HeaderComponentStyles = M4LOverridesStyleRules<HeaderSidebarSlots, typeof SIDEBAR_KEY_COMPONENT, Theme>;
100
105
  export type SideBarFooterStyles = M4LOverridesStyleRules<SideBarFooterSlots, typeof SIDEBAR_KEY_COMPONENT, Theme>;
101
106
  export type SideBarMobileStyles = M4LOverridesStyleRules<SideBarMobileSlots, typeof SIDEBAR_KEY_COMPONENT, Theme>;
102
107
  export type ContentComponentStyles = M4LOverridesStyleRules<ContentComponentSlots, typeof SIDEBAR_KEY_COMPONENT, Theme>;
@@ -441,8 +441,8 @@ const createAreasStore = (initProps, storeDevtoolsEnabled = false) => {
441
441
  bounds: {
442
442
  left: MARGIN_GRIDLAYOUT,
443
443
  top: MARGIN_GRIDLAYOUT,
444
- right: -MARGIN_GRIDLAYOUT,
445
- bottom: -MARGIN_GRIDLAYOUT
444
+ right: -10,
445
+ bottom: -10
446
446
  }
447
447
  });
448
448
  }
@@ -44,8 +44,7 @@ const HamburgerMenu = (props) => {
44
44
  onToggleVisible: handlerOnVisible,
45
45
  anchored: false,
46
46
  companyLogoSmallUrl: "",
47
- companyName: "",
48
- variantStyle: "variantComercial"
47
+ companyName: ""
49
48
  }
50
49
  )
51
50
  ]
@@ -65,11 +65,6 @@ const RHFAutocompleteAsyncReducer = (onChangeFilterParms) => (state, action) =>
65
65
  ...state,
66
66
  isOpen: false
67
67
  };
68
- // case actionsType.SET_SELECTED_OPTIONS_TO_AUTOCOMPLETE:
69
- // return {
70
- // ...state,
71
- // selectedOptions: action.payload,
72
- // };
73
68
  default:
74
69
  return state;
75
70
  }
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { useModuleDictionary, useEnvironment } from "@m4l/core";
3
3
  import { E as ETimePeriods } from "./types.js";
4
- import { d as dictionary } from "./dictionary.js";
4
+ import { D as DICTIONARY } from "./dictionary.js";
5
5
  import { useMemo } from "react";
6
6
  import { u as useComponentSize } from "../../../../../hooks/useComponentSize/useComponentSize.js";
7
7
  import { P as PeriodRootStyled, S as SelectStyled, T as TextFieldStyled } from "../../slots/RHFPeriodSlots.js";
@@ -19,9 +19,9 @@ const Period = (props) => {
19
19
  const { host_static_assets, environment_assets } = useEnvironment();
20
20
  const options = useMemo(
21
21
  () => [
22
- { id: ETimePeriods.YEARS.toString(), label: getLabel(dictionary.LABEL_YEARS) },
23
- { id: ETimePeriods.MONTHS.toString(), label: getLabel(dictionary.LABEL_MONTHS) },
24
- { id: ETimePeriods.DAYS.toString(), label: getLabel(dictionary.LABEL_DAYS) }
22
+ { id: ETimePeriods.YEARS.toString(), label: getLabel(DICTIONARY.LABEL_YEARS) },
23
+ { id: ETimePeriods.MONTHS.toString(), label: getLabel(DICTIONARY.LABEL_MONTHS) },
24
+ { id: ETimePeriods.DAYS.toString(), label: getLabel(DICTIONARY.LABEL_DAYS) }
25
25
  ],
26
26
  [getLabel]
27
27
  );
@@ -1,5 +1,5 @@
1
1
  export declare const PERIOD_FORMATTER_DICTIONARY_KEY = "period_formatter";
2
- export declare const dictionary: {
2
+ export declare const DICTIONARY: {
3
3
  LABEL_YEARS: string;
4
4
  LABEL_MONTHS: string;
5
5
  LABEL_DAYS: string;
@@ -1,13 +1,14 @@
1
1
  import { g as getCommonActionsDictionary } from "../../../../CommonActions/dictionary.js";
2
- const dictionary = {
3
- LABEL_YEARS: "period.label_years",
4
- LABEL_MONTHS: "period.label_months",
5
- LABEL_DAYS: "period.label_days"
2
+ const DICTIONARY_KEY = "rhf_period";
3
+ const DICTIONARY = {
4
+ LABEL_YEARS: `${DICTIONARY_KEY}.label_years`,
5
+ LABEL_MONTHS: `${DICTIONARY_KEY}.label_months`,
6
+ LABEL_DAYS: `${DICTIONARY_KEY}.label_days`
6
7
  };
7
8
  function getPeriodComponetsDictionary() {
8
- return ["period"].concat(getCommonActionsDictionary());
9
+ return [DICTIONARY_KEY].concat(getCommonActionsDictionary());
9
10
  }
10
11
  export {
11
- dictionary as d,
12
+ DICTIONARY as D,
12
13
  getPeriodComponetsDictionary as g
13
14
  };
@@ -20,6 +20,7 @@ const MenuItem = (props) => {
20
20
  checked = false,
21
21
  checkable = false,
22
22
  className,
23
+ dataTestId,
23
24
  ...other
24
25
  } = props;
25
26
  const { currentSize } = useComponentSize(size);
@@ -83,7 +84,7 @@ const MenuItem = (props) => {
83
84
  disableRipple: true,
84
85
  size: adjustedSize,
85
86
  className: clsx(className, MENUITEM_CLASSES.root),
86
- "data-testid": "MenuItemRoot",
87
+ "data-testid": dataTestId || "MenuItemRoot",
87
88
  children: [
88
89
  checkable && /* @__PURE__ */ jsx(
89
90
  MenuItemIconCheckedStyled,
@@ -94,7 +95,7 @@ const MenuItem = (props) => {
94
95
  disabled
95
96
  }
96
97
  ),
97
- /* @__PURE__ */ jsxs(MenuItemContainerStyled, { ownerState: { ...ownerState }, children: [
98
+ /* @__PURE__ */ jsxs(MenuItemContainerStyled, { ownerState: { ...ownerState }, className: MENUITEM_CLASSES.menuItemContainer, children: [
98
99
  renderIcon(startIcon, "MenuItemStartIcon", getComponentSlotRoot("MenuItemStartIcon")),
99
100
  /* @__PURE__ */ jsx(
100
101
  MenuItemTypographyStyled,
@@ -53,6 +53,10 @@ export interface MenuItemProps extends Omit<MUIMenuItemProps, 'size' | 'color'>
53
53
  * indica si debe aparecer el icono de check
54
54
  */
55
55
  checkable?: boolean;
56
+ /**
57
+ * ID para pruebas que se pasará como data-testid
58
+ */
59
+ dataTestId?: string;
56
60
  }
57
61
  /**
58
62
  * Estado del propietario del `MenuItem` utilizado para definir propiedades internas de estilo y comportamiento.
@@ -3,9 +3,9 @@ import { a as getComponentSlotRoot } from "../../../utils/getComponentSlotRoot.j
3
3
  import { T as TAB_CONTENT_KEY_COMPONENT } from "./constants.js";
4
4
  import { T as TabContentRootStyled } from "./slots/TabContentSlots.js";
5
5
  const TabContent = (props) => {
6
- const { children, className, background = false, ...others } = props;
6
+ const { children, className, hasBackground = false, ...others } = props;
7
7
  const root = getComponentSlotRoot(TAB_CONTENT_KEY_COMPONENT);
8
- return /* @__PURE__ */ jsx(TabContentRootStyled, { className: root, ownerState: { background }, ...others, children });
8
+ return /* @__PURE__ */ jsx(TabContentRootStyled, { className: root, ownerState: { hasBackground }, ...others, children });
9
9
  };
10
10
  export {
11
11
  TabContent as T
@@ -23,7 +23,7 @@ const tabContentStyles = {
23
23
  boxSizing: "border-box",
24
24
  zIndex: "0",
25
25
  top: "-1px",
26
- ...ownerState?.background ? {
26
+ ...ownerState?.hasBackground ? {
27
27
  backgroundColor: theme.vars.palette.background.base,
28
28
  paddingLeft: theme.vars.size.baseSpacings.sp2,
29
29
  paddingRight: theme.vars.size.baseSpacings.sp2,
@@ -4,9 +4,21 @@ import { TABS_KEY_COMPONENT } from '../Tabs/constants';
4
4
  import { TabContentSlots } from './slots/TabContentEnum';
5
5
  import { M4LOverridesStyleRules } from '../../../@types/augmentations';
6
6
  export interface TabContentProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
7
+ /**
8
+ * Contenido del tab.
9
+ */
7
10
  children: React.ReactNode;
11
+ /**
12
+ * Estilos personalizados para el contenido del tab.
13
+ */
8
14
  style?: React.CSSProperties;
15
+ /**
16
+ * Clave única para el contenido del tab.
17
+ */
9
18
  key?: Key | null | undefined;
10
- background?: boolean;
19
+ /**
20
+ * Si es verdadero, el contenido del tab se mostrará con un fondo que contrasta con el fondo de la app.
21
+ */
22
+ hasBackground?: boolean;
11
23
  }
12
24
  export type TabContentStyles = M4LOverridesStyleRules<keyof typeof TabContentSlots, typeof TABS_KEY_COMPONENT, Theme>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m4l/components",
3
- "version": "9.2.64",
3
+ "version": "9.2.65-JT17072025.beta.1",
4
4
  "license": "UNLICENSED",
5
5
  "description": "M4L Components",
6
6
  "lint-staged": {
@@ -34,7 +34,7 @@
34
34
  "react": "18.3.1",
35
35
  "react-chartjs-2": "^5.2.0",
36
36
  "react-color": "^2.19.3",
37
- "react-data-grid": "7.0.0-beta.13",
37
+ "react-data-grid": "7.0.0-beta.47",
38
38
  "react-dnd": "^16.0.1",
39
39
  "react-dnd-html5-backend": "^16.0.1",
40
40
  "react-dom": "18.3.1",
@@ -19,6 +19,10 @@ export declare const DataGridWithEventChangeUserColumn: Story;
19
19
  * DataGrid con columns formatters
20
20
  */
21
21
  export declare const DatagridWithFormatters: Story;
22
+ /**
23
+ * DataGrid con columns editors
24
+ */
25
+ export declare const DatagridWithEditors: Story;
22
26
  /**
23
27
  * DataGrid con columns with actions
24
28
  */
@@ -1,4 +1,4 @@
1
- import { HeaderRendererProps } from 'react-data-grid';
1
+ import { RenderHeaderCellProps } from 'react-data-grid';
2
2
  import { ChipStatusFormatterProps } from '../../../../src/components/formatters/ChipStatusFormatter/types';
3
3
  import { DeepKeyOf } from '../../../../src/utils/types';
4
4
  import { ColumnAlign } from '../../../../src/components/DataGrid/types';
@@ -21,6 +21,7 @@ export interface SeedProps {
21
21
  withActionsUser?: boolean;
22
22
  withBooleanStatus?: boolean;
23
23
  withUserType?: boolean;
24
+ withEditors?: boolean;
24
25
  aligns?: Record<string, ColumnAlign>;
25
26
  names?: Record<string, string>;
26
27
  }
@@ -74,7 +75,7 @@ export interface Column<TRow, TSummaryRow> {
74
75
  type: ColumnType;
75
76
  formatter?: (props: any) => JSX.Element;
76
77
  width?: number;
77
- withinHeaderRenderer?: React.FunctionComponent<HeaderRendererProps<TRow, TSummaryRow>>;
78
+ withinHeaderRenderer?: React.FunctionComponent<RenderHeaderCellProps<TRow, TSummaryRow>>;
78
79
  customFilter?: (row: TRow, value: string) => boolean;
79
80
  customSort?: (a: TRow, b: TRow) => number;
80
81
  }
@@ -5,19 +5,13 @@ type Story = StoryObj<typeof SideBar>;
5
5
  /**
6
6
  * SideBar por defecto sin ningún item seleccionado
7
7
  */
8
- export declare const Default: Story;
8
+ export declare const H001_VariantHost: Story;
9
9
  /**
10
- * SideBar colapsado por medio del botón de anclaje
11
- */
12
- export declare const CollapsedWithAnchorButton: Story;
13
- /**
14
- * SideBar colapsado con hover sobre el menú
15
- */
16
- export declare const CollapsedWithHoverOnMenu: Story;
17
- /**
18
- * SideBar colapsado retirando hover sobre el menú
10
+ * SideBar por defecto sin ningún item seleccionado
19
11
  */
20
- export declare const CollapsedWithHoverRemoved: Story;
12
+ export declare const H002_VariantHost_Collapsed: Story;
13
+ export declare const H003_VariantMicrofrontend: Story;
14
+ export declare const H004_VariantMicrofrontend_Collapsed: Story;
21
15
  /**
22
16
  * SideBar con items en el menu, con un item seleccionado y 5 anidaciones incluyendo la sección padre de los menu items
23
17
  */
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Componente que renderiza el footer de la promoción del sidebar.
3
+ */
4
+ export declare const FooterComponentHost: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export { FooterComponentHost as FooterComponent } from './FooterComponentHost';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Componente que renderiza el footer del sidebar.
3
+ */
4
+ export declare const FooterComponentMicrofrontend: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { FooterComponentMicrofrontend } from './FooterComponentMicrofrontend';
3
+ declare const meta: Meta<typeof FooterComponentMicrofrontend>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ /**
7
+ * Ejemplo básico del componente FooterComponentMicrofrontend.
8
+ * Este componente renderiza una ilustración SVG en el footer del sidebar.
9
+ */
10
+ export declare const Default: Story;
11
+ /**
12
+ * Ejemplo del componente dentro de un contenedor con fondo.
13
+ */
14
+ export declare const WithBackground: Story;