@soyfri/shared-library 2.0.0-beta.0 → 2.0.0-beta.10
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/dist/README.md +243 -0
- package/dist/components/Drawer/Drawer.cjs +14 -17
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.d.ts +8 -1
- package/dist/components/Drawer/Drawer.js +14 -17
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Input/Input.definitions.d.ts +1 -0
- package/dist/components/RadioGroup/RadioGroup.cjs +202 -0
- package/dist/components/RadioGroup/RadioGroup.cjs.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +53 -0
- package/dist/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
- package/dist/components/RadioGroup/RadioGroup.js +202 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
- package/dist/components/RadioGroup/RadioGroup.types.d.ts +1 -0
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/RadioGroup.d.ts +6 -0
- package/dist/components/Stepper/Stepper.cjs +136 -23
- package/dist/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.js +137 -24
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/components/Switch/Switch.cjs +181 -0
- package/dist/components/Switch/Switch.cjs.map +1 -0
- package/dist/components/Switch/Switch.d.ts +43 -0
- package/dist/components/Switch/Switch.definitions.d.ts +7 -0
- package/dist/components/Switch/Switch.js +181 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/Switch.sx.d.ts +22 -0
- package/dist/components/Switch/Switch.types.d.ts +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch.d.ts +6 -0
- package/dist/index.cjs +24 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -1
- package/dist/mui.d.ts +1 -0
- package/dist/package.json +207 -0
- package/dist/theme/componentStyles.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/Drawer/Drawer.stories.tsx +168 -0
- package/src/components/Drawer/Drawer.tsx +26 -18
- package/src/components/Input/Input.definitions.ts +24 -0
- package/src/components/Input/Input.stories.tsx +29 -0
- package/src/components/RadioGroup/RadioGroup.definitions.ts +177 -0
- package/src/components/RadioGroup/RadioGroup.stories.tsx +231 -0
- package/src/components/RadioGroup/RadioGroup.sx.ts +75 -0
- package/src/components/RadioGroup/RadioGroup.tsx +196 -0
- package/src/components/RadioGroup/RadioGroup.types.ts +10 -0
- package/src/components/RadioGroup/index.ts +9 -0
- package/src/components/Stepper/Stepper.stories.tsx +72 -0
- package/src/components/Stepper/Stepper.tsx +139 -4
- package/src/components/Switch/Switch.definitions.ts +134 -0
- package/src/components/Switch/Switch.stories.tsx +213 -0
- package/src/components/Switch/Switch.sx.ts +81 -0
- package/src/components/Switch/Switch.tsx +172 -0
- package/src/components/Switch/Switch.types.ts +10 -0
- package/src/components/Switch/index.ts +9 -0
- package/src/mui.ts +10 -0
- package/src/theme/componentStyles.ts +3 -1
- package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
- package/storybook-static/assets/AccountCircle-BDZFsbTw.js +1 -0
- package/storybook-static/assets/ActionMenu-EynP8yU1.js +19 -0
- package/storybook-static/assets/ActionMenu.stories-DqSqRGix.js +185 -0
- package/storybook-static/assets/Alert-3zvTPc0p.js +1 -0
- package/storybook-static/assets/AppBar.stories-DcX3M5th.js +172 -0
- package/storybook-static/assets/Autocomplete.stories-CXJm8FOT.js +788 -0
- package/storybook-static/assets/Avatar-NbFfkZws.js +1 -0
- package/storybook-static/assets/Avatar.stories-CwOYCzqU.js +390 -0
- package/storybook-static/assets/Box-BnhEcfFm.js +1 -0
- package/storybook-static/assets/Button-D9h7OggD.js +1 -0
- package/storybook-static/assets/Button-DBpqmVB_.js +1 -0
- package/storybook-static/assets/Button.stories-F20dmnjq.js +320 -0
- package/storybook-static/assets/ButtonBase-qyaMEhe4.js +74 -0
- package/storybook-static/assets/Card.stories-B3NpAhO0.js +154 -0
- package/storybook-static/assets/CheckCircleOutline-CEj5mDsl.js +1 -0
- package/storybook-static/assets/Chip-C3vKPpzR.js +1 -0
- package/storybook-static/assets/Chip.stories-sxcfHVo9.js +333 -0
- package/storybook-static/assets/CircularProgress-DC7ZNWwl.js +28 -0
- package/storybook-static/assets/Clear-4kYcKvT3.js +1 -0
- package/storybook-static/assets/ClipBoard-DvLBdNHe.js +1 -0
- package/storybook-static/assets/ClipBoard.stories-BGUo47r6.js +108 -0
- package/storybook-static/assets/Close-CgHeRgmh.js +1 -0
- package/storybook-static/assets/Close-Cy8nELYU.js +1 -0
- package/storybook-static/assets/Color-AVL7NMMY-BJKvwERm.js +1 -0
- package/storybook-static/assets/ContentCopy-BfLTDb10.js +1 -0
- package/storybook-static/assets/DatePicker-Clkpr-Ku.js +1 -0
- package/storybook-static/assets/DatePicker.stories-EaUCMkh3.js +444 -0
- package/storybook-static/assets/DateRangePicker.stories-BMlkj-8K.js +390 -0
- package/storybook-static/assets/DateTimePicker.stories-B6gdzKq5.js +555 -0
- package/storybook-static/assets/DefaultPropsProvider-BGoQxtDa.js +16 -0
- package/storybook-static/assets/Delete-D2SMMmIA.js +1 -0
- package/storybook-static/assets/DialogContent-BeCDKgax.js +1 -0
- package/storybook-static/assets/Divider-BbCj9wT4.js +1 -0
- package/storybook-static/assets/DocsRenderer-PQXLIZUC-BebLK5Y_.js +1243 -0
- package/storybook-static/assets/Drawer-DcFwy73r.js +1 -0
- package/storybook-static/assets/Drawer.stories-C5AZkJBk.js +173 -0
- package/storybook-static/assets/EmptyTable-B-RKtgVs.png +0 -0
- package/storybook-static/assets/ErrorOutline-D9gM7ART.js +1 -0
- package/storybook-static/assets/Fade-Ll96CvH8.js +1 -0
- package/storybook-static/assets/Flyout.stories-Cf7z6MNw.js +163 -0
- package/storybook-static/assets/Gallery.stories-DdpWVTF6.js +127 -0
- package/storybook-static/assets/Grow-8y4FglGK.js +1 -0
- package/storybook-static/assets/Home-BRvJEp2L.js +1 -0
- package/storybook-static/assets/Icon.stories-D0mUiW_t.js +78 -0
- package/storybook-static/assets/IconButton-9OYSTH58.js +1 -0
- package/storybook-static/assets/Input-CjX0t4h-.js +1 -0
- package/storybook-static/assets/Input.stories-BRxekliy.js +650 -0
- package/storybook-static/assets/InputGroup.stories-DH6gUfmn.js +306 -0
- package/storybook-static/assets/KeyboardArrowRight-WO_attK2.js +1 -0
- package/storybook-static/assets/KeyboardArrowUp-DsyVef-i.js +1 -0
- package/storybook-static/assets/ListItem-D3O0103N.js +1 -0
- package/storybook-static/assets/ListItemIcon-hca6xN79.js +1 -0
- package/storybook-static/assets/ListItemText-BFLAwLdl.js +1 -0
- package/storybook-static/assets/Logout-gj-P3AfU.js +1 -0
- package/storybook-static/assets/Menu-ClzfjLc3.js +1 -0
- package/storybook-static/assets/MenuButton.stories-B-W_QVDt.js +162 -0
- package/storybook-static/assets/MenuItem-iU6tAqJI.js +1 -0
- package/storybook-static/assets/Modal-3okp9H2i.js +1 -0
- package/storybook-static/assets/Modal.stories-DIWzm4qR.js +468 -0
- package/storybook-static/assets/MoreVert-BoIVG4gh.js +1 -0
- package/storybook-static/assets/Notifications-DY_A-Sho.js +1 -0
- package/storybook-static/assets/PageLoader.stories-DmtO1mlm.js +158 -0
- package/storybook-static/assets/Paper-SwQBhqI7.js +1 -0
- package/storybook-static/assets/Person-CkQl-mpq.js +1 -0
- package/storybook-static/assets/PickersModalDialog-Tjnr_cu5.js +10 -0
- package/storybook-static/assets/PickersToolbarButton-Tt185-si.js +1 -0
- package/storybook-static/assets/Popper-CnCTYXxy.js +1 -0
- package/storybook-static/assets/Portal-Cj8XF9Lf.js +1 -0
- package/storybook-static/assets/ScrollTopButton.stories-BflQCwNP.js +90 -0
- package/storybook-static/assets/Select-CjcuMAY0.js +4 -0
- package/storybook-static/assets/Select-DJh2biEb.js +3 -0
- package/storybook-static/assets/Select.stories-DU1Gb3I2.js +1103 -0
- package/storybook-static/assets/Settings-BLKc1CnO.js +1 -0
- package/storybook-static/assets/Snackbar-BtVeKTw6.js +1 -0
- package/storybook-static/assets/Stack-D01OUIXi.js +1 -0
- package/storybook-static/assets/Stat.stories-Bn9-iuPT.js +60 -0
- package/storybook-static/assets/StatusMessage.stories-hnfX8FeU.js +73 -0
- package/storybook-static/assets/Stepper-BtKB5ykn.js +2 -0
- package/storybook-static/assets/Stepper.stories-CTEZbgPc.js +165 -0
- package/storybook-static/assets/Table.stories-CTn2Ktmn.js +1260 -0
- package/storybook-static/assets/TableContainer-CzLNaEU-.js +1 -0
- package/storybook-static/assets/TableRow-CS88-1HF.js +2 -0
- package/storybook-static/assets/Tabs-DLpDOu_n.js +1 -0
- package/storybook-static/assets/Tabs.stories-BFVuFy_5.js +159 -0
- package/storybook-static/assets/TextField-22T-xHBm.js +1 -0
- package/storybook-static/assets/Timeline.stories-DJU_U2Hv.js +97 -0
- package/storybook-static/assets/Tooltip-DbnHUxNj.js +1 -0
- package/storybook-static/assets/Tooltip.stories-B7tA3dnV.js +66 -0
- package/storybook-static/assets/Typography-BgntX2Ep.js +1 -0
- package/storybook-static/assets/Wizard.stories-CVrJLK_D.js +23 -0
- package/storybook-static/assets/createSimplePaletteValueFilter-bm0fmN_7.js +1 -0
- package/storybook-static/assets/createSvgIcon-D_Gca4vA.js +1 -0
- package/storybook-static/assets/debounce-Be36O1Ab.js +1 -0
- package/storybook-static/assets/emotion-react.browser.esm--g-C9cX9.js +8 -0
- package/storybook-static/assets/extendSxProp-CEpa30hT.js +1 -0
- package/storybook-static/assets/formField.sx-DMCmZIAa.js +1 -0
- package/storybook-static/assets/getReactElementRef-BQ3ANZdy.js +1 -0
- package/storybook-static/assets/iframe-BAJnc_4n.js +1079 -0
- package/storybook-static/assets/index-B1tlhOpe.js +240 -0
- package/storybook-static/assets/index-BF3FAXTk.js +9 -0
- package/storybook-static/assets/index-CIeucmOB.js +2 -0
- package/storybook-static/assets/index-CY7j4a7o.js +1 -0
- package/storybook-static/assets/index-CxkKctw5.js +1 -0
- package/storybook-static/assets/isFocusVisible-B8k4qzLc.js +1 -0
- package/storybook-static/assets/isMuiElement-CTZSFcY5.js +1 -0
- package/storybook-static/assets/jsx-runtime-D_zvdyIk.js +9 -0
- package/storybook-static/assets/listItemTextClasses-CC_rwJam.js +1 -0
- package/storybook-static/assets/mergeSlotProps-B0UBKBMe.js +1 -0
- package/storybook-static/assets/ownerDocument-DW-IO8s5.js +1 -0
- package/storybook-static/assets/ownerWindow-HkKU3E4x.js +1 -0
- package/storybook-static/assets/preload-helper-PPVm8Dsz.js +1 -0
- package/storybook-static/assets/react-18-BUJ64QCV.js +25 -0
- package/storybook-static/assets/resolvePreset-CN2aOJJr.js +1 -0
- package/storybook-static/assets/useControlled-DsVh1a5j.js +1 -0
- package/storybook-static/assets/useForkRef-0ANIrxcF.js +1 -0
- package/storybook-static/assets/useId-b4fZxjOL.js +1 -0
- package/storybook-static/assets/useMobilePicker-DK-c8xbD.js +1 -0
- package/storybook-static/assets/usePreviousProps-WR0rG4aR.js +1 -0
- package/storybook-static/assets/useSlot-b6pXgp5_.js +1 -0
- package/storybook-static/assets/useSlotProps-C0uMfuBt.js +1 -0
- package/storybook-static/assets/useTheme-BmOJK7ra.js +1 -0
- package/storybook-static/assets/useThemeProps-DYtxXiUU.js +1 -0
- package/storybook-static/assets/useThemeProps-U4yXiZ_5.js +1 -0
- package/storybook-static/assets/useTimeout-DNjRaOWc.js +1 -0
- package/storybook-static/assets/visuallyHidden-Dan1xhjv.js +1 -0
- package/storybook-static/favicon-wrapper.svg +46 -0
- package/storybook-static/favicon.svg +1 -0
- package/storybook-static/iframe.html +686 -0
- package/storybook-static/index.html +160 -0
- package/storybook-static/index.json +1 -0
- package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/project.json +1 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js +356 -0
- package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js.LEGAL.txt +40 -0
- package/storybook-static/sb-addons/docs-4/manager-bundle.js +151 -0
- package/storybook-static/sb-addons/onboarding-1/manager-bundle.js +127 -0
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
- package/storybook-static/sb-addons/vitest-3/manager-bundle.js +3 -0
- package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
- package/storybook-static/sb-common-assets/favicon.svg +1 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/storybook-static/sb-manager/globals-module-info.js +797 -0
- package/storybook-static/sb-manager/globals-runtime.js +69679 -0
- package/storybook-static/sb-manager/globals.js +34 -0
- package/storybook-static/sb-manager/runtime.js +13195 -0
- package/storybook-static/vite-inject-mocker-entry.js +18 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { useTheme } from '@mui/material/styles';
|
|
2
|
+
import {
|
|
3
|
+
FormControl,
|
|
4
|
+
FormControlLabel,
|
|
5
|
+
FormHelperText,
|
|
6
|
+
Switch as MuiSwitch,
|
|
7
|
+
type SwitchProps as MuiSwitchProps,
|
|
8
|
+
type SxProps,
|
|
9
|
+
type Theme,
|
|
10
|
+
} from '@mui/material';
|
|
11
|
+
import { Controller, type Control, type RegisterOptions } from 'react-hook-form';
|
|
12
|
+
|
|
13
|
+
import { buildSwitchSx } from './Switch.sx';
|
|
14
|
+
import { resolvePreset } from '../_shared/resolvePreset';
|
|
15
|
+
|
|
16
|
+
// ── Tipos de dominio ─────────────────────────────────────────────────────
|
|
17
|
+
export type SwitchSize = 'small' | 'medium';
|
|
18
|
+
export type SwitchLabelPlacement = 'start' | 'end' | 'top' | 'bottom';
|
|
19
|
+
|
|
20
|
+
// ── Props base (todo lo común entre RHF y controlado) ────────────────────
|
|
21
|
+
export interface BaseSwitchProps
|
|
22
|
+
extends Omit<MuiSwitchProps, 'value' | 'onChange' | 'checked' | 'defaultChecked' | 'size'> {
|
|
23
|
+
/** Texto al lado del switch. Si está ausente, no se renderiza FormControlLabel. */
|
|
24
|
+
label?: string;
|
|
25
|
+
size?: SwitchSize;
|
|
26
|
+
/** Posición del label. Default: 'end' (legacy `FormToggleInput` lo ponía a la izquierda con su flex-stack). */
|
|
27
|
+
labelPlacement?: SwitchLabelPlacement;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
error?: boolean;
|
|
30
|
+
helperText?: string;
|
|
31
|
+
/** Renderiza un contenedor con borde alrededor del switch + label. Default: false. */
|
|
32
|
+
bordered?: boolean;
|
|
33
|
+
/** Border radius del contenedor (cuando bordered). Default: 10. */
|
|
34
|
+
borderRadius?: number | string;
|
|
35
|
+
defaultChecked?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Nombre del preset de estilo registrado en `theme.styles.Switch`.
|
|
38
|
+
* - `"default"` (o ausente) = estilo built-in del paquete.
|
|
39
|
+
* - Cualquier otro string = mergea el preset encima del estilo built-in.
|
|
40
|
+
*/
|
|
41
|
+
preset?: string;
|
|
42
|
+
sx?: SxProps<Theme>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────
|
|
46
|
+
export interface RHFSwitchProps extends BaseSwitchProps {
|
|
47
|
+
name: string;
|
|
48
|
+
control: Control<any>;
|
|
49
|
+
validation?: RegisterOptions;
|
|
50
|
+
checked?: never;
|
|
51
|
+
onChange?: never;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface ControlledSwitchProps extends BaseSwitchProps {
|
|
55
|
+
name?: string;
|
|
56
|
+
control?: never;
|
|
57
|
+
validation?: never;
|
|
58
|
+
checked: boolean;
|
|
59
|
+
onChange: (checked: boolean) => void;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ── API pública final ────────────────────────────────────────────────────
|
|
63
|
+
export type SwitchProps = RHFSwitchProps | ControlledSwitchProps;
|
|
64
|
+
|
|
65
|
+
export const Switch: React.FC<SwitchProps> = (props) => {
|
|
66
|
+
const {
|
|
67
|
+
label,
|
|
68
|
+
size = 'medium',
|
|
69
|
+
labelPlacement = 'end',
|
|
70
|
+
disabled = false,
|
|
71
|
+
error = false,
|
|
72
|
+
helperText,
|
|
73
|
+
bordered = false,
|
|
74
|
+
borderRadius = 10,
|
|
75
|
+
defaultChecked,
|
|
76
|
+
preset,
|
|
77
|
+
sx,
|
|
78
|
+
...rest
|
|
79
|
+
} = props as ControlledSwitchProps & {
|
|
80
|
+
control?: Control<any>;
|
|
81
|
+
validation?: RegisterOptions;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const theme = useTheme();
|
|
85
|
+
const presetSx = resolvePreset('Switch', preset, theme);
|
|
86
|
+
|
|
87
|
+
// Construye el sx con el estado de error efectivo; se llama por rama
|
|
88
|
+
// (RHF usa el error del Controller, controlado usa el prop `error`).
|
|
89
|
+
const buildSx = (effectiveError: boolean) => [
|
|
90
|
+
buildSwitchSx({
|
|
91
|
+
bordered,
|
|
92
|
+
borderRadius,
|
|
93
|
+
hasLabel: !!label,
|
|
94
|
+
error: effectiveError,
|
|
95
|
+
}),
|
|
96
|
+
...(presetSx ? [presetSx] : []),
|
|
97
|
+
...(Array.isArray(sx) ? sx : [sx]),
|
|
98
|
+
];
|
|
99
|
+
|
|
100
|
+
const renderSwitch = (
|
|
101
|
+
checked: boolean,
|
|
102
|
+
onChange: (next: boolean) => void,
|
|
103
|
+
onBlur?: () => void,
|
|
104
|
+
inputRef?: React.Ref<HTMLInputElement>,
|
|
105
|
+
) => {
|
|
106
|
+
const switchEl = (
|
|
107
|
+
<MuiSwitch
|
|
108
|
+
{...rest}
|
|
109
|
+
size={size}
|
|
110
|
+
checked={!!checked}
|
|
111
|
+
onChange={(_e, next) => onChange(next)}
|
|
112
|
+
onBlur={onBlur}
|
|
113
|
+
inputRef={inputRef}
|
|
114
|
+
disabled={disabled}
|
|
115
|
+
/>
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
return label ? (
|
|
119
|
+
<FormControlLabel
|
|
120
|
+
control={switchEl}
|
|
121
|
+
label={label}
|
|
122
|
+
labelPlacement={labelPlacement}
|
|
123
|
+
disabled={disabled}
|
|
124
|
+
/>
|
|
125
|
+
) : (
|
|
126
|
+
switchEl
|
|
127
|
+
);
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// ── RHF mode ──────────────────────────────────────────────────────────
|
|
131
|
+
if ('control' in props && props.control) {
|
|
132
|
+
const { name, control, validation } = props as RHFSwitchProps;
|
|
133
|
+
return (
|
|
134
|
+
<Controller
|
|
135
|
+
name={name}
|
|
136
|
+
control={control}
|
|
137
|
+
rules={validation}
|
|
138
|
+
defaultValue={defaultChecked}
|
|
139
|
+
render={({ field, fieldState: { error: fieldError } }) => {
|
|
140
|
+
const finalError = !!fieldError || error;
|
|
141
|
+
const finalHelperText = fieldError?.message ?? helperText;
|
|
142
|
+
return (
|
|
143
|
+
<FormControl
|
|
144
|
+
error={finalError}
|
|
145
|
+
disabled={disabled}
|
|
146
|
+
sx={buildSx(finalError)}
|
|
147
|
+
>
|
|
148
|
+
{renderSwitch(
|
|
149
|
+
!!field.value,
|
|
150
|
+
(next) => field.onChange(next),
|
|
151
|
+
field.onBlur,
|
|
152
|
+
field.ref,
|
|
153
|
+
)}
|
|
154
|
+
{finalHelperText && <FormHelperText>{finalHelperText}</FormHelperText>}
|
|
155
|
+
</FormControl>
|
|
156
|
+
);
|
|
157
|
+
}}
|
|
158
|
+
/>
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// ── Controlled mode ───────────────────────────────────────────────────
|
|
163
|
+
const { checked, onChange } = props as ControlledSwitchProps;
|
|
164
|
+
return (
|
|
165
|
+
<FormControl error={error} disabled={disabled} sx={buildSx(error)}>
|
|
166
|
+
{renderSwitch(checked, onChange)}
|
|
167
|
+
{helperText && <FormHelperText>{helperText}</FormHelperText>}
|
|
168
|
+
</FormControl>
|
|
169
|
+
);
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export default Switch;
|
package/src/mui.ts
CHANGED
|
@@ -22,6 +22,16 @@ export {
|
|
|
22
22
|
// ── Tipografía ────────────────────────────────────────────────────────────
|
|
23
23
|
export { Typography, Link } from '@mui/material';
|
|
24
24
|
|
|
25
|
+
// ── Listas ────────────────────────────────────────────────────────────────
|
|
26
|
+
export {
|
|
27
|
+
List,
|
|
28
|
+
ListItem,
|
|
29
|
+
ListItemButton,
|
|
30
|
+
ListItemIcon,
|
|
31
|
+
ListItemText,
|
|
32
|
+
ListSubheader,
|
|
33
|
+
} from '@mui/material';
|
|
34
|
+
|
|
25
35
|
// ── Feedback / misc ───────────────────────────────────────────────────────
|
|
26
36
|
export {
|
|
27
37
|
CircularProgress,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as c}from"./jsx-runtime-D_zvdyIk.js";import{c as o}from"./createSvgIcon-D_Gca4vA.js";const r=o(c.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 4c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6m0 14c-2.03 0-4.43-.82-6.14-2.88C7.55 15.8 9.68 15 12 15s4.45.8 6.14 2.12C16.43 19.18 14.03 20 12 20"}));export{r as A};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{j as t}from"./jsx-runtime-D_zvdyIk.js";import{c as j}from"./createSvgIcon-D_Gca4vA.js";import{r as M,R as i}from"./iframe-BAJnc_4n.js";import{M as T}from"./MoreVert-BoIVG4gh.js";import{T as z}from"./Tooltip-DbnHUxNj.js";import{I as k}from"./IconButton-9OYSTH58.js";import{M as E}from"./Menu-ClzfjLc3.js";import{M as q}from"./MenuItem-iU6tAqJI.js";import{L as A}from"./ListItemIcon-hca6xN79.js";import{L as C}from"./ListItemText-BFLAwLdl.js";import{D as w}from"./Divider-BbCj9wT4.js";const F=j(t.jsx("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}));function D({items:h,trigger:r,triggerTooltip:s="Acciones",anchorOrigin:f={vertical:"bottom",horizontal:"right"},transformOrigin:g={vertical:"top",horizontal:"right"},menuSx:v,disabled:o=!1,className:b}){const[c,m]=M.useState(null),x=!!c,l=e=>{o||(e.stopPropagation(),m(e.currentTarget))},u=()=>m(null),y=(e,n)=>{e.stopPropagation(),n.onClick?.(e),u()},I=r?i.isValidElement(r)?i.cloneElement(r,{onClick:l,disabled:o}):t.jsx("span",{onClick:l,children:r}):t.jsx(z,{title:s,arrow:!0,children:t.jsx("span",{children:t.jsx(k,{size:"small",onClick:l,disabled:o,"aria-label":s,children:t.jsx(T,{fontSize:"small"})})})});return t.jsxs("span",{className:b,children:[I,t.jsx(E,{anchorEl:c,open:x,onClose:u,anchorOrigin:f,transformOrigin:g,slotProps:{paper:{sx:{minWidth:180,...v}}},children:h.map((e,n)=>{const p=e.key??`${String(e.label)}-${n}`,d=t.jsxs(q,{disabled:e.disabled,onClick:a=>y(a,e),sx:a=>({color:e.danger?a.palette.error.main:"inherit","& .MuiListItemIcon-root":{color:e.danger?a.palette.error.main:"inherit",minWidth:32}}),children:[e.icon&&t.jsx(A,{children:e.icon}),t.jsx(C,{primary:e.label})]},p);return e.dividerBefore&&n>0?t.jsxs(i.Fragment,{children:[t.jsx(w,{}),d]},`${p}-frag`):d})})]})}D.__docgenInfo={description:`Menú de acciones compacto, pensado para celdas de tabla y cabeceras.
|
|
2
|
+
Reemplaza los patrones \`<Dropdown>\` de react-bootstrap.
|
|
3
|
+
|
|
4
|
+
\`\`\`tsx
|
|
5
|
+
<ActionMenu
|
|
6
|
+
items={[
|
|
7
|
+
{ label: 'Editar', icon: <EditIcon />, onClick: handleEdit },
|
|
8
|
+
{ label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },
|
|
9
|
+
{ label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },
|
|
10
|
+
]}
|
|
11
|
+
/>
|
|
12
|
+
\`\`\``,methods:[],displayName:"ActionMenu",props:{items:{required:!0,tsType:{name:"Array",elements:[{name:"ActionMenuItem"}],raw:"ActionMenuItem[]"},description:"Lista de items del menú."},trigger:{required:!1,tsType:{name:"ReactNode"},description:`Elemento trigger. Si no se provee, se renderiza un IconButton con icono
|
|
13
|
+
de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.`},triggerTooltip:{required:!1,tsType:{name:"string"},description:'Texto de tooltip sobre el trigger default. Default: "Acciones".',defaultValue:{value:"'Acciones'",computed:!1}},anchorOrigin:{required:!1,tsType:{name:"signature",type:"object",raw:`{
|
|
14
|
+
vertical: 'top' | 'center' | 'bottom';
|
|
15
|
+
horizontal: 'left' | 'center' | 'right';
|
|
16
|
+
}`,signature:{properties:[{key:"vertical",value:{name:"union",raw:"'top' | 'center' | 'bottom'",elements:[{name:"literal",value:"'top'"},{name:"literal",value:"'center'"},{name:"literal",value:"'bottom'"}],required:!0}},{key:"horizontal",value:{name:"union",raw:"'left' | 'center' | 'right'",elements:[{name:"literal",value:"'left'"},{name:"literal",value:"'center'"},{name:"literal",value:"'right'"}],required:!0}}]}},description:"Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }.",defaultValue:{value:"{ vertical: 'bottom', horizontal: 'right' }",computed:!1}},transformOrigin:{required:!1,tsType:{name:"signature",type:"object",raw:`{
|
|
17
|
+
vertical: 'top' | 'center' | 'bottom';
|
|
18
|
+
horizontal: 'left' | 'center' | 'right';
|
|
19
|
+
}`,signature:{properties:[{key:"vertical",value:{name:"union",raw:"'top' | 'center' | 'bottom'",elements:[{name:"literal",value:"'top'"},{name:"literal",value:"'center'"},{name:"literal",value:"'bottom'"}],required:!0}},{key:"horizontal",value:{name:"union",raw:"'left' | 'center' | 'right'",elements:[{name:"literal",value:"'left'"},{name:"literal",value:"'center'"},{name:"literal",value:"'right'"}],required:!0}}]}},description:"Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }.",defaultValue:{value:"{ vertical: 'top', horizontal: 'right' }",computed:!1}},menuSx:{required:!1,tsType:{name:"SxProps",elements:[{name:"Theme"}],raw:"SxProps<Theme>"},description:"sx del Menu (Paper interno)."},disabled:{required:!1,tsType:{name:"boolean"},description:"Deshabilita el trigger entero.",defaultValue:{value:"false",computed:!1}},className:{required:!1,tsType:{name:"string"},description:""}}};export{D as A,F as E};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{f as o}from"./index-B1tlhOpe.js";import{A as C,E as r}from"./ActionMenu-EynP8yU1.js";import{C as u}from"./ContentCopy-BfLTDb10.js";import{D as m}from"./Delete-D2SMMmIA.js";import{c as p}from"./createSvgIcon-D_Gca4vA.js";import{B as x}from"./Button-DBpqmVB_.js";import{P as h}from"./Paper-SwQBhqI7.js";import{T as j,a as z,b,c as i,d as S}from"./TableRow-CS88-1HF.js";import{C as E}from"./Chip-C3vKPpzR.js";import"./iframe-BAJnc_4n.js";import"./preload-helper-PPVm8Dsz.js";import"./MoreVert-BoIVG4gh.js";import"./Tooltip-DbnHUxNj.js";import"./DefaultPropsProvider-BGoQxtDa.js";import"./useSlotProps-C0uMfuBt.js";import"./useSlot-b6pXgp5_.js";import"./useForkRef-0ANIrxcF.js";import"./useTheme-BmOJK7ra.js";import"./extendSxProp-CEpa30hT.js";import"./useTimeout-DNjRaOWc.js";import"./useControlled-DsVh1a5j.js";import"./useId-b4fZxjOL.js";import"./getReactElementRef-BQ3ANZdy.js";import"./index-CY7j4a7o.js";import"./index-BF3FAXTk.js";import"./Grow-8y4FglGK.js";import"./Popper-CnCTYXxy.js";import"./ownerDocument-DW-IO8s5.js";import"./Portal-Cj8XF9Lf.js";import"./isFocusVisible-B8k4qzLc.js";import"./IconButton-9OYSTH58.js";import"./createSimplePaletteValueFilter-bm0fmN_7.js";import"./ButtonBase-qyaMEhe4.js";import"./emotion-react.browser.esm--g-C9cX9.js";import"./CircularProgress-DC7ZNWwl.js";import"./Menu-ClzfjLc3.js";import"./ownerWindow-HkKU3E4x.js";import"./debounce-Be36O1Ab.js";import"./mergeSlotProps-B0UBKBMe.js";import"./Modal-3okp9H2i.js";import"./Fade-Ll96CvH8.js";import"./MenuItem-iU6tAqJI.js";import"./listItemTextClasses-CC_rwJam.js";import"./ListItemIcon-hca6xN79.js";import"./ListItemText-BFLAwLdl.js";import"./Typography-BgntX2Ep.js";import"./Divider-BbCj9wT4.js";const f=p(e.jsx("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"})),I=p(e.jsx("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"})),k=p(e.jsx("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92"})),T=p(e.jsx("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"})),ze={title:"Components/ActionMenu",component:C,tags:["autodocs"],parameters:{docs:{description:{component:"Menú de acciones compacto pensado para celdas de tabla, cabeceras y cualquier lugar donde hagan falta acciones secundarias detrás de un trigger. Reemplaza los patrones `<Dropdown>` de react-bootstrap."}}}},t={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Duplicar",icon:e.jsx(u,{fontSize:"small"}),onClick:o()},{label:"Ver detalle",icon:e.jsx(f,{fontSize:"small"}),onClick:o()}]},parameters:{docs:{description:{story:"Menú básico con trigger de 3 puntos (icono por defecto). Cada item tiene label + icono + onClick."}}}},l={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Duplicar",icon:e.jsx(u,{fontSize:"small"}),onClick:o()},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(),danger:!0,dividerBefore:!0}]},parameters:{docs:{description:{story:"Item final marcado como `danger` (pintado en rojo) con `dividerBefore: true` para separarlo visualmente del resto. Patrón típico para acciones destructivas."}}}},n={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Exportar",icon:e.jsx(I,{fontSize:"small"}),onClick:o(),disabled:!0},{label:"Compartir",icon:e.jsx(k,{fontSize:"small"}),onClick:o(),disabled:!0}]},parameters:{docs:{description:{story:"Items deshabilitados condicionalmente — útil cuando una acción no aplica al estado actual del row (ej. exportar un recurso que aún no se procesó)."}}}},s={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Duplicar",icon:e.jsx(u,{fontSize:"small"}),onClick:o()},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(),danger:!0}],trigger:e.jsx(x,{variant:"outlined",startIcon:e.jsx(T,{}),children:"Más"})},parameters:{docs:{description:{story:"El trigger por defecto es un IconButton de 3 puntos, pero podés pasar cualquier nodo (botón, chip, icono custom). El `onClick` del menú se inyecta automáticamente al trigger clonado."}}}},c={render:()=>{const g=[{id:1,name:"Comercio A",status:"Activo"},{id:2,name:"Comercio B",status:"Pendiente"},{id:3,name:"Comercio C",status:"Suspendido"}];return e.jsx(h,{sx:{maxWidth:720},children:e.jsxs(j,{size:"small",children:[e.jsx(z,{children:e.jsxs(b,{children:[e.jsx(i,{children:"ID"}),e.jsx(i,{children:"Comercio"}),e.jsx(i,{children:"Estado"}),e.jsx(i,{align:"right",children:"Acciones"})]})}),e.jsx(S,{children:g.map(a=>e.jsxs(b,{hover:!0,children:[e.jsx(i,{children:a.id}),e.jsx(i,{children:a.name}),e.jsx(i,{children:e.jsx(E,{label:a.status,size:"small",color:a.status==="Activo"?"success":a.status==="Pendiente"?"warning":"error"})}),e.jsx(i,{align:"right",children:e.jsx(C,{items:[{label:"Ver detalle",icon:e.jsx(f,{fontSize:"small"}),onClick:o(()=>console.log("Ver",a.id))},{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o(()=>console.log("Editar",a.id))},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(()=>console.log("Eliminar",a.id)),danger:!0,dividerBefore:!0}]})})]},a.id))})]})})},parameters:{docs:{description:{story:"Caso de uso principal: un `ActionMenu` por cada fila de una tabla. Reemplaza exactamente el patrón `DropDownActions` + `react-bootstrap Dropdown` usado hoy en Afiliaciones."}}}},d={args:{disabled:!0,items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(),danger:!0}]},parameters:{docs:{description:{story:"Cuando el row o la acción no tiene permisos, se puede deshabilitar el trigger entero pasando `disabled`."}}}};t.parameters={...t.parameters,docs:{...t.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
args: {
|
|
3
|
+
items: [{
|
|
4
|
+
label: 'Editar',
|
|
5
|
+
icon: <EditIcon fontSize="small" />,
|
|
6
|
+
onClick: fn()
|
|
7
|
+
}, {
|
|
8
|
+
label: 'Duplicar',
|
|
9
|
+
icon: <ContentCopyIcon fontSize="small" />,
|
|
10
|
+
onClick: fn()
|
|
11
|
+
}, {
|
|
12
|
+
label: 'Ver detalle',
|
|
13
|
+
icon: <VisibilityIcon fontSize="small" />,
|
|
14
|
+
onClick: fn()
|
|
15
|
+
}]
|
|
16
|
+
},
|
|
17
|
+
parameters: {
|
|
18
|
+
docs: {
|
|
19
|
+
description: {
|
|
20
|
+
story: 'Menú básico con trigger de 3 puntos (icono por defecto). Cada item tiene label + icono + onClick.'
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}`,...t.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
|
|
25
|
+
args: {
|
|
26
|
+
items: [{
|
|
27
|
+
label: 'Editar',
|
|
28
|
+
icon: <EditIcon fontSize="small" />,
|
|
29
|
+
onClick: fn()
|
|
30
|
+
}, {
|
|
31
|
+
label: 'Duplicar',
|
|
32
|
+
icon: <ContentCopyIcon fontSize="small" />,
|
|
33
|
+
onClick: fn()
|
|
34
|
+
}, {
|
|
35
|
+
label: 'Eliminar',
|
|
36
|
+
icon: <DeleteIcon fontSize="small" />,
|
|
37
|
+
onClick: fn(),
|
|
38
|
+
danger: true,
|
|
39
|
+
dividerBefore: true
|
|
40
|
+
}]
|
|
41
|
+
},
|
|
42
|
+
parameters: {
|
|
43
|
+
docs: {
|
|
44
|
+
description: {
|
|
45
|
+
story: 'Item final marcado como \`danger\` (pintado en rojo) con \`dividerBefore: true\` para separarlo visualmente del resto. Patrón típico para acciones destructivas.'
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}`,...l.parameters?.docs?.source}}};n.parameters={...n.parameters,docs:{...n.parameters?.docs,source:{originalSource:`{
|
|
50
|
+
args: {
|
|
51
|
+
items: [{
|
|
52
|
+
label: 'Editar',
|
|
53
|
+
icon: <EditIcon fontSize="small" />,
|
|
54
|
+
onClick: fn()
|
|
55
|
+
}, {
|
|
56
|
+
label: 'Exportar',
|
|
57
|
+
icon: <DownloadIcon fontSize="small" />,
|
|
58
|
+
onClick: fn(),
|
|
59
|
+
disabled: true
|
|
60
|
+
}, {
|
|
61
|
+
label: 'Compartir',
|
|
62
|
+
icon: <ShareIcon fontSize="small" />,
|
|
63
|
+
onClick: fn(),
|
|
64
|
+
disabled: true
|
|
65
|
+
}]
|
|
66
|
+
},
|
|
67
|
+
parameters: {
|
|
68
|
+
docs: {
|
|
69
|
+
description: {
|
|
70
|
+
story: 'Items deshabilitados condicionalmente — útil cuando una acción no aplica al estado actual del row (ej. exportar un recurso que aún no se procesó).'
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}`,...n.parameters?.docs?.source}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
|
|
75
|
+
args: {
|
|
76
|
+
items: [{
|
|
77
|
+
label: 'Editar',
|
|
78
|
+
icon: <EditIcon fontSize="small" />,
|
|
79
|
+
onClick: fn()
|
|
80
|
+
}, {
|
|
81
|
+
label: 'Duplicar',
|
|
82
|
+
icon: <ContentCopyIcon fontSize="small" />,
|
|
83
|
+
onClick: fn()
|
|
84
|
+
}, {
|
|
85
|
+
label: 'Eliminar',
|
|
86
|
+
icon: <DeleteIcon fontSize="small" />,
|
|
87
|
+
onClick: fn(),
|
|
88
|
+
danger: true
|
|
89
|
+
}],
|
|
90
|
+
trigger: <Button variant="outlined" startIcon={<MoreHorizIcon />}>
|
|
91
|
+
Más
|
|
92
|
+
</Button>
|
|
93
|
+
},
|
|
94
|
+
parameters: {
|
|
95
|
+
docs: {
|
|
96
|
+
description: {
|
|
97
|
+
story: 'El trigger por defecto es un IconButton de 3 puntos, pero podés pasar cualquier nodo (botón, chip, icono custom). El \`onClick\` del menú se inyecta automáticamente al trigger clonado.'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}`,...s.parameters?.docs?.source}}};c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
|
|
102
|
+
render: () => {
|
|
103
|
+
const rows = [{
|
|
104
|
+
id: 1,
|
|
105
|
+
name: 'Comercio A',
|
|
106
|
+
status: 'Activo'
|
|
107
|
+
}, {
|
|
108
|
+
id: 2,
|
|
109
|
+
name: 'Comercio B',
|
|
110
|
+
status: 'Pendiente'
|
|
111
|
+
}, {
|
|
112
|
+
id: 3,
|
|
113
|
+
name: 'Comercio C',
|
|
114
|
+
status: 'Suspendido'
|
|
115
|
+
}];
|
|
116
|
+
return <Paper sx={{
|
|
117
|
+
maxWidth: 720
|
|
118
|
+
}}>
|
|
119
|
+
<Table size="small">
|
|
120
|
+
<TableHead>
|
|
121
|
+
<TableRow>
|
|
122
|
+
<TableCell>ID</TableCell>
|
|
123
|
+
<TableCell>Comercio</TableCell>
|
|
124
|
+
<TableCell>Estado</TableCell>
|
|
125
|
+
<TableCell align="right">Acciones</TableCell>
|
|
126
|
+
</TableRow>
|
|
127
|
+
</TableHead>
|
|
128
|
+
<TableBody>
|
|
129
|
+
{rows.map(row => <TableRow key={row.id} hover>
|
|
130
|
+
<TableCell>{row.id}</TableCell>
|
|
131
|
+
<TableCell>{row.name}</TableCell>
|
|
132
|
+
<TableCell>
|
|
133
|
+
<Chip label={row.status} size="small" color={row.status === 'Activo' ? 'success' : row.status === 'Pendiente' ? 'warning' : 'error'} />
|
|
134
|
+
</TableCell>
|
|
135
|
+
<TableCell align="right">
|
|
136
|
+
<ActionMenu items={[{
|
|
137
|
+
label: 'Ver detalle',
|
|
138
|
+
icon: <VisibilityIcon fontSize="small" />,
|
|
139
|
+
onClick: fn(() => console.log('Ver', row.id))
|
|
140
|
+
}, {
|
|
141
|
+
label: 'Editar',
|
|
142
|
+
icon: <EditIcon fontSize="small" />,
|
|
143
|
+
onClick: fn(() => console.log('Editar', row.id))
|
|
144
|
+
}, {
|
|
145
|
+
label: 'Eliminar',
|
|
146
|
+
icon: <DeleteIcon fontSize="small" />,
|
|
147
|
+
onClick: fn(() => console.log('Eliminar', row.id)),
|
|
148
|
+
danger: true,
|
|
149
|
+
dividerBefore: true
|
|
150
|
+
}]} />
|
|
151
|
+
</TableCell>
|
|
152
|
+
</TableRow>)}
|
|
153
|
+
</TableBody>
|
|
154
|
+
</Table>
|
|
155
|
+
</Paper>;
|
|
156
|
+
},
|
|
157
|
+
parameters: {
|
|
158
|
+
docs: {
|
|
159
|
+
description: {
|
|
160
|
+
story: 'Caso de uso principal: un \`ActionMenu\` por cada fila de una tabla. Reemplaza exactamente el patrón \`DropDownActions\` + \`react-bootstrap Dropdown\` usado hoy en Afiliaciones.'
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}`,...c.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
|
|
165
|
+
args: {
|
|
166
|
+
disabled: true,
|
|
167
|
+
items: [{
|
|
168
|
+
label: 'Editar',
|
|
169
|
+
icon: <EditIcon fontSize="small" />,
|
|
170
|
+
onClick: fn()
|
|
171
|
+
}, {
|
|
172
|
+
label: 'Eliminar',
|
|
173
|
+
icon: <DeleteIcon fontSize="small" />,
|
|
174
|
+
onClick: fn(),
|
|
175
|
+
danger: true
|
|
176
|
+
}]
|
|
177
|
+
},
|
|
178
|
+
parameters: {
|
|
179
|
+
docs: {
|
|
180
|
+
description: {
|
|
181
|
+
story: 'Cuando el row o la acción no tiene permisos, se puede deshabilitar el trigger entero pasando \`disabled\`.'
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}`,...d.parameters?.docs?.source}}};const Se=["Default","WithDangerItem","WithDisabledItems","CustomTrigger","InsideTableCell","DisabledTrigger"];export{s as CustomTrigger,t as Default,d as DisabledTrigger,c as InsideTableCell,l as WithDangerItem,n as WithDisabledItems,Se as __namedExportsOrder,ze as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as V}from"./iframe-BAJnc_4n.js";import{a as Z,g as D,u as q,s as d,c as G,b as v,d as J,m as K}from"./DefaultPropsProvider-BGoQxtDa.js";import{u as n}from"./useSlot-b6pXgp5_.js";import{c as f}from"./createSimplePaletteValueFilter-bm0fmN_7.js";import{c as u}from"./createSvgIcon-D_Gca4vA.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{C as Q}from"./Close-Cy8nELYU.js";import{I as X}from"./IconButton-9OYSTH58.js";import{P as Y}from"./Paper-SwQBhqI7.js";function _(o){return D("MuiAlert",o)}const M=Z("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]),oo=u(e.jsx("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"})),to=u(e.jsx("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"})),eo=u(e.jsx("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"})),so=u(e.jsx("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"})),ro=o=>{const{variant:s,color:r,severity:t,classes:i}=o,g={root:["root",`color${v(r||t)}`,`${s}${v(r||t)}`,`${s}`],icon:["icon"],message:["message"],action:["action"]};return J(g,_,i)},lo=d(Y,{name:"MuiAlert",slot:"Root",overridesResolver:(o,s)=>{const{ownerState:r}=o;return[s.root,s[r.variant],s[`${r.variant}${v(r.color||r.severity)}`]]}})(K(({theme:o})=>{const s=o.palette.mode==="light"?o.darken:o.lighten,r=o.palette.mode==="light"?o.lighten:o.darken;return{...o.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(o.palette).filter(f(["light"])).map(([t])=>({props:{colorSeverity:t,variant:"standard"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),backgroundColor:o.vars?o.vars.palette.Alert[`${t}StandardBg`]:r(o.palette[t].light,.9),[`& .${M.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(f(["light"])).map(([t])=>({props:{colorSeverity:t,variant:"outlined"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),border:`1px solid ${(o.vars||o).palette[t].light}`,[`& .${M.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(f(["dark"])).map(([t])=>({props:{colorSeverity:t,variant:"filled"},style:{fontWeight:o.typography.fontWeightMedium,...o.vars?{color:o.vars.palette.Alert[`${t}FilledColor`],backgroundColor:o.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:o.palette.mode==="dark"?o.palette[t].dark:o.palette[t].main,color:o.palette.getContrastText(o.palette[t].main)}}}))]}})),ao=d("div",{name:"MuiAlert",slot:"Icon"})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),no=d("div",{name:"MuiAlert",slot:"Message"})({padding:"8px 0",minWidth:0,overflow:"auto"}),io=d("div",{name:"MuiAlert",slot:"Action"})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),j={success:e.jsx(oo,{fontSize:"inherit"}),warning:e.jsx(to,{fontSize:"inherit"}),error:e.jsx(eo,{fontSize:"inherit"}),info:e.jsx(so,{fontSize:"inherit"})},Ao=V.forwardRef(function(s,r){const t=q({props:s,name:"MuiAlert"}),{action:i,children:g,className:P,closeText:m="Close",color:C,components:x={},componentsProps:$={},icon:A,iconMapping:z=j,onClose:S,role:b="alert",severity:c="success",slotProps:L={},slots:k={},variant:h="standard",...B}=t,l={...t,color:C,severity:c,variant:h,colorSeverity:C||c},p=ro(l),a={slots:{closeButton:x.CloseButton,closeIcon:x.CloseIcon,...k},slotProps:{...$,...L}},[R,T]=n("root",{ref:r,shouldForwardComponentProp:!0,className:G(p.root,P),elementType:lo,externalForwardedProps:{...a,...B},ownerState:l,additionalProps:{role:b,elevation:0}}),[w,E]=n("icon",{className:p.icon,elementType:ao,externalForwardedProps:a,ownerState:l}),[O,W]=n("message",{className:p.message,elementType:no,externalForwardedProps:a,ownerState:l}),[y,I]=n("action",{className:p.action,elementType:io,externalForwardedProps:a,ownerState:l}),[F,H]=n("closeButton",{elementType:X,externalForwardedProps:a,ownerState:l}),[N,U]=n("closeIcon",{elementType:Q,externalForwardedProps:a,ownerState:l});return e.jsxs(R,{...T,children:[A!==!1?e.jsx(w,{...E,children:A||z[c]||j[c]}):null,e.jsx(O,{...W,children:g}),i!=null?e.jsx(y,{...I,children:i}):null,i==null&&S?e.jsx(y,{...I,children:e.jsx(F,{size:"small","aria-label":m,title:m,color:"inherit",onClick:S,...H,children:e.jsx(N,{fontSize:"small",...U})})}):null]})});export{Ao as A};
|