@beweco/aurora-ui 0.6.60-qa.70 → 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
@@ -8151,11 +8151,13 @@ var SegmentationBuilder = React.forwardRef(function (_a, ref) {
8151
8151
  SegmentationBuilder.displayName = "SegmentationBuilder";
8152
8152
 
8153
8153
  var SENTINEL_KEY = "__tags-filter-sentinel__";
8154
+ var EMPTY_KEY = "__tags-filter-empty__";
8154
8155
  var DEFAULT_TRANSLATIONS = {
8155
8156
  placeholder: "Nombre de la etiqueta",
8156
8157
  labelSelect: "Selecciona etiqueta",
8157
8158
  labelSelected: "Etiquetas actuales",
8158
8159
  emptySelectedMessage: "No hay etiquetas seleccionadas",
8160
+ emptyAvailableMessage: "No hay etiquetas disponibles",
8159
8161
  errorLoadingPrefix: "Error al cargar etiquetas",
8160
8162
  loadingMoreLabel: "Cargando más etiquetas…",
8161
8163
  endOfListMessage: "",
@@ -8223,8 +8225,14 @@ function TagsFilter(_a) {
8223
8225
  }, [items, inputValue, compareTags, onInputChange]);
8224
8226
  var filteredItems = getFilteredAvailable(selectedList);
8225
8227
  var showSentinel = Boolean(onLoadMore) && (hasMore || Boolean(t.endOfListMessage));
8226
- var itemsWithSentinel = showSentinel
8227
- ? __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;
8228
8236
  var handleAutocompleteSelection = React.useCallback(function (key) {
8229
8237
  if (key == null) {
8230
8238
  return;
@@ -8243,9 +8251,12 @@ function TagsFilter(_a) {
8243
8251
  setInputValue(v);
8244
8252
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
8245
8253
  }, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
8246
- // "focus" keeps the menu tied to focus; prefer opening when typing.
8247
- menuTrigger: "input",
8248
- // 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.
8249
8260
  allowsEmptyCollection: false, shouldCloseOnBlur: true, popoverProps: {
8250
8261
  // isNonModal: false would render a full-screen invisible backdrop that
8251
8262
  // intercepts pointer events, blocking the parent modal's close button.
@@ -8256,6 +8267,9 @@ function TagsFilter(_a) {
8256
8267
  className: "max-h-[200px] overflow-y-auto",
8257
8268
  }, className: "w-full", children: function (item) {
8258
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
+ }
8259
8273
  if (candidate.id === SENTINEL_KEY) {
8260
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) {
8261
8275
  var _a;
package/dist/index.esm.js CHANGED
@@ -8152,11 +8152,13 @@ var SegmentationBuilder = forwardRef(function (_a, ref) {
8152
8152
  SegmentationBuilder.displayName = "SegmentationBuilder";
8153
8153
 
8154
8154
  var SENTINEL_KEY = "__tags-filter-sentinel__";
8155
+ var EMPTY_KEY = "__tags-filter-empty__";
8155
8156
  var DEFAULT_TRANSLATIONS = {
8156
8157
  placeholder: "Nombre de la etiqueta",
8157
8158
  labelSelect: "Selecciona etiqueta",
8158
8159
  labelSelected: "Etiquetas actuales",
8159
8160
  emptySelectedMessage: "No hay etiquetas seleccionadas",
8161
+ emptyAvailableMessage: "No hay etiquetas disponibles",
8160
8162
  errorLoadingPrefix: "Error al cargar etiquetas",
8161
8163
  loadingMoreLabel: "Cargando más etiquetas…",
8162
8164
  endOfListMessage: "",
@@ -8224,8 +8226,14 @@ function TagsFilter(_a) {
8224
8226
  }, [items, inputValue, compareTags, onInputChange]);
8225
8227
  var filteredItems = getFilteredAvailable(selectedList);
8226
8228
  var showSentinel = Boolean(onLoadMore) && (hasMore || Boolean(t.endOfListMessage));
8227
- var itemsWithSentinel = showSentinel
8228
- ? __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;
8229
8237
  var handleAutocompleteSelection = useCallback(function (key) {
8230
8238
  if (key == null) {
8231
8239
  return;
@@ -8244,9 +8252,12 @@ function TagsFilter(_a) {
8244
8252
  setInputValue(v);
8245
8253
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
8246
8254
  }, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
8247
- // "focus" keeps the menu tied to focus; prefer opening when typing.
8248
- menuTrigger: "input",
8249
- // 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.
8250
8261
  allowsEmptyCollection: false, shouldCloseOnBlur: true, popoverProps: {
8251
8262
  // isNonModal: false would render a full-screen invisible backdrop that
8252
8263
  // intercepts pointer events, blocking the parent modal's close button.
@@ -8257,6 +8268,9 @@ function TagsFilter(_a) {
8257
8268
  className: "max-h-[200px] overflow-y-auto",
8258
8269
  }, className: "w-full", children: function (item) {
8259
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
+ }
8260
8274
  if (candidate.id === SENTINEL_KEY) {
8261
8275
  return (jsx(AutocompleteItem, { textValue: "", isReadOnly: true, className: "opacity-100 cursor-default data-[hover=true]:bg-transparent", children: jsx("div", { ref: function (node) {
8262
8276
  var _a;
@@ -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.60-qa.70",
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",