@m4l/components 9.3.34 → 9.3.35

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 (40) hide show
  1. package/@types/export.d.ts +3 -0
  2. package/@types/types.d.ts +11 -0
  3. package/components/DataGrid/Datagrid.styles.js +1 -0
  4. package/components/DataGrid/formatters/ColumnImageFormatter/ImageFormatterCell.d.ts +13 -0
  5. package/components/DataGrid/formatters/ColumnImageFormatter/ImageFormatterCell.js +33 -0
  6. package/components/DataGrid/formatters/ColumnImageFormatter/constants.d.ts +6 -0
  7. package/components/DataGrid/formatters/ColumnImageFormatter/constants.js +6 -0
  8. package/components/DataGrid/formatters/ColumnImageFormatter/formatter.d.ts +8 -0
  9. package/components/DataGrid/formatters/ColumnImageFormatter/formatter.js +25 -0
  10. package/components/DataGrid/formatters/ColumnImageFormatter/index.d.ts +3 -0
  11. package/components/DataGrid/formatters/ColumnImageFormatter/index.js +1 -0
  12. package/components/DataGrid/formatters/ColumnImageFormatter/tests/ColumnImageFormatter.test.d.ts +1 -0
  13. package/components/DataGrid/formatters/ColumnImageFormatter/types.d.ts +44 -0
  14. package/components/DataGrid/formatters/ColumnImageFormatter/types.js +1 -0
  15. package/components/DataGrid/formatters/ColumnImageFormatter/useColumnImage.d.ts +9 -0
  16. package/components/DataGrid/formatters/ColumnImageFormatter/useColumnImage.js +22 -0
  17. package/components/DataGrid/formatters/index.d.ts +1 -0
  18. package/components/DataGrid/subcomponents/Cards/helpers/scrollToCardElement.js +2 -2
  19. package/components/DataGrid/subcomponents/Cards/index.js +16 -3
  20. package/components/DataGrid/subcomponents/Cards/subcomponents/CardRow/index.js +1 -0
  21. package/components/DataGrid/subcomponents/Table/index.js +10 -1
  22. package/components/DataGrid/tests/helpers/types.d.ts +10 -0
  23. package/components/formatters/ImageFormatter/ImageFormatter.d.ts +10 -0
  24. package/components/formatters/ImageFormatter/ImageFormatter.js +72 -0
  25. package/components/formatters/ImageFormatter/ImageFormatter.styles.d.ts +2 -0
  26. package/components/formatters/ImageFormatter/ImageFormatter.styles.js +42 -0
  27. package/components/formatters/ImageFormatter/constants.d.ts +5 -0
  28. package/components/formatters/ImageFormatter/constants.js +10 -0
  29. package/components/formatters/ImageFormatter/index.d.ts +2 -0
  30. package/components/formatters/ImageFormatter/index.js +1 -0
  31. package/components/formatters/ImageFormatter/slots/ImageFormatterEnum.d.ts +5 -0
  32. package/components/formatters/ImageFormatter/slots/ImageFormatterEnum.js +9 -0
  33. package/components/formatters/ImageFormatter/slots/ImageFormatterSlots.d.ts +9 -0
  34. package/components/formatters/ImageFormatter/slots/ImageFormatterSlots.js +23 -0
  35. package/components/formatters/ImageFormatter/tests/ImageFormatter.test.d.ts +1 -0
  36. package/components/formatters/ImageFormatter/types.d.ts +51 -0
  37. package/components/formatters/ImageFormatter/types.js +1 -0
  38. package/components/formatters/index.d.ts +1 -0
  39. package/index.js +68 -62
  40. package/package.json +1 -1
@@ -241,5 +241,8 @@ declare module '@mui/material/styles' {
241
241
  M4LIconsFormatter?: {
242
242
  styleOverrides?: ComponentsOverrides<Theme>['M4LIconsFormatter'];
243
243
  };
244
+ M4LImageFormatter?: {
245
+ styleOverrides?: ComponentsOverrides<Theme>['M4LImageFormatter'];
246
+ };
244
247
  }
245
248
  }
package/@types/types.d.ts CHANGED
@@ -304,6 +304,10 @@ import {
304
304
  IconsFormatterOwnerState,
305
305
  IconsFormatterSlotsType,
306
306
  } from '../components/formatters/IconsFormatter/types';
307
+ import {
308
+ ImageFormatterOwnerState,
309
+ ImageFormatterSlotsType,
310
+ } from '../components/formatters/ImageFormatter';
307
311
 
