@beweco/aurora-ui 0.6.74 → 1.0.0-beta.99
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/assets/css/styles.css +1 -1
- package/dist/index.cjs.js +9 -121
- package/dist/index.esm.js +10 -116
- package/dist/types/components/multi-step-wizard/MultiStepWizard.d.ts.map +1 -1
- package/dist/types/components/multi-step-wizard/MultiStepWizard.types.d.ts +0 -2
- package/dist/types/components/multi-step-wizard/MultiStepWizard.types.d.ts.map +1 -1
- package/dist/types/components/multi-step-wizard/_internal/MultiStepSidebar.d.ts.map +1 -1
- package/dist/types/components/multi-step-wizard/_internal/MultiStepSidebar.types.d.ts +0 -2
- package/dist/types/components/multi-step-wizard/_internal/MultiStepSidebar.types.d.ts.map +1 -1
- package/dist/types/components/tags-filter/TagsFilter.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/types/utils/dismiss-control.d.ts +0 -61
- package/dist/types/utils/dismiss-control.d.ts.map +0 -1
package/dist/index.cjs.js
CHANGED
|
@@ -4014,96 +4014,6 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
|
|
|
4014
4014
|
}) }), helpSection ? (jsxRuntime.jsx("div", { className: "mt-auto flex flex-col items-center justify-center", children: jsxRuntime.jsx(react.Button, { fullWidth: true, className: "text-default-500 data-[hover=true]:text-default-600", startContent: jsxRuntime.jsx(IconComponent, { className: "text-default-500", icon: "solar:info-circle-line-duotone", size: "md" }), variant: "light", onPress: handleHelpClick, isIconOnly: isCollapsed, children: !isCollapsed ? (jsxRuntime.jsx("span", { className: "menu-claw-collapsible truncate", children: helpSection.title })) : null }) })) : null] }) })] }));
|
|
4015
4015
|
});
|
|
4016
4016
|
|
|
4017
|
-
/**
|
|
4018
|
-
* Interacciones que un popover no-modal NO debe tratar como "clic fuera".
|
|
4019
|
-
*
|
|
4020
|
-
* El problema que resuelve: `useOverlay` de react-aria trata cualquier
|
|
4021
|
-
* pulsación fuera del popover como interacción externa y, cuando el popover es
|
|
4022
|
-
* el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
|
|
4023
|
-
* sobre el `pointerdown` **y** sobre el `click`
|
|
4024
|
-
* (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
|
|
4025
|
-
* que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
|
|
4026
|
-
* clic solo cierra el desplegable.
|
|
4027
|
-
*
|
|
4028
|
-
* Para un clic en la página de fondo eso es lo correcto: descartar el
|
|
4029
|
-
* desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
|
|
4030
|
-
* usuario está rellenando un formulario y espera que su clic llegue. Y como los
|
|
4031
|
-
* buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
|
|
4032
|
-
* tragar — un callejón sin salida del que solo se salía vaciando el campo.
|
|
4033
|
-
*
|
|
4034
|
-
* La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
|
|
4035
|
-
* `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
|
|
4036
|
-
* pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
|
|
4037
|
-
* pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
|
|
4038
|
-
*/
|
|
4039
|
-
var _a, _b;
|
|
4040
|
-
/**
|
|
4041
|
-
* Marca un botón como control de cierre de su contenedor. Los popovers de Aura
|
|
4042
|
-
* no lo cuentan como interacción externa, así que su pulsación no se pierde.
|
|
4043
|
-
*/
|
|
4044
|
-
var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
|
|
4045
|
-
/** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
|
|
4046
|
-
var dismissControlProps = (_a = {},
|
|
4047
|
-
_a[DISMISS_CONTROL_ATTRIBUTE] = "true",
|
|
4048
|
-
_a);
|
|
4049
|
-
/**
|
|
4050
|
-
* Marca el contenedor de una superficie modal propia (wizard, panel a medida).
|
|
4051
|
-
* No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
|
|
4052
|
-
* `role="dialog"`, que cuenta igual.
|
|
4053
|
-
*/
|
|
4054
|
-
var CONTAINER_ATTRIBUTE = "data-aura-container";
|
|
4055
|
-
/** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
|
|
4056
|
-
var containerProps = (_b = {},
|
|
4057
|
-
_b[CONTAINER_ATTRIBUTE] = "true",
|
|
4058
|
-
_b);
|
|
4059
|
-
/**
|
|
4060
|
-
* Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
|
|
4061
|
-
* los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
|
|
4062
|
-
* atributos propios.
|
|
4063
|
-
*/
|
|
4064
|
-
var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
|
|
4065
|
-
/** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
|
|
4066
|
-
var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
|
|
4067
|
-
var matchesAncestor = function (element, selector) {
|
|
4068
|
-
if (!element || typeof element.closest !== "function") {
|
|
4069
|
-
return false;
|
|
4070
|
-
}
|
|
4071
|
-
return element.closest(selector) != null;
|
|
4072
|
-
};
|
|
4073
|
-
/** `true` si el elemento es un control de cierre (o está dentro de uno). */
|
|
4074
|
-
var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
|
|
4075
|
-
/**
|
|
4076
|
-
* Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
|
|
4077
|
-
* componente con popover no-modal.
|
|
4078
|
-
*
|
|
4079
|
-
* Devuelve `false` —no es interacción externa— en tres casos:
|
|
4080
|
-
*
|
|
4081
|
-
* 1. Dentro del propio componente: el popover vive en un portal, así que el
|
|
4082
|
-
* campo de búsqueda queda fuera de él y una pulsación sobre el texto se
|
|
4083
|
-
* contaba como externa.
|
|
4084
|
-
* 2. Sobre un control de cierre del contenedor.
|
|
4085
|
-
* 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
|
|
4086
|
-
* el formulario no es descartar el desplegable.
|
|
4087
|
-
*
|
|
4088
|
-
* @param element Elemento donde ha empezado la interacción.
|
|
4089
|
-
* @param root Raíz del componente.
|
|
4090
|
-
*/
|
|
4091
|
-
var shouldClosePopoverOnInteractOutside = function (element, root) {
|
|
4092
|
-
var _a;
|
|
4093
|
-
if (root === null || root === void 0 ? void 0 : root.contains(element)) {
|
|
4094
|
-
return false;
|
|
4095
|
-
}
|
|
4096
|
-
if (isDismissControl(element)) {
|
|
4097
|
-
return false;
|
|
4098
|
-
}
|
|
4099
|
-
if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
|
|
4100
|
-
return true;
|
|
4101
|
-
}
|
|
4102
|
-
// Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
|
|
4103
|
-
var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
|
|
4104
|
-
return !(container === null || container === void 0 ? void 0 : container.contains(element));
|
|
4105
|
-
};
|
|
4106
|
-
|
|
4107
4017
|
var StepIndicator = function (_a) {
|
|
4108
4018
|
var currentStep = _a.currentStep, totalSteps = _a.totalSteps, _b = _a.color, color = _b === void 0 ? "primary" : _b, _c = _a.showStepText, showStepText = _c === void 0 ? true : _c, stepTextFormatter = _a.stepTextFormatter, className = _a.className, props = __rest(_a, ["currentStep", "totalSteps", "color", "showStepText", "stepTextFormatter", "className"]);
|
|
4109
4019
|
var progressPercentage = Math.min((currentStep / totalSteps) * 100, 100);
|
|
@@ -4287,7 +4197,7 @@ var VerticalSteps = React.forwardRef(function (_a, ref) {
|
|
|
4287
4197
|
VerticalSteps.displayName = "VerticalSteps";
|
|
4288
4198
|
|
|
4289
4199
|
var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
4290
|
-
var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var
|
|
4200
|
+
var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var onClose = _a.onClose, _b = _a.hideInactiveDescriptions, hideInactiveDescriptions = _b === void 0 ? false : _b, _c = _a.isDismissable, isDismissable = _c === void 0 ? true : _c, props = __rest(_a, ["children", "className", "currentPage", "onBack", "onNext", "onChangePage", "steps", "goBackTranslation", "onClose", "hideInactiveDescriptions", "isDismissable"]);
|
|
4291
4201
|
var handleOverlayClick = function (e) {
|
|
4292
4202
|
if (!isDismissable) {
|
|
4293
4203
|
return;
|
|
@@ -4296,7 +4206,7 @@ var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
|
4296
4206
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
4297
4207
|
}
|
|
4298
4208
|
};
|
|
4299
|
-
return (jsxRuntime.jsx("div",
|
|
4209
|
+
return (jsxRuntime.jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-content3/50 backdrop-blur-sm", onClick: handleOverlayClick, children: jsxRuntime.jsxs("div", __assign({ ref: ref, className: react.cn("relative flex h-full w-full max-w-4xl overflow-hidden rounded-lg bg-background shadow-lg lg:h-auto lg:max-h-[85vh] lg:min-h-[512px]", className) }, props, { children: [jsxRuntime.jsx("div", { className: react.cn("absolute inset-y-0 left-0 hidden w-1/3 flex-col justify-start gap-y-8 overflow-y-auto p-8 md:flex [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"), children: jsxRuntime.jsx(VerticalSteps, { className: "aura-stepper-theme", color: "primary", currentStep: currentPage, steps: steps, onStepChange: onChangePage, hideInactiveDescriptions: hideInactiveDescriptions }) }), jsxRuntime.jsxs("div", { className: "relative flex w-full flex-col items-center justify-between gap-4 md:ml-[33.333333%] md:w-2/3 md:p-4 min-h-0", children: [jsxRuntime.jsx(Button, { isIconOnly: true, className: "absolute right-4 top-4", size: "sm", variant: "light", color: "default", onPress: onClose, startContent: jsxRuntime.jsx(IconComponent, { className: "text-foreground", icon: "material-symbols:close-rounded", size: "lg" }) }), jsxRuntime.jsx("div", { className: "pt-9 w-10/12 md:hidden", children: jsxRuntime.jsx("div", { className: "flex w-full justify-center", children: jsxRuntime.jsx(StepIndicator, { className: "aura-stepper-theme", currentStep: currentPage + 1, totalSteps: steps.length }) }) }), jsxRuntime.jsx("div", { className: "flex flex-col flex-1 w-full justify-between p-4 sm:max-w-md md:max-w-lg overflow-y-auto min-h-0 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: children })] })] })) }));
|
|
4300
4210
|
});
|
|
4301
4211
|
MultiStepSidebar.displayName = "MultiStepSidebar";
|
|
4302
4212
|
|
|
@@ -4323,7 +4233,6 @@ var MultiStepWizard = function (_a) {
|
|
|
4323
4233
|
cancel: "Cancel",
|
|
4324
4234
|
next: "Next",
|
|
4325
4235
|
complete: "Complete",
|
|
4326
|
-
close: "Close",
|
|
4327
4236
|
}, translations);
|
|
4328
4237
|
var paginate = React.useCallback(function (newDirection) {
|
|
4329
4238
|
setPage(function (prev) {
|
|
@@ -4375,11 +4284,14 @@ var MultiStepWizard = function (_a) {
|
|
|
4375
4284
|
if (!isOpen) {
|
|
4376
4285
|
return null;
|
|
4377
4286
|
}
|
|
4378
|
-
return (jsxRuntime.jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack,
|
|
4287
|
+
return (jsxRuntime.jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack, steps: steps, onBack: onBack, onChangePage: onChangePage, onClose: onClose, onNext: onNext, hideInactiveDescriptions: hideInactiveDescriptions, isDismissable: isDismissable, children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Button, { className: "w-fit text-default-600 mb-6", color: "default", variant: "light", onPress: onBack, isDisabled: page === 0, startContent: jsxRuntime.jsx(IconComponent, { className: "text-default-500", icon: "material-symbols:arrow-back-rounded", size: "sm" }), children: t.goBack || "Back" }), jsxRuntime.jsx("div", { className: "relative flex h-fit w-full flex-col text-center lg:justify-center lg:pt-0", children: content })] }), jsxRuntime.jsx(MultistepNavigationButtons, { backButtonProps: {
|
|
4379
4288
|
isDisabled: page === 0,
|
|
4380
4289
|
onPress: onBack,
|
|
4381
4290
|
children: t.goBack,
|
|
4382
|
-
}, cancelButtonProps:
|
|
4291
|
+
}, cancelButtonProps: {
|
|
4292
|
+
onPress: onClose,
|
|
4293
|
+
children: t.cancel,
|
|
4294
|
+
}, nextButtonProps: {
|
|
4383
4295
|
children: getButtonText(),
|
|
4384
4296
|
onPress: handleNextAction,
|
|
4385
4297
|
isDisabled: steps[page].isStepValid === false,
|
|
@@ -8952,7 +8864,6 @@ function TagsFilter(_a) {
|
|
|
8952
8864
|
var _m = React.useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
|
|
8953
8865
|
var selectedList = value !== null && value !== void 0 ? value : [];
|
|
8954
8866
|
var _o = React.useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
|
|
8955
|
-
var rootRef = React.useRef(null);
|
|
8956
8867
|
React.useEffect(function () {
|
|
8957
8868
|
if (!onLoadMore || !sentinelNode || !hasMore) {
|
|
8958
8869
|
return;
|
|
@@ -9024,7 +8935,7 @@ function TagsFilter(_a) {
|
|
|
9024
8935
|
if (isLoading) {
|
|
9025
8936
|
return (jsxRuntime.jsx("div", { className: "flex flex-col gap-4 ".concat(className), children: jsxRuntime.jsx("div", { className: "flex justify-center py-4", children: jsxRuntime.jsx(react.Spinner, { size: "sm" }) }) }));
|
|
9026
8937
|
}
|
|
9027
|
-
return (jsxRuntime.jsxs("div", {
|
|
8938
|
+
return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 ".concat(className), children: [error && (jsxRuntime.jsxs("div", { className: "text-danger text-small py-2", children: [t.errorLoadingPrefix, ": ", error] })), !error && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [jsxRuntime.jsxs(H4, { className: "text-tiny text-left text-default-700", children: [t.labelSelect, required && jsxRuntime.jsx("span", { className: "text-danger ml-0.5", children: "*" })] }), jsxRuntime.jsx(AuraAutocomplete, { placeholder: t.placeholder, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t.placeholder, inputValue: inputValue, onInputChange: function (v) {
|
|
9028
8939
|
setInputValue(v);
|
|
9029
8940
|
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
|
|
9030
8941
|
}, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
|
|
@@ -9043,24 +8954,7 @@ function TagsFilter(_a) {
|
|
|
9043
8954
|
// intercepts pointer events, blocking the parent modal's close button.
|
|
9044
8955
|
// shouldCloseOnInteractOutside already handles closing on outside clicks.
|
|
9045
8956
|
isNonModal: true,
|
|
9046
|
-
|
|
9047
|
-
// búsqueda queda FUERA de él y una pulsación sobre el texto contaba
|
|
9048
|
-
// como interacción externa. Al cerrarse, el FocusScope devolvía el
|
|
9049
|
-
// foco con un `.focus()` que abortaba el gesto de selección que el
|
|
9050
|
-
// navegador acababa de iniciar: de ahí que arrastrar o hacer doble
|
|
9051
|
-
// clic no seleccionara nada y solo quedara borrar letra a letra
|
|
9052
|
-
// (con el teclado sí funcionaba, porque no pasa por aquí).
|
|
9053
|
-
// Las pulsaciones dentro del componente dejan de contar como
|
|
9054
|
-
// externas; las de fuera siguen cerrando el desplegable igual.
|
|
9055
|
-
//
|
|
9056
|
-
// Los controles de cierre del contenedor también quedan exentos:
|
|
9057
|
-
// react-aria hace `preventDefault()` sobre el pointerdown Y el
|
|
9058
|
-
// click de toda interacción externa, así que su `onPress` no se
|
|
9059
|
-
// disparaba y el contenedor no se podía cerrar mientras el
|
|
9060
|
-
// desplegable estuviera abierto (ver `shouldClosePopoverOnInteractOutside`).
|
|
9061
|
-
shouldCloseOnInteractOutside: function (element) {
|
|
9062
|
-
return shouldClosePopoverOnInteractOutside(element, rootRef.current);
|
|
9063
|
-
},
|
|
8957
|
+
shouldCloseOnInteractOutside: function () { return true; },
|
|
9064
8958
|
}, listboxProps: {
|
|
9065
8959
|
className: "max-h-[200px] overflow-y-auto",
|
|
9066
8960
|
}, className: "w-full", children: function (item) {
|
|
@@ -9825,7 +9719,6 @@ exports.AuraToastProvider = AuraToastProvider;
|
|
|
9825
9719
|
exports.BEWEOS_THEME_MODE_COOKIE_NAME = BEWEOS_THEME_MODE_COOKIE_NAME;
|
|
9826
9720
|
exports.BreadcrumbsComponent = BreadcrumbsComponent;
|
|
9827
9721
|
exports.Button = Button;
|
|
9828
|
-
exports.CONTAINER_ATTRIBUTE = CONTAINER_ATTRIBUTE;
|
|
9829
9722
|
exports.Card = Card;
|
|
9830
9723
|
exports.Chip = Chip;
|
|
9831
9724
|
exports.ColorPicker = ColorPicker;
|
|
@@ -9835,7 +9728,6 @@ exports.Currency = Currency;
|
|
|
9835
9728
|
exports.DEFAULT_DONUT_COLORS = DEFAULT_DONUT_COLORS;
|
|
9836
9729
|
exports.DEFAULT_PREDEFINED_COLORS = DEFAULT_PREDEFINED_COLORS;
|
|
9837
9730
|
exports.DEFAULT_RANKED_BAR_COLORS = DEFAULT_RANKED_BAR_COLORS;
|
|
9838
|
-
exports.DISMISS_CONTROL_ATTRIBUTE = DISMISS_CONTROL_ATTRIBUTE;
|
|
9839
9731
|
exports.DatePicker = DatePicker;
|
|
9840
9732
|
exports.DateRangePicker = DateRangePicker;
|
|
9841
9733
|
exports.DateSelector = DateSelector;
|
|
@@ -9909,12 +9801,10 @@ exports.computeBars = computeBars;
|
|
|
9909
9801
|
exports.computeMax = computeMax;
|
|
9910
9802
|
exports.computeSlices = computeSlices;
|
|
9911
9803
|
exports.computeTotal = computeTotal;
|
|
9912
|
-
exports.containerProps = containerProps;
|
|
9913
9804
|
exports.createCurrencyFormatter = createCurrencyFormatter;
|
|
9914
9805
|
exports.defaultCountries = uniqueCountries;
|
|
9915
9806
|
exports.defaultCurrencyOptions = defaultCurrencyOptions;
|
|
9916
9807
|
exports.defaultTranslations = defaultTranslations$5;
|
|
9917
|
-
exports.dismissControlProps = dismissControlProps;
|
|
9918
9808
|
exports.forceLightOnlyThemeBeforeReact = forceLightOnlyThemeBeforeReact;
|
|
9919
9809
|
exports.formatAuroraThemeTooltip = formatAuroraThemeTooltip;
|
|
9920
9810
|
exports.generateThemeColorScale = generateThemeColorScale;
|
|
@@ -9924,7 +9814,6 @@ exports.getSelectedKeyFromPath = getSelectedKeyFromPath;
|
|
|
9924
9814
|
exports.hexToThemeColor = hexToThemeColor;
|
|
9925
9815
|
exports.hslToCssValue = hslToCssValue;
|
|
9926
9816
|
exports.isAuroraFullThemeId = isAuroraFullThemeId;
|
|
9927
|
-
exports.isDismissControl = isDismissControl;
|
|
9928
9817
|
exports.isDonutEmpty = isDonutEmpty;
|
|
9929
9818
|
exports.isExactThemeColor = isExactThemeColor;
|
|
9930
9819
|
exports.isGroupState = isGroupState;
|
|
@@ -9932,7 +9821,6 @@ exports.isHexColor = isHexColor;
|
|
|
9932
9821
|
exports.isRankedBarListEmpty = isRankedBarListEmpty;
|
|
9933
9822
|
exports.isSegmentationGroup = isSegmentationGroup;
|
|
9934
9823
|
exports.removeCustomPrimaryColor = removeCustomPrimaryColor;
|
|
9935
|
-
exports.shouldClosePopoverOnInteractOutside = shouldClosePopoverOnInteractOutside;
|
|
9936
9824
|
exports.sizeMap = sizeMap;
|
|
9937
9825
|
exports.themeColors = themeColors;
|
|
9938
9826
|
exports.useAuraToast = useAuraToast;
|
package/dist/index.esm.js
CHANGED
|
@@ -4015,96 +4015,6 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
|
|
|
4015
4015
|
}) }), helpSection ? (jsx("div", { className: "mt-auto flex flex-col items-center justify-center", children: jsx(Button$1, { fullWidth: true, className: "text-default-500 data-[hover=true]:text-default-600", startContent: jsx(IconComponent, { className: "text-default-500", icon: "solar:info-circle-line-duotone", size: "md" }), variant: "light", onPress: handleHelpClick, isIconOnly: isCollapsed, children: !isCollapsed ? (jsx("span", { className: "menu-claw-collapsible truncate", children: helpSection.title })) : null }) })) : null] }) })] }));
|
|
4016
4016
|
});
|
|
4017
4017
|
|
|
4018
|
-
/**
|
|
4019
|
-
* Interacciones que un popover no-modal NO debe tratar como "clic fuera".
|
|
4020
|
-
*
|
|
4021
|
-
* El problema que resuelve: `useOverlay` de react-aria trata cualquier
|
|
4022
|
-
* pulsación fuera del popover como interacción externa y, cuando el popover es
|
|
4023
|
-
* el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
|
|
4024
|
-
* sobre el `pointerdown` **y** sobre el `click`
|
|
4025
|
-
* (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
|
|
4026
|
-
* que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
|
|
4027
|
-
* clic solo cierra el desplegable.
|
|
4028
|
-
*
|
|
4029
|
-
* Para un clic en la página de fondo eso es lo correcto: descartar el
|
|
4030
|
-
* desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
|
|
4031
|
-
* usuario está rellenando un formulario y espera que su clic llegue. Y como los
|
|
4032
|
-
* buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
|
|
4033
|
-
* tragar — un callejón sin salida del que solo se salía vaciando el campo.
|
|
4034
|
-
*
|
|
4035
|
-
* La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
|
|
4036
|
-
* `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
|
|
4037
|
-
* pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
|
|
4038
|
-
* pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
|
|
4039
|
-
*/
|
|
4040
|
-
var _a, _b;
|
|
4041
|
-
/**
|
|
4042
|
-
* Marca un botón como control de cierre de su contenedor. Los popovers de Aura
|
|
4043
|
-
* no lo cuentan como interacción externa, así que su pulsación no se pierde.
|
|
4044
|
-
*/
|
|
4045
|
-
var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
|
|
4046
|
-
/** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
|
|
4047
|
-
var dismissControlProps = (_a = {},
|
|
4048
|
-
_a[DISMISS_CONTROL_ATTRIBUTE] = "true",
|
|
4049
|
-
_a);
|
|
4050
|
-
/**
|
|
4051
|
-
* Marca el contenedor de una superficie modal propia (wizard, panel a medida).
|
|
4052
|
-
* No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
|
|
4053
|
-
* `role="dialog"`, que cuenta igual.
|
|
4054
|
-
*/
|
|
4055
|
-
var CONTAINER_ATTRIBUTE = "data-aura-container";
|
|
4056
|
-
/** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
|
|
4057
|
-
var containerProps = (_b = {},
|
|
4058
|
-
_b[CONTAINER_ATTRIBUTE] = "true",
|
|
4059
|
-
_b);
|
|
4060
|
-
/**
|
|
4061
|
-
* Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
|
|
4062
|
-
* los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
|
|
4063
|
-
* atributos propios.
|
|
4064
|
-
*/
|
|
4065
|
-
var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
|
|
4066
|
-
/** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
|
|
4067
|
-
var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
|
|
4068
|
-
var matchesAncestor = function (element, selector) {
|
|
4069
|
-
if (!element || typeof element.closest !== "function") {
|
|
4070
|
-
return false;
|
|
4071
|
-
}
|
|
4072
|
-
return element.closest(selector) != null;
|
|
4073
|
-
};
|
|
4074
|
-
/** `true` si el elemento es un control de cierre (o está dentro de uno). */
|
|
4075
|
-
var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
|
|
4076
|
-
/**
|
|
4077
|
-
* Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
|
|
4078
|
-
* componente con popover no-modal.
|
|
4079
|
-
*
|
|
4080
|
-
* Devuelve `false` —no es interacción externa— en tres casos:
|
|
4081
|
-
*
|
|
4082
|
-
* 1. Dentro del propio componente: el popover vive en un portal, así que el
|
|
4083
|
-
* campo de búsqueda queda fuera de él y una pulsación sobre el texto se
|
|
4084
|
-
* contaba como externa.
|
|
4085
|
-
* 2. Sobre un control de cierre del contenedor.
|
|
4086
|
-
* 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
|
|
4087
|
-
* el formulario no es descartar el desplegable.
|
|
4088
|
-
*
|
|
4089
|
-
* @param element Elemento donde ha empezado la interacción.
|
|
4090
|
-
* @param root Raíz del componente.
|
|
4091
|
-
*/
|
|
4092
|
-
var shouldClosePopoverOnInteractOutside = function (element, root) {
|
|
4093
|
-
var _a;
|
|
4094
|
-
if (root === null || root === void 0 ? void 0 : root.contains(element)) {
|
|
4095
|
-
return false;
|
|
4096
|
-
}
|
|
4097
|
-
if (isDismissControl(element)) {
|
|
4098
|
-
return false;
|
|
4099
|
-
}
|
|
4100
|
-
if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
|
|
4101
|
-
return true;
|
|
4102
|
-
}
|
|
4103
|
-
// Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
|
|
4104
|
-
var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
|
|
4105
|
-
return !(container === null || container === void 0 ? void 0 : container.contains(element));
|
|
4106
|
-
};
|
|
4107
|
-
|
|
4108
4018
|
var StepIndicator = function (_a) {
|
|
4109
4019
|
var currentStep = _a.currentStep, totalSteps = _a.totalSteps, _b = _a.color, color = _b === void 0 ? "primary" : _b, _c = _a.showStepText, showStepText = _c === void 0 ? true : _c, stepTextFormatter = _a.stepTextFormatter, className = _a.className, props = __rest(_a, ["currentStep", "totalSteps", "color", "showStepText", "stepTextFormatter", "className"]);
|
|
4110
4020
|
var progressPercentage = Math.min((currentStep / totalSteps) * 100, 100);
|
|
@@ -4288,7 +4198,7 @@ var VerticalSteps = React.forwardRef(function (_a, ref) {
|
|
|
4288
4198
|
VerticalSteps.displayName = "VerticalSteps";
|
|
4289
4199
|
|
|
4290
4200
|
var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
4291
|
-
var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var
|
|
4201
|
+
var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var onClose = _a.onClose, _b = _a.hideInactiveDescriptions, hideInactiveDescriptions = _b === void 0 ? false : _b, _c = _a.isDismissable, isDismissable = _c === void 0 ? true : _c, props = __rest(_a, ["children", "className", "currentPage", "onBack", "onNext", "onChangePage", "steps", "goBackTranslation", "onClose", "hideInactiveDescriptions", "isDismissable"]);
|
|
4292
4202
|
var handleOverlayClick = function (e) {
|
|
4293
4203
|
if (!isDismissable) {
|
|
4294
4204
|
return;
|
|
@@ -4297,7 +4207,7 @@ var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
|
4297
4207
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
4298
4208
|
}
|
|
4299
4209
|
};
|
|
4300
|
-
return (jsx("div",
|
|
4210
|
+
return (jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-content3/50 backdrop-blur-sm", onClick: handleOverlayClick, children: jsxs("div", __assign({ ref: ref, className: cn("relative flex h-full w-full max-w-4xl overflow-hidden rounded-lg bg-background shadow-lg lg:h-auto lg:max-h-[85vh] lg:min-h-[512px]", className) }, props, { children: [jsx("div", { className: cn("absolute inset-y-0 left-0 hidden w-1/3 flex-col justify-start gap-y-8 overflow-y-auto p-8 md:flex [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"), children: jsx(VerticalSteps, { className: "aura-stepper-theme", color: "primary", currentStep: currentPage, steps: steps, onStepChange: onChangePage, hideInactiveDescriptions: hideInactiveDescriptions }) }), jsxs("div", { className: "relative flex w-full flex-col items-center justify-between gap-4 md:ml-[33.333333%] md:w-2/3 md:p-4 min-h-0", children: [jsx(Button, { isIconOnly: true, className: "absolute right-4 top-4", size: "sm", variant: "light", color: "default", onPress: onClose, startContent: jsx(IconComponent, { className: "text-foreground", icon: "material-symbols:close-rounded", size: "lg" }) }), jsx("div", { className: "pt-9 w-10/12 md:hidden", children: jsx("div", { className: "flex w-full justify-center", children: jsx(StepIndicator, { className: "aura-stepper-theme", currentStep: currentPage + 1, totalSteps: steps.length }) }) }), jsx("div", { className: "flex flex-col flex-1 w-full justify-between p-4 sm:max-w-md md:max-w-lg overflow-y-auto min-h-0 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: children })] })] })) }));
|
|
4301
4211
|
});
|
|
4302
4212
|
MultiStepSidebar.displayName = "MultiStepSidebar";
|
|
4303
4213
|
|
|
@@ -4324,7 +4234,6 @@ var MultiStepWizard = function (_a) {
|
|
|
4324
4234
|
cancel: "Cancel",
|
|
4325
4235
|
next: "Next",
|
|
4326
4236
|
complete: "Complete",
|
|
4327
|
-
close: "Close",
|
|
4328
4237
|
}, translations);
|
|
4329
4238
|
var paginate = React.useCallback(function (newDirection) {
|
|
4330
4239
|
setPage(function (prev) {
|
|
@@ -4376,11 +4285,14 @@ var MultiStepWizard = function (_a) {
|
|
|
4376
4285
|
if (!isOpen) {
|
|
4377
4286
|
return null;
|
|
4378
4287
|
}
|
|
4379
|
-
return (jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack,
|
|
4288
|
+
return (jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack, steps: steps, onBack: onBack, onChangePage: onChangePage, onClose: onClose, onNext: onNext, hideInactiveDescriptions: hideInactiveDescriptions, isDismissable: isDismissable, children: [jsxs("div", { children: [jsx(Button, { className: "w-fit text-default-600 mb-6", color: "default", variant: "light", onPress: onBack, isDisabled: page === 0, startContent: jsx(IconComponent, { className: "text-default-500", icon: "material-symbols:arrow-back-rounded", size: "sm" }), children: t.goBack || "Back" }), jsx("div", { className: "relative flex h-fit w-full flex-col text-center lg:justify-center lg:pt-0", children: content })] }), jsx(MultistepNavigationButtons, { backButtonProps: {
|
|
4380
4289
|
isDisabled: page === 0,
|
|
4381
4290
|
onPress: onBack,
|
|
4382
4291
|
children: t.goBack,
|
|
4383
|
-
}, cancelButtonProps:
|
|
4292
|
+
}, cancelButtonProps: {
|
|
4293
|
+
onPress: onClose,
|
|
4294
|
+
children: t.cancel,
|
|
4295
|
+
}, nextButtonProps: {
|
|
4384
4296
|
children: getButtonText(),
|
|
4385
4297
|
onPress: handleNextAction,
|
|
4386
4298
|
isDisabled: steps[page].isStepValid === false,
|
|
@@ -8953,7 +8865,6 @@ function TagsFilter(_a) {
|
|
|
8953
8865
|
var _m = useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
|
|
8954
8866
|
var selectedList = value !== null && value !== void 0 ? value : [];
|
|
8955
8867
|
var _o = useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
|
|
8956
|
-
var rootRef = useRef(null);
|
|
8957
8868
|
useEffect(function () {
|
|
8958
8869
|
if (!onLoadMore || !sentinelNode || !hasMore) {
|
|
8959
8870
|
return;
|
|
@@ -9025,7 +8936,7 @@ function TagsFilter(_a) {
|
|
|
9025
8936
|
if (isLoading) {
|
|
9026
8937
|
return (jsx("div", { className: "flex flex-col gap-4 ".concat(className), children: jsx("div", { className: "flex justify-center py-4", children: jsx(Spinner, { size: "sm" }) }) }));
|
|
9027
8938
|
}
|
|
9028
|
-
return (jsxs("div", {
|
|
8939
|
+
return (jsxs("div", { className: "flex flex-col gap-4 ".concat(className), children: [error && (jsxs("div", { className: "text-danger text-small py-2", children: [t.errorLoadingPrefix, ": ", error] })), !error && (jsxs(Fragment, { children: [jsxs("div", { className: "flex flex-col gap-3", children: [jsxs(H4, { className: "text-tiny text-left text-default-700", children: [t.labelSelect, required && jsx("span", { className: "text-danger ml-0.5", children: "*" })] }), jsx(AuraAutocomplete, { placeholder: t.placeholder, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t.placeholder, inputValue: inputValue, onInputChange: function (v) {
|
|
9029
8940
|
setInputValue(v);
|
|
9030
8941
|
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
|
|
9031
8942
|
}, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
|
|
@@ -9044,24 +8955,7 @@ function TagsFilter(_a) {
|
|
|
9044
8955
|
// intercepts pointer events, blocking the parent modal's close button.
|
|
9045
8956
|
// shouldCloseOnInteractOutside already handles closing on outside clicks.
|
|
9046
8957
|
isNonModal: true,
|
|
9047
|
-
|
|
9048
|
-
// búsqueda queda FUERA de él y una pulsación sobre el texto contaba
|
|
9049
|
-
// como interacción externa. Al cerrarse, el FocusScope devolvía el
|
|
9050
|
-
// foco con un `.focus()` que abortaba el gesto de selección que el
|
|
9051
|
-
// navegador acababa de iniciar: de ahí que arrastrar o hacer doble
|
|
9052
|
-
// clic no seleccionara nada y solo quedara borrar letra a letra
|
|
9053
|
-
// (con el teclado sí funcionaba, porque no pasa por aquí).
|
|
9054
|
-
// Las pulsaciones dentro del componente dejan de contar como
|
|
9055
|
-
// externas; las de fuera siguen cerrando el desplegable igual.
|
|
9056
|
-
//
|
|
9057
|
-
// Los controles de cierre del contenedor también quedan exentos:
|
|
9058
|
-
// react-aria hace `preventDefault()` sobre el pointerdown Y el
|
|
9059
|
-
// click de toda interacción externa, así que su `onPress` no se
|
|
9060
|
-
// disparaba y el contenedor no se podía cerrar mientras el
|
|
9061
|
-
// desplegable estuviera abierto (ver `shouldClosePopoverOnInteractOutside`).
|
|
9062
|
-
shouldCloseOnInteractOutside: function (element) {
|
|
9063
|
-
return shouldClosePopoverOnInteractOutside(element, rootRef.current);
|
|
9064
|
-
},
|
|
8958
|
+
shouldCloseOnInteractOutside: function () { return true; },
|
|
9065
8959
|
}, listboxProps: {
|
|
9066
8960
|
className: "max-h-[200px] overflow-y-auto",
|
|
9067
8961
|
}, className: "w-full", children: function (item) {
|
|
@@ -9805,4 +9699,4 @@ var NavigationLoadingProvider = function (_a) {
|
|
|
9805
9699
|
return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
|
|
9806
9700
|
};
|
|
9807
9701
|
|
|
9808
|
-
export { ALL_THEMES, AURORA_THEME_FAMILIES, AURORA_THEME_REGISTRY, AccordionList, AddHolidayForm, AnalyticsCard, AreaLineChart, AuraAutocomplete, AuraTable, AuraToastProvider, BEWEOS_THEME_MODE_COOKIE_NAME, BreadcrumbsComponent, Button,
|
|
9702
|
+
export { ALL_THEMES, AURORA_THEME_FAMILIES, AURORA_THEME_REGISTRY, AccordionList, AddHolidayForm, AnalyticsCard, AreaLineChart, AuraAutocomplete, AuraTable, AuraToastProvider, BEWEOS_THEME_MODE_COOKIE_NAME, BreadcrumbsComponent, Button, Card, Chip, ColorPicker, ColorSelector, ContentCarousel, Currency, DEFAULT_DONUT_COLORS, DEFAULT_PREDEFINED_COLORS, DEFAULT_RANKED_BAR_COLORS, DatePicker, DateRangePicker, DateSelector, DonutChart, DrawerFilters, EmailPreview, EnumMenuNavListItem, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, InputPassword, Kanban, KanbanCard, KanbanColumn, LindaIcon, MenuClaw, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, REGISTERED_THEME_COLORS, RangeFilter, RankedBarList, RowSteps, DEFAULT_TRANSLATIONS$1 as SEGMENTATION_DEFAULT_TRANSLATIONS, ScheduleRow, SearchInput, SegmentationBuilder, Select, SimpleLineChart, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StatTile, StepIndicator, Switch as SwitchComponent, THEME_COLOR_HEX_MAP, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, Tooltip, TwoColumnLayoutAgent, UploadFile, VerticalSteps, ViolinPlot, WhatsAppPreview, Wizard, WizardNavigation, WizardSidebar, applyCustomPrimaryColor, computeBars, computeMax, computeSlices, computeTotal, createCurrencyFormatter, uniqueCountries as defaultCountries, defaultCurrencyOptions, defaultTranslations$5 as defaultTranslations, forceLightOnlyThemeBeforeReact, formatAuroraThemeTooltip, generateThemeColorScale, getContrastForeground, getRegisteredThemeColorBases, getSelectedKeyFromPath, hexToThemeColor, hslToCssValue, isAuroraFullThemeId, isDonutEmpty, isExactThemeColor, isGroupState, isHexColor, isRankedBarListEmpty, isSegmentationGroup, removeCustomPrimaryColor, sizeMap, themeColors, useAuraToast, useCloseOnAncestorScroll, useMediaQuery, useNavigationLoading, useThemeContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiStepWizard.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MultiStepWizard.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAIpE,eAAO,MAAM,eAAe,GAAI,oHAS7B,oBAAoB,mDA6ItB,CAAC"}
|
|
@@ -30,7 +30,5 @@ export interface MultiStepWizardTranslations {
|
|
|
30
30
|
cancel?: string;
|
|
31
31
|
next?: string;
|
|
32
32
|
complete?: string;
|
|
33
|
-
/** Nombre accesible del botón de cerrar (solo icono). Por defecto `"Close"`. */
|
|
34
|
-
close?: string;
|
|
35
33
|
}
|
|
36
34
|
//# sourceMappingURL=MultiStepWizard.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiStepWizard.types.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,IAAI;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiStepWizard.types.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,IAAI;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiStepSidebar.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiStepSidebar.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,eAAO,MAAM,gBAAgB,8FA6F5B,CAAC"}
|
|
@@ -9,8 +9,6 @@ export interface MultiStepSidebarProps extends React.HTMLAttributes<HTMLDivEleme
|
|
|
9
9
|
onChangePage?: (page: number) => void;
|
|
10
10
|
steps: Step[];
|
|
11
11
|
goBackTranslation?: string;
|
|
12
|
-
/** Nombre accesible del botón de cerrar (solo icono). Por defecto `"Close"`. */
|
|
13
|
-
closeTranslation?: string;
|
|
14
12
|
hideInactiveDescriptions?: boolean;
|
|
15
13
|
/** Permite cerrar al hacer clic en el backdrop. Por defecto `true`. */
|
|
16
14
|
isDismissable?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiStepSidebar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,qBAChB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"MultiStepSidebar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,qBAChB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagsFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/tags-filter/TagsFilter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TagsFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/tags-filter/TagsFilter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EACX,eAAe,EAEf,MAAM,oBAAoB,CAAC;AAuC5B;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACpE,KAAK,EACL,KAAK,EACL,QAAQ,EACR,YAAiB,EACjB,KAAK,EACL,SAAiB,EACjB,SAAc,EACd,YAAY,EAAE,SAAS,EACvB,QAAgB,EAChB,WAA2D,EAC3D,SAAkD,EAClD,aAAa,EACb,OAAe,EACf,aAAqB,EACrB,UAAU,EACV,kBAA0B,GAC1B,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAiPzC;yBAlQe,UAAU"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -61,7 +61,6 @@ export * from "./components/range-filter";
|
|
|
61
61
|
export * from "./components/simple-line-chart";
|
|
62
62
|
export * from "./components/segmentation-builder";
|
|
63
63
|
export * from "./components/tags-filter";
|
|
64
|
-
export * from "./utils/dismiss-control";
|
|
65
64
|
export * from "./utils/formatters";
|
|
66
65
|
export { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, type ModalProps, } from "./components/modal";
|
|
67
66
|
export { AuraAutocomplete, type AuraAutocompleteProps, } from "./components/autocomplete";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAU9B,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interacciones que un popover no-modal NO debe tratar como "clic fuera".
|
|
3
|
-
*
|
|
4
|
-
* El problema que resuelve: `useOverlay` de react-aria trata cualquier
|
|
5
|
-
* pulsación fuera del popover como interacción externa y, cuando el popover es
|
|
6
|
-
* el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
|
|
7
|
-
* sobre el `pointerdown` **y** sobre el `click`
|
|
8
|
-
* (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
|
|
9
|
-
* que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
|
|
10
|
-
* clic solo cierra el desplegable.
|
|
11
|
-
*
|
|
12
|
-
* Para un clic en la página de fondo eso es lo correcto: descartar el
|
|
13
|
-
* desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
|
|
14
|
-
* usuario está rellenando un formulario y espera que su clic llegue. Y como los
|
|
15
|
-
* buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
|
|
16
|
-
* tragar — un callejón sin salida del que solo se salía vaciando el campo.
|
|
17
|
-
*
|
|
18
|
-
* La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
|
|
19
|
-
* `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
|
|
20
|
-
* pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
|
|
21
|
-
* pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* Marca un botón como control de cierre de su contenedor. Los popovers de Aura
|
|
25
|
-
* no lo cuentan como interacción externa, así que su pulsación no se pierde.
|
|
26
|
-
*/
|
|
27
|
-
export declare const DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
|
|
28
|
-
/** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
|
|
29
|
-
export declare const dismissControlProps: {
|
|
30
|
-
readonly "data-aura-dismiss": "true";
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Marca el contenedor de una superficie modal propia (wizard, panel a medida).
|
|
34
|
-
* No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
|
|
35
|
-
* `role="dialog"`, que cuenta igual.
|
|
36
|
-
*/
|
|
37
|
-
export declare const CONTAINER_ATTRIBUTE = "data-aura-container";
|
|
38
|
-
/** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
|
|
39
|
-
export declare const containerProps: {
|
|
40
|
-
readonly "data-aura-container": "true";
|
|
41
|
-
};
|
|
42
|
-
/** `true` si el elemento es un control de cierre (o está dentro de uno). */
|
|
43
|
-
export declare const isDismissControl: (element: Element | null | undefined) => boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
|
|
46
|
-
* componente con popover no-modal.
|
|
47
|
-
*
|
|
48
|
-
* Devuelve `false` —no es interacción externa— en tres casos:
|
|
49
|
-
*
|
|
50
|
-
* 1. Dentro del propio componente: el popover vive en un portal, así que el
|
|
51
|
-
* campo de búsqueda queda fuera de él y una pulsación sobre el texto se
|
|
52
|
-
* contaba como externa.
|
|
53
|
-
* 2. Sobre un control de cierre del contenedor.
|
|
54
|
-
* 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
|
|
55
|
-
* el formulario no es descartar el desplegable.
|
|
56
|
-
*
|
|
57
|
-
* @param element Elemento donde ha empezado la interacción.
|
|
58
|
-
* @param root Raíz del componente.
|
|
59
|
-
*/
|
|
60
|
-
export declare const shouldClosePopoverOnInteractOutside: (element: Element, root: Element | null | undefined) => boolean;
|
|
61
|
-
//# sourceMappingURL=dismiss-control.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dismiss-control.d.ts","sourceRoot":"","sources":["../../../src/utils/dismiss-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;GAGG;AACH,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,uFAAuF;AACvF,eAAO,MAAM,mBAAmB;;CAEtB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,sEAAsE;AACtE,eAAO,MAAM,cAAc;;CAEjB,CAAC;AAsBX,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,GAC5B,SAAS,OAAO,GAAG,IAAI,GAAG,SAAS,KACjC,OAA6D,CAAC;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mCAAmC,GAC/C,SAAS,OAAO,EAChB,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS,KAC9B,OAaF,CAAC"}
|