@soyfri/shared-library 1.5.0-beta.4 → 1.6.0-beta.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.
- package/Button-C17mExpd.cjs.map +1 -1
- package/Button-UkkP-bNw.js.map +1 -1
- package/components/ActionMenu/ActionMenu.cjs +107 -0
- package/components/ActionMenu/ActionMenu.cjs.map +1 -0
- package/components/ActionMenu/ActionMenu.d.ts +44 -0
- package/components/ActionMenu/ActionMenu.js +107 -0
- package/components/ActionMenu/ActionMenu.js.map +1 -0
- package/components/ActionMenu/index.d.ts +2 -0
- package/components/ActionMenu.d.ts +6 -0
- package/components/AppBar/AppBar.cjs +129 -0
- package/components/AppBar/AppBar.cjs.map +1 -0
- package/components/AppBar/AppBar.d.ts +55 -0
- package/components/AppBar/AppBar.js +129 -0
- package/components/AppBar/AppBar.js.map +1 -0
- package/components/AppBar/AppBar.sx.d.ts +12 -0
- package/components/AppBar/AppBarContext.d.ts +18 -0
- package/components/AppBar/AppBarMenuToggle.d.ts +39 -0
- package/components/AppBar/index.d.ts +6 -0
- package/components/AppBar.d.ts +6 -0
- package/components/Autocomplete/Autocomplete.cjs +263 -82
- package/components/Autocomplete/Autocomplete.cjs.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +71 -13
- package/components/Autocomplete/Autocomplete.definitions.d.ts +7 -0
- package/components/Autocomplete/Autocomplete.helpers.d.ts +22 -0
- package/components/Autocomplete/Autocomplete.js +264 -83
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.sx.d.ts +7 -0
- package/components/Autocomplete/_parts/AutocompleteChips.d.ts +20 -0
- package/components/Autocomplete/_parts/AutocompleteLoader.d.ts +9 -0
- package/components/Autocomplete/_parts/AutocompleteOption.d.ts +16 -0
- package/components/Autocomplete/index.d.ts +2 -1
- package/components/Autocomplete.d.ts +4 -0
- package/components/Avatar/Avatar.cjs +117 -81
- package/components/Avatar/Avatar.cjs.map +1 -1
- package/components/Avatar/Avatar.d.ts +16 -2
- package/components/Avatar/Avatar.definitions.d.ts +11 -0
- package/components/Avatar/Avatar.js +118 -82
- package/components/Avatar/Avatar.js.map +1 -1
- package/components/Avatar/index.d.ts +1 -0
- package/components/Button/Button.d.ts +5 -5
- package/components/Button/index.d.ts +1 -0
- package/components/Card/Card.cjs +78 -7
- package/components/Card/Card.cjs.map +1 -1
- package/components/Card/Card.d.ts +31 -8
- package/components/Card/Card.js +79 -8
- package/components/Card/Card.js.map +1 -1
- package/components/Card/Card.sx.d.ts +14 -0
- package/components/Card/index.d.ts +4 -1
- package/components/Card.d.ts +4 -0
- package/components/Checkbox/Checkbox.cjs +189 -0
- package/components/Checkbox/Checkbox.cjs.map +1 -0
- package/components/Checkbox/Checkbox.d.ts +55 -0
- package/components/Checkbox/Checkbox.js +189 -0
- package/components/Checkbox/Checkbox.js.map +1 -0
- package/components/Checkbox/Checkbox.sx.d.ts +13 -0
- package/components/Checkbox/index.d.ts +2 -0
- package/components/Checkbox.d.ts +6 -0
- package/components/Chip/Chip.cjs +2 -1
- package/components/Chip/Chip.cjs.map +1 -1
- package/components/Chip/Chip.js +2 -1
- package/components/Chip/Chip.js.map +1 -1
- package/components/Chip/index.d.ts +2 -1
- package/components/Chip.d.ts +4 -0
- package/components/DatePicker/DatePicker.cjs +178 -3
- package/components/DatePicker/DatePicker.cjs.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +35 -9
- package/components/DatePicker/DatePicker.definitions.d.ts +1 -0
- package/components/DatePicker/DatePicker.helpers.d.ts +7 -0
- package/components/DatePicker/DatePicker.js +177 -2
- package/components/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.sx.d.ts +9 -0
- package/components/DatePicker/index.d.ts +2 -1
- package/components/DatePicker.d.ts +4 -0
- package/components/DateTimePicker/DateTimePicker.cjs +121 -131
- package/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
- package/components/DateTimePicker/DateTimePicker.d.ts +41 -12
- package/components/DateTimePicker/DateTimePicker.definitions.d.ts +3 -0
- package/components/DateTimePicker/DateTimePicker.helpers.d.ts +13 -0
- package/components/DateTimePicker/DateTimePicker.js +121 -131
- package/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/components/DateTimePicker/DateTimePicker.sx.d.ts +7 -0
- package/components/DateTimePicker/index.d.ts +2 -1
- package/components/DateTimePicker.d.ts +4 -0
- package/components/Drawer/Drawer.cjs +272 -0
- package/components/Drawer/Drawer.cjs.map +1 -0
- package/components/Drawer/Drawer.d.ts +58 -0
- package/components/Drawer/Drawer.js +272 -0
- package/components/Drawer/Drawer.js.map +1 -0
- package/components/Drawer/Drawer.sx.d.ts +23 -0
- package/components/Drawer/DrawerContext.d.ts +18 -0
- package/components/Drawer/DrawerItem.d.ts +40 -0
- package/components/Drawer/index.d.ts +6 -0
- package/components/Drawer.d.ts +6 -0
- package/components/Gallery/Gallery.cjs +154 -79
- package/components/Gallery/Gallery.cjs.map +1 -1
- package/components/Gallery/Gallery.d.ts +25 -9
- package/components/Gallery/Gallery.js +154 -79
- package/components/Gallery/Gallery.js.map +1 -1
- package/components/Gallery/GalleryLightbox.d.ts +6 -10
- package/components/Gallery/GalleryMain.d.ts +3 -7
- package/components/Gallery/GalleryThumbnails.d.ts +7 -11
- package/components/Gallery/index.d.ts +2 -1
- package/components/Gallery.d.ts +4 -0
- package/components/Icon/Icon.cjs +49 -10
- package/components/Icon/Icon.cjs.map +1 -1
- package/components/Icon/Icon.d.ts +29 -2
- package/components/Icon/Icon.js +49 -10
- package/components/Icon/Icon.js.map +1 -1
- package/components/Icon/index.d.ts +2 -1
- package/components/Icon.d.ts +4 -0
- package/components/Input/Input.cjs +186 -3
- package/components/Input/Input.cjs.map +1 -1
- package/components/Input/Input.d.ts +29 -17
- package/components/Input/Input.definitions.d.ts +6 -2
- package/components/Input/Input.helpers.d.ts +14 -0
- package/components/Input/Input.js +185 -2
- package/components/Input/Input.js.map +1 -1
- package/components/Input/Input.sx.d.ts +8 -0
- package/components/Input/index.d.ts +2 -1
- package/components/Input.d.ts +4 -0
- package/components/InputGroup/InputGroup.cjs +107 -93
- package/components/InputGroup/InputGroup.cjs.map +1 -1
- package/components/InputGroup/InputGroup.d.ts +38 -2
- package/components/InputGroup/InputGroup.definitions.d.ts +6 -0
- package/components/InputGroup/InputGroup.js +109 -95
- package/components/InputGroup/InputGroup.js.map +1 -1
- package/components/InputGroup/index.d.ts +2 -1
- package/components/InputGroup.d.ts +4 -0
- package/components/Modal/Modal.cjs +287 -148
- package/components/Modal/Modal.cjs.map +1 -1
- package/components/Modal/Modal.d.ts +57 -6
- package/components/Modal/Modal.js +289 -150
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody.d.ts +6 -1
- package/components/Modal/ModalFooter.d.ts +12 -4
- package/components/Modal/ModalHeader.d.ts +6 -1
- package/components/Modal/index.d.ts +8 -1
- package/components/Modal.d.ts +4 -0
- package/components/RadioGroup/RadioGroup.cjs +204 -0
- package/components/RadioGroup/RadioGroup.cjs.map +1 -0
- package/components/RadioGroup/RadioGroup.d.ts +59 -0
- package/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
- package/components/RadioGroup/RadioGroup.js +204 -0
- package/components/RadioGroup/RadioGroup.js.map +1 -0
- package/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
- package/components/RadioGroup/index.d.ts +2 -0
- package/components/RadioGroup.d.ts +6 -0
- package/components/Select/Select.cjs +311 -4
- package/components/Select/Select.cjs.map +1 -1
- package/components/Select/Select.d.ts +62 -27
- package/components/Select/Select.helpers.d.ts +15 -0
- package/components/Select/Select.js +310 -3
- package/components/Select/Select.js.map +1 -1
- package/components/Select/Select.sx.d.ts +7 -0
- package/components/Select/_parts/SelectMenuItem.d.ts +20 -0
- package/components/Select/index.d.ts +2 -1
- package/components/Select.d.ts +4 -0
- package/components/Stat/Stat.cjs +2 -2
- package/components/Stat/Stat.cjs.map +1 -1
- package/components/Stat/Stat.js +2 -2
- package/components/Stat/Stat.js.map +1 -1
- package/components/Stat/index.d.ts +2 -1
- package/components/Stat.d.ts +4 -0
- package/components/StatusMessage/StatusMessage.cjs +66 -55
- package/components/StatusMessage/StatusMessage.cjs.map +1 -1
- package/components/StatusMessage/StatusMessage.d.ts +20 -36
- package/components/StatusMessage/StatusMessage.js +68 -57
- package/components/StatusMessage/StatusMessage.js.map +1 -1
- package/components/StatusMessage/index.d.ts +2 -1
- package/components/StatusMessage.d.ts +4 -0
- package/components/Stepper/Stepper.cjs +285 -29
- package/components/Stepper/Stepper.cjs.map +1 -1
- package/components/Stepper/Stepper.d.ts +13 -7
- package/components/Stepper/Stepper.js +287 -31
- package/components/Stepper/Stepper.js.map +1 -1
- package/components/Stepper/StepperContext.d.ts +73 -0
- package/components/Stepper/_hooks/useHorizontalScroll.d.ts +19 -0
- package/components/Stepper/_parts/StepperScrollArrow.d.ts +19 -0
- package/components/Stepper/index.d.ts +6 -2
- package/components/Stepper.d.ts +4 -0
- package/components/Switch/Switch.cjs +184 -0
- package/components/Switch/Switch.cjs.map +1 -0
- package/components/Switch/Switch.d.ts +48 -0
- package/components/Switch/Switch.definitions.d.ts +7 -0
- package/components/Switch/Switch.js +184 -0
- package/components/Switch/Switch.js.map +1 -0
- package/components/Switch/Switch.sx.d.ts +22 -0
- package/components/Switch/Switch.types.d.ts +1 -0
- package/components/Switch/index.d.ts +2 -0
- package/components/Switch.d.ts +6 -0
- package/components/Tabs/Tabs.cjs +45 -29
- package/components/Tabs/Tabs.cjs.map +1 -1
- package/components/Tabs/Tabs.d.ts +21 -16
- package/components/Tabs/Tabs.js +46 -30
- package/components/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/index.d.ts +4 -2
- package/components/Tabs.d.ts +4 -0
- package/components/Timeline/Timeline.cjs +3 -2
- package/components/Timeline/Timeline.cjs.map +1 -1
- package/components/Timeline/Timeline.d.ts +4 -8
- package/components/Timeline/Timeline.js +3 -2
- package/components/Timeline/Timeline.js.map +1 -1
- package/components/Timeline/index.d.ts +4 -2
- package/components/Timeline.d.ts +4 -0
- package/components/_shared/formField.sx.d.ts +33 -0
- package/components/_shared/mergeSx.d.ts +7 -0
- package/components/_shared/resolvePreset.d.ts +18 -0
- package/formField.sx-8_QRnKxv.js +68 -0
- package/formField.sx-8_QRnKxv.js.map +1 -0
- package/formField.sx-BAX7KwMR.cjs +67 -0
- package/formField.sx-BAX7KwMR.cjs.map +1 -0
- package/index.cjs +144 -1
- package/index.cjs.map +1 -1
- package/index.d.ts +4 -0
- package/index.js +49 -2
- package/index.js.map +1 -1
- package/mergeSx-BXoNZjB_.js +10 -0
- package/mergeSx-BXoNZjB_.js.map +1 -0
- package/mergeSx-Dbccoo_H.cjs +9 -0
- package/mergeSx-Dbccoo_H.cjs.map +1 -0
- package/mui.d.ts +7 -0
- package/package.json +31 -1
- package/resolvePreset-B-IB0ehH.js +15 -0
- package/resolvePreset-B-IB0ehH.js.map +1 -0
- package/resolvePreset-CT3kU-K2.cjs +14 -0
- package/resolvePreset-CT3kU-K2.cjs.map +1 -0
- package/theme/componentStyles.d.ts +32 -0
- package/theme/tokens.d.ts +28 -0
- package/tokens-BRrcP_p_.js +21 -0
- package/tokens-BRrcP_p_.js.map +1 -0
- package/tokens-jaWWNk39.cjs +20 -0
- package/tokens-jaWWNk39.cjs.map +1 -0
- package/utils/index.d.ts +2 -0
- package/utils/scrollToTop.d.ts +28 -0
- package/DatePicker-BSNboVhN.js +0 -201
- package/DatePicker-BSNboVhN.js.map +0 -1
- package/DatePicker-BoqxWAhj.cjs +0 -200
- package/DatePicker-BoqxWAhj.cjs.map +0 -1
- package/Input-DFHs7cJ_.js +0 -171
- package/Input-DFHs7cJ_.js.map +0 -1
- package/Input-c8MwNNPg.cjs +0 -170
- package/Input-c8MwNNPg.cjs.map +0 -1
- package/Select-BO2N56sm.cjs +0 -411
- package/Select-BO2N56sm.cjs.map +0 -1
- package/Select-BcLkyHSE.js +0 -412
- package/Select-BcLkyHSE.js.map +0 -1
- package/components/Select/Select.definitions.d.ts +0 -14
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
import { jsx } from "react/jsx-runtime";
|
|
21
|
+
import { createContext, useContext, useMemo } from "react";
|
|
22
|
+
import { AppBar as AppBar$1, Toolbar, Tooltip, IconButton } from "@mui/material";
|
|
23
|
+
import { useTheme } from "@mui/material/styles";
|
|
24
|
+
import { r as resolvePreset } from "../../resolvePreset-B-IB0ehH.js";
|
|
25
|
+
import MenuIcon from "@mui/icons-material/Menu";
|
|
26
|
+
import MenuOpenIcon from "@mui/icons-material/MenuOpen";
|
|
27
|
+
const AppBarContext = createContext(null);
|
|
28
|
+
function useAppBarContext() {
|
|
29
|
+
const ctx = useContext(AppBarContext);
|
|
30
|
+
return ctx != null ? ctx : {};
|
|
31
|
+
}
|
|
32
|
+
function buildAppBarSx({
|
|
33
|
+
height = 64,
|
|
34
|
+
transparent = false
|
|
35
|
+
}) {
|
|
36
|
+
return (theme) => __spreadProps(__spreadValues({
|
|
37
|
+
minHeight: height,
|
|
38
|
+
justifyContent: "center",
|
|
39
|
+
backgroundImage: "none"
|
|
40
|
+
}, transparent && {
|
|
41
|
+
backgroundColor: "transparent",
|
|
42
|
+
boxShadow: "none",
|
|
43
|
+
borderBottom: `1px solid ${theme.palette.divider}`
|
|
44
|
+
}), {
|
|
45
|
+
"& .MuiToolbar-root": {
|
|
46
|
+
minHeight: height,
|
|
47
|
+
gap: 1.5
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function AppBar({
|
|
52
|
+
children,
|
|
53
|
+
position = "sticky",
|
|
54
|
+
color = "default",
|
|
55
|
+
elevation = 1,
|
|
56
|
+
height = 64,
|
|
57
|
+
onMenuToggle,
|
|
58
|
+
menuOpen,
|
|
59
|
+
preset,
|
|
60
|
+
sx,
|
|
61
|
+
toolbarSx,
|
|
62
|
+
appBarProps
|
|
63
|
+
}) {
|
|
64
|
+
const theme = useTheme();
|
|
65
|
+
const presetSx = resolvePreset("AppBar", preset, theme);
|
|
66
|
+
const rootSx = [
|
|
67
|
+
buildAppBarSx({ height, transparent: color === "transparent" }),
|
|
68
|
+
...presetSx ? [presetSx] : [],
|
|
69
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
70
|
+
];
|
|
71
|
+
const contextValue = useMemo(
|
|
72
|
+
() => ({ onMenuToggle, menuOpen }),
|
|
73
|
+
[onMenuToggle, menuOpen]
|
|
74
|
+
);
|
|
75
|
+
return /* @__PURE__ */ jsx(AppBarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
76
|
+
AppBar$1,
|
|
77
|
+
__spreadProps(__spreadValues({
|
|
78
|
+
position,
|
|
79
|
+
color,
|
|
80
|
+
elevation,
|
|
81
|
+
sx: rootSx
|
|
82
|
+
}, appBarProps), {
|
|
83
|
+
children: /* @__PURE__ */ jsx(Toolbar, { sx: toolbarSx, children })
|
|
84
|
+
})
|
|
85
|
+
) });
|
|
86
|
+
}
|
|
87
|
+
function AppBarMenuToggle({
|
|
88
|
+
onClick,
|
|
89
|
+
menuOpen,
|
|
90
|
+
closedIcon,
|
|
91
|
+
openIcon,
|
|
92
|
+
tooltip = "Menú",
|
|
93
|
+
ariaLabel,
|
|
94
|
+
size = "medium",
|
|
95
|
+
hideIfNoHandler = true,
|
|
96
|
+
sx,
|
|
97
|
+
className
|
|
98
|
+
}) {
|
|
99
|
+
var _a;
|
|
100
|
+
const ctx = useAppBarContext();
|
|
101
|
+
const handler = onClick != null ? onClick : ctx.onMenuToggle;
|
|
102
|
+
const open = (_a = menuOpen != null ? menuOpen : ctx.menuOpen) != null ? _a : false;
|
|
103
|
+
if (!handler && hideIfNoHandler) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const icon = open ? openIcon != null ? openIcon : /* @__PURE__ */ jsx(MenuOpenIcon, {}) : closedIcon != null ? closedIcon : /* @__PURE__ */ jsx(MenuIcon, {});
|
|
107
|
+
return /* @__PURE__ */ jsx(Tooltip, { title: tooltip, arrow: true, children: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
|
|
108
|
+
IconButton,
|
|
109
|
+
{
|
|
110
|
+
size,
|
|
111
|
+
edge: "start",
|
|
112
|
+
color: "inherit",
|
|
113
|
+
"aria-label": ariaLabel != null ? ariaLabel : tooltip,
|
|
114
|
+
onClick: handler,
|
|
115
|
+
disabled: !handler,
|
|
116
|
+
className,
|
|
117
|
+
sx,
|
|
118
|
+
children: icon
|
|
119
|
+
}
|
|
120
|
+
) }) });
|
|
121
|
+
}
|
|
122
|
+
export {
|
|
123
|
+
AppBar,
|
|
124
|
+
AppBarContext,
|
|
125
|
+
AppBarMenuToggle,
|
|
126
|
+
AppBar as default,
|
|
127
|
+
useAppBarContext
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=AppBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppBar.js","sources":["../../../src/components/AppBar/AppBarContext.ts","../../../src/components/AppBar/AppBar.sx.ts","../../../src/components/AppBar/AppBar.tsx","../../../src/components/AppBar/AppBarMenuToggle.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * Context interno del AppBar. Permite que sub-componentes (MenuToggle, etc.)\n * consuman callbacks registrados en el AppBar padre sin tener que pasarlos\n * por props explícitas.\n */\nexport interface AppBarContextValue {\n /** Handler del botón hamburguesa. Si es undefined, el toggle se oculta. */\n onMenuToggle?: () => void;\n /** Estado actual del drawer asociado (usado por el icono del toggle). */\n menuOpen?: boolean;\n}\n\nexport const AppBarContext = createContext<AppBarContextValue | null>(null);\n\n/**\n * Hook para leer el contexto del AppBar. Si se llama fuera de un `<AppBar>`,\n * devuelve un objeto vacío — los sub-componentes caen en modo \"standalone\"\n * con sus defaults en lugar de romper.\n */\nexport function useAppBarContext(): AppBarContextValue {\n const ctx = useContext(AppBarContext);\n return ctx ?? {};\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport interface BuildAppBarSxArgs {\n /** Altura en px. Default: 64. */\n height?: number;\n /** Color del AppBar (se pasa al MuiAppBar). */\n transparent?: boolean;\n}\n\n/**\n * sx del root del MuiAppBar. Define altura fija y layout flex del Toolbar\n * interno. El color/elevación se dejan a las props nativas de MuiAppBar.\n */\nexport function buildAppBarSx({\n height = 64,\n transparent = false,\n}: BuildAppBarSxArgs): SxProps<Theme> {\n return (theme) => ({\n minHeight: height,\n justifyContent: 'center',\n backgroundImage: 'none',\n ...(transparent && {\n backgroundColor: 'transparent',\n boxShadow: 'none',\n borderBottom: `1px solid ${theme.palette.divider}`,\n }),\n '& .MuiToolbar-root': {\n minHeight: height,\n gap: 1.5,\n },\n });\n}\n","import React, { useMemo, type ReactNode } from 'react';\nimport {\n AppBar as MuiAppBar,\n Toolbar,\n type AppBarProps as MuiAppBarProps,\n} from '@mui/material';\nimport {\n useTheme,\n type SxProps,\n type Theme,\n} from '@mui/material/styles';\n\nimport { AppBarContext } from './AppBarContext';\nimport { buildAppBarSx } from './AppBar.sx';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\nexport type AppBarPosition = 'fixed' | 'sticky' | 'static' | 'absolute' | 'relative';\nexport type AppBarColor =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'transparent'\n | 'inherit';\n\nexport interface AppBarProps {\n /** Contenido del AppBar (típicamente sub-componentes + acciones custom). */\n children?: ReactNode;\n /** Posicionamiento. Default: `'sticky'`. */\n position?: AppBarPosition;\n /** Color. Default: `'default'`. */\n color?: AppBarColor;\n /** Nivel de sombra. Default: 1. */\n elevation?: number;\n /** Altura en px. Default: 64. */\n height?: number;\n /**\n * Handler del botón hamburguesa. Se expone vía AppBarContext para que el\n * sub-componente `<AppBarMenuToggle>` lo consuma sin prop drilling.\n */\n onMenuToggle?: () => void;\n /** Estado del drawer asociado (para que el icono del toggle cambie). */\n menuOpen?: boolean;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.AppBar`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n */\n preset?: string;\n /** sx del root (se mergea después del preset). */\n sx?: SxProps<Theme>;\n /** sx del Toolbar interno. */\n toolbarSx?: SxProps<Theme>;\n className?: string;\n /** Otras props nativas del MuiAppBar (ej. `enableColorOnDark`). */\n appBarProps?: Omit<\n MuiAppBarProps,\n 'position' | 'color' | 'elevation' | 'sx' | 'children' | 'className'\n >;\n}\n\n/**\n * AppBar (header superior) del paquete. Se diseñó como un shell compositivo\n * — el consumer arma el contenido libremente (logo, título, menú de usuario,\n * etc.) y puede usar `<AppBarMenuToggle>` para el botón hamburguesa\n * integrado con el contexto.\n *\n * Patrón recomendado para navegación en dashboards:\n *\n * ```tsx\n * <AppBar onMenuToggle={toggleDrawer}>\n * <AppBarMenuToggle />\n * <MyBrand />\n * <Box sx={{ flex: 1 }} />\n * <MyUserMenu />\n * </AppBar>\n * ```\n */\nexport function AppBar({\n children,\n position = 'sticky',\n color = 'default',\n elevation = 1,\n height = 64,\n onMenuToggle,\n menuOpen,\n preset,\n sx,\n toolbarSx,\n appBarProps,\n}: AppBarProps) {\n const theme = useTheme();\n const presetSx = resolvePreset('AppBar', preset, theme);\n\n const rootSx: SxProps<Theme> = [\n buildAppBarSx({ height, transparent: color === 'transparent' }),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ];\n\n const contextValue = useMemo(\n () => ({ onMenuToggle, menuOpen }),\n [onMenuToggle, menuOpen],\n );\n\n return (\n <AppBarContext.Provider value={contextValue}>\n <MuiAppBar\n position={position}\n color={color}\n elevation={elevation}\n sx={rootSx}\n {...appBarProps}\n >\n <Toolbar sx={toolbarSx}>{children}</Toolbar>\n </MuiAppBar>\n </AppBarContext.Provider>\n );\n}\n\nexport default AppBar;\n","import { type ReactNode } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport MenuIcon from '@mui/icons-material/Menu';\nimport MenuOpenIcon from '@mui/icons-material/MenuOpen';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nimport { useAppBarContext } from './AppBarContext';\n\nexport interface AppBarMenuToggleProps {\n /**\n * Callback explícito. Si se omite, se consume del `AppBarContext`. Útil para\n * usar el toggle fuera de un `<AppBar>` (p.ej. en un header custom).\n */\n onClick?: () => void;\n /** Estado del drawer asociado. Si se omite, se lee del `AppBarContext`. */\n menuOpen?: boolean;\n /** Icono custom cuando el drawer está cerrado. Default: `<MenuIcon />`. */\n closedIcon?: ReactNode;\n /** Icono custom cuando el drawer está abierto. Default: `<MenuOpenIcon />`. */\n openIcon?: ReactNode;\n /** Texto de tooltip. Default: \"Menú\". */\n tooltip?: string;\n /** aria-label del botón. Default: el mismo tooltip. */\n ariaLabel?: string;\n /** Tamaño del IconButton. Default: `'medium'`. */\n size?: 'small' | 'medium' | 'large';\n /** Oculta el botón cuando no hay handler disponible. Default: true. */\n hideIfNoHandler?: boolean;\n sx?: SxProps<Theme>;\n className?: string;\n}\n\n/**\n * Botón hamburguesa del AppBar. Por default consume `onMenuToggle` y\n * `menuOpen` del `AppBarContext` (pattern composicional), pero permite\n * overrides explícitos si se usa fuera de un `<AppBar>`.\n *\n * ```tsx\n * <AppBar onMenuToggle={toggleDrawer} menuOpen={open}>\n * <AppBarMenuToggle />\n * ...\n * </AppBar>\n * ```\n */\nexport function AppBarMenuToggle({\n onClick,\n menuOpen,\n closedIcon,\n openIcon,\n tooltip = 'Menú',\n ariaLabel,\n size = 'medium',\n hideIfNoHandler = true,\n sx,\n className,\n}: AppBarMenuToggleProps) {\n const ctx = useAppBarContext();\n\n const handler = onClick ?? ctx.onMenuToggle;\n const open = menuOpen ?? ctx.menuOpen ?? false;\n\n if (!handler && hideIfNoHandler) {\n return null;\n }\n\n const icon = open\n ? (openIcon ?? <MenuOpenIcon />)\n : (closedIcon ?? <MenuIcon />);\n\n return (\n <Tooltip title={tooltip} arrow>\n <span>\n <IconButton\n size={size}\n edge=\"start\"\n color=\"inherit\"\n aria-label={ariaLabel ?? tooltip}\n onClick={handler}\n disabled={!handler}\n className={className}\n sx={sx}\n >\n {icon}\n </IconButton>\n </span>\n </Tooltip>\n );\n}\n\nexport default AppBarMenuToggle;\n"],"names":["MuiAppBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,gBAAgB,cAAyC,IAAI;AAOnE,SAAS,mBAAuC;AACrD,QAAM,MAAM,WAAW,aAAa;AACpC,SAAO,oBAAO,CAAA;AAChB;ACXO,SAAS,cAAc;AAAA,EAC5B,SAAS;AAAA,EACT,cAAc;AAChB,GAAsC;AACpC,SAAO,CAAC,UAAW;AAAA,IACjB,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,KACb,eAAe;AAAA,IACjB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,cAAc,aAAa,MAAM,QAAQ,OAAO;AAAA,EAAA,IAPjC;AAAA,IASjB,sBAAsB;AAAA,MACpB,WAAW;AAAA,MACX,KAAK;AAAA,IAAA;AAAA,EACP;AAEJ;AC6CO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgB;AACd,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,UAAU,QAAQ,KAAK;AAEtD,QAAM,SAAyB;AAAA,IAC7B,cAAc,EAAE,QAAQ,aAAa,UAAU,eAAe;AAAA,IAC9D,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAA;AAAA,IAC5B,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAAA,EAAC;AAG5C,QAAM,eAAe;AAAA,IACnB,OAAO,EAAE,cAAc;IACvB,CAAC,cAAc,QAAQ;AAAA,EAAA;AAGzB,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,cAC7B,UAAA;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI;AAAA,OACA,cALL;AAAA,MAOC,UAAA,oBAAC,SAAA,EAAQ,IAAI,WAAY,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA,GAEtC;AAEJ;ACxEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB;AAAA,EACA;AACF,GAA0B;;AACxB,QAAM,MAAM,iBAAA;AAEZ,QAAM,UAAU,4BAAW,IAAI;AAC/B,QAAM,QAAO,mCAAY,IAAI,aAAhB,YAA4B;AAEzC,MAAI,CAAC,WAAW,iBAAiB;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,OACR,8BAAY,oBAAC,gBAAa,IAC1B,sDAAe,UAAA,CAAA,CAAS;AAE7B,6BACG,SAAA,EAAQ,OAAO,SAAS,OAAK,MAC5B,8BAAC,QAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,OAAM;AAAA,MACN,cAAY,gCAAa;AAAA,MACzB,SAAS;AAAA,MACT,UAAU,CAAC;AAAA,MACX;AAAA,MACA;AAAA,MAEC,UAAA;AAAA,IAAA;AAAA,EAAA,GAEL,EAAA,CACF;AAEJ;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
2
|
+
export interface BuildAppBarSxArgs {
|
|
3
|
+
/** Altura en px. Default: 64. */
|
|
4
|
+
height?: number;
|
|
5
|
+
/** Color del AppBar (se pasa al MuiAppBar). */
|
|
6
|
+
transparent?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* sx del root del MuiAppBar. Define altura fija y layout flex del Toolbar
|
|
10
|
+
* interno. El color/elevación se dejan a las props nativas de MuiAppBar.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildAppBarSx({ height, transparent, }: BuildAppBarSxArgs): SxProps<Theme>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context interno del AppBar. Permite que sub-componentes (MenuToggle, etc.)
|
|
3
|
+
* consuman callbacks registrados en el AppBar padre sin tener que pasarlos
|
|
4
|
+
* por props explícitas.
|
|
5
|
+
*/
|
|
6
|
+
export interface AppBarContextValue {
|
|
7
|
+
/** Handler del botón hamburguesa. Si es undefined, el toggle se oculta. */
|
|
8
|
+
onMenuToggle?: () => void;
|
|
9
|
+
/** Estado actual del drawer asociado (usado por el icono del toggle). */
|
|
10
|
+
menuOpen?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const AppBarContext: import('react').Context<AppBarContextValue | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Hook para leer el contexto del AppBar. Si se llama fuera de un `<AppBar>`,
|
|
15
|
+
* devuelve un objeto vacío — los sub-componentes caen en modo "standalone"
|
|
16
|
+
* con sus defaults en lugar de romper.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useAppBarContext(): AppBarContextValue;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
+
export interface AppBarMenuToggleProps {
|
|
4
|
+
/**
|
|
5
|
+
* Callback explícito. Si se omite, se consume del `AppBarContext`. Útil para
|
|
6
|
+
* usar el toggle fuera de un `<AppBar>` (p.ej. en un header custom).
|
|
7
|
+
*/
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
/** Estado del drawer asociado. Si se omite, se lee del `AppBarContext`. */
|
|
10
|
+
menuOpen?: boolean;
|
|
11
|
+
/** Icono custom cuando el drawer está cerrado. Default: `<MenuIcon />`. */
|
|
12
|
+
closedIcon?: ReactNode;
|
|
13
|
+
/** Icono custom cuando el drawer está abierto. Default: `<MenuOpenIcon />`. */
|
|
14
|
+
openIcon?: ReactNode;
|
|
15
|
+
/** Texto de tooltip. Default: "Menú". */
|
|
16
|
+
tooltip?: string;
|
|
17
|
+
/** aria-label del botón. Default: el mismo tooltip. */
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
/** Tamaño del IconButton. Default: `'medium'`. */
|
|
20
|
+
size?: 'small' | 'medium' | 'large';
|
|
21
|
+
/** Oculta el botón cuando no hay handler disponible. Default: true. */
|
|
22
|
+
hideIfNoHandler?: boolean;
|
|
23
|
+
sx?: SxProps<Theme>;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Botón hamburguesa del AppBar. Por default consume `onMenuToggle` y
|
|
28
|
+
* `menuOpen` del `AppBarContext` (pattern composicional), pero permite
|
|
29
|
+
* overrides explícitos si se usa fuera de un `<AppBar>`.
|
|
30
|
+
*
|
|
31
|
+
* ```tsx
|
|
32
|
+
* <AppBar onMenuToggle={toggleDrawer} menuOpen={open}>
|
|
33
|
+
* <AppBarMenuToggle />
|
|
34
|
+
* ...
|
|
35
|
+
* </AppBar>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function AppBarMenuToggle({ onClick, menuOpen, closedIcon, openIcon, tooltip, ariaLabel, size, hideIfNoHandler, sx, className, }: AppBarMenuToggleProps): import("react/jsx-runtime").JSX.Element | null;
|
|
39
|
+
export default AppBarMenuToggle;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AppBar, default } from './AppBar';
|
|
2
|
+
export type { AppBarProps, AppBarPosition, AppBarColor, } from './AppBar';
|
|
3
|
+
export { AppBarMenuToggle } from './AppBarMenuToggle';
|
|
4
|
+
export type { AppBarMenuToggleProps } from './AppBarMenuToggle';
|
|
5
|
+
export { AppBarContext, useAppBarContext } from './AppBarContext';
|
|
6
|
+
export type { AppBarContextValue } from './AppBarContext';
|
|
@@ -18,115 +18,296 @@ var __spreadValues = (a, b) => {
|
|
|
18
18
|
return a;
|
|
19
19
|
};
|
|
20
20
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
-
|
|
21
|
+
var __objRest = (source, exclude) => {
|
|
22
|
+
var target = {};
|
|
23
|
+
for (var prop in source)
|
|
24
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
25
|
+
target[prop] = source[prop];
|
|
26
|
+
if (source != null && __getOwnPropSymbols)
|
|
27
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
28
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
29
|
+
target[prop] = source[prop];
|
|
30
|
+
}
|
|
31
|
+
return target;
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
22
34
|
const jsxRuntime = require("react/jsx-runtime");
|
|
23
|
-
require("react");
|
|
35
|
+
const React = require("react");
|
|
24
36
|
const material = require("@mui/material");
|
|
25
|
-
require("@mui/
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
alignItems: "center",
|
|
35
|
-
fontSize: "14px"
|
|
36
|
-
},
|
|
37
|
-
"& .MuiAutocomplete-inputRoot": {
|
|
38
|
-
padding: "0 !important"
|
|
39
|
-
},
|
|
37
|
+
const styles = require("@mui/material/styles");
|
|
38
|
+
const formField_sx = require("../../formField.sx-BAX7KwMR.cjs");
|
|
39
|
+
const resolvePreset = require("../../resolvePreset-CT3kU-K2.cjs");
|
|
40
|
+
const ClearIcon = require("@mui/icons-material/Clear");
|
|
41
|
+
const buildAutocompleteSx = (borderRadius, labelPosition) => formField_sx.buildFormFieldSx({
|
|
42
|
+
borderRadius,
|
|
43
|
+
labelPosition,
|
|
44
|
+
extraOutsideSx: {
|
|
45
|
+
// El input interno del Autocomplete.
|
|
40
46
|
"& .MuiAutocomplete-input": {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
marginLeft: "8px"
|
|
44
|
-
},
|
|
45
|
-
"& .MuiOutlinedInput-notchedOutline": {
|
|
46
|
-
marginBottom: "-4px",
|
|
47
|
-
borderRadius: "10px"
|
|
47
|
+
paddingTop: "4px",
|
|
48
|
+
paddingBottom: "4px"
|
|
48
49
|
},
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
top: "50%",
|
|
54
|
-
transform: "translateY(-50%)"
|
|
50
|
+
// Contenedor del input (donde viven los chips en modo multiple).
|
|
51
|
+
"& .MuiAutocomplete-inputRoot": {
|
|
52
|
+
paddingTop: "4px",
|
|
53
|
+
paddingBottom: "4px"
|
|
55
54
|
}
|
|
56
|
-
}
|
|
57
|
-
);
|
|
58
|
-
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const resolveSingleValue = (options, value, getKey) => {
|
|
58
|
+
var _a;
|
|
59
|
+
if (value === null || value === void 0) return null;
|
|
60
|
+
const key = getKey(value);
|
|
61
|
+
return (_a = options.find((o) => getKey(o.value) === key)) != null ? _a : null;
|
|
62
|
+
};
|
|
63
|
+
const resolveMultipleValue = (options, value, getKey) => {
|
|
64
|
+
if (!Array.isArray(value)) return [];
|
|
65
|
+
const keys = new Set(value.map(getKey));
|
|
66
|
+
return options.filter((o) => keys.has(getKey(o.value)));
|
|
67
|
+
};
|
|
68
|
+
const areOptionsShallowEqual = (a, b, getKey) => {
|
|
69
|
+
const keysA = Object.keys(a);
|
|
70
|
+
const keysB = Object.keys(b);
|
|
71
|
+
if (keysA.length !== keysB.length) return false;
|
|
72
|
+
return keysA.every((k) => {
|
|
73
|
+
if (k === "value") return getKey(a.value) === getKey(b.value);
|
|
74
|
+
return a[k] === b[k];
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const areResolvedValuesEqual = (prev, next, multiple, getKey) => {
|
|
78
|
+
if (multiple) {
|
|
79
|
+
if (!Array.isArray(prev) || !Array.isArray(next)) return false;
|
|
80
|
+
if (prev.length !== next.length) return false;
|
|
81
|
+
return prev.every((o, i) => {
|
|
82
|
+
const n2 = next[i];
|
|
83
|
+
return !!n2 && areOptionsShallowEqual(o, n2, getKey);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const p = prev;
|
|
87
|
+
const n = next;
|
|
88
|
+
if (p === n) return true;
|
|
89
|
+
if (!p || !n) return false;
|
|
90
|
+
return areOptionsShallowEqual(p, n, getKey);
|
|
91
|
+
};
|
|
92
|
+
const isResolvedValueEmpty = (resolvedValue, multiple) => {
|
|
93
|
+
if (multiple) {
|
|
94
|
+
return !Array.isArray(resolvedValue) || resolvedValue.length === 0;
|
|
95
|
+
}
|
|
96
|
+
return !resolvedValue;
|
|
97
|
+
};
|
|
98
|
+
const AutocompleteOption = ({
|
|
99
|
+
liProps,
|
|
100
|
+
option,
|
|
101
|
+
customRender
|
|
102
|
+
}) => {
|
|
103
|
+
return /* @__PURE__ */ jsxRuntime.jsx("li", __spreadProps(__spreadValues({}, liProps), { children: customRender ? customRender(option) : option.label }));
|
|
104
|
+
};
|
|
105
|
+
const AutocompleteChips = ({
|
|
106
|
+
value,
|
|
107
|
+
getTagProps,
|
|
108
|
+
size,
|
|
109
|
+
maxChipsToShow,
|
|
110
|
+
renderChipLabel,
|
|
111
|
+
getKey
|
|
112
|
+
}) => {
|
|
113
|
+
const displayed = value.slice(0, maxChipsToShow);
|
|
114
|
+
const hidden = value.length - maxChipsToShow;
|
|
115
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
116
|
+
displayed.map((option, index) => {
|
|
117
|
+
const _a = getTagProps({ index }), { key: _ignored } = _a, tagProps = __objRest(_a, ["key"]);
|
|
118
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
+
material.Chip,
|
|
120
|
+
__spreadProps(__spreadValues({}, tagProps), {
|
|
121
|
+
size,
|
|
122
|
+
label: renderChipLabel ? renderChipLabel(option) : option.label,
|
|
123
|
+
avatar: option.img ? /* @__PURE__ */ jsxRuntime.jsx(material.Avatar, { src: option.img }) : void 0,
|
|
124
|
+
deleteIcon: /* @__PURE__ */ jsxRuntime.jsx(ClearIcon, {})
|
|
125
|
+
}),
|
|
126
|
+
getKey(option.value)
|
|
127
|
+
);
|
|
128
|
+
}),
|
|
129
|
+
hidden > 0 && /* @__PURE__ */ jsxRuntime.jsx(material.Chip, { size, label: `+${hidden} más` })
|
|
130
|
+
] });
|
|
131
|
+
};
|
|
132
|
+
const AutocompleteLoader = ({
|
|
133
|
+
text = "Cargando..."
|
|
134
|
+
}) => /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
|
|
135
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, { size: 16 }),
|
|
136
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "body2", children: text })
|
|
137
|
+
] });
|
|
138
|
+
function Autocomplete(props) {
|
|
59
139
|
const {
|
|
60
140
|
label,
|
|
61
|
-
options
|
|
62
|
-
value,
|
|
63
|
-
onChange,
|
|
141
|
+
options,
|
|
64
142
|
placeholder,
|
|
65
143
|
multiple = false,
|
|
66
144
|
disabled = false,
|
|
145
|
+
readOnly = false,
|
|
67
146
|
loading = false,
|
|
68
|
-
error = false,
|
|
147
|
+
error: errorProp = false,
|
|
69
148
|
helperText,
|
|
149
|
+
maxChipsToShow = 3,
|
|
70
150
|
renderOptionItem,
|
|
71
151
|
renderChipLabel,
|
|
72
|
-
|
|
152
|
+
renderSingleValue,
|
|
153
|
+
borderRadius = 10,
|
|
154
|
+
labelPosition = "outside",
|
|
155
|
+
size = "small",
|
|
156
|
+
noOptionsText = "No hay opciones",
|
|
157
|
+
loadingText,
|
|
158
|
+
sx,
|
|
159
|
+
preset,
|
|
160
|
+
textFieldProps,
|
|
161
|
+
onInputChange,
|
|
162
|
+
inputValue,
|
|
163
|
+
filterOptions,
|
|
164
|
+
freeSolo,
|
|
165
|
+
open,
|
|
166
|
+
onOpen,
|
|
167
|
+
onClose,
|
|
168
|
+
getOptionKey
|
|
73
169
|
} = props;
|
|
74
|
-
const
|
|
75
|
-
|
|
170
|
+
const getKey = getOptionKey != null ? getOptionKey : ((v) => v);
|
|
171
|
+
const [isFocused, setIsFocused] = React.useState(false);
|
|
172
|
+
const seenOptionsRef = React.useRef(/* @__PURE__ */ new Map());
|
|
173
|
+
for (const opt of options) {
|
|
174
|
+
seenOptionsRef.current.set(getKey(opt.value), opt);
|
|
175
|
+
}
|
|
176
|
+
const resolvePool = React.useMemo(() => {
|
|
177
|
+
const merged = new Map(seenOptionsRef.current);
|
|
178
|
+
for (const opt of options) merged.set(getKey(opt.value), opt);
|
|
179
|
+
return Array.from(merged.values());
|
|
180
|
+
}, [options]);
|
|
181
|
+
const prevResolvedRef = React.useRef(multiple ? [] : null);
|
|
182
|
+
const stabilizeResolved = (newVal) => {
|
|
183
|
+
if (areResolvedValuesEqual(prevResolvedRef.current, newVal, multiple, getKey)) {
|
|
184
|
+
return prevResolvedRef.current;
|
|
185
|
+
}
|
|
186
|
+
prevResolvedRef.current = newVal;
|
|
187
|
+
return newVal;
|
|
188
|
+
};
|
|
189
|
+
const theme = styles.useTheme();
|
|
190
|
+
const presetSx = resolvePreset.resolvePreset("Autocomplete", preset, theme);
|
|
191
|
+
const mergedSx = [
|
|
192
|
+
buildAutocompleteSx(borderRadius, labelPosition),
|
|
193
|
+
...presetSx ? [presetSx] : [],
|
|
194
|
+
...Array.isArray(sx) ? sx : sx ? [sx] : []
|
|
195
|
+
];
|
|
196
|
+
const renderAutocomplete = (resolvedValue2, handleChange) => {
|
|
197
|
+
const isEmpty = isResolvedValueEmpty(resolvedValue2, multiple);
|
|
198
|
+
const showPlaceholder = isEmpty && isFocused && !!placeholder;
|
|
199
|
+
const singleAdornment = !multiple && resolvedValue2 && renderSingleValue ? renderSingleValue(resolvedValue2) : null;
|
|
76
200
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
-
material.
|
|
201
|
+
material.Autocomplete,
|
|
78
202
|
{
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
203
|
+
multiple,
|
|
204
|
+
options,
|
|
205
|
+
value: resolvedValue2,
|
|
206
|
+
disabled,
|
|
207
|
+
readOnly,
|
|
208
|
+
loading,
|
|
209
|
+
sx: mergedSx,
|
|
210
|
+
freeSolo,
|
|
211
|
+
open,
|
|
212
|
+
onOpen,
|
|
213
|
+
onClose,
|
|
214
|
+
inputValue,
|
|
215
|
+
onInputChange,
|
|
216
|
+
filterOptions,
|
|
217
|
+
getOptionLabel: (opt) => {
|
|
218
|
+
var _a;
|
|
219
|
+
return typeof opt === "string" ? opt : (_a = opt == null ? void 0 : opt.label) != null ? _a : "";
|
|
84
220
|
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
221
|
+
isOptionEqualToValue: (a, b) => {
|
|
222
|
+
if (typeof a === "string" || typeof b === "string") return a === b;
|
|
223
|
+
if (!a || !b) return a === b;
|
|
224
|
+
return getKey(a.value) === getKey(b.value);
|
|
225
|
+
},
|
|
226
|
+
getOptionDisabled: (opt) => typeof opt === "string" ? false : !!(opt == null ? void 0 : opt.disabled),
|
|
227
|
+
onChange: handleChange,
|
|
228
|
+
onFocus: () => setIsFocused(true),
|
|
229
|
+
onBlur: () => setIsFocused(false),
|
|
230
|
+
renderOption: (liProps, option) => {
|
|
231
|
+
const _a = liProps, { key: _muiKey } = _a, liRest = __objRest(_a, ["key"]);
|
|
232
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
233
|
+
AutocompleteOption,
|
|
234
|
+
{
|
|
235
|
+
liProps: liRest,
|
|
236
|
+
option,
|
|
237
|
+
customRender: renderOptionItem
|
|
98
238
|
},
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
helperText
|
|
112
|
-
})
|
|
113
|
-
)
|
|
239
|
+
getKey(option.value)
|
|
240
|
+
);
|
|
241
|
+
},
|
|
242
|
+
renderValue: multiple ? (value, getItemProps) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
243
|
+
AutocompleteChips,
|
|
244
|
+
{
|
|
245
|
+
value,
|
|
246
|
+
getTagProps: getItemProps,
|
|
247
|
+
size,
|
|
248
|
+
maxChipsToShow,
|
|
249
|
+
renderChipLabel,
|
|
250
|
+
getKey
|
|
114
251
|
}
|
|
115
|
-
)
|
|
252
|
+
) : void 0,
|
|
253
|
+
noOptionsText,
|
|
254
|
+
loadingText: loadingText != null ? loadingText : /* @__PURE__ */ jsxRuntime.jsx(AutocompleteLoader, {}),
|
|
255
|
+
renderInput: (params) => {
|
|
256
|
+
var _a, _b, _c, _d;
|
|
257
|
+
const paramsInputLabel = params.InputLabelProps;
|
|
258
|
+
const consumerInputLabel = (_b = (_a = textFieldProps == null ? void 0 : textFieldProps.slotProps) == null ? void 0 : _a.inputLabel) != null ? _b : textFieldProps == null ? void 0 : textFieldProps.InputLabelProps;
|
|
259
|
+
const muiInputProps = params.InputProps;
|
|
260
|
+
const consumerInputProps = (_d = (_c = textFieldProps == null ? void 0 : textFieldProps.slotProps) == null ? void 0 : _c.input) != null ? _d : textFieldProps == null ? void 0 : textFieldProps.InputProps;
|
|
261
|
+
const inputSlot = singleAdornment ? __spreadProps(__spreadValues(__spreadValues({}, muiInputProps), consumerInputProps), {
|
|
262
|
+
startAdornment: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
263
|
+
singleAdornment,
|
|
264
|
+
consumerInputProps == null ? void 0 : consumerInputProps.startAdornment,
|
|
265
|
+
muiInputProps == null ? void 0 : muiInputProps.startAdornment
|
|
266
|
+
] })
|
|
267
|
+
}) : void 0;
|
|
268
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
269
|
+
material.TextField,
|
|
270
|
+
__spreadProps(__spreadValues(__spreadProps(__spreadValues({}, params), {
|
|
271
|
+
label,
|
|
272
|
+
size,
|
|
273
|
+
variant: "outlined",
|
|
274
|
+
placeholder: showPlaceholder ? placeholder : void 0,
|
|
275
|
+
error: !!errorProp,
|
|
276
|
+
helperText
|
|
277
|
+
}), textFieldProps), {
|
|
278
|
+
slotProps: __spreadProps(__spreadValues(__spreadValues({}, textFieldProps == null ? void 0 : textFieldProps.slotProps), inputSlot ? { input: inputSlot } : {}), {
|
|
279
|
+
inputLabel: __spreadProps(__spreadValues(__spreadValues({}, paramsInputLabel), consumerInputLabel), {
|
|
280
|
+
shrink: labelPosition === "outside" ? !isEmpty || isFocused : paramsInputLabel == null ? void 0 : paramsInputLabel.shrink
|
|
281
|
+
})
|
|
282
|
+
})
|
|
283
|
+
})
|
|
284
|
+
);
|
|
285
|
+
}
|
|
116
286
|
}
|
|
117
287
|
);
|
|
118
288
|
};
|
|
119
|
-
const
|
|
289
|
+
const extractValue = (opt) => {
|
|
120
290
|
var _a;
|
|
291
|
+
if (opt === null || opt === void 0) return null;
|
|
292
|
+
if (typeof opt === "string") return opt;
|
|
293
|
+
return (_a = opt == null ? void 0 : opt.value) != null ? _a : null;
|
|
294
|
+
};
|
|
295
|
+
const handleControlledChange = (_event, newValue) => {
|
|
296
|
+
const { onChange } = props;
|
|
121
297
|
if (multiple) {
|
|
122
|
-
const values = (newValue != null ? newValue : []).map((opt) => opt.
|
|
123
|
-
onChange
|
|
298
|
+
const values = (newValue != null ? newValue : []).map((opt) => extractValue(opt)).filter((v) => v !== null);
|
|
299
|
+
onChange(values);
|
|
124
300
|
} else {
|
|
125
|
-
|
|
126
|
-
onChange == null ? void 0 : onChange(value2);
|
|
301
|
+
onChange(extractValue(newValue));
|
|
127
302
|
}
|
|
128
303
|
};
|
|
129
|
-
|
|
304
|
+
const resolvedValue = stabilizeResolved(
|
|
305
|
+
multiple ? resolveMultipleValue(resolvePool, props.value, getKey) : resolveSingleValue(resolvePool, props.value, getKey)
|
|
306
|
+
);
|
|
307
|
+
return renderAutocomplete(resolvedValue, handleControlledChange);
|
|
130
308
|
}
|
|
131
|
-
|
|
309
|
+
const AutocompleteSelect = Autocomplete;
|
|
310
|
+
exports.Autocomplete = Autocomplete;
|
|
311
|
+
exports.AutocompleteSelect = AutocompleteSelect;
|
|
312
|
+
exports.default = Autocomplete;
|
|
132
313
|
//# sourceMappingURL=Autocomplete.cjs.map
|