@soyfri/shared-library 3.2.1 → 4.0.0

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 (236) hide show
  1. package/DataRow-B7fJ5taA.js +55 -0
  2. package/DataRow-B7fJ5taA.js.map +1 -0
  3. package/DataRow-CfCaSdaJ.cjs +54 -0
  4. package/DataRow-CfCaSdaJ.cjs.map +1 -0
  5. package/EmptyState-DJj9KOEy.cjs +47 -0
  6. package/EmptyState-DJj9KOEy.cjs.map +1 -0
  7. package/EmptyState-kEoDkg1B.js +48 -0
  8. package/EmptyState-kEoDkg1B.js.map +1 -0
  9. package/{Modal-C_QY7ZzY.js → Modal-BqW0Nk3l.js} +12 -2
  10. package/{Modal-C_QY7ZzY.js.map → Modal-BqW0Nk3l.js.map} +1 -1
  11. package/{Modal-D_6ZdSzw.cjs → Modal-Cfyr-RsW.cjs} +12 -2
  12. package/{Modal-D_6ZdSzw.cjs.map → Modal-Cfyr-RsW.cjs.map} +1 -1
  13. package/PageHeader-BQZOqjNr.cjs +37 -0
  14. package/PageHeader-BQZOqjNr.cjs.map +1 -0
  15. package/PageHeader-DDYi6Nhy.js +38 -0
  16. package/PageHeader-DDYi6Nhy.js.map +1 -0
  17. package/{Table-DaNgX7PO.cjs → Table-BpnAkCgd.cjs} +4 -3
  18. package/Table-BpnAkCgd.cjs.map +1 -0
  19. package/{Table-aNFAOuQk.js → Table-BuALBQWX.js} +4 -3
  20. package/Table-BuALBQWX.js.map +1 -0
  21. package/{Tooltip-BB77JBcg.js → Tooltip-B15a34_o.js} +4 -6
  22. package/Tooltip-B15a34_o.js.map +1 -0
  23. package/{Tooltip-DpAsWGpN.cjs → Tooltip-CEEDkwds.cjs} +4 -6
  24. package/Tooltip-CEEDkwds.cjs.map +1 -0
  25. package/components/ActionMenu.d.ts +3 -3
  26. package/components/Alert.d.ts +3 -3
  27. package/components/AppBar.d.ts +3 -3
  28. package/components/Autocomplete.d.ts +3 -3
  29. package/components/Avatar.d.ts +1 -1
  30. package/components/Breadcrumbs.d.ts +3 -3
  31. package/components/Button.d.ts +1 -1
  32. package/components/ButtonGroup.d.ts +3 -3
  33. package/components/Card.d.ts +3 -3
  34. package/components/Checkbox.d.ts +3 -3
  35. package/components/Chip.d.ts +3 -3
  36. package/components/Column.d.ts +1 -1
  37. package/components/DataRow/DataRow.cjs +6 -0
  38. package/components/DataRow/DataRow.cjs.map +1 -0
  39. package/components/DataRow/DataRow.js +6 -0
  40. package/components/DataRow/DataRow.js.map +1 -0
  41. package/components/DataRow.d.ts +6 -0
  42. package/components/DatePicker.d.ts +3 -3
  43. package/components/DateTimePicker.d.ts +3 -3
  44. package/components/Divider.d.ts +3 -3
  45. package/components/Drawer.d.ts +3 -3
  46. package/components/EmptyState/EmptyState.cjs +6 -0
  47. package/components/EmptyState/EmptyState.cjs.map +1 -0
  48. package/components/EmptyState/EmptyState.js +6 -0
  49. package/components/EmptyState/EmptyState.js.map +1 -0
  50. package/components/EmptyState.d.ts +6 -0
  51. package/components/Flyout.d.ts +1 -1
  52. package/components/Gallery.d.ts +3 -3
  53. package/components/Icon.d.ts +3 -3
  54. package/components/Input.d.ts +3 -3
  55. package/components/InputGroup.d.ts +3 -3
  56. package/components/MenuButton.d.ts +1 -1
  57. package/components/Modal/Modal.cjs +1 -1
  58. package/components/Modal/Modal.js +1 -1
  59. package/components/Modal.d.ts +3 -3
  60. package/components/PageHeader/PageHeader.cjs +6 -0
  61. package/components/PageHeader/PageHeader.cjs.map +1 -0
  62. package/components/PageHeader/PageHeader.js +6 -0
  63. package/components/PageHeader/PageHeader.js.map +1 -0
  64. package/components/PageHeader.d.ts +6 -0
  65. package/components/RadioGroup.d.ts +3 -3
  66. package/components/Select.d.ts +3 -3
  67. package/components/Spinner.d.ts +3 -3
  68. package/components/Stat.d.ts +3 -3
  69. package/components/StatusMessage.d.ts +3 -3
  70. package/components/Stepper.d.ts +3 -3
  71. package/components/Switch.d.ts +3 -3
  72. package/components/Table/Table.cjs +1 -1
  73. package/components/Table/Table.js +1 -1
  74. package/components/Table.d.ts +1 -1
  75. package/components/Tabs.d.ts +3 -3
  76. package/components/Timeline.d.ts +3 -3
  77. package/components/Tooltip/Tooltip.cjs +1 -1
  78. package/components/Tooltip/Tooltip.js +1 -1
  79. package/components/Tooltip.d.ts +1 -1
  80. package/hooks/ClipBoard.d.ts +1 -1
  81. package/index.cjs +9 -3
  82. package/index.cjs.map +1 -1
  83. package/index.d.ts +2 -56
  84. package/index.js +15 -9
  85. package/index.js.map +1 -1
  86. package/package.json +16 -1
  87. package/src/components/DataRow/DataRow.d.ts +44 -0
  88. package/src/components/DataRow/index.d.ts +2 -0
  89. package/src/components/EmptyState/EmptyState.d.ts +24 -0
  90. package/src/components/EmptyState/index.d.ts +2 -0
  91. package/src/components/PageHeader/PageHeader.d.ts +25 -0
  92. package/src/components/PageHeader/index.d.ts +2 -0
  93. package/{components → src/components}/Table/Table.d.ts +10 -1
  94. package/src/demos/themes.d.ts +29 -0
  95. package/src/index.d.ts +62 -0
  96. package/{theme → src/theme}/componentStyles.d.ts +1 -1
  97. package/Table-DaNgX7PO.cjs.map +0 -1
  98. package/Table-aNFAOuQk.js.map +0 -1
  99. package/Tooltip-BB77JBcg.js.map +0 -1
  100. package/Tooltip-DpAsWGpN.cjs.map +0 -1
  101. package/styles.css +0 -375
  102. /package/{components → src/components}/ActionMenu/ActionMenu.d.ts +0 -0
  103. /package/{components → src/components}/ActionMenu/index.d.ts +0 -0
  104. /package/{components → src/components}/Alert/Alert.d.ts +0 -0
  105. /package/{components → src/components}/Alert/index.d.ts +0 -0
  106. /package/{components → src/components}/AppBar/AppBar.d.ts +0 -0
  107. /package/{components → src/components}/AppBar/AppBar.sx.d.ts +0 -0
  108. /package/{components → src/components}/AppBar/AppBarContext.d.ts +0 -0
  109. /package/{components → src/components}/AppBar/AppBarMenuToggle.d.ts +0 -0
  110. /package/{components → src/components}/AppBar/index.d.ts +0 -0
  111. /package/{components → src/components}/Autocomplete/Autocomplete.d.ts +0 -0
  112. /package/{components → src/components}/Autocomplete/Autocomplete.definitions.d.ts +0 -0
  113. /package/{components → src/components}/Autocomplete/Autocomplete.helpers.d.ts +0 -0
  114. /package/{components → src/components}/Autocomplete/Autocomplete.sx.d.ts +0 -0
  115. /package/{components → src/components}/Autocomplete/_parts/AutocompleteChips.d.ts +0 -0
  116. /package/{components → src/components}/Autocomplete/_parts/AutocompleteLoader.d.ts +0 -0
  117. /package/{components → src/components}/Autocomplete/_parts/AutocompleteOption.d.ts +0 -0
  118. /package/{components → src/components}/Autocomplete/index.d.ts +0 -0
  119. /package/{components → src/components}/Avatar/Avatar.d.ts +0 -0
  120. /package/{components → src/components}/Avatar/Avatar.definitions.d.ts +0 -0
  121. /package/{components → src/components}/Avatar/index.d.ts +0 -0
  122. /package/{components → src/components}/Breadcrumbs/Breadcrumbs.d.ts +0 -0
  123. /package/{components → src/components}/Breadcrumbs/index.d.ts +0 -0
  124. /package/{components → src/components}/Button/Button.d.ts +0 -0
  125. /package/{components → src/components}/Button/Button.definition.d.ts +0 -0
  126. /package/{components → src/components}/Button/index.d.ts +0 -0
  127. /package/{components → src/components}/ButtonGroup/ButtonGroup.d.ts +0 -0
  128. /package/{components → src/components}/ButtonGroup/index.d.ts +0 -0
  129. /package/{components → src/components}/Card/Card.d.ts +0 -0
  130. /package/{components → src/components}/Card/Card.definition.d.ts +0 -0
  131. /package/{components → src/components}/Card/Card.sx.d.ts +0 -0
  132. /package/{components → src/components}/Card/index.d.ts +0 -0
  133. /package/{components → src/components}/Checkbox/Checkbox.d.ts +0 -0
  134. /package/{components → src/components}/Checkbox/Checkbox.sx.d.ts +0 -0
  135. /package/{components → src/components}/Checkbox/index.d.ts +0 -0
  136. /package/{components → src/components}/Chip/Chip.d.ts +0 -0
  137. /package/{components → src/components}/Chip/Chip.definitions.d.ts +0 -0
  138. /package/{components → src/components}/Chip/index.d.ts +0 -0
  139. /package/{components → src/components}/Column/Column.d.ts +0 -0
  140. /package/{components → src/components}/Column/index.d.ts +0 -0
  141. /package/{components → src/components}/DatePicker/DatePicker.d.ts +0 -0
  142. /package/{components → src/components}/DatePicker/DatePicker.definitions.d.ts +0 -0
  143. /package/{components → src/components}/DatePicker/DatePicker.helpers.d.ts +0 -0
  144. /package/{components → src/components}/DatePicker/DatePicker.sx.d.ts +0 -0
  145. /package/{components → src/components}/DatePicker/index.d.ts +0 -0
  146. /package/{components → src/components}/DateTimePicker/DateTimePicker.d.ts +0 -0
  147. /package/{components → src/components}/DateTimePicker/DateTimePicker.definitions.d.ts +0 -0
  148. /package/{components → src/components}/DateTimePicker/DateTimePicker.helpers.d.ts +0 -0
  149. /package/{components → src/components}/DateTimePicker/DateTimePicker.sx.d.ts +0 -0
  150. /package/{components → src/components}/DateTimePicker/index.d.ts +0 -0
  151. /package/{components → src/components}/Divider/Divider.d.ts +0 -0
  152. /package/{components → src/components}/Divider/index.d.ts +0 -0
  153. /package/{components → src/components}/Drawer/Drawer.d.ts +0 -0
  154. /package/{components → src/components}/Drawer/Drawer.sx.d.ts +0 -0
  155. /package/{components → src/components}/Drawer/DrawerContext.d.ts +0 -0
  156. /package/{components → src/components}/Drawer/DrawerItem.d.ts +0 -0
  157. /package/{components → src/components}/Drawer/index.d.ts +0 -0
  158. /package/{components → src/components}/Flyout/Flyout.d.ts +0 -0
  159. /package/{components → src/components}/Flyout/index.d.ts +0 -0
  160. /package/{components → src/components}/Gallery/Gallery.d.ts +0 -0
  161. /package/{components → src/components}/Gallery/Gallery.definition.d.ts +0 -0
  162. /package/{components → src/components}/Gallery/GalleryLightbox.d.ts +0 -0
  163. /package/{components → src/components}/Gallery/GalleryMain.d.ts +0 -0
  164. /package/{components → src/components}/Gallery/GalleryThumbnails.d.ts +0 -0
  165. /package/{components → src/components}/Gallery/index.d.ts +0 -0
  166. /package/{components → src/components}/Icon/Icon.d.ts +0 -0
  167. /package/{components → src/components}/Icon/index.d.ts +0 -0
  168. /package/{components → src/components}/Input/Input.d.ts +0 -0
  169. /package/{components → src/components}/Input/Input.definitions.d.ts +0 -0
  170. /package/{components → src/components}/Input/Input.helpers.d.ts +0 -0
  171. /package/{components → src/components}/Input/Input.sx.d.ts +0 -0
  172. /package/{components → src/components}/Input/index.d.ts +0 -0
  173. /package/{components → src/components}/InputGroup/InputGroup.d.ts +0 -0
  174. /package/{components → src/components}/InputGroup/InputGroup.definitions.d.ts +0 -0
  175. /package/{components → src/components}/InputGroup/index.d.ts +0 -0
  176. /package/{components → src/components}/MenuButton/MenuButton.d.ts +0 -0
  177. /package/{components → src/components}/MenuButton/index.d.ts +0 -0
  178. /package/{components → src/components}/Modal/Modal.d.ts +0 -0
  179. /package/{components → src/components}/Modal/ModalBody.d.ts +0 -0
  180. /package/{components → src/components}/Modal/ModalFooter.d.ts +0 -0
  181. /package/{components → src/components}/Modal/ModalHeader.d.ts +0 -0
  182. /package/{components → src/components}/Modal/index.d.ts +0 -0
  183. /package/{components → src/components}/RadioGroup/RadioGroup.d.ts +0 -0
  184. /package/{components → src/components}/RadioGroup/RadioGroup.definitions.d.ts +0 -0
  185. /package/{components → src/components}/RadioGroup/RadioGroup.sx.d.ts +0 -0
  186. /package/{components → src/components}/RadioGroup/index.d.ts +0 -0
  187. /package/{components → src/components}/Select/Select.d.ts +0 -0
  188. /package/{components → src/components}/Select/Select.helpers.d.ts +0 -0
  189. /package/{components → src/components}/Select/Select.sx.d.ts +0 -0
  190. /package/{components → src/components}/Select/_parts/SelectMenuItem.d.ts +0 -0
  191. /package/{components → src/components}/Select/_parts/SelectValue.d.ts +0 -0
  192. /package/{components → src/components}/Select/index.d.ts +0 -0
  193. /package/{components → src/components}/Spinner/Spinner.d.ts +0 -0
  194. /package/{components → src/components}/Spinner/index.d.ts +0 -0
  195. /package/{components → src/components}/Stat/Stat.d.ts +0 -0
  196. /package/{components → src/components}/Stat/index.d.ts +0 -0
  197. /package/{components → src/components}/StatusMessage/StatusMessage.d.ts +0 -0
  198. /package/{components → src/components}/StatusMessage/index.d.ts +0 -0
  199. /package/{components → src/components}/Stepper/Step.d.ts +0 -0
  200. /package/{components → src/components}/Stepper/Stepper.d.ts +0 -0
  201. /package/{components → src/components}/Stepper/Stepper.definition.d.ts +0 -0
  202. /package/{components → src/components}/Stepper/StepperContext.d.ts +0 -0
  203. /package/{components → src/components}/Stepper/_hooks/useHorizontalScroll.d.ts +0 -0
  204. /package/{components → src/components}/Stepper/_parts/StepperScrollArrow.d.ts +0 -0
  205. /package/{components → src/components}/Stepper/index.d.ts +0 -0
  206. /package/{components → src/components}/Switch/Switch.d.ts +0 -0
  207. /package/{components → src/components}/Switch/Switch.definitions.d.ts +0 -0
  208. /package/{components → src/components}/Switch/Switch.sx.d.ts +0 -0
  209. /package/{components → src/components}/Switch/Switch.types.d.ts +0 -0
  210. /package/{components → src/components}/Switch/index.d.ts +0 -0
  211. /package/{components → src/components}/Table/Table.definition.d.ts +0 -0
  212. /package/{components → src/components}/Table/data.d.ts +0 -0
  213. /package/{components → src/components}/Table/exportsUtils.d.ts +0 -0
  214. /package/{components → src/components}/Table/index.d.ts +0 -0
  215. /package/{components → src/components}/Table/types.d.ts +0 -0
  216. /package/{components → src/components}/Tabs/Tab.d.ts +0 -0
  217. /package/{components → src/components}/Tabs/Tab.definition.d.ts +0 -0
  218. /package/{components → src/components}/Tabs/Tabs.d.ts +0 -0
  219. /package/{components → src/components}/Tabs/_tabUtils.d.ts +0 -0
  220. /package/{components → src/components}/Tabs/index.d.ts +0 -0
  221. /package/{components → src/components}/Timeline/Timeline.d.ts +0 -0
  222. /package/{components → src/components}/Timeline/Timeline.definition.d.ts +0 -0
  223. /package/{components → src/components}/Timeline/TimelineItem.d.ts +0 -0
  224. /package/{components → src/components}/Timeline/index.d.ts +0 -0
  225. /package/{components → src/components}/Tooltip/Tooltip.d.ts +0 -0
  226. /package/{components → src/components}/Tooltip/index.d.ts +0 -0
  227. /package/{components → src/components}/_shared/formField.sx.d.ts +0 -0
  228. /package/{components → src/components}/_shared/mergeSx.d.ts +0 -0
  229. /package/{components → src/components}/_shared/resolvePreset.d.ts +0 -0
  230. /package/{hooks → src/hooks}/ClipBoard/ClipBoard.d.ts +0 -0
  231. /package/{hooks → src/hooks}/ClipBoard/ClipboardUnifiedDemo.d.ts +0 -0
  232. /package/{hooks → src/hooks}/ClipBoard/index.d.ts +0 -0
  233. /package/{mui.d.ts → src/mui.d.ts} +0 -0
  234. /package/{theme → src/theme}/tokens.d.ts +0 -0
  235. /package/{utils → src/utils}/index.d.ts +0 -0
  236. /package/{utils → src/utils}/scrollToTop.d.ts +0 -0