308
312
  declare module '@mui/material/styles' {
309
313
  // Define the slots in the theme
@@ -397,6 +401,7 @@ declare module '@mui/material/styles' {
397
401
  M4LMFIsolationApp: MFIsolationAppSlotsType;
398
402
  M4LTagsFormatter: TagsFormatterSlotsType;
399
403
  M4LIconsFormatter: IconsFormatterSlotsType;
404
+ M4LImageFormatter: ImageFormatterSlotsType;
400
405
  }
401
406
  interface ComponentsPropsList {
402
407
  // Extend ComponentsProps or ComponentsOwnerState(this extend ComponentProps)
@@ -489,6 +494,7 @@ declare module '@mui/material/styles' {
489
494
  M4LMFIsolationApp: Partial<MFIsolationAppOwnerState>;
490
495
  M4LTagsFormatter: Partial<TagsFormatterOwnerState>;
491
496
  M4LIconsFormatter: Partial<IconsFormatterOwnerState>;
497
+ M4LImageFormatter: Partial<ImageFormatterOwnerState>;
492
498
  }
493
499
  interface Components {
494
500
  M4LDynamicFilter?: {
@@ -946,5 +952,10 @@ declare module '@mui/material/styles' {
946
952
  styleOverrides?: ComponentsOverrides<Theme>['M4LIconsFormatter'];
947
953
  variants?: ComponentsVariants['M4LIconsFormatter'];
948
954
  };
955
+ M4LImageFormatter?: {
956
+ defaultProps?: ComponentsPropsList['M4LImageFormatter'];
957
+ styleOverrides?: ComponentsOverrides<Theme>['M4LImageFormatter'];
958
+ variants?: ComponentsVariants['M4LImageFormatter'];
959
+ };
949
960
  }
950
961
  }
@@ -270,6 +270,7 @@ const dataGridStyles = {
270
270
  border: theme.vars.size.borderStroke.container,
271
271
  borderColor: theme.vars.palette?.border.secondary,
272
272
  "& .rdg ": {
273
+ scrollBehavior: "smooth",
273
274
  display: "grid",
274
275
  contain: "content",
275
276
  boxSizing: "border-box",
@@ -0,0 +1,13 @@
1
+ import { ColumnImageFormatterProps } from './types';
2
+ import { RenderCellProps } from 'react-data-grid';
3
+ /**
4
+ * Componente interno que renderiza la celda y puede usar hooks
5
+ */
6
+ export declare function ImageFormatterCell<TRow>(props: {
7
+ formatterProps: RenderCellProps<TRow>;
8
+ fieldValue: ColumnImageFormatterProps<TRow>['fieldValue'];
9
+ fieldText: ColumnImageFormatterProps<TRow>['fieldText'];
10
+ width?: ColumnImageFormatterProps<TRow>['width'];
11
+ height?: ColumnImageFormatterProps<TRow>['height'];
12
+ cover?: ColumnImageFormatterProps<TRow>['cover'];
13
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,33 @@
1
+ import { jsx, Fragment } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import { getPropertyByString } from "@m4l/core";
4
+ import { I as IMAGE_SIZES } from "./constants.js";
5
+ import { a as DataGridContext } from "../../contexts/DataGridContext/index.js";
6
+ import { I as ImageFormatter } from "../../../formatters/ImageFormatter/ImageFormatter.js";
7
+ function ImageFormatterCell(props) {
8
+ const { formatterProps, fieldValue, fieldText, width, height, cover } = props;
9
+ const context = useContext(DataGridContext);
10
+ const viewMode = context?.viewMode ?? "cards";
11
+ const hasCustomSize = width !== void 0 && height !== void 0;
12
+ const finalWidth = viewMode === "cards" && hasCustomSize ? width : viewMode === "cards" ? IMAGE_SIZES.cards : void 0;
13
+ const finalHeight = viewMode === "cards" && hasCustomSize ? height : viewMode === "cards" ? IMAGE_SIZES.cards : void 0;
14
+ const src = getPropertyByString(formatterProps.row, fieldValue) ?? void 0;
15
+ const text = fieldText ? getPropertyByString(formatterProps.row, fieldText) ?? void 0 : void 0;
16
+ if (!src) {
17
+ return /* @__PURE__ */ jsx(Fragment, { children: "-" });
18
+ }
19
+ return /* @__PURE__ */ jsx(
20
+ ImageFormatter,
21
+ {
22
+ src,
23
+ alt: text || src,
24
+ width: finalWidth,
25
+ height: finalHeight,
26
+ text,
27
+ cover
28
+ }
29
+ );
30
+ }
31
+ export {
32
+ ImageFormatterCell as I
33
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Dimensiones de imagen según densidad en vista tabla
3
+ */
4
+ export declare const IMAGE_SIZES: {
5
+ readonly cards: 60;
6
+ };
@@ -0,0 +1,6 @@
1
+ const IMAGE_SIZES = {
2
+ cards: 60
3
+ };
4
+ export {
5
+ IMAGE_SIZES as I
6
+ };
@@ -0,0 +1,8 @@
1
+ import { RenderCellProps } from 'react-data-grid';
2
+ import { ColumnImageFormatterProps } from './types';
3
+ /**
4
+ * Formatter para mostrar imágenes con o sin texto
5
+ * @param props - Propiedades del formatter
6
+ * @returns Función que recibe RenderCellProps y retorna el ImageFormatter
7
+ */
8
+ export declare function ColumnImageFormatter<TRow>(props: ColumnImageFormatterProps<TRow>): (formatterProps: RenderCellProps<TRow>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { I as ImageFormatterCell } from "./ImageFormatterCell.js";
3
+ function ColumnImageFormatter(props) {
4
+ const { fieldValue, fieldText, cover } = props;
5
+ const width = "width" in props && props.width !== void 0 ? props.width : void 0;
6
+ const height = "height" in props && props.height !== void 0 ? props.height : void 0;
7
+ const formatter = (formatterProps) => {
8
+ return /* @__PURE__ */ jsx(
9
+ ImageFormatterCell,
10
+ {
11
+ formatterProps,
12
+ fieldValue,
13
+ fieldText,
14
+ width,
15
+ height,
16
+ cover
17
+ }
18
+ );
19
+ };
20
+ formatter.__imageFormatterHeight = height ?? 60;
21
+ return formatter;
22
+ }
23
+ export {
24
+ ColumnImageFormatter as C
25
+ };
@@ -0,0 +1,3 @@
1
+ export { useColumnImage } from './useColumnImage';
2
+ export { ColumnImageFormatter } from './formatter';
3
+ export * from './types';
@@ -0,0 +1,44 @@
1
+ import { DeepKeyOf } from '../../../../utils/types';
2
+ interface ColumnImageFormatterBaseProps<TRow> {
3
+ /**
4
+ * Campo del row que contiene la URL de la imagen
5
+ */
6
+ fieldValue: DeepKeyOf<TRow>;
7
+ /**
8
+ * Campo opcional del row que contiene el texto a mostrar junto a la imagen
9
+ */
10
+ fieldText?: DeepKeyOf<TRow>;
11
+ /**
12
+ * Si es true, la imagen usa object-fit: cover (recorta si es necesario)
13
+ * Si es false o undefined, usa object-fit: contain (muestra completa)
14
+ * @default false
15
+ */
16
+ cover?: boolean;
17
+ }
18
+ /**
19
+ * Props sin dimensiones personalizadas (usa IMAGE_SIZES.cards por defecto)
20
+ */
21
+ interface ColumnImageFormatterWithoutSize<TRow> extends ColumnImageFormatterBaseProps<TRow> {
22
+ width?: never;
23
+ height?: never;
24
+ }
25
+ /**
26
+ * Props con dimensiones personalizadas para vista cards
27
+ * IMPORTANTE: width y height deben proporcionarse juntas
28
+ */
29
+ interface ColumnImageFormatterWithSize<TRow> extends ColumnImageFormatterBaseProps<TRow> {
30
+ /**
31
+ * Ancho personalizado para la imagen en vista cards (en píxeles)
32
+ */
33
+ width: number;
34
+ /**
35
+ * Alto personalizado para la imagen en vista cards (en píxeles)
36
+ */
37
+ height: number;
38
+ }
39
+ /**
40
+ * Props para ColumnImageFormatter
41
+ * Puede tener dimensiones personalizadas (width Y height juntas) o ninguna
42
+ */
43
+ export type ColumnImageFormatterProps<TRow> = ColumnImageFormatterWithoutSize<TRow> | ColumnImageFormatterWithSize<TRow>;
44
+ export {};
@@ -0,0 +1,9 @@
1
+ import { ColumnImageFormatterProps } from './types';
2
+ /**
3
+ * Hook que retorna el formatter para columnas con imágenes en DataGrid
4
+ * @param props - Propiedades del formatter
5
+ * @returns Objeto con el formatter
6
+ */
7
+ export declare const useColumnImage: <TRow>(props: ColumnImageFormatterProps<TRow>) => {
8
+ formatter: (formatterProps: import('react-data-grid').RenderCellProps<TRow, unknown>) => import("react/jsx-runtime").JSX.Element;
9
+ };
@@ -0,0 +1,22 @@
1
+ import { useState, useRef, useEffect, useMemo } from "react";
2
+ import { deepEqual } from "fast-equals";
3
+ import { C as ColumnImageFormatter } from "./formatter.js";
4
+ const useColumnImage = (props) => {
5
+ const [stateProps, setStateProps] = useState(props);
6
+ const refProps = useRef({ ...props });
7
+ useEffect(() => {
8
+ if (!deepEqual(refProps.current, props)) {
9
+ refProps.current = props;
10
+ setStateProps(props);
11
+ }
12
+ }, [props]);
13
+ return useMemo(
14
+ () => ({
15
+ formatter: ColumnImageFormatter(stateProps)
16
+ }),
17
+ [stateProps]
18
+ );
19
+ };
20
+ export {
21
+ useColumnImage as u
22
+ };
@@ -11,3 +11,4 @@ export * from './ColumnUncertaintyFormatter';
11
11
  export * from './ColumnChipStatusFormatter';
12
12
  export * from './ColumnTagsFormatter';
13
13
  export * from './ColumnColorFormatter';
14
+ export * from './ColumnImageFormatter';
@@ -13,8 +13,8 @@ function scrollToCardElement(containerElement, rowKey, selectorType = "data-attr
13
13
  return;
14
14
  }
15
15
  foundElement.scrollIntoView({
16
- behavior: "auto",
17
- block: "center"
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.length, cardsViewConfig]);
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
  }
@@ -88,6 +88,7 @@ function CardRowComponent({
88
88
  },
89
89
  onClick: onCardClick,
90
90
  "data-testid": "data-grid-card",
91
+ "data-row-key": rowKeyGetter(row),
91
92
  children: content
92
93
  }
93
94
  )
@@ -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,10 @@
1
+ import { ImageFormatterProps } from './types';
2
+ /**
3
+ * ImageFormatter
4
+ * Componente para formatear y mostrar una imagen con texto opcional.
5
+ * Fuerza enableIntersectionObserver a false ya que se usa en contextos donde
6
+ * el lazy loading es manejado por el contenedor padre (ej. DataGrid).
7
+ * @param {ImageFormatterProps} props - Las propiedades del componente.
8
+ * @returns JSX.Element
9
+ */
10
+ export declare function ImageFormatter(props: ImageFormatterProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,72 @@
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { I as ImageStyled, T as TextImageStyled, R as RootStyled } from "./slots/ImageFormatterSlots.js";
4
+ import { I as ImageFormatterSlots } from "./slots/ImageFormatterEnum.js";
5
+ import clsx from "clsx";
6
+ import { a as getComponentSlotRoot } from "../../../utils/getComponentSlotRoot.js";
7
+ import { a as getPropDataTestId } from "../../../test/getNameDataTestId.js";
8
+ import { I as IMAGE_FORMATTER_KEY_COMPONENT } from "./constants.js";
9
+ function ImageFormatter(props) {
10
+ const { src, alt, text, width, height, cover, dataTestId, className } = props;
11
+ const ownerState = useMemo(
12
+ () => ({
13
+ width,
14
+ height,
15
+ hasDefinedSize: width !== void 0 && height !== void 0,
16
+ cover
17
+ }),
18
+ [width, height, cover]
19
+ );
20
+ const content = useMemo(() => {
21
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
22
+ /* @__PURE__ */ jsx(
23
+ ImageStyled,
24
+ {
25
+ ownerState,
26
+ ...getPropDataTestId(
27
+ IMAGE_FORMATTER_KEY_COMPONENT,
28
+ ImageFormatterSlots.image,
29
+ dataTestId
30
+ ),
31
+ src,
32
+ alt,
33
+ width,
34
+ height,
35
+ cover,
36
+ enableIntersectionObserver: false
37
+ }
38
+ ),
39
+ text && /* @__PURE__ */ jsx(
40
+ TextImageStyled,
41
+ {
42
+ ...getPropDataTestId(
43
+ IMAGE_FORMATTER_KEY_COMPONENT,
44
+ ImageFormatterSlots.textImage,
45
+ dataTestId
46
+ ),
47
+ variant: "body",
48
+ children: text
49
+ }
50
+ )
51
+ ] });
52
+ }, [src, alt, text, width, height, cover, dataTestId, ownerState]);
53
+ return /* @__PURE__ */ jsx(
54
+ RootStyled,
55
+ {
56
+ ownerState,
57
+ className: clsx(
58
+ getComponentSlotRoot(IMAGE_FORMATTER_KEY_COMPONENT),
59
+ className
60
+ ),
61
+ ...getPropDataTestId(
62
+ IMAGE_FORMATTER_KEY_COMPONENT,
63
+ ImageFormatterSlots.root,
64
+ dataTestId
65
+ ),
66
+ children: content
67
+ }
68
+ );
69
+ }
70
+ export {
71
+ ImageFormatter as I
72
+ };
@@ -0,0 +1,2 @@
1
+ import { ImageFormatterStyles } from './types';
2
+ export declare const imageFormatterStyles: ImageFormatterStyles;
@@ -0,0 +1,42 @@
1
+ const imageFormatterStyles = {
2
+ /**
3
+ * Estilos del root principal
4
+ */
5
+ root: ({ theme, ownerState }) => ({
6
+ display: "flex",
7
+ alignItems: "center",
8
+ gap: theme.vars.size.baseSpacings.sp2,
9
+ width: "100%",
10
+ ...!ownerState?.hasDefinedSize && {
11
+ height: "100%"
12
+ }
13
+ }),
14
+ /**
15
+ * Estilos de la imagen
16
+ */
17
+ image: ({ theme, ownerState }) => ({
18
+ flexShrink: 0,
19
+ borderRadius: theme.vars.size.borderRadius.r2,
20
+ border: `1px solid ${theme.vars.palette.border.disabled}`,
21
+ ...!ownerState?.hasDefinedSize && {
22
+ height: "90%",
23
+ aspectRatio: "1 / 1"
24
+ },
25
+ objectFit: ownerState?.cover ? "cover" : "contain"
26
+ }),
27
+ /**
28
+ * Estilos del texto de la imagen
29
+ */
30
+ textImage: ({ theme }) => ({
31
+ overflow: "hidden",
32
+ textOverflow: "ellipsis",
33
+ whiteSpace: "nowrap",
34
+ flex: 1,
35
+ "&.M4LTypography-root": {
36
+ color: theme.vars.palette.primary
37
+ }
38
+ })
39
+ };
40
+ export {
41
+ imageFormatterStyles as i
42
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Clave del componente ImageFormatter
3
+ */
4
+ export declare const IMAGE_FORMATTER_KEY_COMPONENT = "M4LImageFormatter";
5
+ export declare const IMAGE_FORMATTER_CLASSES: Record<"root" | "image" | "textImage", string>;
@@ -0,0 +1,10 @@
1
+ import { g as getComponentClasses } from "../../../utils/getComponentSlotRoot.js";
2
+ import { I as ImageFormatterSlots } from "./slots/ImageFormatterEnum.js";
3
+ const IMAGE_FORMATTER_KEY_COMPONENT = "M4LImageFormatter";
4
+ getComponentClasses(
5
+ IMAGE_FORMATTER_KEY_COMPONENT,
6
+ ImageFormatterSlots
7
+ );
8
+ export {
9
+ IMAGE_FORMATTER_KEY_COMPONENT as I
10
+ };
@@ -0,0 +1,2 @@
1
+ export { ImageFormatter } from './ImageFormatter';
2
+ export * from './types';
@@ -0,0 +1,5 @@
1
+ export declare enum ImageFormatterSlots {
2
+ root = "root",
3
+ image = "image",
4
+ textImage = "textImage"
5
+ }
@@ -0,0 +1,9 @@
1
+ var ImageFormatterSlots = /* @__PURE__ */ ((ImageFormatterSlots2) => {
2
+ ImageFormatterSlots2["root"] = "root";
3
+ ImageFormatterSlots2["image"] = "image";
4
+ ImageFormatterSlots2["textImage"] = "textImage";
5
+ return ImageFormatterSlots2;
6
+ })(ImageFormatterSlots || {});
7
+ export {
8
+ ImageFormatterSlots as I
9
+ };
@@ -0,0 +1,9 @@
1
+ export declare const RootStyled: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme> & Record<string, unknown> & {
2
+ ownerState?: (Partial<import('..').ImageFormatterOwnerState> & Record<string, unknown>) | undefined;
3
+ }, Pick<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import('react').ClassAttributes<HTMLDivElement> | keyof import('react').HTMLAttributes<HTMLDivElement>>, {}>;
4
+ export declare const ImageStyled: import('@emotion/styled').StyledComponent<Pick<import('../../../Image').ImageProps, keyof import('../../../Image').ImageProps> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme> & Record<string, unknown> & {
5
+ ownerState?: (Partial<import('..').ImageFormatterOwnerState> & Record<string, unknown>) | undefined;
6
+ }, {}, {}>;
7
+ export declare const TextImageStyled: import('@emotion/styled').StyledComponent<Pick<Omit<import('../../../mui_extended/Typography/types').TypographyProps, "ref"> & import('react').RefAttributes<HTMLSpanElement>, "size" | "children" | "title" | "component" | "zIndex" | "id" | "disabled" | "paragraph" | "border" | "fontWeight" | "lineHeight" | "letterSpacing" | "fontSize" | "textTransform" | "fontFamily" | "typography" | "flex" | "hidden" | "color" | "left" | "right" | "bottom" | "top" | "ellipsis" | "content" | "style" | "position" | "padding" | "variant" | "borderRadius" | "width" | "display" | "borderColor" | "height" | "gap" | "minHeight" | "margin" | "overflow" | "boxShadow" | "minWidth" | "justifyContent" | "alignItems" | "paddingLeft" | "borderLeft" | "borderTop" | "maxWidth" | "flexDirection" | "paddingRight" | "borderRight" | "flexGrow" | "marginLeft" | "textOverflow" | "borderBottom" | "gridTemplateColumns" | "marginBottom" | "dataTestid" | "alignContent" | "alignSelf" | "boxSizing" | "columnGap" | "flexBasis" | "flexShrink" | "flexWrap" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateRows" | "justifyItems" | "justifySelf" | "marginBlockEnd" | "marginBlockStart" | "marginInlineEnd" | "marginInlineStart" | "marginRight" | "marginTop" | "maxHeight" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingTop" | "rowGap" | "textAlign" | "translate" | "visibility" | "whiteSpace" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "paddingBlock" | "paddingInline" | "className" | "classes" | "sx" | "p" | "slot" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "exportparts" | "part" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "displayPrint" | "align" | "htmlFor" | "gutterBottom" | "noWrap" | "variantMapping" | "skeletonWidth" | "skeletonRows" | keyof import('react').RefAttributes<HTMLSpanElement>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme> & Record<string, unknown> & {
8
+ ownerState?: (Partial<import('..').ImageFormatterOwnerState> & Record<string, unknown>) | undefined;
9
+ }, {}, {}>;
@@ -0,0 +1,23 @@
1
+ import { styled } from "@mui/material";
2
+ import { I as IMAGE_FORMATTER_KEY_COMPONENT } from "../constants.js";
3
+ import { I as ImageFormatterSlots } from "./ImageFormatterEnum.js";
4
+ import { i as imageFormatterStyles } from "../ImageFormatter.styles.js";
5
+ import { I as Image } from "../../../Image/Image.js";
6
+ import { T as Typography } from "../../../mui_extended/Typography/Typography.js";
7
+ const RootStyled = styled("div", {
8
+ name: IMAGE_FORMATTER_KEY_COMPONENT,
9
+ slot: ImageFormatterSlots.root
10
+ })(imageFormatterStyles.root);
11
+ const ImageStyled = styled(Image, {
12
+ name: IMAGE_FORMATTER_KEY_COMPONENT,
13
+ slot: ImageFormatterSlots.image
14
+ })(imageFormatterStyles.image);
15
+ const TextImageStyled = styled(Typography, {
16
+ name: IMAGE_FORMATTER_KEY_COMPONENT,
17
+ slot: ImageFormatterSlots.textImage
18
+ })(imageFormatterStyles.textImage);
19
+ export {
20
+ ImageStyled as I,
21
+ RootStyled as R,
22
+ TextImageStyled as T
23
+ };
@@ -0,0 +1,51 @@
1
+ import { M4LOverridesStyleRules } from '../../../@types/augmentations';
2
+ import { ImageFormatterSlots } from './slots/ImageFormatterEnum';
3
+ import { ImageProps } from '../../Image';
4
+ import { IMAGE_FORMATTER_KEY_COMPONENT } from './constants';
5
+ import { Theme } from '@mui/material';
6
+ /**
7
+ * Props del ImageFormatter
8
+ */
9
+ export interface ImageFormatterProps extends Pick<ImageProps, 'src' | 'alt' | 'width' | 'height' | 'cover' | 'enableIntersectionObserver'> {
10
+ /**
11
+ * Texto de la imagen
12
+ */
13
+ text?: string;
14
+ /**
15
+ * ID para testing
16
+ */
17
+ dataTestId?: string;
18
+ /**
19
+ * Clase CSS personalizada
20
+ */
21
+ className?: string;
22
+ }
23
+ /**
24
+ * Owner state del ImageFormatter
25
+ */
26
+ export interface ImageFormatterOwnerState {
27
+ /**
28
+ * Ancho de la imagen
29
+ */
30
+ width?: number | string;
31
+ /**
32
+ * Alto de la imagen
33
+ */
34
+ height?: number | string;
35
+ /**
36
+ * Si la imagen tiene tamaño definido o debe usar 100% + aspect ratio
37
+ */
38
+ hasDefinedSize: boolean;
39
+ /**
40
+ * Si es verdadero, la imagen se ajusta al contenedor y se recorta si es necesario.
41
+ */
42
+ cover?: boolean;
43
+ }
44
+ /**
45
+ * Tipos de slots disponibles para el ImageFormatter
46
+ */
47
+ export type ImageFormatterSlotsType = ImageFormatterSlots;
48
+ /**
49
+ * Estilos aplicables al ImageFormatter
50
+ */
51
+ export type ImageFormatterStyles = M4LOverridesStyleRules<ImageFormatterSlotsType, typeof IMAGE_FORMATTER_KEY_COMPONENT, Theme>;
@@ -10,3 +10,4 @@ export * from './DistanceToNowFormatter';
10
10
  export type { UncertaintyRange } from './UncertaintyFormatter/types';
11
11
  export { TagsFormatter } from './TagsFormatter';
12
12
  export { ColorFormatter } from './ColorFormatter';
13
+ export { ImageFormatter } from './ImageFormatter';
package/index.js CHANGED
@@ -62,6 +62,8 @@ import { C as C15 } from "./components/DataGrid/formatters/ColumnTagsFormatter/f
62
62
  import { u as u13 } from "./components/DataGrid/formatters/ColumnTagsFormatter/useColumnTags.js";
63
63
  import { C as C16 } from "./components/DataGrid/formatters/ColumnColorFormatter/formatter.js";
64
64
  import { u as u14 } from "./components/DataGrid/formatters/ColumnColorFormatter/useColumnColor.js";
65
+ import { u as u15 } from "./components/DataGrid/formatters/ColumnImageFormatter/useColumnImage.js";
66
+ import { C as C17 } from "./components/DataGrid/formatters/ColumnImageFormatter/formatter.js";
65
67
  import { D as D3 } from "./components/DragResizeWindowRND/DragResizeWindowRND.js";
66
68
  import { d as d2 } from "./components/DragResizeWindowRND/classes/index.js";
67
69
  import { W } from "./components/DragResizeWindowRND/constants.js";
@@ -83,7 +85,7 @@ import { R as R3 } from "./components/extended/React-Json-Viewer/ReactJsonViewer
83
85
  import { A as A14 } from "./components/mui_extended/Avatar/Avatar.js";
84
86
  import { B as B2 } from "./components/mui_extended/BoxIcon/index.js";
85
87
  import { B as B3 } from "./components/mui_extended/Breadcrumbs/index.js";
86
- import { C as C17 } from "./components/mui_extended/CircularProgress/CircularProgress.js";
88
+ import { C as C18 } from "./components/mui_extended/CircularProgress/CircularProgress.js";
87
89
  import { B as B4 } from "./components/mui_extended/Badge/Badge.js";
88
90
  import { L as L3 } from "./components/mui_extended/LinearProgress/index.js";
89
91
  import { L as L4 } from "./components/mui_extended/LinkWithRoute/index.js";
@@ -93,7 +95,7 @@ import { A as A15 } from "./components/mui_extended/Accordion/Accordion.js";
93
95
  import { T as T3 } from "./components/mui_extended/Tooltip/Tooltip.js";
94
96
  import { I as I2 } from "./components/mui_extended/IconButton/IconButton.js";
95
97
  import { B as B5 } from "./components/mui_extended/Button/Button.js";
96
- import { C as C18 } from "./components/mui_extended/CheckBox/CheckBox.js";
98
+ import { C as C19 } from "./components/mui_extended/CheckBox/CheckBox.js";
97
99
  import { I as I3 } from "./components/mui_extended/ImageButton/ImageButton.js";
98
100
  import { P as P2 } from "./components/mui_extended/Popover/Popover.js";
99
101
  import { S as S4 } from "./components/mui_extended/Select/Select.js";
@@ -121,15 +123,16 @@ import { B as B6 } from "./components/formatters/BooleanFormatter/BooleanFormatt
121
123
  import { D as D8, g as g12 } from "./components/formatters/DateFormatter/DateFormatter.js";
122
124
  import { U, g as g13 } from "./components/formatters/UncertaintyFormatter/UncertaintyFormatter.js";
123
125
  import { P as P3, g as g14 } from "./components/formatters/PointsFormatter/PointsFormatter.js";
124
- import { C as C19, g as g15 } from "./components/formatters/ConcatenatedFormatter/ConcatenatedFormatter.js";
125
- import { P as P4, u as u15 } from "./components/formatters/PeriodFormatter/PeriodFormatter.js";
126
+ import { C as C20, g as g15 } from "./components/formatters/ConcatenatedFormatter/ConcatenatedFormatter.js";
127
+ import { P as P4, u as u16 } from "./components/formatters/PeriodFormatter/PeriodFormatter.js";
126
128
  import { P as P5, g as g16 } from "./components/formatters/PriceFormatter/PriceFormatter.js";
127
129
  import { T as T17 } from "./components/formatters/TagsFormatter/TagsFormatter.js";
128
- import { C as C20 } from "./components/formatters/ColorFormatter/ColorFormatter.js";
129
- import { C as C21 } from "./components/formatters/ChipStatusFormatter/ChipStatusFormatter.js";
130
+ import { C as C21 } from "./components/formatters/ColorFormatter/ColorFormatter.js";
131
+ import { I as I4 } from "./components/formatters/ImageFormatter/ImageFormatter.js";
132
+ import { C as C22 } from "./components/formatters/ChipStatusFormatter/ChipStatusFormatter.js";
130
133
  import { g as g17 } from "./components/formatters/DistanceToNowFormatter/dictionary.js";
131
134
  import { D as D9 } from "./components/formatters/DistanceToNowFormatter/DistanceToNowFormatter.js";
132
- import { u as u16 } from "./components/formatters/DistanceToNowFormatter/hooks/useDistanceToNowFormatter.js";
135
+ import { u as u17 } from "./components/formatters/DistanceToNowFormatter/hooks/useDistanceToNowFormatter.js";
133
136
  import { g as g18 } from "./components/formatters/dictionary.js";
134
137
  import { F as F2 } from "./components/FormContainer/FormContainer.js";
135
138
  import { G } from "./components/GridLayout/GridLayout.js";
@@ -162,10 +165,10 @@ import { N as N3, P as P6, R as R20, S as S7 } from "./components/hook-form/RHFP
162
165
  import { R as R21 } from "./components/hook-form/RHFNumberInput/RHFNumberInput.js";
163
166
  import { R as R22 } from "./components/hook-form/RHFUpload/RHFUploadImage/RHFUploadImage.js";
164
167
  import { V as V2, b as b4, a as a9 } from "./components/hook-form/RHFormProvider/types.js";
165
- import { F as F3, R as R23, u as u17 } from "./components/hook-form/RHFormProvider/RHFormProvider.js";
168
+ import { F as F3, R as R23, u as u18 } from "./components/hook-form/RHFormProvider/RHFormProvider.js";
166
169
  import { d as d4, a as a10, b as b5, c as c3 } from "./components/hook-form/RHFormProvider/schema.js";
167
- import { I as I4 } from "./components/Icon/Icon.js";
168
- import { I as I5 } from "./components/Image/Image.js";
170
+ import { I as I5 } from "./components/Icon/Icon.js";
171
+ import { I as I6 } from "./components/Image/Image.js";
169
172
  import { L as L6 } from "./components/Label/Label.js";
170
173
  import { L as L7 } from "./components/LanguagePopover/LanguagePopover.js";
171
174
  import { L as L8 } from "./components/LinearProgressIndeterminate/LinearProgressIndeterminate.js";
@@ -178,7 +181,7 @@ import { M as M4 } from "./components/MFIsolationApp/MFIsolationApp.js";
178
181
  import { M as M5 } from "./components/MFIsolationAppStorybook/MFIsolationAppStorybook.js";
179
182
  import { M as M6 } from "./components/MFLoader/MFLoader.js";
180
183
  import { g as g24 } from "./components/MFLoader/dictionary.js";
181
- import { I as I6 } from "./components/ImageText/ImageText.js";
184
+ import { I as I7 } from "./components/ImageText/ImageText.js";
182
185
  import { N as N4 } from "./components/NoItemSelected/NoItemSelected.js";
183
186
  import { g as g25 } from "./components/NoItemSelected/dictionary.js";
184
187
  import { N as N5 } from "./components/NoItemPrivileges/NoItemPrivileges.js";
@@ -187,7 +190,7 @@ import { g as g27 } from "./components/ObjectLogs/dictionary.js";
187
190
  import { O } from "./components/ObjectLogs/ObjectLogs.js";
188
191
  import { P as P7 } from "./components/PaperForm/PaperForm.js";
189
192
  import { P as P8 } from "./components/PDFViewer/PDFViewer.js";
190
- import { u as u18 } from "./components/popups/components/PopupsProvider/hooks/usePopupsStore.js";
193
+ import { u as u19 } from "./components/popups/components/PopupsProvider/hooks/usePopupsStore.js";
191
194
  import { a as a12, P as P9 } from "./components/popups/components/PopupsProvider/contexts/PopupsContext/PopupsContext.js";
192
195
  import { P as P10 } from "./components/popups/components/PopupsViewer/PopupsViewer.js";
193
196
  import { P as P11 } from "./components/PrintingSystem/PrintingSystem.js";
@@ -199,8 +202,8 @@ import { T as T19 } from "./components/ToastContainer/subcomponents/ToastMessage
199
202
  import { T as T20 } from "./components/TabsNavigator/TabsNavigator.js";
200
203
  import { g as g28 } from "./components/TabsNavigator/dictionary.js";
201
204
  import { W as W2 } from "./components/WindowBase/WindowBase.js";
202
- import { u as u19 } from "./components/WindowBase/hooks/useWindowToolsMF/index.js";
203
- import { u as u20, a as a13 } from "./components/WindowBase/hooks/useDynamicMFParameters/index.js";
205
+ import { u as u20 } from "./components/WindowBase/hooks/useWindowToolsMF/index.js";
206
+ import { u as u21, a as a13 } from "./components/WindowBase/hooks/useDynamicMFParameters/index.js";
204
207
  import { M as M7, W as W3, a as a14 } from "./components/WindowBase/contexts/WindowToolsMFContext/WindowToolsMFContext.js";
205
208
  import { c as c4 } from "./components/WindowBase/contexts/DynamicMFParmsContext/store.js";
206
209
  import { D as D10, a as a15, M as M8 } from "./components/WindowBase/contexts/DynamicMFParmsContext/DynamicMFParmsContext.js";
@@ -209,7 +212,7 @@ import { a as a16, g as g29 } from "./components/ModalDialog/dictionary.js";
209
212
  import { M as M9 } from "./components/ModalDialog/ModalDialog.js";
210
213
  import { S as S10 } from "./components/SettingsLayout/SettingsLayout.js";
211
214
  import { P as P13 } from "./components/Pager/Pager.js";
212
- import { u as u21 } from "./components/Stepper/hooks/useStepper/index.js";
215
+ import { u as u22 } from "./components/Stepper/hooks/useStepper/index.js";
213
216
  import { S as S11 } from "./components/Stepper/Stepper.js";
214
217
  import { S as S12 } from "./components/Stepper/subcomponents/StepperContent/index.js";
215
218
  import { S as S13 } from "./components/Stepper/subcomponents/StepperContent/subcomponents/Step/index.js";
@@ -223,26 +226,26 @@ import { S as S20 } from "./components/Stepper/subcomponents/StepperButtons/Step
223
226
  import { e as e2 } from "./components/Stepper/helpers/evaluateVisibilityStepCondition/index.js";
224
227
  import { g as g30 } from "./components/Stepper/dictionary.js";
225
228
  import { g as g31 } from "./components/hook-form/RHFormProvider/dictionary.js";
226
- import { u as u22 } from "./contexts/AppearanceComponentContext/useAppearanceComponentStore.js";
229
+ import { u as u23 } from "./contexts/AppearanceComponentContext/useAppearanceComponentStore.js";
227
230
  import { A as A16 } from "./contexts/AppearanceComponentContext/AppearanceComponentContext.js";
228
231
  import { a as a17, M as M10 } from "./contexts/ModalContext/index.js";
229
- import { u as u23 } from "./hooks/useFormAddEdit/useFormAddEdit.js";
230
- import { u as u24 } from "./hooks/useModal/index.js";
231
- import { u as u25 } from "./hooks/useTab/index.js";
232
+ import { u as u24 } from "./hooks/useFormAddEdit/useFormAddEdit.js";
233
+ import { u as u25 } from "./hooks/useModal/index.js";
234
+ import { u as u26 } from "./hooks/useTab/index.js";
232
235
  import { g as g32 } from "./hooks/useFormAddEdit/dictionary.js";
233
- import { u as u26 } from "./hooks/useFormFocus/index.js";
234
- import { u as u27 } from "./hooks/useInterval/index.js";
235
- import { u as u28 } from "./hooks/useComponentSize/useComponentSize.js";
236
- import { u as u29 } from "./hooks/useFormReadyForUpdate/index.js";
237
- import { u as u30 } from "./hooks/useStateRef/index.js";
236
+ import { u as u27 } from "./hooks/useFormFocus/index.js";
237
+ import { u as u28 } from "./hooks/useInterval/index.js";
238
+ import { u as u29 } from "./hooks/useComponentSize/useComponentSize.js";
239
+ import { u as u30 } from "./hooks/useFormReadyForUpdate/index.js";
240
+ import { u as u31 } from "./hooks/useStateRef/index.js";
238
241
  import { S as S21 } from "./hooks/useSvgColor/constants.js";
239
- import { u as u31 } from "./hooks/useSvgColor/useSvgColor.js";
240
- import { u as u32 } from "./hooks/useDynamicFilterAndSort/useDynamicFilterAndSort.js";
241
- import { u as u33 } from "./hooks/useDataGridPersistence/useDataGridPersistence.js";
242
- import { u as u34 } from "./hooks/usePopoverContainer/usePopoverContainer.js";
243
- import { u as u35 } from "./hooks/useIsVisible/useIsVisible.js";
244
- import { u as u36 } from "./hooks/useSizeContainer/index.js";
245
- import { u as u37 } from "./hooks/useWatchTyped/useTypedWatch.js";
242
+ import { u as u32 } from "./hooks/useSvgColor/useSvgColor.js";
243
+ import { u as u33 } from "./hooks/useDynamicFilterAndSort/useDynamicFilterAndSort.js";
244
+ import { u as u34 } from "./hooks/useDataGridPersistence/useDataGridPersistence.js";
245
+ import { u as u35 } from "./hooks/usePopoverContainer/usePopoverContainer.js";
246
+ import { u as u36 } from "./hooks/useIsVisible/useIsVisible.js";
247
+ import { u as u37 } from "./hooks/useSizeContainer/index.js";
248
+ import { u as u38 } from "./hooks/useWatchTyped/useTypedWatch.js";
246
249
  import { c as c5 } from "./utils/capitalizeFirstLetter.js";
247
250
  import { i as i2 } from "./utils/isValidDate.js";
248
251
  import { g as g33 } from "./utils/getComponentUtilityClass.js";
@@ -283,17 +286,18 @@ export {
283
286
  B3 as Breadcrumbs,
284
287
  B5 as Button,
285
288
  C as Card,
286
- C18 as CheckBox,
289
+ C19 as CheckBox,
287
290
  C2 as Chip,
288
- C21 as ChipStatusFormatter,
289
- C17 as CircularProgress,
290
- C20 as ColorFormatter,
291
+ C22 as ChipStatusFormatter,
292
+ C18 as CircularProgress,
293
+ C21 as ColorFormatter,
291
294
  C4 as ColumnBooleanFormatter,
292
295
  C14 as ColumnChipStatusFormatter,
293
296
  C16 as ColumnColorFormatter,
294
297
  C5 as ColumnConcatenatedValueFormatter,
295
298
  C6 as ColumnDateFormatter,
296
299
  C7 as ColumnIconFormatter,
300
+ C17 as ColumnImageFormatter,
297
301
  C8 as ColumnInteractiveCheckFormatter,
298
302
  C9 as ColumnNestedValueFormatter,
299
303
  C10 as ColumnPointsFormatter,
@@ -301,7 +305,7 @@ export {
301
305
  C12 as ColumnSetCheckFormatter,
302
306
  C15 as ColumnTagsFormatter,
303
307
  C13 as ColumnUncertaintyFormatter,
304
- C19 as ConcatenatedFormatter,
308
+ C20 as ConcatenatedFormatter,
305
309
  C3 as ContainerFlow,
306
310
  b3 as DATAGRID_ROW_HEADER_HEIGHTS,
307
311
  a4 as DATAGRID_ROW_HEIGHTS,
@@ -324,12 +328,13 @@ export {
324
328
  H as HamburgerMenu,
325
329
  H2 as HelmetPage,
326
330
  H3 as HelperError,
327
- I4 as Icon,
331
+ I5 as Icon,
328
332
  I2 as IconButton,
329
333
  I as IconButtonAnimate,
330
- I5 as Image,
334
+ I6 as Image,
331
335
  I3 as ImageButton,
332
- I6 as ImageText,
336
+ I4 as ImageFormatter,
337
+ I7 as ImageText,
333
338
  L2 as LABEL_FILTER_BUTTON,
334
339
  L6 as Label,
335
340
  L7 as LanguagePopover,
@@ -518,7 +523,7 @@ export {
518
523
  r as rhfPeriodStyles,
519
524
  t as toggleButtonStyles,
520
525
  t2 as toggleIconButtonStyles,
521
- u22 as useAppearanceComponentStore,
526
+ u23 as useAppearanceComponentStore,
522
527
  u as useAreasStore,
523
528
  u2 as useColumnBoolean,
524
529
  u12 as useColumnChipStatus,
@@ -526,6 +531,7 @@ export {
526
531
  u3 as useColumnConcatenatedValue,
527
532
  u4 as useColumnDate,
528
533
  u5 as useColumnIcon,
534
+ u15 as useColumnImage,
529
535
  u6 as useColumnInteractiveCheck,
530
536
  u7 as useColumnNestedValue,
531
537
  u8 as useColumnPoints,
@@ -533,29 +539,29 @@ export {
533
539
  u10 as useColumnSetCheck,
534
540
  u13 as useColumnTags,
535
541
  u11 as useColumnUncertanity,
536
- u28 as useComponentSize,
537
- u17 as useCustomForm,
538
- u33 as useDataGridPersistence,
539
- u16 as useDistanceToNowFormatter,
540
- u32 as useDynamicFilterAndSort,
541
- u20 as useDynamicMFParameters,
542
+ u29 as useComponentSize,
543
+ u18 as useCustomForm,
544
+ u34 as useDataGridPersistence,
545
+ u17 as useDistanceToNowFormatter,
546
+ u33 as useDynamicFilterAndSort,
547
+ u21 as useDynamicMFParameters,
542
548
  a13 as useDynamicMFParametersStore,
543
- u23 as useFormAddEdit,
544
- u26 as useFormFocus,
545
- u29 as useFormReadyForUpdate,
546
- u15 as useFormatPeriod,
547
- u27 as useInterval,
548
- u35 as useIsVisible,
549
- u24 as useModal,
550
- u34 as usePopoverContainer,
551
- u18 as usePopupsStore,
552
- u36 as useSizeContainer,
553
- u30 as useStateRef,
554
- u21 as useStepper,
555
- u31 as useSvgColor,
556
- u25 as useTab,
557
- u37 as useWatchTyped,
558
- u19 as useWindowToolsMF,
549
+ u24 as useFormAddEdit,
550
+ u27 as useFormFocus,
551
+ u30 as useFormReadyForUpdate,
552
+ u16 as useFormatPeriod,
553
+ u28 as useInterval,
554
+ u36 as useIsVisible,
555
+ u25 as useModal,
556
+ u35 as usePopoverContainer,
557
+ u19 as usePopupsStore,
558
+ u37 as useSizeContainer,
559
+ u31 as useStateRef,
560
+ u22 as useStepper,
561
+ u32 as useSvgColor,
562
+ u26 as useTab,
563
+ u38 as useWatchTyped,
564
+ u20 as useWindowToolsMF,
559
565
  v2 as varBounce,
560
566
  v3 as varContainer,
561
567
  v as varFade,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m4l/components",
3
- "version": "9.3.34",
3
+ "version": "9.3.35",
4
4
  "license": "UNLICENSED",
5
5
  "description": "M4L Components",
6
6
  "lint-staged": {