@beweco/aurora-ui 0.6.59 → 0.6.60-qa.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/index.cjs.js CHANGED
@@ -4045,13 +4045,6 @@ var Phone = function (_a) {
4045
4045
  document.removeEventListener("mousedown", handleClickOutside);
4046
4046
  };
4047
4047
  }, [isDropdownOpen]);
4048
- // El dropdown se portea a `body` con posición absoluta fija; cerrarlo cuando
4049
- // un ancestro hace scroll para que no quede flotando fuera de lugar.
4050
- useCloseOnAncestorScroll({
4051
- isOpen: isDropdownOpen,
4052
- onClose: function () { return setIsDropdownOpen(false); },
4053
- contentRef: portalDropdownRef,
4054
- });
4055
4048
  var handleCountrySelect = function (country) {
4056
4049
  setSelectedCountry(country);
4057
4050
  setIsDropdownOpen(false);
@@ -8158,11 +8151,13 @@ var SegmentationBuilder = React.forwardRef(function (_a, ref) {
8158
8151
  SegmentationBuilder.displayName = "SegmentationBuilder";
8159
8152
 
8160
8153
  var SENTINEL_KEY = "__tags-filter-sentinel__";
8154
+ var EMPTY_KEY = "__tags-filter-empty__";
8161
8155
  var DEFAULT_TRANSLATIONS = {
8162
8156
  placeholder: "Nombre de la etiqueta",
8163
8157
  labelSelect: "Selecciona etiqueta",
8164
8158
  labelSelected: "Etiquetas actuales",
8165
8159
  emptySelectedMessage: "No hay etiquetas seleccionadas",
8160
+ emptyAvailableMessage: "No hay etiquetas disponibles",
8166
8161
  errorLoadingPrefix: "Error al cargar etiquetas",
8167
8162
  loadingMoreLabel: "Cargando más etiquetas…",
8168
8163
  endOfListMessage: "",
@@ -8230,8 +8225,14 @@ function TagsFilter(_a) {
8230
8225
  }, [items, inputValue, compareTags, onInputChange]);
8231
8226
  var filteredItems = getFilteredAvailable(selectedList);
8232
8227
  var showSentinel = Boolean(onLoadMore) && (hasMore || Boolean(t.endOfListMessage));
8233
- var itemsWithSentinel = showSentinel
8234
- ? __spreadArray(__spreadArray([], filteredItems, true), [{ id: SENTINEL_KEY, value: "" }], false) : filteredItems;
8228
+ // Sin nada que ofrecer se inyecta un item de solo lectura con el mensaje de
8229
+ // vacío: así el desplegable explica por qué está vacío en vez de no abrirse
8230
+ // (o abrirse en blanco), y la colección nunca queda realmente vacía.
8231
+ var isAvailableEmpty = filteredItems.length === 0;
8232
+ var itemsWithSentinel = isAvailableEmpty
8233
+ ? [{ id: EMPTY_KEY, value: "" }]
8234
+ : showSentinel
8235
+ ? __spreadArray(__spreadArray([], filteredItems, true), [{ id: SENTINEL_KEY, value: "" }], false) : filteredItems;
8235
8236
  var handleAutocompleteSelection = React.useCallback(function (key) {
8236
8237
  if (key == null) {
8237
8238
  return;
@@ -8250,9 +8251,12 @@ function TagsFilter(_a) {
8250
8251
  setInputValue(v);
8251
8252
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
8252
8253
  }, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
8253
- // "focus" keeps the menu tied to focus; prefer opening when typing.
8254
- menuTrigger: "input",
8255
- // When the filtered list is empty, avoid keeping an open overlay that blocks the modal.
8254
+ // TECH-1640: el desplegable abre al enfocar/hacer clic, no solo al
8255
+ // escribir. Un selector de etiquetas debe enseñar lo que hay sin
8256
+ // exigir que el usuario recuerde el nombre.
8257
+ menuTrigger: "focus",
8258
+ // La colección nunca llega vacía (ver `itemsWithSentinel`): cuando no
8259
+ // hay nada que ofrecer se inyecta el item con el mensaje de vacío.
8256
8260
  allowsEmptyCollection: false, shouldCloseOnBlur: true, popoverProps: {
8257
8261
  // isNonModal: false would render a full-screen invisible backdrop that
8258
8262
  // intercepts pointer events, blocking the parent modal's close button.
@@ -8263,6 +8267,9 @@ function TagsFilter(_a) {
8263
8267
  className: "max-h-[200px] overflow-y-auto",
8264
8268
  }, className: "w-full", children: function (item) {
8265
8269
  var candidate = item;
8270
+ if (candidate.id === EMPTY_KEY) {
8271
+ return (jsxRuntime.jsx(react.AutocompleteItem, { textValue: t.emptyAvailableMessage, isReadOnly: true, className: "opacity-100 cursor-default data-[hover=true]:bg-transparent", children: jsxRuntime.jsx("span", { className: "text-tiny text-default-500", children: t.emptyAvailableMessage }) }, EMPTY_KEY));
8272
+ }
8266
8273
  if (candidate.id === SENTINEL_KEY) {
8267
8274
  return (jsxRuntime.jsx(react.AutocompleteItem, { textValue: "", isReadOnly: true, className: "opacity-100 cursor-default data-[hover=true]:bg-transparent", children: jsxRuntime.jsx("div", { ref: function (node) {
8268
8275
  var _a;
package/dist/index.esm.js CHANGED
@@ -4046,13 +4046,6 @@ var Phone = function (_a) {
4046
4046
  document.removeEventListener("mousedown", handleClickOutside);
4047
4047
  };
4048
4048
  }, [isDropdownOpen]);
4049
- // El dropdown se portea a `body` con posición absoluta fija; cerrarlo cuando
4050
- // un ancestro hace scroll para que no quede flotando fuera de lugar.
4051
- useCloseOnAncestorScroll({
4052
- isOpen: isDropdownOpen,
4053
- onClose: function () { return setIsDropdownOpen(false); },
4054
- contentRef: portalDropdownRef,
4055
- });
4056
4049
  var handleCountrySelect = function (country) {
4057
4050
  setSelectedCountry(country);
4058
4051
  setIsDropdownOpen(false);
@@ -8159,11 +8152,13 @@ var SegmentationBuilder = forwardRef(function (_a, ref) {
8159
8152
  SegmentationBuilder.displayName = "SegmentationBuilder";
8160
8153
 
8161
8154
  var SENTINEL_KEY = "__tags-filter-sentinel__";
8155
+ var EMPTY_KEY = "__tags-filter-empty__";
8162
8156
  var DEFAULT_TRANSLATIONS = {
8163
8157
  placeholder: "Nombre de la etiqueta",
8164
8158
  labelSelect: "Selecciona etiqueta",
8165
8159
  labelSelected: "Etiquetas actuales",
8166
8160
  emptySelectedMessage: "No hay etiquetas seleccionadas",
8161
+ emptyAvailableMessage: "No hay etiquetas disponibles",
8167
8162
  errorLoadingPrefix: "Error al cargar etiquetas",
8168
8163
  loadingMoreLabel: "Cargando más etiquetas…",
8169
8164
  endOfListMessage: "",
@@ -8231,8 +8226,14 @@ function TagsFilter(_a) {
8231
8226
  }, [items, inputValue, compareTags, onInputChange]);
8232
8227
  var filteredItems = getFilteredAvailable(selectedList);
8233
8228
  var showSentinel = Boolean(onLoadMore) && (hasMore || Boolean(t.endOfListMessage));
8234
- var itemsWithSentinel = showSentinel
8235
- ? __spreadArray(__spreadArray([], filteredItems, true), [{ id: SENTINEL_KEY, value: "" }], false) : filteredItems;
8229
+ // Sin nada que ofrecer se inyecta un item de solo lectura con el mensaje de
8230
+ // vacío: así el desplegable explica por qué está vacío en vez de no abrirse
8231
+ // (o abrirse en blanco), y la colección nunca queda realmente vacía.
8232
+ var isAvailableEmpty = filteredItems.length === 0;
8233
+ var itemsWithSentinel = isAvailableEmpty
8234
+ ? [{ id: EMPTY_KEY, value: "" }]
8235
+ : showSentinel
8236
+ ? __spreadArray(__spreadArray([], filteredItems, true), [{ id: SENTINEL_KEY, value: "" }], false) : filteredItems;
8236
8237
  var handleAutocompleteSelection = useCallback(function (key) {
8237
8238
  if (key == null) {
8238
8239
  return;
@@ -8251,9 +8252,12 @@ function TagsFilter(_a) {
8251
8252
  setInputValue(v);
8252
8253
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
8253
8254
  }, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
8254
- // "focus" keeps the menu tied to focus; prefer opening when typing.
8255
- menuTrigger: "input",
8256
- // When the filtered list is empty, avoid keeping an open overlay that blocks the modal.
8255
+ // TECH-1640: el desplegable abre al enfocar/hacer clic, no solo al
8256
+ // escribir. Un selector de etiquetas debe enseñar lo que hay sin
8257
+ // exigir que el usuario recuerde el nombre.
8258
+ menuTrigger: "focus",
8259
+ // La colección nunca llega vacía (ver `itemsWithSentinel`): cuando no
8260
+ // hay nada que ofrecer se inyecta el item con el mensaje de vacío.
8257
8261
  allowsEmptyCollection: false, shouldCloseOnBlur: true, popoverProps: {
8258
8262
  // isNonModal: false would render a full-screen invisible backdrop that
8259
8263
  // intercepts pointer events, blocking the parent modal's close button.
@@ -8264,6 +8268,9 @@ function TagsFilter(_a) {
8264
8268
  className: "max-h-[200px] overflow-y-auto",
8265
8269
  }, className: "w-full", children: function (item) {
8266
8270
  var candidate = item;
8271
+ if (candidate.id === EMPTY_KEY) {
8272
+ return (jsx(AutocompleteItem, { textValue: t.emptyAvailableMessage, isReadOnly: true, className: "opacity-100 cursor-default data-[hover=true]:bg-transparent", children: jsx("span", { className: "text-tiny text-default-500", children: t.emptyAvailableMessage }) }, EMPTY_KEY));
8273
+ }
8267
8274
  if (candidate.id === SENTINEL_KEY) {
8268
8275
  return (jsx(AutocompleteItem, { textValue: "", isReadOnly: true, className: "opacity-100 cursor-default data-[hover=true]:bg-transparent", children: jsx("div", { ref: function (node) {
8269
8276
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"Phone.d.ts","sourceRoot":"","sources":["../../../../src/components/phone/Phone.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAOrD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2P3C,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Phone.d.ts","sourceRoot":"","sources":["../../../../src/components/phone/Phone.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAOrD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmP3C,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -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;AAM/B,OAAO,KAAK,EACX,eAAe,EAEf,MAAM,oBAAoB,CAAC;AAqC5B;;;;;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,CA0MzC;yBA3Ne,UAAU"}
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,CAkOzC;yBAnPe,UAAU"}
@@ -20,6 +20,12 @@ export type TagsFilterTranslations = {
20
20
  labelSelected?: string;
21
21
  /** Mensaje cuando no hay etiquetas seleccionadas */
22
22
  emptySelectedMessage?: string;
23
+ /**
24
+ * Mensaje dentro del desplegable cuando no queda ninguna etiqueta que
25
+ * ofrecer (el centro no tiene etiquetas, ya están todas asignadas o la
26
+ * búsqueda no encontró nada).
27
+ */
28
+ emptyAvailableMessage?: string;
23
29
  /** Prefijo del mensaje de error (ej. "Error al cargar etiquetas") */
24
30
  errorLoadingPrefix?: string;
25
31
  /** Texto sr-only del spinner inline mientras se cargan más páginas. */
@@ -1 +1 @@
1
- {"version":3,"file":"TagsFilter.types.d.ts","sourceRoot":"","sources":["../../../../src/components/tags-filter/TagsFilter.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,OAAO;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IAC3D,qDAAqD;IACrD,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,0CAA0C;IAC1C,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,2DAA2D;IAC3D,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAClC,uFAAuF;IACvF,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;IACtC,kFAAkF;IAClF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mIAAmI;IACnI,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
1
+ {"version":3,"file":"TagsFilter.types.d.ts","sourceRoot":"","sources":["../../../../src/components/tags-filter/TagsFilter.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,OAAO;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IAC3D,qDAAqD;IACrD,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,0CAA0C;IAC1C,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,2DAA2D;IAC3D,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAClC,uFAAuF;IACvF,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;IACtC,kFAAkF;IAClF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mIAAmI;IACnI,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beweco/aurora-ui",
3
- "version": "0.6.59",
3
+ "version": "0.6.60-qa.73",
4
4
  "description": "Bewe Aurora UI Component Library",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",
@@ -44,7 +44,6 @@
44
44
  "@heroui/theme": "2.4.15",
45
45
  "@heroui/use-theme": "2.1.9",
46
46
  "@iconify/react": "6.0.0",
47
- "framer-motion": "12.14.0",
48
47
  "recharts": "^2.8.0"
49
48
  },
50
49
  "peerDependencies": {
@@ -53,7 +52,7 @@
53
52
  "@heroui/theme": "2.4.15",
54
53
  "@heroui/use-theme": "2.1.9",
55
54
  "@iconify/react": "6.0.0",
56
- "framer-motion": "12.14.0",
55
+ "framer-motion": ">=12.0.0",
57
56
  "react": ">=18.0.0",
58
57
  "react-dom": ">=18.0.0",
59
58
  "recharts": "^2.8.0",
@@ -79,6 +78,7 @@
79
78
  "autoprefixer": "^10.4.21",
80
79
  "chromatic": "^13.0.0",
81
80
  "dotenv-cli": "^8.0.0",
81
+ "framer-motion": "^12.41.0",
82
82
  "husky": "^9.1.7",
83
83
  "postcss": "^8.5.5",
84
84
  "postcss-loader": "^8.1.1",