@@ -0,0 +1,38 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useTheme, Box, Typography } from "@mui/material";
3
+ import { r as resolvePreset } from "./resolvePreset-K6_BfWHD.js";
4
+ function PageHeader({
5
+ title,
6
+ breadcrumbs,
7
+ actions,
8
+ preset,
9
+ sx,
10
+ className,
11
+ "data-testid": dataTestId
12
+ }) {
13
+ const theme = useTheme();
14
+ const presetSx = resolvePreset("PageHeader", preset, theme);
15
+ const rootSx = [
16
+ {
17
+ display: "flex",
18
+ flexWrap: "wrap",
19
+ alignItems: "center",
20
+ justifyContent: "space-between",
21
+ gap: 2,
22
+ mb: 3
23
+ },
24
+ ...presetSx ? [presetSx] : [],
25
+ ...Array.isArray(sx) ? sx : sx ? [sx] : []
26
+ ];
27
+ return /* @__PURE__ */ jsxs(Box, { sx: rootSx, className, "data-testid": dataTestId, children: [
28
+ /* @__PURE__ */ jsx(Typography, { variant: "h4", component: "h1", className: "fri-PageHeader-title", sx: { color: "text.primary" }, children: title }),
29
+ (breadcrumbs || actions) && /* @__PURE__ */ jsxs(Box, { className: "fri-PageHeader-aside", sx: { display: "flex", alignItems: "center", gap: 2 }, children: [
30
+ breadcrumbs,
31
+ actions
32
+ ] })
33
+ ] });
34
+ }
35
+ export {
36
+ PageHeader as P
37
+ };
38
+ //# sourceMappingURL=PageHeader-DDYi6Nhy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeader-DDYi6Nhy.js","sources":["../src/components/PageHeader/PageHeader.tsx"],"sourcesContent":["import { type ReactNode } from 'react';\nimport { Box, Typography, useTheme } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { resolvePreset } from '../_shared/resolvePreset';\n\nexport interface PageHeaderProps {\n /** Título de la página. Se renderiza como `<h1>`. */\n title: ReactNode;\n /**\n * Migas de pan ya armadas por el consumidor — normalmente un `<Breadcrumbs>`\n * con los `Link` de su router. Es un slot a propósito: el paquete no depende\n * de ninguna librería de routing.\n */\n breadcrumbs?: ReactNode;\n /** Acciones a la derecha (botones, menús). */\n actions?: ReactNode;\n /** Preset registrado en `theme.styles.PageHeader`. */\n preset?: string;\n sx?: SxProps<Theme>;\n className?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Encabezado de página: título a la izquierda, migas + acciones a la derecha.\n * En pantallas angostas envuelve en vez de comprimir el título.\n */\nexport function PageHeader({\n title,\n breadcrumbs,\n actions,\n preset,\n sx,\n className,\n 'data-testid': dataTestId,\n}: PageHeaderProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('PageHeader', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n mb: 3,\n },\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ] as SxProps<Theme>;\n\n return (\n <Box sx={rootSx} className={className} data-testid={dataTestId}>\n <Typography variant=\"h4\" component=\"h1\" className=\"fri-PageHeader-title\" sx={{ color: 'text.primary' }}>\n {title}\n </Typography>\n {(breadcrumbs || actions) && (\n <Box className=\"fri-PageHeader-aside\" sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n {breadcrumbs}\n {actions}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default PageHeader;\n"],"names":[],"mappings":";;;AA4BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,GAAoB;AAClB,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,cAAc,QAAQ,KAAK;AAE1D,QAAM,SAAyB;AAAA,IAC7B;AAAA,MACE,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,IAAI;AAAA,IAAA;AAAA,IAEN,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,8BACG,KAAA,EAAI,IAAI,QAAQ,WAAsB,eAAa,YAClD,UAAA;AAAA,IAAA,oBAAC,YAAA,EAAW,SAAQ,MAAK,WAAU,MAAK,WAAU,wBAAuB,IAAI,EAAE,OAAO,eAAA,GACnF,UAAA,OACH;AAAA,KACE,eAAe,YACf,qBAAC,KAAA,EAAI,WAAU,wBAAuB,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,KACrF,UAAA;AAAA,MAAA;AAAA,MACA;AAAA,IAAA,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -195,7 +195,8 @@ function Table({
195
195
  showPageSizeSelector = true,
