@beweco/aurora-ui 0.6.72-qa.96 → 0.6.73
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 +38 -121
- package/dist/index.esm.js +38 -116
- package/dist/types/components/linda-icon/LindaIcon.d.ts +20 -0
- package/dist/types/components/linda-icon/LindaIcon.d.ts.map +1 -0
- package/dist/types/components/linda-icon/LindaIcon.types.d.ts +6 -0
- package/dist/types/components/linda-icon/LindaIcon.types.d.ts.map +1 -0
- package/dist/types/components/linda-icon/index.d.ts +3 -0
- package/dist/types/components/linda-icon/index.d.ts.map +1 -0
- 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/phone/Phone.d.ts.map +1 -1
- package/dist/types/components/tags-filter/TagsFilter.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -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
|
@@ -3280,6 +3280,27 @@ var KanbanComponent = function (_a) {
|
|
|
3280
3280
|
var Kanban = React.memo(KanbanComponent);
|
|
3281
3281
|
Kanban.displayName = "Kanban";
|
|
3282
3282
|
|
|
3283
|
+
/**
|
|
3284
|
+
* Icono canónico de Linda para CTAs inteligentes (TECH-2386).
|
|
3285
|
+
*
|
|
3286
|
+
* SVG empaquetado como import estático — NUNCA usar `@iconify/react` /
|
|
3287
|
+
* `IconComponent` con este glifo: los iconos de Iconify se resuelven en
|
|
3288
|
+
* runtime contra api.iconify.design y desaparecen (control entero invisible
|
|
3289
|
+
* si es `isIconOnly`) cuando ese host no responde — ver TECH-2103/2104.
|
|
3290
|
+
* Este componente no depende de red.
|
|
3291
|
+
*
|
|
3292
|
+
* Glifo: el mismo path ya usado en el producto para señalar acciones de
|
|
3293
|
+
* Linda (equivalente al icono "magic-stick" ya presente junto a
|
|
3294
|
+
* "Linda Recommended Actions"), resuelto para v1 en TECH-2374 sin
|
|
3295
|
+
* diseñadora asignada — funcional-first, sin inventar iconografía nueva.
|
|
3296
|
+
* Cuando exista un asset bespoke (identidad "droide retro-futurista"),
|
|
3297
|
+
* este es el único componente a sustituir — ver README.md.
|
|
3298
|
+
*/
|
|
3299
|
+
var LindaIcon = function (_a) {
|
|
3300
|
+
var _b = _a.size, size = _b === void 0 ? 24 : _b, className = _a.className, nativeProps = __rest(_a, ["size", "className"]);
|
|
3301
|
+
return (jsxRuntime.jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", className: className, role: "img", "aria-hidden": "true" }, nativeProps, { children: jsxRuntime.jsxs("g", { fill: "currentColor", children: [jsxRuntime.jsx("path", { d: "M3.84453 3.84453C2.71849 4.97056 2.71849 6.79623 3.84453 7.92226L5.43227 9.51C5.44419 9.49622 5.45669 9.48276 5.46978 9.46967L9.46978 5.46967C9.48284 5.45662 9.49625 5.44415 9.50999 5.43226L7.92226 3.84453C6.79623 2.71849 4.97056 2.71849 3.84453 3.84453Z" }), jsxRuntime.jsx("path", { d: "M10.5679 6.49012C10.556 6.50386 10.5435 6.51728 10.5304 6.53033L6.53044 10.5303C6.51735 10.5434 6.5039 10.5559 6.49011 10.5678L16.0777 20.1555C17.2038 21.2815 19.0294 21.2815 20.1555 20.1555C21.2815 19.0294 21.2815 17.2038 20.1555 16.0777L10.5679 6.49012Z" }), jsxRuntime.jsx("path", { d: "M16.1 2.30719C16.261 1.8976 16.8385 1.8976 16.9994 2.30719L17.4298 3.40247C17.479 3.52752 17.5776 3.62651 17.7022 3.67583L18.7934 4.1078C19.2015 4.26934 19.2015 4.849 18.7934 5.01054L17.7022 5.44252C17.5776 5.49184 17.479 5.59082 17.4298 5.71587L16.9995 6.81115C16.8385 7.22074 16.261 7.22074 16.1 6.81116L15.6697 5.71587C15.6205 5.59082 15.5219 5.49184 15.3973 5.44252L14.3061 5.01054C13.898 4.849 13.898 4.26934 14.3061 4.1078L15.3973 3.67583C15.5219 3.62651 15.6205 3.52752 15.6697 3.40247L16.1 2.30719Z" }), jsxRuntime.jsx("path", { d: "M19.9672 9.12945C20.1281 8.71987 20.7057 8.71987 20.8666 9.12945L21.0235 9.5288C21.0727 9.65385 21.1713 9.75284 21.2959 9.80215L21.6937 9.95965C22.1018 10.1212 22.1018 10.7009 21.6937 10.8624L21.2959 11.0199C21.1713 11.0692 21.0727 11.1682 21.0235 11.2932L20.8666 11.6926C20.7057 12.1022 20.1281 12.1022 19.9672 11.6926L19.8103 11.2932C19.7611 11.1682 19.6625 11.0692 19.5379 11.0199L19.14 10.8624C18.732 10.7009 18.732 10.1212 19.14 9.95965L19.5379 9.80215C19.6625 9.75284 19.7611 9.65385 19.8103 9.5288L19.9672 9.12945Z" }), jsxRuntime.jsx("path", { d: "M5.1332 15.3072C5.29414 14.8976 5.87167 14.8976 6.03261 15.3072L6.18953 15.7065C6.23867 15.8316 6.33729 15.9306 6.46188 15.9799L6.85975 16.1374C7.26783 16.2989 7.26783 16.8786 6.85975 17.0401L6.46188 17.1976C6.33729 17.2469 6.23867 17.3459 6.18953 17.471L6.03261 17.8703C5.87167 18.2799 5.29414 18.2799 5.1332 17.8703L4.97628 17.471C4.92714 17.3459 4.82852 17.2469 4.70393 17.1976L4.30606 17.0401C3.89798 16.8786 3.89798 16.2989 4.30606 16.1374L4.70393 15.9799C4.82852 15.9306 4.92714 15.8316 4.97628 15.7065L5.1332 15.3072Z" })] }) })));
|
|
3302
|
+
};
|
|
3303
|
+
|
|
3283
3304
|
var defaultTranslations$8 = {
|
|
3284
3305
|
previewAlt: "Vista previa de imagen",
|
|
3285
3306
|
removeButtonAriaLabel: "Eliminar imagen",
|
|
@@ -3993,96 +4014,6 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
|
|
|
3993
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] }) })] }));
|
|
3994
4015
|
});
|
|
3995
4016
|
|
|
3996
|
-
/**
|
|
3997
|
-
* Interacciones que un popover no-modal NO debe tratar como "clic fuera".
|
|
3998
|
-
*
|
|
3999
|
-
* El problema que resuelve: `useOverlay` de react-aria trata cualquier
|
|
4000
|
-
* pulsación fuera del popover como interacción externa y, cuando el popover es
|
|
4001
|
-
* el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
|
|
4002
|
-
* sobre el `pointerdown` **y** sobre el `click`
|
|
4003
|
-
* (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
|
|
4004
|
-
* que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
|
|
4005
|
-
* clic solo cierra el desplegable.
|
|
4006
|
-
*
|
|
4007
|
-
* Para un clic en la página de fondo eso es lo correcto: descartar el
|
|
4008
|
-
* desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
|
|
4009
|
-
* usuario está rellenando un formulario y espera que su clic llegue. Y como los
|
|
4010
|
-
* buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
|
|
4011
|
-
* tragar — un callejón sin salida del que solo se salía vaciando el campo.
|
|
4012
|
-
*
|
|
4013
|
-
* La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
|
|
4014
|
-
* `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
|
|
4015
|
-
* pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
|
|
4016
|
-
* pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
|
|
4017
|
-
*/
|
|
4018
|
-
var _a, _b;
|
|
4019
|
-
/**
|
|
4020
|
-
* Marca un botón como control de cierre de su contenedor. Los popovers de Aura
|
|
4021
|
-
* no lo cuentan como interacción externa, así que su pulsación no se pierde.
|
|
4022
|
-
*/
|
|
4023
|
-
var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
|
|
4024
|
-
/** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
|
|
4025
|
-
var dismissControlProps = (_a = {},
|
|
4026
|
-
_a[DISMISS_CONTROL_ATTRIBUTE] = "true",
|
|
4027
|
-
_a);
|
|
4028
|
-
/**
|
|
4029
|
-
* Marca el contenedor de una superficie modal propia (wizard, panel a medida).
|
|
4030
|
-
* No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
|
|
4031
|
-
* `role="dialog"`, que cuenta igual.
|
|
4032
|
-
*/
|
|
4033
|
-
var CONTAINER_ATTRIBUTE = "data-aura-container";
|
|
4034
|
-
/** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
|
|
4035
|
-
var containerProps = (_b = {},
|
|
4036
|
-
_b[CONTAINER_ATTRIBUTE] = "true",
|
|
4037
|
-
_b);
|
|
4038
|
-
/**
|
|
4039
|
-
* Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
|
|
4040
|
-
* los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
|
|
4041
|
-
* atributos propios.
|
|
4042
|
-
*/
|
|
4043
|
-
var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
|
|
4044
|
-
/** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
|
|
4045
|
-
var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
|
|
4046
|
-
var matchesAncestor = function (element, selector) {
|
|
4047
|
-
if (!element || typeof element.closest !== "function") {
|
|
4048
|
-
return false;
|
|
4049
|
-
}
|
|
4050
|
-
return element.closest(selector) != null;
|
|
4051
|
-
};
|
|
4052
|
-
/** `true` si el elemento es un control de cierre (o está dentro de uno). */
|
|
4053
|
-
var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
|
|
4054
|
-
/**
|
|
4055
|
-
* Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
|
|
4056
|
-
* componente con popover no-modal.
|
|
4057
|
-
*
|
|
4058
|
-
* Devuelve `false` —no es interacción externa— en tres casos:
|
|
4059
|
-
*
|
|
4060
|
-
* 1. Dentro del propio componente: el popover vive en un portal, así que el
|
|
4061
|
-
* campo de búsqueda queda fuera de él y una pulsación sobre el texto se
|
|
4062
|
-
* contaba como externa.
|
|
4063
|
-
* 2. Sobre un control de cierre del contenedor.
|
|
4064
|
-
* 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
|
|
4065
|
-
* el formulario no es descartar el desplegable.
|
|
4066
|
-
*
|
|
4067
|
-
* @param element Elemento donde ha empezado la interacción.
|
|
4068
|
-
* @param root Raíz del componente.
|
|
4069
|
-
*/
|
|
4070
|
-
var shouldClosePopoverOnInteractOutside = function (element, root) {
|
|
4071
|
-
var _a;
|
|
4072
|
-
if (root === null || root === void 0 ? void 0 : root.contains(element)) {
|
|
4073
|
-
return false;
|
|
4074
|
-
}
|
|
4075
|
-
if (isDismissControl(element)) {
|
|
4076
|
-
return false;
|
|
4077
|
-
}
|
|
4078
|
-
if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
|
|
4079
|
-
return true;
|
|
4080
|
-
}
|
|
4081
|
-
// Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
|
|
4082
|
-
var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
|
|
4083
|
-
return !(container === null || container === void 0 ? void 0 : container.contains(element));
|
|
4084
|
-
};
|
|
4085
|
-
|
|
4086
4017
|
var StepIndicator = function (_a) {
|
|
4087
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"]);
|
|
4088
4019
|
var progressPercentage = Math.min((currentStep / totalSteps) * 100, 100);
|
|
@@ -4266,7 +4197,7 @@ var VerticalSteps = React.forwardRef(function (_a, ref) {
|
|
|
4266
4197
|
VerticalSteps.displayName = "VerticalSteps";
|
|
4267
4198
|
|
|
4268
4199
|
var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
4269
|
-
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"]);
|
|
4270
4201
|
var handleOverlayClick = function (e) {
|
|
4271
4202
|
if (!isDismissable) {
|
|
4272
4203
|
return;
|
|
@@ -4275,7 +4206,7 @@ var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
|
4275
4206
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
4276
4207
|
}
|
|
4277
4208
|
};
|
|
4278
|
-
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 })] })] })) }));
|
|
4279
4210
|
});
|
|
4280
4211
|
MultiStepSidebar.displayName = "MultiStepSidebar";
|
|
4281
4212
|
|
|
@@ -4302,7 +4233,6 @@ var MultiStepWizard = function (_a) {
|
|
|
4302
4233
|
cancel: "Cancel",
|
|
4303
4234
|
next: "Next",
|
|
4304
4235
|
complete: "Complete",
|
|
4305
|
-
close: "Close",
|
|
4306
4236
|
}, translations);
|
|
4307
4237
|
var paginate = React.useCallback(function (newDirection) {
|
|
4308
4238
|
setPage(function (prev) {
|
|
@@ -4354,11 +4284,14 @@ var MultiStepWizard = function (_a) {
|
|
|
4354
4284
|
if (!isOpen) {
|
|
4355
4285
|
return null;
|
|
4356
4286
|
}
|
|
4357
|
-
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: {
|
|
4358
4288
|
isDisabled: page === 0,
|
|
4359
4289
|
onPress: onBack,
|
|
4360
4290
|
children: t.goBack,
|
|
4361
|
-
}, cancelButtonProps:
|
|
4291
|
+
}, cancelButtonProps: {
|
|
4292
|
+
onPress: onClose,
|
|
4293
|
+
children: t.cancel,
|
|
4294
|
+
}, nextButtonProps: {
|
|
4362
4295
|
children: getButtonText(),
|
|
4363
4296
|
onPress: handleNextAction,
|
|
4364
4297
|
isDisabled: steps[page].isStepValid === false,
|
|
@@ -4437,6 +4370,13 @@ var Phone = function (_a) {
|
|
|
4437
4370
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
4438
4371
|
};
|
|
4439
4372
|
}, [isDropdownOpen]);
|
|
4373
|
+
// El dropdown se portea a `body` con posición absoluta fija; cerrarlo cuando
|
|
4374
|
+
// un ancestro hace scroll para que no quede flotando fuera de lugar.
|
|
4375
|
+
useCloseOnAncestorScroll({
|
|
4376
|
+
isOpen: isDropdownOpen,
|
|
4377
|
+
onClose: function () { return setIsDropdownOpen(false); },
|
|
4378
|
+
contentRef: portalDropdownRef,
|
|
4379
|
+
});
|
|
4440
4380
|
var handleCountrySelect = function (country) {
|
|
4441
4381
|
setSelectedCountry(country);
|
|
4442
4382
|
setIsDropdownOpen(false);
|
|
@@ -8924,7 +8864,6 @@ function TagsFilter(_a) {
|
|
|
8924
8864
|
var _m = React.useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
|
|
8925
8865
|
var selectedList = value !== null && value !== void 0 ? value : [];
|
|
8926
8866
|
var _o = React.useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
|
|
8927
|
-
var rootRef = React.useRef(null);
|
|
8928
8867
|
React.useEffect(function () {
|
|
8929
8868
|
if (!onLoadMore || !sentinelNode || !hasMore) {
|
|
8930
8869
|
return;
|
|
@@ -8996,7 +8935,7 @@ function TagsFilter(_a) {
|
|
|
8996
8935
|
if (isLoading) {
|
|
8997
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" }) }) }));
|
|
8998
8937
|
}
|
|
8999
|
-
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) {
|
|
9000
8939
|
setInputValue(v);
|
|
9001
8940
|
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
|
|
9002
8941
|
}, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
|
|
@@ -9015,24 +8954,7 @@ function TagsFilter(_a) {
|
|
|
9015
8954
|
// intercepts pointer events, blocking the parent modal's close button.
|
|
9016
8955
|
// shouldCloseOnInteractOutside already handles closing on outside clicks.
|
|
9017
8956
|
isNonModal: true,
|
|
9018
|
-
|
|
9019
|
-
// búsqueda queda FUERA de él y una pulsación sobre el texto contaba
|
|
9020
|
-
// como interacción externa. Al cerrarse, el FocusScope devolvía el
|
|
9021
|
-
// foco con un `.focus()` que abortaba el gesto de selección que el
|
|
9022
|
-
// navegador acababa de iniciar: de ahí que arrastrar o hacer doble
|
|
9023
|
-
// clic no seleccionara nada y solo quedara borrar letra a letra
|
|
9024
|
-
// (con el teclado sí funcionaba, porque no pasa por aquí).
|
|
9025
|
-
// Las pulsaciones dentro del componente dejan de contar como
|
|
9026
|
-
// externas; las de fuera siguen cerrando el desplegable igual.
|
|
9027
|
-
//
|
|
9028
|
-
// Los controles de cierre del contenedor también quedan exentos:
|
|
9029
|
-
// react-aria hace `preventDefault()` sobre el pointerdown Y el
|
|
9030
|
-
// click de toda interacción externa, así que su `onPress` no se
|
|
9031
|
-
// disparaba y el contenedor no se podía cerrar mientras el
|
|
9032
|
-
// desplegable estuviera abierto (ver `shouldClosePopoverOnInteractOutside`).
|
|
9033
|
-
shouldCloseOnInteractOutside: function (element) {
|
|
9034
|
-
return shouldClosePopoverOnInteractOutside(element, rootRef.current);
|
|
9035
|
-
},
|
|
8957
|
+
shouldCloseOnInteractOutside: function () { return true; },
|
|
9036
8958
|
}, listboxProps: {
|
|
9037
8959
|
className: "max-h-[200px] overflow-y-auto",
|
|
9038
8960
|
}, className: "w-full", children: function (item) {
|
|
@@ -9797,7 +9719,6 @@ exports.AuraToastProvider = AuraToastProvider;
|
|
|
9797
9719
|
exports.BEWEOS_THEME_MODE_COOKIE_NAME = BEWEOS_THEME_MODE_COOKIE_NAME;
|
|
9798
9720
|
exports.BreadcrumbsComponent = BreadcrumbsComponent;
|
|
9799
9721
|
exports.Button = Button;
|
|
9800
|
-
exports.CONTAINER_ATTRIBUTE = CONTAINER_ATTRIBUTE;
|
|
9801
9722
|
exports.Card = Card;
|
|
9802
9723
|
exports.Chip = Chip;
|
|
9803
9724
|
exports.ColorPicker = ColorPicker;
|
|
@@ -9807,7 +9728,6 @@ exports.Currency = Currency;
|
|
|
9807
9728
|
exports.DEFAULT_DONUT_COLORS = DEFAULT_DONUT_COLORS;
|
|
9808
9729
|
exports.DEFAULT_PREDEFINED_COLORS = DEFAULT_PREDEFINED_COLORS;
|
|
9809
9730
|
exports.DEFAULT_RANKED_BAR_COLORS = DEFAULT_RANKED_BAR_COLORS;
|
|
9810
|
-
exports.DISMISS_CONTROL_ATTRIBUTE = DISMISS_CONTROL_ATTRIBUTE;
|
|
9811
9731
|
exports.DatePicker = DatePicker;
|
|
9812
9732
|
exports.DateRangePicker = DateRangePicker;
|
|
9813
9733
|
exports.DateSelector = DateSelector;
|
|
@@ -9827,6 +9747,7 @@ exports.InputPassword = InputPassword;
|
|
|
9827
9747
|
exports.Kanban = Kanban;
|
|
9828
9748
|
exports.KanbanCard = KanbanCard;
|
|
9829
9749
|
exports.KanbanColumn = KanbanColumn;
|
|
9750
|
+
exports.LindaIcon = LindaIcon;
|
|
9830
9751
|
exports.MenuClaw = MenuClaw;
|
|
9831
9752
|
exports.MenuComponent = MenuComponent;
|
|
9832
9753
|
exports.Modal = Modal;
|
|
@@ -9880,12 +9801,10 @@ exports.computeBars = computeBars;
|
|
|
9880
9801
|
exports.computeMax = computeMax;
|
|
9881
9802
|
exports.computeSlices = computeSlices;
|
|
9882
9803
|
exports.computeTotal = computeTotal;
|
|
9883
|
-
exports.containerProps = containerProps;
|
|
9884
9804
|
exports.createCurrencyFormatter = createCurrencyFormatter;
|
|
9885
9805
|
exports.defaultCountries = uniqueCountries;
|
|
9886
9806
|
exports.defaultCurrencyOptions = defaultCurrencyOptions;
|
|
9887
9807
|
exports.defaultTranslations = defaultTranslations$5;
|
|
9888
|
-
exports.dismissControlProps = dismissControlProps;
|
|
9889
9808
|
exports.forceLightOnlyThemeBeforeReact = forceLightOnlyThemeBeforeReact;
|
|
9890
9809
|
exports.formatAuroraThemeTooltip = formatAuroraThemeTooltip;
|
|
9891
9810
|
exports.generateThemeColorScale = generateThemeColorScale;
|
|
@@ -9895,7 +9814,6 @@ exports.getSelectedKeyFromPath = getSelectedKeyFromPath;
|
|
|
9895
9814
|
exports.hexToThemeColor = hexToThemeColor;
|
|
9896
9815
|
exports.hslToCssValue = hslToCssValue;
|
|
9897
9816
|
exports.isAuroraFullThemeId = isAuroraFullThemeId;
|
|
9898
|
-
exports.isDismissControl = isDismissControl;
|
|
9899
9817
|
exports.isDonutEmpty = isDonutEmpty;
|
|
9900
9818
|
exports.isExactThemeColor = isExactThemeColor;
|
|
9901
9819
|
exports.isGroupState = isGroupState;
|
|
@@ -9903,7 +9821,6 @@ exports.isHexColor = isHexColor;
|
|
|
9903
9821
|
exports.isRankedBarListEmpty = isRankedBarListEmpty;
|
|
9904
9822
|
exports.isSegmentationGroup = isSegmentationGroup;
|
|
9905
9823
|
exports.removeCustomPrimaryColor = removeCustomPrimaryColor;
|
|
9906
|
-
exports.shouldClosePopoverOnInteractOutside = shouldClosePopoverOnInteractOutside;
|
|
9907
9824
|
exports.sizeMap = sizeMap;
|
|
9908
9825
|
exports.themeColors = themeColors;
|
|
9909
9826
|
exports.useAuraToast = useAuraToast;
|
package/dist/index.esm.js
CHANGED
|
@@ -3281,6 +3281,27 @@ var KanbanComponent = function (_a) {
|
|
|
3281
3281
|
var Kanban = memo(KanbanComponent);
|
|
3282
3282
|
Kanban.displayName = "Kanban";
|
|
3283
3283
|
|
|
3284
|
+
/**
|
|
3285
|
+
* Icono canónico de Linda para CTAs inteligentes (TECH-2386).
|
|
3286
|
+
*
|
|
3287
|
+
* SVG empaquetado como import estático — NUNCA usar `@iconify/react` /
|
|
3288
|
+
* `IconComponent` con este glifo: los iconos de Iconify se resuelven en
|
|
3289
|
+
* runtime contra api.iconify.design y desaparecen (control entero invisible
|
|
3290
|
+
* si es `isIconOnly`) cuando ese host no responde — ver TECH-2103/2104.
|
|
3291
|
+
* Este componente no depende de red.
|
|
3292
|
+
*
|
|
3293
|
+
* Glifo: el mismo path ya usado en el producto para señalar acciones de
|
|
3294
|
+
* Linda (equivalente al icono "magic-stick" ya presente junto a
|
|
3295
|
+
* "Linda Recommended Actions"), resuelto para v1 en TECH-2374 sin
|
|
3296
|
+
* diseñadora asignada — funcional-first, sin inventar iconografía nueva.
|
|
3297
|
+
* Cuando exista un asset bespoke (identidad "droide retro-futurista"),
|
|
3298
|
+
* este es el único componente a sustituir — ver README.md.
|
|
3299
|
+
*/
|
|
3300
|
+
var LindaIcon = function (_a) {
|
|
3301
|
+
var _b = _a.size, size = _b === void 0 ? 24 : _b, className = _a.className, nativeProps = __rest(_a, ["size", "className"]);
|
|
3302
|
+
return (jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", className: className, role: "img", "aria-hidden": "true" }, nativeProps, { children: jsxs("g", { fill: "currentColor", children: [jsx("path", { d: "M3.84453 3.84453C2.71849 4.97056 2.71849 6.79623 3.84453 7.92226L5.43227 9.51C5.44419 9.49622 5.45669 9.48276 5.46978 9.46967L9.46978 5.46967C9.48284 5.45662 9.49625 5.44415 9.50999 5.43226L7.92226 3.84453C6.79623 2.71849 4.97056 2.71849 3.84453 3.84453Z" }), jsx("path", { d: "M10.5679 6.49012C10.556 6.50386 10.5435 6.51728 10.5304 6.53033L6.53044 10.5303C6.51735 10.5434 6.5039 10.5559 6.49011 10.5678L16.0777 20.1555C17.2038 21.2815 19.0294 21.2815 20.1555 20.1555C21.2815 19.0294 21.2815 17.2038 20.1555 16.0777L10.5679 6.49012Z" }), jsx("path", { d: "M16.1 2.30719C16.261 1.8976 16.8385 1.8976 16.9994 2.30719L17.4298 3.40247C17.479 3.52752 17.5776 3.62651 17.7022 3.67583L18.7934 4.1078C19.2015 4.26934 19.2015 4.849 18.7934 5.01054L17.7022 5.44252C17.5776 5.49184 17.479 5.59082 17.4298 5.71587L16.9995 6.81115C16.8385 7.22074 16.261 7.22074 16.1 6.81116L15.6697 5.71587C15.6205 5.59082 15.5219 5.49184 15.3973 5.44252L14.3061 5.01054C13.898 4.849 13.898 4.26934 14.3061 4.1078L15.3973 3.67583C15.5219 3.62651 15.6205 3.52752 15.6697 3.40247L16.1 2.30719Z" }), jsx("path", { d: "M19.9672 9.12945C20.1281 8.71987 20.7057 8.71987 20.8666 9.12945L21.0235 9.5288C21.0727 9.65385 21.1713 9.75284 21.2959 9.80215L21.6937 9.95965C22.1018 10.1212 22.1018 10.7009 21.6937 10.8624L21.2959 11.0199C21.1713 11.0692 21.0727 11.1682 21.0235 11.2932L20.8666 11.6926C20.7057 12.1022 20.1281 12.1022 19.9672 11.6926L19.8103 11.2932C19.7611 11.1682 19.6625 11.0692 19.5379 11.0199L19.14 10.8624C18.732 10.7009 18.732 10.1212 19.14 9.95965L19.5379 9.80215C19.6625 9.75284 19.7611 9.65385 19.8103 9.5288L19.9672 9.12945Z" }), jsx("path", { d: "M5.1332 15.3072C5.29414 14.8976 5.87167 14.8976 6.03261 15.3072L6.18953 15.7065C6.23867 15.8316 6.33729 15.9306 6.46188 15.9799L6.85975 16.1374C7.26783 16.2989 7.26783 16.8786 6.85975 17.0401L6.46188 17.1976C6.33729 17.2469 6.23867 17.3459 6.18953 17.471L6.03261 17.8703C5.87167 18.2799 5.29414 18.2799 5.1332 17.8703L4.97628 17.471C4.92714 17.3459 4.82852 17.2469 4.70393 17.1976L4.30606 17.0401C3.89798 16.8786 3.89798 16.2989 4.30606 16.1374L4.70393 15.9799C4.82852 15.9306 4.92714 15.8316 4.97628 15.7065L5.1332 15.3072Z" })] }) })));
|
|
3303
|
+
};
|
|
3304
|
+
|
|
3284
3305
|
var defaultTranslations$8 = {
|
|
3285
3306
|
previewAlt: "Vista previa de imagen",
|
|
3286
3307
|
removeButtonAriaLabel: "Eliminar imagen",
|
|
@@ -3994,96 +4015,6 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
|
|
|
3994
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] }) })] }));
|
|
3995
4016
|
});
|
|
3996
4017
|
|
|
3997
|
-
/**
|
|
3998
|
-
* Interacciones que un popover no-modal NO debe tratar como "clic fuera".
|
|
3999
|
-
*
|
|
4000
|
-
* El problema que resuelve: `useOverlay` de react-aria trata cualquier
|
|
4001
|
-
* pulsación fuera del popover como interacción externa y, cuando el popover es
|
|
4002
|
-
* el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
|
|
4003
|
-
* sobre el `pointerdown` **y** sobre el `click`
|
|
4004
|
-
* (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
|
|
4005
|
-
* que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
|
|
4006
|
-
* clic solo cierra el desplegable.
|
|
4007
|
-
*
|
|
4008
|
-
* Para un clic en la página de fondo eso es lo correcto: descartar el
|
|
4009
|
-
* desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
|
|
4010
|
-
* usuario está rellenando un formulario y espera que su clic llegue. Y como los
|
|
4011
|
-
* buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
|
|
4012
|
-
* tragar — un callejón sin salida del que solo se salía vaciando el campo.
|
|
4013
|
-
*
|
|
4014
|
-
* La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
|
|
4015
|
-
* `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
|
|
4016
|
-
* pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
|
|
4017
|
-
* pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
|
|
4018
|
-
*/
|
|
4019
|
-
var _a, _b;
|
|
4020
|
-
/**
|
|
4021
|
-
* Marca un botón como control de cierre de su contenedor. Los popovers de Aura
|
|
4022
|
-
* no lo cuentan como interacción externa, así que su pulsación no se pierde.
|
|
4023
|
-
*/
|
|
4024
|
-
var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
|
|
4025
|
-
/** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
|
|
4026
|
-
var dismissControlProps = (_a = {},
|
|
4027
|
-
_a[DISMISS_CONTROL_ATTRIBUTE] = "true",
|
|
4028
|
-
_a);
|
|
4029
|
-
/**
|
|
4030
|
-
* Marca el contenedor de una superficie modal propia (wizard, panel a medida).
|
|
4031
|
-
* No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
|
|
4032
|
-
* `role="dialog"`, que cuenta igual.
|
|
4033
|
-
*/
|
|
4034
|
-
var CONTAINER_ATTRIBUTE = "data-aura-container";
|
|
4035
|
-
/** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
|
|
4036
|
-
var containerProps = (_b = {},
|
|
4037
|
-
_b[CONTAINER_ATTRIBUTE] = "true",
|
|
4038
|
-
_b);
|
|
4039
|
-
/**
|
|
4040
|
-
* Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
|
|
4041
|
-
* los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
|
|
4042
|
-
* atributos propios.
|
|
4043
|
-
*/
|
|
4044
|
-
var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
|
|
4045
|
-
/** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
|
|
4046
|
-
var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
|
|
4047
|
-
var matchesAncestor = function (element, selector) {
|
|
4048
|
-
if (!element || typeof element.closest !== "function") {
|
|
4049
|
-
return false;
|
|
4050
|
-
}
|
|
4051
|
-
return element.closest(selector) != null;
|
|
4052
|
-
};
|
|
4053
|
-
/** `true` si el elemento es un control de cierre (o está dentro de uno). */
|
|
4054
|
-
var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
|
|
4055
|
-
/**
|
|
4056
|
-
* Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
|
|
4057
|
-
* componente con popover no-modal.
|
|
4058
|
-
*
|
|
4059
|
-
* Devuelve `false` —no es interacción externa— en tres casos:
|
|
4060
|
-
*
|
|
4061
|
-
* 1. Dentro del propio componente: el popover vive en un portal, así que el
|
|
4062
|
-
* campo de búsqueda queda fuera de él y una pulsación sobre el texto se
|
|
4063
|
-
* contaba como externa.
|
|
4064
|
-
* 2. Sobre un control de cierre del contenedor.
|
|
4065
|
-
* 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
|
|
4066
|
-
* el formulario no es descartar el desplegable.
|
|
4067
|
-
*
|
|
4068
|
-
* @param element Elemento donde ha empezado la interacción.
|
|
4069
|
-
* @param root Raíz del componente.
|
|
4070
|
-
*/
|
|
4071
|
-
var shouldClosePopoverOnInteractOutside = function (element, root) {
|
|
4072
|
-
var _a;
|
|
4073
|
-
if (root === null || root === void 0 ? void 0 : root.contains(element)) {
|
|
4074
|
-
return false;
|
|
4075
|
-
}
|
|
4076
|
-
if (isDismissControl(element)) {
|
|
4077
|
-
return false;
|
|
4078
|
-
}
|
|
4079
|
-
if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
|
|
4080
|
-
return true;
|
|
4081
|
-
}
|
|
4082
|
-
// Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
|
|
4083
|
-
var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
|
|
4084
|
-
return !(container === null || container === void 0 ? void 0 : container.contains(element));
|
|
4085
|
-
};
|
|
4086
|
-
|
|
4087
4018
|
var StepIndicator = function (_a) {
|
|
4088
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"]);
|
|
4089
4020
|
var progressPercentage = Math.min((currentStep / totalSteps) * 100, 100);
|
|
@@ -4267,7 +4198,7 @@ var VerticalSteps = React.forwardRef(function (_a, ref) {
|
|
|
4267
4198
|
VerticalSteps.displayName = "VerticalSteps";
|
|
4268
4199
|
|
|
4269
4200
|
var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
4270
|
-
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"]);
|
|
4271
4202
|
var handleOverlayClick = function (e) {
|
|
4272
4203
|
if (!isDismissable) {
|
|
4273
4204
|
return;
|
|
@@ -4276,7 +4207,7 @@ var MultiStepSidebar = React.forwardRef(function (_a, ref) {
|
|
|
4276
4207
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
4277
4208
|
}
|
|
4278
4209
|
};
|
|
4279
|
-
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 })] })] })) }));
|
|
4280
4211
|
});
|
|
4281
4212
|
MultiStepSidebar.displayName = "MultiStepSidebar";
|
|
4282
4213
|
|
|
@@ -4303,7 +4234,6 @@ var MultiStepWizard = function (_a) {
|
|
|
4303
4234
|
cancel: "Cancel",
|
|
4304
4235
|
next: "Next",
|
|
4305
4236
|
complete: "Complete",
|
|
4306
|
-
close: "Close",
|
|
4307
4237
|
}, translations);
|
|
4308
4238
|
var paginate = React.useCallback(function (newDirection) {
|
|
4309
4239
|
setPage(function (prev) {
|
|
@@ -4355,11 +4285,14 @@ var MultiStepWizard = function (_a) {
|
|
|
4355
4285
|
if (!isOpen) {
|
|
4356
4286
|
return null;
|
|
4357
4287
|
}
|
|
4358
|
-
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: {
|
|
4359
4289
|
isDisabled: page === 0,
|
|
4360
4290
|
onPress: onBack,
|
|
4361
4291
|
children: t.goBack,
|
|
4362
|
-
}, cancelButtonProps:
|
|
4292
|
+
}, cancelButtonProps: {
|
|
4293
|
+
onPress: onClose,
|
|
4294
|
+
children: t.cancel,
|
|
4295
|
+
}, nextButtonProps: {
|
|
4363
4296
|
children: getButtonText(),
|
|
4364
4297
|
onPress: handleNextAction,
|
|
4365
4298
|
isDisabled: steps[page].isStepValid === false,
|
|
@@ -4438,6 +4371,13 @@ var Phone = function (_a) {
|
|
|
4438
4371
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
4439
4372
|
};
|
|
4440
4373
|
}, [isDropdownOpen]);
|
|
4374
|
+
// El dropdown se portea a `body` con posición absoluta fija; cerrarlo cuando
|
|
4375
|
+
// un ancestro hace scroll para que no quede flotando fuera de lugar.
|
|
4376
|
+
useCloseOnAncestorScroll({
|
|
4377
|
+
isOpen: isDropdownOpen,
|
|
4378
|
+
onClose: function () { return setIsDropdownOpen(false); },
|
|
4379
|
+
contentRef: portalDropdownRef,
|
|
4380
|
+
});
|
|
4441
4381
|
var handleCountrySelect = function (country) {
|
|
4442
4382
|
setSelectedCountry(country);
|
|
4443
4383
|
setIsDropdownOpen(false);
|
|
@@ -8925,7 +8865,6 @@ function TagsFilter(_a) {
|
|
|
8925
8865
|
var _m = useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
|
|
8926
8866
|
var selectedList = value !== null && value !== void 0 ? value : [];
|
|
8927
8867
|
var _o = useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
|
|
8928
|
-
var rootRef = useRef(null);
|
|
8929
8868
|
useEffect(function () {
|
|
8930
8869
|
if (!onLoadMore || !sentinelNode || !hasMore) {
|
|
8931
8870
|
return;
|
|
@@ -8997,7 +8936,7 @@ function TagsFilter(_a) {
|
|
|
8997
8936
|
if (isLoading) {
|
|
8998
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" }) }) }));
|
|
8999
8938
|
}
|
|
9000
|
-
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) {
|
|
9001
8940
|
setInputValue(v);
|
|
9002
8941
|
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
|
|
9003
8942
|
}, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
|
|
@@ -9016,24 +8955,7 @@ function TagsFilter(_a) {
|
|
|
9016
8955
|
// intercepts pointer events, blocking the parent modal's close button.
|
|
9017
8956
|
// shouldCloseOnInteractOutside already handles closing on outside clicks.
|
|
9018
8957
|
isNonModal: true,
|
|
9019
|
-
|
|
9020
|
-
// búsqueda queda FUERA de él y una pulsación sobre el texto contaba
|
|
9021
|
-
// como interacción externa. Al cerrarse, el FocusScope devolvía el
|
|
9022
|
-
// foco con un `.focus()` que abortaba el gesto de selección que el
|
|
9023
|
-
// navegador acababa de iniciar: de ahí que arrastrar o hacer doble
|
|
9024
|
-
// clic no seleccionara nada y solo quedara borrar letra a letra
|
|
9025
|
-
// (con el teclado sí funcionaba, porque no pasa por aquí).
|
|
9026
|
-
// Las pulsaciones dentro del componente dejan de contar como
|
|
9027
|
-
// externas; las de fuera siguen cerrando el desplegable igual.
|
|
9028
|
-
//
|
|
9029
|
-
// Los controles de cierre del contenedor también quedan exentos:
|
|
9030
|
-
// react-aria hace `preventDefault()` sobre el pointerdown Y el
|
|
9031
|
-
// click de toda interacción externa, así que su `onPress` no se
|
|
9032
|
-
// disparaba y el contenedor no se podía cerrar mientras el
|
|
9033
|
-
// desplegable estuviera abierto (ver `shouldClosePopoverOnInteractOutside`).
|
|
9034
|
-
shouldCloseOnInteractOutside: function (element) {
|
|
9035
|
-
return shouldClosePopoverOnInteractOutside(element, rootRef.current);
|
|
9036
|
-
},
|
|
8958
|
+
shouldCloseOnInteractOutside: function () { return true; },
|
|
9037
8959
|
}, listboxProps: {
|
|
9038
8960
|
className: "max-h-[200px] overflow-y-auto",
|
|
9039
8961
|
}, className: "w-full", children: function (item) {
|
|
@@ -9777,4 +9699,4 @@ var NavigationLoadingProvider = function (_a) {
|
|
|
9777
9699
|
return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
|
|
9778
9700
|
};
|
|
9779
9701
|
|
|
9780
|
-
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 };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import type { LindaIconProps } from "./LindaIcon.types";
|
|
3
|
+
/**
|
|
4
|
+
* Icono canónico de Linda para CTAs inteligentes (TECH-2386).
|
|
5
|
+
*
|
|
6
|
+
* SVG empaquetado como import estático — NUNCA usar `@iconify/react` /
|
|
7
|
+
* `IconComponent` con este glifo: los iconos de Iconify se resuelven en
|
|
8
|
+
* runtime contra api.iconify.design y desaparecen (control entero invisible
|
|
9
|
+
* si es `isIconOnly`) cuando ese host no responde — ver TECH-2103/2104.
|
|
10
|
+
* Este componente no depende de red.
|
|
11
|
+
*
|
|
12
|
+
* Glifo: el mismo path ya usado en el producto para señalar acciones de
|
|
13
|
+
* Linda (equivalente al icono "magic-stick" ya presente junto a
|
|
14
|
+
* "Linda Recommended Actions"), resuelto para v1 en TECH-2374 sin
|
|
15
|
+
* diseñadora asignada — funcional-first, sin inventar iconografía nueva.
|
|
16
|
+
* Cuando exista un asset bespoke (identidad "droide retro-futurista"),
|
|
17
|
+
* este es el único componente a sustituir — ver README.md.
|
|
18
|
+
*/
|
|
19
|
+
export declare const LindaIcon: React.FC<LindaIconProps>;
|
|
20
|
+
//# sourceMappingURL=LindaIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LindaIcon.d.ts","sourceRoot":"","sources":["../../../../src/components/linda-icon/LindaIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyB9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LindaIcon.types.d.ts","sourceRoot":"","sources":["../../../../src/components/linda-icon/LindaIcon.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpE,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/linda-icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -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;
|