196
196
  emptyTitle = "No hay datos disponibles",
197
197
  emptyMessage,
198
- emptyImageSrc = /* @__PURE__ */ jsxRuntime.jsx(material.Box, { mb: 2, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: EmptyImage, alt: "No data", style: { maxWidth: "150px", opacity: 0.6 } }) })
198
+ emptyImageSrc = /* @__PURE__ */ jsxRuntime.jsx(material.Box, { mb: 2, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: EmptyImage, alt: "No data", style: { maxWidth: "150px", opacity: 0.6 } }) }),
199
+ minWidth = 650
199
200
  }) {
200
201
  const columns = React.Children.toArray(children).filter(
201
202
  (child) => React.isValidElement(child) && child.type.displayName === "Column"
@@ -308,7 +309,7 @@ function Table({
308
309
  const isAllSelectedOnPage = paginatedData.length > 0 && numSelectedOnPage === paginatedData.length;
309
310
  const isIndeterminateOnPage = numSelectedOnPage > 0 && numSelectedOnPage < paginatedData.length;
310
311
  return /* @__PURE__ */ jsxRuntime.jsxs(material.TableContainer, { children: [
311
- /* @__PURE__ */ jsxRuntime.jsxs(material.Table, { sx: { minWidth: 650 }, "aria-label": "custom table", style: paginatedData.length === 0 ? { display: "none" } : {}, children: [
312
+ /* @__PURE__ */ jsxRuntime.jsxs(material.Table, { sx: { minWidth }, "aria-label": "custom table", style: paginatedData.length === 0 ? { display: "none" } : {}, children: [
312
313
  /* @__PURE__ */ jsxRuntime.jsx(material.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(material.TableRow, { children: [
313
314
  enableRowSelection && /* @__PURE__ */ jsxRuntime.jsxs(material.TableCell, { padding: "checkbox", sx: { width: "50px" }, children: [
314
315
  " ",
@@ -524,4 +525,4 @@ function Table({
524
525
  ] });
525
526
  }
526
527
  exports.Table = Table;
527
- //# sourceMappingURL=Table-DaNgX7PO.cjs.map
528
+ //# sourceMappingURL=Table-BpnAkCgd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table-BpnAkCgd.cjs","sources":["../src/components/Table/exportsUtils.ts","../src/components/Table/EmptyTable.png","../src/components/Table/Table.tsx"],"sourcesContent":["import React from 'react';\nimport { AlertProps } from '@mui/material/Alert';\nimport { ColumnProps } from '../Column/Column'; // Importa ColumnProps y FieldName desde Column.tsx\n\n// Define las propiedades comunes para las funciones de exportación\ninterface ExportOptions<T> {\n data: T[]; // Los datos a exportar\n columns: React.ReactElement<ColumnProps<T>>[]; // Las definiciones de las columnas\n fileName: string; // El nombre del archivo a descargar\n exportColumns?: string[]; // Nombres de columnas específicas para exportar\n setSnackbarOpen: React.Dispatch<React.SetStateAction<boolean>>; // Setter para abrir/cerrar el Snackbar\n setSnackbarMessage: React.Dispatch<React.SetStateAction<string>>; // Setter para el mensaje del Snackbar\n setSnackbarSeverity: React.Dispatch<React.SetStateAction<AlertProps['severity']>>; // Setter para la severidad del Snackbar\n}\n\n/**\n * Función para exportar datos a un archivo CSV.\n * @param options Opciones de exportación, incluyendo datos, columnas, nombre de archivo y setters de Snackbar.\n */\nexport const exportToCSV = <T>(options: ExportOptions<T>) => {\n const { data, columns, fileName, exportColumns, setSnackbarOpen, setSnackbarMessage, setSnackbarSeverity } = options;\n\n if (!data || data.length === 0) {\n setSnackbarMessage(\"No hay datos para exportar a CSV.\");\n setSnackbarSeverity('warning');\n setSnackbarOpen(true);\n return;\n }\n\n setSnackbarMessage(\"Exportando datos a CSV...\");\n setSnackbarSeverity('info');\n setSnackbarOpen(true);\n\n try {\n // Filtra las columnas si se especifican columnas para exportar, de lo contrario, usa todas las columnas definidas.\n const columnsToExport = exportColumns\n ? columns.filter(col => exportColumns.includes(col.props.name))\n : columns;\n\n // Obtiene los encabezados (nombres de las columnas) y los escapa para CSV.\n const headers = columnsToExport.map(col => `\"${col.props.name.replace(/\"/g, '\"\"')}\"`).join(',');\n\n // Mapea los datos a filas CSV.\n const csvRows = data.map(row => {\n const values = columnsToExport.map(col => {\n const field = col.props.field;\n let cellValue: any;\n\n // Si 'field' es un array, toma el valor del primer campo para la exportación.\n if (Array.isArray(field)) {\n cellValue = (row as any)[field[0]];\n } else {\n cellValue = (row as any)[field];\n }\n\n // Convierte a string y maneja comas, comillas dobles y saltos de línea para CSV.\n let formattedValue = String(cellValue || '');\n if (formattedValue.includes(',') || formattedValue.includes('\"') || formattedValue.includes('\\n')) {\n formattedValue = `\"${formattedValue.replace(/\"/g, '\"\"')}\"`;\n }\n return formattedValue;\n });\n return values.join(',');\n });\n\n const csvContent = [headers, ...csvRows].join('\\n'); // Une los encabezados y las filas.\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName + '.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n\n setSnackbarMessage(\"¡Exportación a CSV completada!\");\n setSnackbarSeverity('success');\n } else {\n setSnackbarMessage(\"Tu navegador no soporta la descarga directa para CSV. Por favor, copia el contenido manualmente.\");\n setSnackbarSeverity('error');\n }\n } catch (error) {\n console.error(\"Error al exportar los datos a CSV:\", error);\n setSnackbarMessage(\"Error al exportar los datos a CSV.\");\n setSnackbarSeverity('error');\n } finally {\n setSnackbarOpen(true);\n }\n};\n\n/**\n * Función para exportar datos a un archivo Excel (formato XLSX).\n * Genera una tabla HTML que luego se descarga como un archivo .xlsx.\n * @param options Opciones de exportación, incluyendo datos, columnas, nombre de archivo y setters de Snackbar.\n */\nexport const exportToExcel = <T>(options: ExportOptions<T>) => {\n const { data, columns, fileName, exportColumns, setSnackbarOpen, setSnackbarMessage, setSnackbarSeverity } = options;\n\n if (!data || data.length === 0) {\n setSnackbarMessage(\"No hay datos para exportar a Excel.\");\n setSnackbarSeverity('warning');\n setSnackbarOpen(true);\n return;\n }\n\n setSnackbarMessage(\"Exportando datos a Excel (XLSX)...\");\n setSnackbarSeverity('info');\n setSnackbarOpen(true);\n\n try {\n const columnsToExport = exportColumns\n ? columns.filter(col => exportColumns.includes(col.props.name))\n : columns;\n\n // Construye el contenido HTML de la tabla.\n let tableHTML = `\n <html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\n xmlns:x=\"urn:schemas-microsoft-com:office:excel\"\n xmlns=\"http://www.w3.org/TR/REC-html40\">\n <head>\n <meta charset=\"utf-8\" />\n <!--[if gte mso 9]><xml>\n <x:ExcelWorkbook>\n <x:ExcelWorksheets>\n <x:ExcelWorksheet>\n <x:Name>Hoja1</x:Name>\n <x:WorksheetOptions>\n <x:DisplayGridlines/>\n </x:WorksheetOptions>\n </x:ExcelWorksheet>\n </x:ExcelWorksheets>\n </x:ExcelWorkbook>\n </xml><![endif]-->\n </head>\n <body>\n <table>\n <thead>\n <tr>\n ${columnsToExport.map(col => `<th>${col.props.name}</th>`).join('')}\n </tr>\n </thead>\n <tbody>\n ${data.map(row => `\n <tr>\n ${columnsToExport.map(col => {\n const field = col.props.field;\n let cellValue: any;\n if (Array.isArray(field)) {\n cellValue = (row as any)[field[0]];\n } else {\n cellValue = (row as any)[field];\n }\n // Escapa caracteres HTML para el contenido de la celda.\n return `<td>${String(cellValue || '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</td>`;\n }).join('')}\n </tr>\n `).join('')}\n </tbody>\n </table>\n </body>\n </html>\n `;\n\n // Crea un Blob con el contenido HTML y el tipo MIME de XLSX.\n const blob = new Blob([tableHTML], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;' }); \n\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName + '.xlsx'); // Usa la extensión .xlsx\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n\n setSnackbarMessage(\"¡Exportación a Excel (XLSX) completada!\");\n setSnackbarSeverity('success');\n } else {\n setSnackbarMessage(\"Tu navegador no soporta la descarga directa para Excel (XLSX). Por favor, copia el contenido manualmente.\");\n setSnackbarSeverity('error');\n }\n } catch (error) {\n console.error(\"Error al exportar los datos a Excel (XLSX):\", error);\n setSnackbarMessage(\"Error al exportar los datos a Excel (XLSX).\");\n setSnackbarSeverity('error');\n } finally {\n setSnackbarOpen(true);\n }\n};\n","export default \"data:image/png;base64,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\"","import React, { Children, isValidElement, useState, useEffect } from 'react';\nimport {\n TableContainer,\n Table as MuiTable,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n Typography,\n Select,\n MenuItem,\n Box,\n Button,\n Snackbar,\n IconButton,\n Checkbox,\n} from '@mui/material';\nimport MuiAlert, { AlertProps } from '@mui/material/Alert';\nimport { ColumnProps } from '../Column/Column'; // Asegúrate de que esta ruta sea correcta\nimport DownloadOutlinedIcon from '@mui/icons-material/DownloadOutlined';\nimport FirstPageIcon from '@mui/icons-material/FirstPage';\nimport LastPageIcon from '@mui/icons-material/LastPage';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\n\nimport { exportToCSV, exportToExcel } from './exportsUtils';\n\n// @ts-ignore\nimport EmptyImage from './EmptyTable.png';\n\nexport type FieldName<T> = keyof T | Array<keyof T>;\n\ninterface TableProps<T> {\n data: T[];\n children: React.ReactNode;\n\n currentPage?: number;\n pageSize?: number;\n totalPages?: number;\n previousPage?: number;\n nextPage?: number;\n pageSizeSelectorValue?: number;\n onPageChange?: (newPage: number) => void;\n onPageSizeChange?: (newSize: number) => void;\n visiblePageNumbers?: number;\n\n enableCSVExport?: boolean;\n csvExportFileName?: string;\n csvExportButtonText?: string;\n csvExportColumns?: string[];\n\n enableExcelExport?: boolean;\n excelExportFileName?: string;\n excelExportButtonText?: string;\n excelExportColumns?: string[];\n\n enableRowSelection?: boolean;\n rowIdentifier?: keyof T;\n onSelectionChange?: (selectedItems: T[]) => void;\n showPageSizeSelector?: boolean;\n emptyTitle?: string;\n emptyMessage?: string;\n emptyImageSrc?: React.ReactNode;\n /**\n * Ancho mínimo de la tabla. Default: `650`.\n *\n * Por debajo de ese ancho el contenedor scrollea en horizontal, así que en un\n * panel angosto (una card lateral, un móvil) las últimas columnas quedan\n * escondidas detrás del scroll. Bajarlo —o ponerlo en `0`— deja que las\n * columnas se compriman en vez de desbordar.\n */\n minWidth?: number | string;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(function Alert(\n props,\n ref,\n) {\n return <MuiAlert elevation={6} ref={ref} variant=\"filled\" {...props} />;\n});\n\nexport function Table<T>({\n data,\n children,\n currentPage,\n pageSize,\n totalPages,\n previousPage: _previousPage,\n nextPage: _nextPage,\n pageSizeSelectorValue = 10,\n onPageChange,\n onPageSizeChange,\n visiblePageNumbers = 5,\n enableCSVExport = false,\n csvExportFileName = 'data.csv',\n csvExportButtonText = 'Exportar CSV',\n csvExportColumns,\n enableExcelExport = false,\n excelExportFileName = 'data.xlsx',\n excelExportButtonText = 'Exportar Excel',\n excelExportColumns,\n enableRowSelection = false,\n rowIdentifier,\n onSelectionChange,\n showPageSizeSelector = true,\n emptyTitle = 'No hay datos disponibles',\n emptyMessage,\n emptyImageSrc = <Box mb={2}>\n <img src={EmptyImage} alt=\"No data\" style={{ maxWidth: '150px', opacity: 0.6 }} />\n </Box>,\n minWidth = 650,\n}: TableProps<T>) {\n const columns = Children.toArray(children).filter(\n (child): child is React.ReactElement<ColumnProps<T>> =>\n isValidElement(child) && (child.type as any).displayName === 'Column'\n );\n\n const [snackbarOpen, setSnackbarOpen] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState(\"\");\n const [snackbarSeverity, setSnackbarSeverity] = useState<AlertProps['severity']>('info');\n\n const [selectedRows, setSelectedRows] = useState<T[]>([]);\n\n useEffect(() => {\n setSelectedRows([]);\n }, [data, currentPage, pageSize]);\n\n useEffect(() => {\n onSelectionChange?.(selectedRows);\n }, [selectedRows, onSelectionChange]);\n\n const handleSnackbarClose = (_event?: React.SyntheticEvent | Event, reason?: string) => {\n if (reason === 'clickaway') {\n return;\n }\n setSnackbarOpen(false);\n };\n\n const isControlled = typeof onPageChange === 'function' && typeof currentPage === 'number';\n const [internalPage, setInternalPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(pageSizeSelectorValue);\n\n const activePage = isControlled ? currentPage! : internalPage;\n const activePageSize = isControlled ? pageSize! : internalPageSize;\n\n const paginatedData = isControlled ? data : data.slice((activePage - 1) * activePageSize, activePage * activePageSize);\n\n const effectiveTotalPages = isControlled\n ? totalPages!\n : Math.ceil(data.length / activePageSize);\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > effectiveTotalPages) return;\n if (isControlled) onPageChange?.(newPage);\n else setInternalPage(newPage);\n };\n\n const handlePageSizeChange = (newSize: number) => {\n if (isControlled) {\n onPageSizeChange?.(newSize);\n onPageChange?.(1);\n } else {\n setInternalPageSize(newSize);\n setInternalPage(1);\n }\n };\n\n const getPageNumbers = () => {\n const pages = [];\n const maxPages = effectiveTotalPages;\n const current = activePage;\n const half = Math.floor(visiblePageNumbers / 2);\n\n let startPage = Math.max(1, current - half);\n let endPage = Math.min(maxPages, current + half);\n\n if (endPage - startPage + 1 < visiblePageNumbers) {\n if (startPage === 1) {\n endPage = Math.min(maxPages, startPage + visiblePageNumbers - 1);\n } else if (endPage === maxPages) {\n startPage = Math.max(1, maxPages - visiblePageNumbers + 1);\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(i);\n }\n return pages;\n };\n\n const pageNumbers = getPageNumbers();\n\n const handleSelectAllClick = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!rowIdentifier) {\n console.warn(\"`rowIdentifier` prop is required for row selection.\");\n return;\n }\n\n if (event.target.checked) {\n const newSelecteds = [...selectedRows];\n paginatedData.forEach(row => {\n const rowId = row[rowIdentifier] as any;\n if (!newSelecteds.some(selectedRow => (selectedRow as any)[rowIdentifier] === rowId)) {\n newSelecteds.push(row);\n }\n });\n setSelectedRows(newSelecteds);\n } else {\n const newSelecteds = selectedRows.filter(selectedRow =>\n !paginatedData.some(row => (row as any)[rowIdentifier] === (selectedRow as any)[rowIdentifier])\n );\n setSelectedRows(newSelecteds);\n }\n };\n\n const handleRowClick = (_event: React.MouseEvent<unknown>, row: T) => {\n if (!rowIdentifier) {\n console.warn(\"`rowIdentifier` prop is required for row selection.\");\n return;\n }\n\n const rowId = row[rowIdentifier] as any;\n const selectedIndex = selectedRows.findIndex(selectedRow => (selectedRow as any)[rowIdentifier] === rowId);\n let newSelected: T[] = [];\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selectedRows, row);\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selectedRows.slice(1));\n } else if (selectedIndex === selectedRows.length - 1) {\n newSelected = newSelected.concat(selectedRows.slice(0, -1));\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selectedRows.slice(0, selectedIndex),\n selectedRows.slice(selectedIndex + 1),\n );\n }\n setSelectedRows(newSelected);\n };\n\n const isSelected = (row: T) => {\n if (!rowIdentifier) return false;\n return selectedRows.some(selectedRow => (selectedRow as any)[rowIdentifier] === (row as any)[rowIdentifier]);\n };\n\n const numSelectedOnPage = paginatedData.filter(isSelected).length;\n const isAllSelectedOnPage = paginatedData.length > 0 && numSelectedOnPage === paginatedData.length;\n const isIndeterminateOnPage = numSelectedOnPage > 0 && numSelectedOnPage < paginatedData.length;\n\n return (\n <TableContainer >\n\n <MuiTable sx={{ minWidth }} aria-label=\"custom table\" style={ paginatedData.length === 0 ? { display: 'none' } : {} }>\n {/* Table Header */}\n {/* Sin colores propios: la cabecera y las filas las pinta el theme del\n consumidor (MuiTableCell.head / MuiTableRow), que es donde vive el\n sistema visual. Hardcodear acá le ganaba al theme por ser `sx`. */}\n <TableHead>\n <TableRow>\n {enableRowSelection && (\n <TableCell padding=\"checkbox\" sx={{ width: '50px' }}> {/* Puedes ajustar este ancho fijo si lo deseas */}\n <Checkbox\n color=\"primary\"\n indeterminate={isIndeterminateOnPage}\n checked={isAllSelectedOnPage}\n onChange={handleSelectAllClick}\n inputProps={{ 'aria-label': 'select all desserts' }}\n />\n </TableCell>\n )}\n {columns.map((column, index) => (\n <TableCell\n key={index}\n sx={{\n width: column.props.width || 'auto', // APLICA EL ANCHO AQUÍ\n whiteSpace: 'nowrap', // Evita que el texto se ajuste si la columna es pequeña\n }}\n >\n <Typography variant=\"inherit\" component=\"span\">\n {column.props.name}\n </Typography>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n {/* Table Body */}\n <TableBody sx={{ borderRadius: '10px', overflow: 'hidden' }}>\n {paginatedData.map((row, rowIndex) => {\n const isRowSelected = enableRowSelection && isSelected(row);\n return (\n <TableRow\n key={rowIndex}\n hover\n sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n selected={isRowSelected}\n >\n {enableRowSelection && (\n <TableCell padding=\"checkbox\" sx={{ width: '50px' }}> {/* Mismo ancho para la celda de la fila */}\n <Checkbox\n color=\"primary\"\n checked={isRowSelected}\n onClick={(event) => handleRowClick(event, row)}\n inputProps={{ 'aria-labelledby': `table-checkbox-${rowIndex}` }}\n />\n </TableCell>\n )}\n {columns.map((column, colIndex) => {\n const { field, children: cellRenderer } = column.props;\n\n let fieldData: Partial<T>;\n\n if (Array.isArray(field)) {\n if(field.length === 0){\n fieldData = {...row};\n }else{\n fieldData = (field as Array<keyof T>).reduce((acc, currentField) => {\n (acc as any)[currentField] = (row as any)[currentField];\n return acc;\n }, {} as Partial<T>);\n }\n\n } else {\n fieldData = { [field]: (row as any)[field] } as Partial<T>;\n }\n\n return (\n <TableCell\n key={colIndex}\n sx={{\n // Solo layout de columna. Tamaño, padding y regla de fila\n // son del theme del consumidor (MuiTableCell).\n width: column.props.width || 'auto', // APLICA EL ANCHO AQUÍ TAMBIÉN\n whiteSpace: 'nowrap', // Asegura que el contenido no se rompa prematuramente\n }}\n >\n {cellRenderer(fieldData)}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n {/* Empty table message */}\n \n </TableBody>\n </MuiTable>\n\n { paginatedData.length === 0 && (\n <Box display=\"flex\" flexDirection=\"column\" alignItems=\"center\" justifyContent=\"center\" p={4} > \n { emptyImageSrc }\n\n <Typography variant=\"body2\" color=\"#878E9A\" fontSize=\"18px\" fontWeight=\"600\">\n {emptyTitle || 'No hay datos disponibles para mostrar.'}\n </Typography>\n <Typography variant=\"body2\" color=\"#878E9A\" fontSize=\"14px\" mt={1}> \n {emptyMessage || 'Intente ajustar sus filtros o agregar nuevos datos.'}\n </Typography>\n\n </Box>\n )\n }\n\n {/* Pagination and Export Controls */}\n {(effectiveTotalPages > 0 || enableCSVExport || enableExcelExport || (enableRowSelection && selectedRows.length > 0)) && (\n <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"center\" p={2}>\n {/* Page Size Selector (Left) */}\n {(effectiveTotalPages > 0 && showPageSizeSelector) && (\n <Select\n size=\"small\"\n value={activePageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n >\n {[1, 2, 3, 5, 10, 20, 50, 100].map((size) => (\n <MenuItem key={size} value={size}>\n Mostrar {size}\n </MenuItem>\n ))}\n </Select>\n )}\n\n {/* Pagination Controls (Center) */}\n {effectiveTotalPages > 0 && (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n gap={0.5}\n sx={{ flexGrow: 1, justifyContent: 'center' }}\n >\n <IconButton\n onClick={() => handlePageChange(1)}\n disabled={activePage <= 1}\n size=\"small\"\n color=\"primary\"\n >\n <FirstPageIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton\n onClick={() => handlePageChange(activePage - 1)}\n disabled={activePage <= 1}\n size=\"small\"\n color=\"primary\"\n >\n <KeyboardArrowLeftIcon fontSize=\"small\" />\n </IconButton>\n\n {pageNumbers.map((pageNumber) => (\n <Button\n key={pageNumber}\n onClick={() => handlePageChange(pageNumber)}\n variant={activePage === pageNumber ? 'contained' : 'text'}\n size=\"small\"\n sx={{ minWidth: '32px', height: '32px' }}\n >\n {pageNumber}\n </Button>\n ))}\n\n <IconButton\n onClick={() => handlePageChange(activePage + 1)}\n disabled={activePage >= effectiveTotalPages}\n size=\"small\"\n color=\"primary\"\n >\n <KeyboardArrowRightIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton\n onClick={() => handlePageChange(effectiveTotalPages)}\n disabled={activePage >= effectiveTotalPages}\n size=\"small\"\n color=\"primary\"\n >\n <LastPageIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n )}\n\n {enableRowSelection && selectedRows.length > 0 && (\n <Typography variant=\"subtitle2\" sx={{ mr: 2 }}>\n {selectedRows.length} seleccionados\n </Typography>\n )}\n\n {(enableCSVExport || enableExcelExport) && (\n <Box display=\"flex\" alignItems=\"center\" gap={1}>\n {enableCSVExport && (\n <Button\n variant=\"text\"\n color=\"primary\"\n onClick={() =>\n exportToCSV({\n data,\n columns,\n fileName: csvExportFileName,\n exportColumns: csvExportColumns,\n setSnackbarOpen,\n setSnackbarMessage,\n setSnackbarSeverity,\n })\n }\n size=\"small\"\n startIcon={<DownloadOutlinedIcon />}\n >\n {csvExportButtonText}\n </Button>\n )}\n {enableExcelExport && (\n <Button\n variant=\"text\"\n color=\"primary\"\n onClick={() =>\n exportToExcel({\n data,\n columns,\n fileName: excelExportFileName,\n exportColumns: excelExportColumns,\n setSnackbarOpen,\n setSnackbarMessage,\n setSnackbarSeverity,\n })\n }\n size=\"small\"\n startIcon={<DownloadOutlinedIcon />}\n >\n {excelExportButtonText}\n </Button>\n )}\n </Box>\n )}\n </Box>\n )}\n\n <Snackbar open={snackbarOpen} autoHideDuration={3000} onClose={handleSnackbarClose} anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}>\n <Alert onClose={handleSnackbarClose} severity={snackbarSeverity} sx={{ width: '100%' }}>\n {snackbarMessage}\n </Alert>\n </Snackbar>\n </TableContainer>\n );\n}\n\nexport default Table;"],"names":["Alert","jsx","Box","Children","isValidElement","useState","useEffect","TableContainer","jsxs","MuiTable","TableHead","TableRow","TableCell","Checkbox","Typography","TableBody","Select","MenuItem","IconButton","Button","Snackbar"],"mappings":"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"}
@@ -194,7 +194,8 @@ function Table({
194
194
  showPageSizeSelector = true,
195
195
  emptyTitle = "No hay datos disponibles",
196
196
  emptyMessage,
197
- emptyImageSrc = /* @__PURE__ */ jsx(Box, { mb: 2, children: /* @__PURE__ */ jsx("img", { src: EmptyImage, alt: "No data", style: { maxWidth: "150px", opacity: 0.6 } }) })
197
+ emptyImageSrc = /* @__PURE__ */ jsx(Box, { mb: 2, children: /* @__PURE__ */ jsx("img", { src: EmptyImage, alt: "No data", style: { maxWidth: "150px", opacity: 0.6 } }) }),
198
+ minWidth = 650
198
199
  }) {
199
200
  const columns = Children.toArray(children).filter(
200
201
  (child) => isValidElement(child) && child.type.displayName === "Column"
@@ -307,7 +308,7 @@ function Table({
307
308
  const isAllSelectedOnPage = paginatedData.length > 0 && numSelectedOnPage === paginatedData.length;
308
309
  const isIndeterminateOnPage = numSelectedOnPage > 0 && numSelectedOnPage < paginatedData.length;
309
310
  return /* @__PURE__ */ jsxs(TableContainer, { children: [
310
- /* @__PURE__ */ jsxs(Table$1, { sx: { minWidth: 650 }, "aria-label": "custom table", style: paginatedData.length === 0 ? { display: "none" } : {}, children: [
311
+ /* @__PURE__ */ jsxs(Table$1, { sx: { minWidth }, "aria-label": "custom table", style: paginatedData.length === 0 ? { display: "none" } : {}, children: [
311
312
  /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
312
313
  enableRowSelection && /* @__PURE__ */ jsxs(TableCell, { padding: "checkbox", sx: { width: "50px" }, children: [
313
314
  " ",
@@ -525,4 +526,4 @@ function Table({
525
526
  export {
526
527
  Table as T
527
528
  };
528
- //# sourceMappingURL=Table-aNFAOuQk.js.map
529
+ //# sourceMappingURL=Table-BuALBQWX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table-BuALBQWX.js","sources":["../src/components/Table/exportsUtils.ts","../src/components/Table/EmptyTable.png","../src/components/Table/Table.tsx"],"sourcesContent":["import React from 'react';\nimport { AlertProps } from '@mui/material/Alert';\nimport { ColumnProps } from '../Column/Column'; // Importa ColumnProps y FieldName desde Column.tsx\n\n// Define las propiedades comunes para las funciones de exportación\ninterface ExportOptions<T> {\n data: T[]; // Los datos a exportar\n columns: React.ReactElement<ColumnProps<T>>[]; // Las definiciones de las columnas\n fileName: string; // El nombre del archivo a descargar\n exportColumns?: string[]; // Nombres de columnas específicas para exportar\n setSnackbarOpen: React.Dispatch<React.SetStateAction<boolean>>; // Setter para abrir/cerrar el Snackbar\n setSnackbarMessage: React.Dispatch<React.SetStateAction<string>>; // Setter para el mensaje del Snackbar\n setSnackbarSeverity: React.Dispatch<React.SetStateAction<AlertProps['severity']>>; // Setter para la severidad del Snackbar\n}\n\n/**\n * Función para exportar datos a un archivo CSV.\n * @param options Opciones de exportación, incluyendo datos, columnas, nombre de archivo y setters de Snackbar.\n */\nexport const exportToCSV = <T>(options: ExportOptions<T>) => {\n const { data, columns, fileName, exportColumns, setSnackbarOpen, setSnackbarMessage, setSnackbarSeverity } = options;\n\n if (!data || data.length === 0) {\n setSnackbarMessage(\"No hay datos para exportar a CSV.\");\n setSnackbarSeverity('warning');\n setSnackbarOpen(true);\n return;\n }\n\n setSnackbarMessage(\"Exportando datos a CSV...\");\n setSnackbarSeverity('info');\n setSnackbarOpen(true);\n\n try {\n // Filtra las columnas si se especifican columnas para exportar, de lo contrario, usa todas las columnas definidas.\n const columnsToExport = exportColumns\n ? columns.filter(col => exportColumns.includes(col.props.name))\n : columns;\n\n // Obtiene los encabezados (nombres de las columnas) y los escapa para CSV.\n const headers = columnsToExport.map(col => `\"${col.props.name.replace(/\"/g, '\"\"')}\"`).join(',');\n\n // Mapea los datos a filas CSV.\n const csvRows = data.map(row => {\n const values = columnsToExport.map(col => {\n const field = col.props.field;\n let cellValue: any;\n\n // Si 'field' es un array, toma el valor del primer campo para la exportación.\n if (Array.isArray(field)) {\n cellValue = (row as any)[field[0]];\n } else {\n cellValue = (row as any)[field];\n }\n\n // Convierte a string y maneja comas, comillas dobles y saltos de línea para CSV.\n let formattedValue = String(cellValue || '');\n if (formattedValue.includes(',') || formattedValue.includes('\"') || formattedValue.includes('\\n')) {\n formattedValue = `\"${formattedValue.replace(/\"/g, '\"\"')}\"`;\n }\n return formattedValue;\n });\n return values.join(',');\n });\n\n const csvContent = [headers, ...csvRows].join('\\n'); // Une los encabezados y las filas.\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName + '.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n\n setSnackbarMessage(\"¡Exportación a CSV completada!\");\n setSnackbarSeverity('success');\n } else {\n setSnackbarMessage(\"Tu navegador no soporta la descarga directa para CSV. Por favor, copia el contenido manualmente.\");\n setSnackbarSeverity('error');\n }\n } catch (error) {\n console.error(\"Error al exportar los datos a CSV:\", error);\n setSnackbarMessage(\"Error al exportar los datos a CSV.\");\n setSnackbarSeverity('error');\n } finally {\n setSnackbarOpen(true);\n }\n};\n\n/**\n * Función para exportar datos a un archivo Excel (formato XLSX).\n * Genera una tabla HTML que luego se descarga como un archivo .xlsx.\n * @param options Opciones de exportación, incluyendo datos, columnas, nombre de archivo y setters de Snackbar.\n */\nexport const exportToExcel = <T>(options: ExportOptions<T>) => {\n const { data, columns, fileName, exportColumns, setSnackbarOpen, setSnackbarMessage, setSnackbarSeverity } = options;\n\n if (!data || data.length === 0) {\n setSnackbarMessage(\"No hay datos para exportar a Excel.\");\n setSnackbarSeverity('warning');\n setSnackbarOpen(true);\n return;\n }\n\n setSnackbarMessage(\"Exportando datos a Excel (XLSX)...\");\n setSnackbarSeverity('info');\n setSnackbarOpen(true);\n\n try {\n const columnsToExport = exportColumns\n ? columns.filter(col => exportColumns.includes(col.props.name))\n : columns;\n\n // Construye el contenido HTML de la tabla.\n let tableHTML = `\n <html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\n xmlns:x=\"urn:schemas-microsoft-com:office:excel\"\n xmlns=\"http://www.w3.org/TR/REC-html40\">\n <head>\n <meta charset=\"utf-8\" />\n <!--[if gte mso 9]><xml>\n <x:ExcelWorkbook>\n <x:ExcelWorksheets>\n <x:ExcelWorksheet>\n <x:Name>Hoja1</x:Name>\n <x:WorksheetOptions>\n <x:DisplayGridlines/>\n </x:WorksheetOptions>\n </x:ExcelWorksheet>\n </x:ExcelWorksheets>\n </x:ExcelWorkbook>\n </xml><![endif]-->\n </head>\n <body>\n <table>\n <thead>\n <tr>\n ${columnsToExport.map(col => `<th>${col.props.name}</th>`).join('')}\n </tr>\n </thead>\n <tbody>\n ${data.map(row => `\n <tr>\n ${columnsToExport.map(col => {\n const field = col.props.field;\n let cellValue: any;\n if (Array.isArray(field)) {\n cellValue = (row as any)[field[0]];\n } else {\n cellValue = (row as any)[field];\n }\n // Escapa caracteres HTML para el contenido de la celda.\n return `<td>${String(cellValue || '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</td>`;\n }).join('')}\n </tr>\n `).join('')}\n </tbody>\n </table>\n </body>\n </html>\n `;\n\n // Crea un Blob con el contenido HTML y el tipo MIME de XLSX.\n const blob = new Blob([tableHTML], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;' }); \n\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName + '.xlsx'); // Usa la extensión .xlsx\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n\n setSnackbarMessage(\"¡Exportación a Excel (XLSX) completada!\");\n setSnackbarSeverity('success');\n } else {\n setSnackbarMessage(\"Tu navegador no soporta la descarga directa para Excel (XLSX). Por favor, copia el contenido manualmente.\");\n setSnackbarSeverity('error');\n }\n } catch (error) {\n console.error(\"Error al exportar los datos a Excel (XLSX):\", error);\n setSnackbarMessage(\"Error al exportar los datos a Excel (XLSX).\");\n setSnackbarSeverity('error');\n } finally {\n setSnackbarOpen(true);\n }\n};\n","export default \"data:image/png;base64,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\"","import React, { Children, isValidElement, useState, useEffect } from 'react';\nimport {\n TableContainer,\n Table as MuiTable,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n Typography,\n Select,\n MenuItem,\n Box,\n Button,\n Snackbar,\n IconButton,\n Checkbox,\n} from '@mui/material';\nimport MuiAlert, { AlertProps } from '@mui/material/Alert';\nimport { ColumnProps } from '../Column/Column'; // Asegúrate de que esta ruta sea correcta\nimport DownloadOutlinedIcon from '@mui/icons-material/DownloadOutlined';\nimport FirstPageIcon from '@mui/icons-material/FirstPage';\nimport LastPageIcon from '@mui/icons-material/LastPage';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\n\nimport { exportToCSV, exportToExcel } from './exportsUtils';\n\n// @ts-ignore\nimport EmptyImage from './EmptyTable.png';\n\nexport type FieldName<T> = keyof T | Array<keyof T>;\n\ninterface TableProps<T> {\n data: T[];\n children: React.ReactNode;\n\n currentPage?: number;\n pageSize?: number;\n totalPages?: number;\n previousPage?: number;\n nextPage?: number;\n pageSizeSelectorValue?: number;\n onPageChange?: (newPage: number) => void;\n onPageSizeChange?: (newSize: number) => void;\n visiblePageNumbers?: number;\n\n enableCSVExport?: boolean;\n csvExportFileName?: string;\n csvExportButtonText?: string;\n csvExportColumns?: string[];\n\n enableExcelExport?: boolean;\n excelExportFileName?: string;\n excelExportButtonText?: string;\n excelExportColumns?: string[];\n\n enableRowSelection?: boolean;\n rowIdentifier?: keyof T;\n onSelectionChange?: (selectedItems: T[]) => void;\n showPageSizeSelector?: boolean;\n emptyTitle?: string;\n emptyMessage?: string;\n emptyImageSrc?: React.ReactNode;\n /**\n * Ancho mínimo de la tabla. Default: `650`.\n *\n * Por debajo de ese ancho el contenedor scrollea en horizontal, así que en un\n * panel angosto (una card lateral, un móvil) las últimas columnas quedan\n * escondidas detrás del scroll. Bajarlo —o ponerlo en `0`— deja que las\n * columnas se compriman en vez de desbordar.\n */\n minWidth?: number | string;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(function Alert(\n props,\n ref,\n) {\n return <MuiAlert elevation={6} ref={ref} variant=\"filled\" {...props} />;\n});\n\nexport function Table<T>({\n data,\n children,\n currentPage,\n pageSize,\n totalPages,\n previousPage: _previousPage,\n nextPage: _nextPage,\n pageSizeSelectorValue = 10,\n onPageChange,\n onPageSizeChange,\n visiblePageNumbers = 5,\n enableCSVExport = false,\n csvExportFileName = 'data.csv',\n csvExportButtonText = 'Exportar CSV',\n csvExportColumns,\n enableExcelExport = false,\n excelExportFileName = 'data.xlsx',\n excelExportButtonText = 'Exportar Excel',\n excelExportColumns,\n enableRowSelection = false,\n rowIdentifier,\n onSelectionChange,\n showPageSizeSelector = true,\n emptyTitle = 'No hay datos disponibles',\n emptyMessage,\n emptyImageSrc = <Box mb={2}>\n <img src={EmptyImage} alt=\"No data\" style={{ maxWidth: '150px', opacity: 0.6 }} />\n </Box>,\n minWidth = 650,\n}: TableProps<T>) {\n const columns = Children.toArray(children).filter(\n (child): child is React.ReactElement<ColumnProps<T>> =>\n isValidElement(child) && (child.type as any).displayName === 'Column'\n );\n\n const [snackbarOpen, setSnackbarOpen] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState(\"\");\n const [snackbarSeverity, setSnackbarSeverity] = useState<AlertProps['severity']>('info');\n\n const [selectedRows, setSelectedRows] = useState<T[]>([]);\n\n useEffect(() => {\n setSelectedRows([]);\n }, [data, currentPage, pageSize]);\n\n useEffect(() => {\n onSelectionChange?.(selectedRows);\n }, [selectedRows, onSelectionChange]);\n\n const handleSnackbarClose = (_event?: React.SyntheticEvent | Event, reason?: string) => {\n if (reason === 'clickaway') {\n return;\n }\n setSnackbarOpen(false);\n };\n\n const isControlled = typeof onPageChange === 'function' && typeof currentPage === 'number';\n const [internalPage, setInternalPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(pageSizeSelectorValue);\n\n const activePage = isControlled ? currentPage! : internalPage;\n const activePageSize = isControlled ? pageSize! : internalPageSize;\n\n const paginatedData = isControlled ? data : data.slice((activePage - 1) * activePageSize, activePage * activePageSize);\n\n const effectiveTotalPages = isControlled\n ? totalPages!\n : Math.ceil(data.length / activePageSize);\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > effectiveTotalPages) return;\n if (isControlled) onPageChange?.(newPage);\n else setInternalPage(newPage);\n };\n\n const handlePageSizeChange = (newSize: number) => {\n if (isControlled) {\n onPageSizeChange?.(newSize);\n onPageChange?.(1);\n } else {\n setInternalPageSize(newSize);\n setInternalPage(1);\n }\n };\n\n const getPageNumbers = () => {\n const pages = [];\n const maxPages = effectiveTotalPages;\n const current = activePage;\n const half = Math.floor(visiblePageNumbers / 2);\n\n let startPage = Math.max(1, current - half);\n let endPage = Math.min(maxPages, current + half);\n\n if (endPage - startPage + 1 < visiblePageNumbers) {\n if (startPage === 1) {\n endPage = Math.min(maxPages, startPage + visiblePageNumbers - 1);\n } else if (endPage === maxPages) {\n startPage = Math.max(1, maxPages - visiblePageNumbers + 1);\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(i);\n }\n return pages;\n };\n\n const pageNumbers = getPageNumbers();\n\n const handleSelectAllClick = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!rowIdentifier) {\n console.warn(\"`rowIdentifier` prop is required for row selection.\");\n return;\n }\n\n if (event.target.checked) {\n const newSelecteds = [...selectedRows];\n paginatedData.forEach(row => {\n const rowId = row[rowIdentifier] as any;\n if (!newSelecteds.some(selectedRow => (selectedRow as any)[rowIdentifier] === rowId)) {\n newSelecteds.push(row);\n }\n });\n setSelectedRows(newSelecteds);\n } else {\n const newSelecteds = selectedRows.filter(selectedRow =>\n !paginatedData.some(row => (row as any)[rowIdentifier] === (selectedRow as any)[rowIdentifier])\n );\n setSelectedRows(newSelecteds);\n }\n };\n\n const handleRowClick = (_event: React.MouseEvent<unknown>, row: T) => {\n if (!rowIdentifier) {\n console.warn(\"`rowIdentifier` prop is required for row selection.\");\n return;\n }\n\n const rowId = row[rowIdentifier] as any;\n const selectedIndex = selectedRows.findIndex(selectedRow => (selectedRow as any)[rowIdentifier] === rowId);\n let newSelected: T[] = [];\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selectedRows, row);\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selectedRows.slice(1));\n } else if (selectedIndex === selectedRows.length - 1) {\n newSelected = newSelected.concat(selectedRows.slice(0, -1));\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selectedRows.slice(0, selectedIndex),\n selectedRows.slice(selectedIndex + 1),\n );\n }\n setSelectedRows(newSelected);\n };\n\n const isSelected = (row: T) => {\n if (!rowIdentifier) return false;\n return selectedRows.some(selectedRow => (selectedRow as any)[rowIdentifier] === (row as any)[rowIdentifier]);\n };\n\n const numSelectedOnPage = paginatedData.filter(isSelected).length;\n const isAllSelectedOnPage = paginatedData.length > 0 && numSelectedOnPage === paginatedData.length;\n const isIndeterminateOnPage = numSelectedOnPage > 0 && numSelectedOnPage < paginatedData.length;\n\n return (\n <TableContainer >\n\n <MuiTable sx={{ minWidth }} aria-label=\"custom table\" style={ paginatedData.length === 0 ? { display: 'none' } : {} }>\n {/* Table Header */}\n {/* Sin colores propios: la cabecera y las filas las pinta el theme del\n consumidor (MuiTableCell.head / MuiTableRow), que es donde vive el\n sistema visual. Hardcodear acá le ganaba al theme por ser `sx`. */}\n <TableHead>\n <TableRow>\n {enableRowSelection && (\n <TableCell padding=\"checkbox\" sx={{ width: '50px' }}> {/* Puedes ajustar este ancho fijo si lo deseas */}\n <Checkbox\n color=\"primary\"\n indeterminate={isIndeterminateOnPage}\n checked={isAllSelectedOnPage}\n onChange={handleSelectAllClick}\n inputProps={{ 'aria-label': 'select all desserts' }}\n />\n </TableCell>\n )}\n {columns.map((column, index) => (\n <TableCell\n key={index}\n sx={{\n width: column.props.width || 'auto', // APLICA EL ANCHO AQUÍ\n whiteSpace: 'nowrap', // Evita que el texto se ajuste si la columna es pequeña\n }}\n >\n <Typography variant=\"inherit\" component=\"span\">\n {column.props.name}\n </Typography>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n {/* Table Body */}\n <TableBody sx={{ borderRadius: '10px', overflow: 'hidden' }}>\n {paginatedData.map((row, rowIndex) => {\n const isRowSelected = enableRowSelection && isSelected(row);\n return (\n <TableRow\n key={rowIndex}\n hover\n sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n selected={isRowSelected}\n >\n {enableRowSelection && (\n <TableCell padding=\"checkbox\" sx={{ width: '50px' }}> {/* Mismo ancho para la celda de la fila */}\n <Checkbox\n color=\"primary\"\n checked={isRowSelected}\n onClick={(event) => handleRowClick(event, row)}\n inputProps={{ 'aria-labelledby': `table-checkbox-${rowIndex}` }}\n />\n </TableCell>\n )}\n {columns.map((column, colIndex) => {\n const { field, children: cellRenderer } = column.props;\n\n let fieldData: Partial<T>;\n\n if (Array.isArray(field)) {\n if(field.length === 0){\n fieldData = {...row};\n }else{\n fieldData = (field as Array<keyof T>).reduce((acc, currentField) => {\n (acc as any)[currentField] = (row as any)[currentField];\n return acc;\n }, {} as Partial<T>);\n }\n\n } else {\n fieldData = { [field]: (row as any)[field] } as Partial<T>;\n }\n\n return (\n <TableCell\n key={colIndex}\n sx={{\n // Solo layout de columna. Tamaño, padding y regla de fila\n // son del theme del consumidor (MuiTableCell).\n width: column.props.width || 'auto', // APLICA EL ANCHO AQUÍ TAMBIÉN\n whiteSpace: 'nowrap', // Asegura que el contenido no se rompa prematuramente\n }}\n >\n {cellRenderer(fieldData)}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n {/* Empty table message */}\n \n </TableBody>\n </MuiTable>\n\n { paginatedData.length === 0 && (\n <Box display=\"flex\" flexDirection=\"column\" alignItems=\"center\" justifyContent=\"center\" p={4} > \n { emptyImageSrc }\n\n <Typography variant=\"body2\" color=\"#878E9A\" fontSize=\"18px\" fontWeight=\"600\">\n {emptyTitle || 'No hay datos disponibles para mostrar.'}\n </Typography>\n <Typography variant=\"body2\" color=\"#878E9A\" fontSize=\"14px\" mt={1}> \n {emptyMessage || 'Intente ajustar sus filtros o agregar nuevos datos.'}\n </Typography>\n\n </Box>\n )\n }\n\n {/* Pagination and Export Controls */}\n {(effectiveTotalPages > 0 || enableCSVExport || enableExcelExport || (enableRowSelection && selectedRows.length > 0)) && (\n <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"center\" p={2}>\n {/* Page Size Selector (Left) */}\n {(effectiveTotalPages > 0 && showPageSizeSelector) && (\n <Select\n size=\"small\"\n value={activePageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n >\n {[1, 2, 3, 5, 10, 20, 50, 100].map((size) => (\n <MenuItem key={size} value={size}>\n Mostrar {size}\n </MenuItem>\n ))}\n </Select>\n )}\n\n {/* Pagination Controls (Center) */}\n {effectiveTotalPages > 0 && (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n gap={0.5}\n sx={{ flexGrow: 1, justifyContent: 'center' }}\n >\n <IconButton\n onClick={() => handlePageChange(1)}\n disabled={activePage <= 1}\n size=\"small\"\n color=\"primary\"\n >\n <FirstPageIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton\n onClick={() => handlePageChange(activePage - 1)}\n disabled={activePage <= 1}\n size=\"small\"\n color=\"primary\"\n >\n <KeyboardArrowLeftIcon fontSize=\"small\" />\n </IconButton>\n\n {pageNumbers.map((pageNumber) => (\n <Button\n key={pageNumber}\n onClick={() => handlePageChange(pageNumber)}\n variant={activePage === pageNumber ? 'contained' : 'text'}\n size=\"small\"\n sx={{ minWidth: '32px', height: '32px' }}\n >\n {pageNumber}\n </Button>\n ))}\n\n <IconButton\n onClick={() => handlePageChange(activePage + 1)}\n disabled={activePage >= effectiveTotalPages}\n size=\"small\"\n color=\"primary\"\n >\n <KeyboardArrowRightIcon fontSize=\"small\" />\n </IconButton>\n\n <IconButton\n onClick={() => handlePageChange(effectiveTotalPages)}\n disabled={activePage >= effectiveTotalPages}\n size=\"small\"\n color=\"primary\"\n >\n <LastPageIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n )}\n\n {enableRowSelection && selectedRows.length > 0 && (\n <Typography variant=\"subtitle2\" sx={{ mr: 2 }}>\n {selectedRows.length} seleccionados\n </Typography>\n )}\n\n {(enableCSVExport || enableExcelExport) && (\n <Box display=\"flex\" alignItems=\"center\" gap={1}>\n {enableCSVExport && (\n <Button\n variant=\"text\"\n color=\"primary\"\n onClick={() =>\n exportToCSV({\n data,\n columns,\n fileName: csvExportFileName,\n exportColumns: csvExportColumns,\n setSnackbarOpen,\n setSnackbarMessage,\n setSnackbarSeverity,\n })\n }\n size=\"small\"\n startIcon={<DownloadOutlinedIcon />}\n >\n {csvExportButtonText}\n </Button>\n )}\n {enableExcelExport && (\n <Button\n variant=\"text\"\n color=\"primary\"\n onClick={() =>\n exportToExcel({\n data,\n columns,\n fileName: excelExportFileName,\n exportColumns: excelExportColumns,\n setSnackbarOpen,\n setSnackbarMessage,\n setSnackbarSeverity,\n })\n }\n size=\"small\"\n startIcon={<DownloadOutlinedIcon />}\n >\n {excelExportButtonText}\n </Button>\n )}\n </Box>\n )}\n </Box>\n )}\n\n <Snackbar open={snackbarOpen} autoHideDuration={3000} onClose={handleSnackbarClose} anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}>\n <Alert onClose={handleSnackbarClose} severity={snackbarSeverity} sx={{ width: '100%' }}>\n {snackbarMessage}\n </Alert>\n </Snackbar>\n </TableContainer>\n );\n}\n\nexport default Table;"],"names":["React","Alert","MuiTable"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
2
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
3
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
4
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -16,22 +14,22 @@ var __spreadValues = (a, b) => {
16
14
  }
17
15
  return a;
18
16
  };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
17
  import { jsx } from "react/jsx-runtime";
21
18
  import MuiTooltip from "@mui/material/Tooltip";
22
19
  import Typography from "@mui/material/Typography";
23
20
  import Box from "@mui/material/Box";
24
21
  const Tooltip = ({ text, maxWidth, children, sx }) => {
25
- const tooltipContentStyle = __spreadProps(__spreadValues({}, maxWidth && { maxWidth }), {
22
+ const tooltipContentStyle = {
26
23
  padding: "4px 8px",
27
24
  textAlign: "center"
28
- });
25
+ };
29
26
  return /* @__PURE__ */ jsx(
30
27
  MuiTooltip,
31
28
  {
32
29
  title: /* @__PURE__ */ jsx(Typography, { variant: "caption", component: "span", sx: tooltipContentStyle, children: text }),
33
30
  placement: "top",
34
31
  arrow: true,
32
+ slotProps: maxWidth ? { tooltip: { sx: { maxWidth } } } : void 0,
35
33
  children: /* @__PURE__ */ jsx(Box, { component: "span", sx: __spreadValues({ display: "inline-block" }, sx), children })
36
34
  }
37
35
  );
@@ -39,4 +37,4 @@ const Tooltip = ({ text, maxWidth, children, sx }) => {
39
37
  export {
40
38
  Tooltip as T
41
39
  };
42
- //# sourceMappingURL=Tooltip-BB77JBcg.js.map
40
+ //# sourceMappingURL=Tooltip-B15a34_o.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip-B15a34_o.js","sources":["../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport MuiTooltip from '@mui/material/Tooltip'; \nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport { SxProps, Theme } from '@mui/material';\n\n/**\n * Propiedades del componente Tooltip.\n * @param {string} text - El texto a mostrar dentro del Tooltip.\n * @param {number} [maxWidth] - El ancho máximo opcional del Tooltip en píxeles.\n * @param {React.ReactNode} children - El elemento al que se le aplicará el Tooltip.\n * @param {SxProps<Theme>} [sx] - Estilos opcionales para el Box contenedor.\n */\ninterface TooltipProps {\n text: string;\n maxWidth?: number;\n children: React.ReactNode;\n sx?: SxProps<Theme>;\n}\n\n/**\n * Componente Tooltip reutilizable.\n * Muestra un texto al pasar el ratón sobre su elemento hijo, \n * permitiendo un ancho máximo configurable.\n * * @param {TooltipProps} props - Propiedades del Tooltip.\n */\nconst Tooltip: React.FC<TooltipProps> = ({ text, maxWidth, children, sx }) => {\n \n const tooltipContentStyle: SxProps<Theme> = {\n padding: '4px 8px',\n textAlign: 'center',\n };\n\n return (\n \n <MuiTooltip\n title={\n \n <Typography variant=\"caption\" component=\"span\" sx={tooltipContentStyle}>\n {text}\n </Typography>\n }\n \n placement=\"top\"\n arrow\n // `maxWidth` va en la superficie del tooltip, no en el texto: si se aplica\n // al hijo, MUI mantiene su caja en los 300px por default y sólo el texto\n // corta antes, dejando aire muerto a la derecha.\n slotProps={maxWidth ? { tooltip: { sx: { maxWidth } } } : undefined}\n >\n \n <Box component=\"span\" sx={{ display: 'inline-block', ...sx }}>\n {children}\n </Box>\n </MuiTooltip>\n );\n};\n\nexport default Tooltip;"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,UAAkC,CAAC,EAAE,MAAM,UAAU,UAAU,SAAS;AAE5E,QAAM,sBAAsC;AAAA,IAC1C,SAAS;AAAA,IACT,WAAW;AAAA,EAAA;AAGb,SAEE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,2BAEG,YAAA,EAAW,SAAQ,WAAU,WAAU,QAAO,IAAI,qBAChD,UAAA,KAAA,CACH;AAAA,MAGF,WAAU;AAAA,MACV,OAAK;AAAA,MAIL,WAAW,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,SAAA,EAAS,EAAE,IAAM;AAAA,MAG1D,UAAA,oBAAC,KAAA,EAAI,WAAU,QAAO,IAAI,iBAAE,SAAS,kBAAmB,KACrD,SAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
3
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
5
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -17,25 +15,25 @@ var __spreadValues = (a, b) => {
17
15
  }
18
16
  return a;
19
17
  };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
18
  const jsxRuntime = require("react/jsx-runtime");
22
19
  const MuiTooltip = require("@mui/material/Tooltip");
23
20
  const Typography = require("@mui/material/Typography");
24
21
  const Box = require("@mui/material/Box");
25
22
  const Tooltip = ({ text, maxWidth, children, sx }) => {
26
- const tooltipContentStyle = __spreadProps(__spreadValues({}, maxWidth && { maxWidth }), {
23
+ const tooltipContentStyle = {
27
24
  padding: "4px 8px",
28
25
  textAlign: "center"
29
- });
26
+ };
30
27
  return /* @__PURE__ */ jsxRuntime.jsx(
31
28
  MuiTooltip,
32
29
  {
33
30
  title: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", component: "span", sx: tooltipContentStyle, children: text }),
34
31
  placement: "top",
35
32
  arrow: true,
33
+ slotProps: maxWidth ? { tooltip: { sx: { maxWidth } } } : void 0,
36
34
  children: /* @__PURE__ */ jsxRuntime.jsx(Box, { component: "span", sx: __spreadValues({ display: "inline-block" }, sx), children })
37
35
  }
38
36
  );
39
37
  };
40
38
  exports.Tooltip = Tooltip;
41
- //# sourceMappingURL=Tooltip-DpAsWGpN.cjs.map
39
+ //# sourceMappingURL=Tooltip-CEEDkwds.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip-CEEDkwds.cjs","sources":["../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport MuiTooltip from '@mui/material/Tooltip'; \nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport { SxProps, Theme } from '@mui/material';\n\n/**\n * Propiedades del componente Tooltip.\n * @param {string} text - El texto a mostrar dentro del Tooltip.\n * @param {number} [maxWidth] - El ancho máximo opcional del Tooltip en píxeles.\n * @param {React.ReactNode} children - El elemento al que se le aplicará el Tooltip.\n * @param {SxProps<Theme>} [sx] - Estilos opcionales para el Box contenedor.\n */\ninterface TooltipProps {\n text: string;\n maxWidth?: number;\n children: React.ReactNode;\n sx?: SxProps<Theme>;\n}\n\n/**\n * Componente Tooltip reutilizable.\n * Muestra un texto al pasar el ratón sobre su elemento hijo, \n * permitiendo un ancho máximo configurable.\n * * @param {TooltipProps} props - Propiedades del Tooltip.\n */\nconst Tooltip: React.FC<TooltipProps> = ({ text, maxWidth, children, sx }) => {\n \n const tooltipContentStyle: SxProps<Theme> = {\n padding: '4px 8px',\n textAlign: 'center',\n };\n\n return (\n \n <MuiTooltip\n title={\n \n <Typography variant=\"caption\" component=\"span\" sx={tooltipContentStyle}>\n {text}\n </Typography>\n }\n \n placement=\"top\"\n arrow\n // `maxWidth` va en la superficie del tooltip, no en el texto: si se aplica\n // al hijo, MUI mantiene su caja en los 300px por default y sólo el texto\n // corta antes, dejando aire muerto a la derecha.\n slotProps={maxWidth ? { tooltip: { sx: { maxWidth } } } : undefined}\n >\n \n <Box component=\"span\" sx={{ display: 'inline-block', ...sx }}>\n {children}\n </Box>\n </MuiTooltip>\n );\n};\n\nexport default Tooltip;"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,UAAkC,CAAC,EAAE,MAAM,UAAU,UAAU,SAAS;AAE5E,QAAM,sBAAsC;AAAA,IAC1C,SAAS;AAAA,IACT,WAAW;AAAA,EAAA;AAGb,SAEEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,sCAEG,YAAA,EAAW,SAAQ,WAAU,WAAU,QAAO,IAAI,qBAChD,UAAA,KAAA,CACH;AAAA,MAGF,WAAU;AAAA,MACV,OAAK;AAAA,MAIL,WAAW,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,SAAA,EAAS,EAAE,IAAM;AAAA,MAG1D,UAAAA,2BAAAA,IAAC,KAAA,EAAI,WAAU,QAAO,IAAI,iBAAE,SAAS,kBAAmB,KACrD,SAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;;"}
@@ -1,6 +1,6 @@
1
- export * from './ActionMenu/index'
1
+ export * from '../src/components/ActionMenu/index'
2
2
  export {}
3
- import _default from './ActionMenu/index'
3
+ import _default from '../src/components/ActionMenu/index'
4
4
  export default _default
5
- export * from './ActionMenu/index'
5
+ export * from '../src/components/ActionMenu/index'
6
6
  export {}
@@ -1,6 +1,6 @@
1
- export * from './Alert/index'
1
+ export * from '../src/components/Alert/index'
2
2
  export {}
3
- import _default from './Alert/index'
3
+ import _default from '../src/components/Alert/index'
4
4
  export default _default
5
- export * from './Alert/index'
5
+ export * from '../src/components/Alert/index'
6
6
  export {}
@@ -1,6 +1,6 @@
1
- export * from './AppBar/index'
1
+ export * from '../src/components/AppBar/index'
2
2
  export {}
3
- import _default from './AppBar/index'
3
+ import _default from '../src/components/AppBar/index'
4
4
  export default _default
5
- export * from './AppBar/index'
5
+ export * from '../src/components/AppBar/index'
6
6
  export {}
@@ -1,6 +1,6 @@
1
- export * from './Autocomplete/index'
1
+ export * from '../src/components/Autocomplete/index'
2
2
  export {}
3
- import _default from './Autocomplete/index'
3
+ import _default from '../src/components/Autocomplete/index'
4
4
  export default _default
5
- export * from './Autocomplete/index'
5
+ export * from '../src/components/Autocomplete/index'
6
6
  export {}
@@ -1,2 +1,2 @@
1
- export * from './Avatar/index'
1
+ export * from '../src/components/Avatar/index'
2
2
  export {}
@@ -1,6 +1,6 @@
1
- export * from './Breadcrumbs/index'
1
+ export * from '../src/components/Breadcrumbs/index'
2
2
  export {}
3
- import _default from './Breadcrumbs/index'
3
+ import _default from '../src/components/Breadcrumbs/index'
4
4
  export default _default
5
- export * from './Breadcrumbs/index'
5
+ export * from '../src/components/Breadcrumbs/index'
6
6
  export {}
@@ -1,2 +1,2 @@
1
- export * from './Button/index'
1
+ export * from '../src/components/Button/index'
2
2
  export {}
@@ -1,6 +1,6 @@
1
- export * from './ButtonGroup/index'
1
+ export * from '../src/components/ButtonGroup/index'
2
2
  export {}
3
- import _default from './ButtonGroup/index'
3
+ import _default from '../src/components/ButtonGroup/index'
4
4
  export default _default
5
- export * from './ButtonGroup/index'
5
+ export * from '../src/components/ButtonGroup/index'
6
6
  export {}
@@ -1,6 +1,6 @@
1
- export * from './Card/index'
1
+ export * from '../src/components/Card/index'
2
2
  export {}
3
- import _default from './Card/index'
3
+ import _default from '../src/components/Card/index'
4
4
  export default _default
5
- export * from './Card/index'
5
+ export * from '../src/components/Card/index'
6
6
  export {}
@@ -1,6 +1,6 @@
1
- export * from './Checkbox/index'
1
+ export * from '../src/components/Checkbox/index'
2
2
  export {}
3
- import _default from './Checkbox/index'
3
+ import _default from '../src/components/Checkbox/index'
4
4
  export default _default
5
- export * from './Checkbox/index'
5
+ export * from '../src/components/Checkbox/index'
6
6
  export {}
@@ -1,6 +1,6 @@
1
- export * from './Chip/index'
1
+ export * from '../src/components/Chip/index'
2
2
  export {}
3
- import _default from './Chip/index'
3
+ import _default from '../src/components/Chip/index'
4
4
  export default _default
5
- export * from './Chip/index'
5
+ export * from '../src/components/Chip/index'
6
6
  export {}
@@ -1,2 +1,2 @@
1
- export * from './Column/index'
1
+ export * from '../src/components/Column/index'
2
2
  export {}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const DataRow = require("../../DataRow-CfCaSdaJ.cjs");
4
+ exports.DataRow = DataRow.DataRow;
5
+ exports.default = DataRow.DataRow;
6
+ //# sourceMappingURL=DataRow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataRow.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,6 @@
1
+ import { D, D as D2 } from "../../DataRow-B7fJ5taA.js";
2
+ export {
3
+ D as DataRow,
4
+ D2 as default
5
+ };
6
+ //# sourceMappingURL=DataRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataRow.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,6 @@
1
+ export * from '../src/components/DataRow/index'
2
+ export {}
3
+ import _default from '../src/components/DataRow/index'
4
+ export default _default
5
+ export * from '../src/components/DataRow/index'
6
+ export {}
@@ -1,6 +1,6 @@
1
- export * from './DatePicker/index'
1
+ export * from '../src/components/DatePicker/index'
2
2
  export {}
3
- import _default from './DatePicker/index'
3
+ import _default from '../src/components/DatePicker/index'
4
4
  export default _default
5
- export * from './DatePicker/index'
5
+ export * from '../src/components/DatePicker/index'
6
6
  export {}
@@ -1,6 +1,6 @@
1
- export * from './DateTimePicker/index'
1
+ export * from '../src/components/DateTimePicker/index'
2
2
  export {}
3
- import _default from './DateTimePicker/index'
3
+ import _default from '../src/components/DateTimePicker/index'
4
4
  export default _default
5
- export * from './DateTimePicker/index'
5
+ export * from '../src/components/DateTimePicker/index'
6
6
  export {}