@prolibu-suite/cobalt-core 0.10.2 → 0.10.4

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.
Files changed (74) hide show
  1. package/custom-elements.json +44 -22
  2. package/dist/cjs/co-chip_2.cjs.entry.js +21 -2
  3. package/dist/cjs/co-number-field.cjs.entry.js +25 -4
  4. package/dist/cjs/co-overlay.cjs.entry.js +34 -3
  5. package/dist/cjs/co-popover.cjs.entry.js +16 -2
  6. package/dist/cjs/cobalt.cjs.js +1 -1
  7. package/dist/cjs/index-MDAnKsze.js +4 -4
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cobalt/cobalt.esm.js +1 -1
  10. package/dist/cobalt/p-07416e31.entry.js +1 -0
  11. package/dist/cobalt/p-1d3a79af.entry.js +1 -0
  12. package/dist/cobalt/p-8e05b979.entry.js +1 -0
  13. package/dist/cobalt/{p-410bee4d.entry.js → p-b0762fd8.entry.js} +1 -1
  14. package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
  15. package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
  16. package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
  17. package/dist/collection/components/co-combobox/co-combobox.js +1 -1
  18. package/dist/collection/components/co-command-search/co-command-search.js +1 -1
  19. package/dist/collection/components/co-data-table/co-data-table.js +1 -1
  20. package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +2 -2
  21. package/dist/collection/components/co-number-field/co-number-field.js +25 -4
  22. package/dist/collection/components/co-option-list/co-option-list.js +39 -3
  23. package/dist/collection/components/co-overlay/backdropDismiss.js +12 -0
  24. package/dist/collection/components/co-overlay/co-overlay.js +22 -3
  25. package/dist/collection/components/co-popover/co-popover.js +17 -3
  26. package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
  27. package/dist/collection/components/co-ref-field/co-ref-field.js +4 -4
  28. package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
  29. package/dist/collection/components/co-select/co-select.js +1 -1
  30. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
  31. package/dist/collection/components/co-toast/co-toast.js +2 -2
  32. package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
  33. package/dist/components/co-autocomplete.js +1 -1
  34. package/dist/components/co-color-picker.js +1 -1
  35. package/dist/components/co-combobox.js +1 -1
  36. package/dist/components/co-command-search.js +1 -1
  37. package/dist/components/co-date-picker.js +1 -1
  38. package/dist/components/co-date-range-picker.js +1 -1
  39. package/dist/components/co-date-range.js +1 -1
  40. package/dist/components/co-date-time-picker.js +1 -1
  41. package/dist/components/co-drawer.js +1 -1
  42. package/dist/components/co-menu-item.js +1 -1
  43. package/dist/components/co-menu.js +1 -1
  44. package/dist/components/co-modal.js +1 -1
  45. package/dist/components/co-number-field.js +1 -1
  46. package/dist/components/co-option-list.js +1 -1
  47. package/dist/components/co-overlay.js +1 -1
  48. package/dist/components/co-popover.js +1 -1
  49. package/dist/components/co-ref-field.js +1 -1
  50. package/dist/components/co-select.js +1 -1
  51. package/dist/components/{p-DrTRB8Ev.js → p-B56LX2SH.js} +1 -1
  52. package/dist/components/p-BJh68Jqe.js +1 -0
  53. package/dist/components/{p-DRP8D9ro.js → p-D9T7zKeL.js} +1 -1
  54. package/dist/components/p-Dh8ffSjK.js +1 -0
  55. package/dist/components/{p-DxtNejr2.js → p-P4HlMBlL.js} +1 -1
  56. package/dist/esm/co-chip_2.entry.js +21 -2
  57. package/dist/esm/co-number-field.entry.js +25 -4
  58. package/dist/esm/co-overlay.entry.js +34 -3
  59. package/dist/esm/co-popover.entry.js +16 -2
  60. package/dist/esm/cobalt.js +1 -1
  61. package/dist/esm/index-DH5lfRNj.js +4 -4
  62. package/dist/esm/loader.js +1 -1
  63. package/dist/types/components/co-number-field/co-number-field.d.ts +7 -0
  64. package/dist/types/components/co-option-list/co-option-list.d.ts +7 -0
  65. package/dist/types/components/co-overlay/backdropDismiss.d.ts +10 -0
  66. package/dist/types/components/co-overlay/co-overlay.d.ts +4 -0
  67. package/dist/types/components/co-popover/co-popover.d.ts +2 -0
  68. package/dist/types/components.d.ts +4 -3
  69. package/package.json +4 -4
  70. package/dist/cobalt/p-2a30c143.entry.js +0 -1
  71. package/dist/cobalt/p-39dc4ec8.entry.js +0 -1
  72. package/dist/cobalt/p-be34e447.entry.js +0 -1
  73. package/dist/components/p-CBTGN490.js +0 -1
  74. package/dist/components/p-D7Lhxz7L.js +0 -1
@@ -53,6 +53,13 @@ export class CoNumberField {
53
53
  */
54
54
  this.hideControls = false;
55
55
  this.focused = false;
56
+ /**
57
+ * El usuario VACIÓ un campo no-clearable (borró todo el texto). Sin clearable
58
+ * el vacío no se emite mientras se tipea (sigue editando), pero al salir
59
+ * commitea el piso (`min ?? 0`, handleBlur) — antes el blur repintaba el valor
60
+ * anterior y el borrado se perdía. Un campo que NACE vacío no levanta la marca.
61
+ */
62
+ this.emptiedByUser = false;
56
63
  // Stepping/clear son mutaciones PROGRAMÁTICAS: con el campo enfocado ni el
57
64
  // @Watch (guard `focused`) ni el vdom (que copia el texto vivo) repintan, así
58
65
  // que cada path escribe el input él mismo — si no, ArrowUp emite y persiste
@@ -94,6 +101,9 @@ export class CoNumberField {
94
101
  this.value = null;
95
102
  this.coChange.emit(null);
96
103
  }
104
+ else {
105
+ this.emptiedByUser = true;
106
+ }
97
107
  return;
98
108
  }
99
109
  if (raw === '-')
@@ -135,6 +145,9 @@ export class CoNumberField {
135
145
  this.value = null;
136
146
  this.coChange.emit(null);
137
147
  }
148
+ else if (spliced === '') {
149
+ this.emptiedByUser = true;
150
+ }
138
151
  return;
139
152
  }
140
153
  const num = parseFloat(spliced);
@@ -152,9 +165,13 @@ export class CoNumberField {
152
165
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.focus();
153
166
  };
154
167
  this.handleBlur = () => {
168
+ var _a;
155
169
  this.focused = false;
170
+ // Vaciado a mano sin clearable: commitea el piso (ver emptiedByUser).
171
+ if (this.emptiedByUser)
172
+ this.emitValue((_a = this.min) !== null && _a !== void 0 ? _a : 0);
156
173
  // Re-clamp on blur, but keep an empty field empty.
157
- if (!this.isEmpty)
174
+ else if (!this.isEmpty)
158
175
  this.emitValue(this.value);
159
176
  // Repinta el texto canónico: si el clamp devolvió el MISMO valor que ya
160
177
  // tenía el prop (tipear "-20" sobre 0 con min 0), el @Watch no dispara y el
@@ -253,6 +270,7 @@ export class CoNumberField {
253
270
  return this.scaled ? n / 100 : n;
254
271
  }
255
272
  emitValue(next) {
273
+ this.emptiedByUser = false;
256
274
  const clamped = this.clamp(next);
257
275
  this.value = clamped;
258
276
  this.coChange.emit(clamped);
@@ -281,6 +299,9 @@ export class CoNumberField {
281
299
  this.value = null;
282
300
  this.coChange.emit(null);
283
301
  }
302
+ else {
303
+ this.emptiedByUser = true;
304
+ }
284
305
  return;
285
306
  }
286
307
  if (cleaned === '-')
@@ -302,18 +323,18 @@ export class CoNumberField {
302
323
  return this.scaled && !this.isEmpty ? '%' : null;
303
324
  }
304
325
  render() {
305
- return (h("div", { key: '1bcd7e60596bc28f5159f86a026d69d0d053f038', class: {
326
+ return (h("div", { key: 'de7f3ae049ac5afcdf7d8a711c566b947fa7e151', class: {
306
327
  'co-number-field': true,
307
328
  'co-number-field--disabled': this.disabled,
308
329
  'co-number-field--focused': this.focused,
309
330
  [`co-number-field--${this.size}`]: true,
310
331
  [`co-number-field--${this.status}`]: this.status !== 'default',
311
- } }, (this.label || this.secondaryLabel) && (h("div", { key: 'aca2d9958374940304e05495ae05e74d627154c7', class: "co-number-field__labels" }, this.label && h("label", { key: '8cf05675830ad181005430526785984acc793d0b', class: "co-number-field__label" }, this.label, h(RequiredMark, { key: '36aed2cf48890cf79506416d0c45f272ed329664', required: this.required })), this.secondaryLabel && h("span", { key: '636111436e1e3fff8d74fb4b9412c2192c93495a', class: "co-number-field__secondary-label" }, this.secondaryLabel))), h("div", { key: '6cbbb87a304cd9e415aafda276daede8dbe0b6a7', class: "co-number-field__row", part: "row" }, !this.hideControls && (h("button", { key: 'e11dfc41ee97b3287908877aa74f732a4cbe31fe', class: "co-number-field__btn co-number-field__btn--minus", type: "button", tabIndex: -1, disabled: !this.canDecrement, onClick: this.handleDecrement, "aria-label": "Decrease" }, h("co-icon", { key: '3f369b4d8293e9e987d18ba58fa1f010bd538016', name: "minus", size: 16 }))), h("input", { key: '8144b563cd4ae46774adbf224c45fa59378da4c7', ref: el => (this.inputEl = el), class: "co-number-field__input", type: "text", inputMode: "decimal",
332
+ } }, (this.label || this.secondaryLabel) && (h("div", { key: '3a6c96b2987f0502334a23048f8693745589e965', class: "co-number-field__labels" }, this.label && h("label", { key: '7e0c9c08e93f10f6e18143d038ea8810a0f156b8', class: "co-number-field__label" }, this.label, h(RequiredMark, { key: '88b110f3d59908c27d182533100220ff8a65bb66', required: this.required })), this.secondaryLabel && h("span", { key: '5dd9219f995fc59ce557c8ba2b5dfea2d7cb56ef', class: "co-number-field__secondary-label" }, this.secondaryLabel))), h("div", { key: 'e2079dd9e28daf904057106167cd368de906daba', class: "co-number-field__row", part: "row" }, !this.hideControls && (h("button", { key: '7ff22639f594e7a008f02962ed7782b84654b78e', class: "co-number-field__btn co-number-field__btn--minus", type: "button", tabIndex: -1, disabled: !this.canDecrement, onClick: this.handleDecrement, "aria-label": "Decrease" }, h("co-icon", { key: '61aafdc7c083ea39b9b65b87d267df63b91cb8d4', name: "minus", size: 16 }))), h("input", { key: 'e088482da6c9fe1e02abe5bcae2611f157be83ed', ref: el => (this.inputEl = el), class: "co-number-field__input", type: "text", inputMode: "decimal",
312
333
  // Mismo guard `focused` que el @Watch: mientras el usuario edita, su
313
334
  // texto manda. Sin esto, el re-render que dispara emitValue repinta
314
335
  // el input desde el NÚMERO y se come el texto en construcción
315
336
  // ("34,640.00" pegado quedaba "34,640"; un "12." perdería el punto).
316
- value: this.focused && this.inputEl ? this.inputEl.value : this.displayValue, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onPaste: this.handlePaste, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, part: "input" }), this.affixText && (h("span", { key: '56e8b3a225f2332f9c3974ec195b63b3681d5b09', class: "co-number-field__affix", "aria-hidden": "true" }, this.affixText)), this.clearable && !this.isEmpty && !this.disabled && (h("button", { key: 'ea8325f7097c5b0b87bd51554163d44bdfe379ff', class: "co-number-field__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear" }, h("co-icon", { key: 'c72d4e3a039752fbcf7cf4594421d24bc2f0570a', name: "x-circle", size: 16, weight: "fill" }))), h("slot", { key: '2a3dc1b5a3e22ade3db02389178dd4ae3b1d3295', name: "suffix" }), !this.hideControls && (h("button", { key: '3b9bf39d86c7aacb212576dc4cf4af548b56fbed', class: "co-number-field__btn co-number-field__btn--plus", type: "button", tabIndex: -1, disabled: !this.canIncrement, onClick: this.handleIncrement, "aria-label": "Increase" }, h("co-icon", { key: '1655aaca9e66b51c0d97fc128c132326d3c740ad', name: "plus", size: 16 })))), this.helperText && (h("div", { key: '397b37569cabdf68072d870b5e5781f7d39da8fe', class: `co-number-field__helper co-number-field__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: 'b574fddca9813af3e208ea3e9258480a992fd4f2', name: this.statusIcon, size: 14, weight: "fill", class: "co-number-field__helper-icon" }), h("span", { key: 'd17a39a82108f12100dee523d7754b50f147bb63', class: "co-number-field__helper-text" }, this.helperText)))));
337
+ value: this.focused && this.inputEl ? this.inputEl.value : this.displayValue, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onPaste: this.handlePaste, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, part: "input" }), this.affixText && (h("span", { key: '2a7bc2f465844ccb9db7017c1b3782625e784c05', class: "co-number-field__affix", "aria-hidden": "true" }, this.affixText)), this.clearable && !this.isEmpty && !this.disabled && (h("button", { key: '06e40ddc080297db49823f17eeeaba313f68fafd', class: "co-number-field__clear", type: "button", tabIndex: -1, onClick: this.handleClear, "aria-label": "Clear" }, h("co-icon", { key: 'f69d2f6bf5cb4cd6731d55f873fd03d21eb0f42e', name: "x-circle", size: 16, weight: "fill" }))), h("slot", { key: 'd16df6468bf0f514ce183e36d555b5e8f97ff969', name: "suffix" }), !this.hideControls && (h("button", { key: '523f5cbda86bbe3b69d08aedc9eb678d6b218cb7', class: "co-number-field__btn co-number-field__btn--plus", type: "button", tabIndex: -1, disabled: !this.canIncrement, onClick: this.handleIncrement, "aria-label": "Increase" }, h("co-icon", { key: '7f546fa2885ebecc3f16129bdc815a1cea57f53f', name: "plus", size: 16 })))), this.helperText && (h("div", { key: 'e807bbe38823ee148e227baaac1feafd85f93c49', class: `co-number-field__helper co-number-field__helper--${this.status}` }, this.statusIcon && h("co-icon", { key: 'e8bc48908cb9e53952e0bffeb898d0a4b0d2fef3', name: this.statusIcon, size: 14, weight: "fill", class: "co-number-field__helper-icon" }), h("span", { key: 'c00dc9f3bd966988f6a2546a360ede337de383e4', class: "co-number-field__helper-text" }, this.helperText)))));
317
338
  }
318
339
  static get is() { return "co-number-field"; }
319
340
  static get encapsulation() { return "shadow"; }
@@ -308,6 +308,25 @@ export class CoOptionList {
308
308
  }
309
309
  // ── Métodos públicos ───────────────────────────────────────
310
310
  /** Re-toma el snapshot selected-first. El host la llama al abrir su panel. */
311
+ /**
312
+ * Vacía el buscador (texto, término y cualquier coSearch en vuelo) y emite
313
+ * `coSearch('')`. Para hosts que reabren el panel (co-popover): el término
314
+ * vive ACÁ, así que sin esto la búsqueda anterior reaparecía con la lista del
315
+ * host ya sin filtrar.
316
+ */
317
+ async clearSearch() {
318
+ if (this.debounceTimer)
319
+ clearTimeout(this.debounceTimer);
320
+ const hadTerm = !!this.term;
321
+ this.term = '';
322
+ this.activeIndex = -1;
323
+ this.lastFillLen = -1;
324
+ if (this.searchInputEl)
325
+ this.searchInputEl.value = '';
326
+ if (hadTerm)
327
+ this.takeSnapshot();
328
+ this.coSearch.emit('');
329
+ }
311
330
  async snapshotOrder() {
312
331
  this.takeSnapshot();
313
332
  }
@@ -741,11 +760,11 @@ export class CoOptionList {
741
760
  const selectedIds = this.selectedIds;
742
761
  const { hasMore, remaining } = deriveMore(this.parsedItems.length, this.total, this.hasMore);
743
762
  const showClear = !!this.clearOptionLabel && selectedIds.length > 0;
744
- return (h("div", { key: '30f39e9cfe2472f1083768b6e974aa48672e63d0', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: 'f1c125c141ca8ceebae5c1ed0c786919c31805b3', class: "co-option-list__search", part: "search" }, h("co-icon", { key: 'd56810ca205984e7b2c56546930ce25ca70fda68', name: "magnifying-glass", size: 16 }), h("input", { key: 'a85b35debe7b14c604a3262c7c04ee3b9ca41a6a', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("div", { key: 'ea5eecc218a228e07dd05d8f963518b4a8e0039f', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, h("div", { key: 'b27071cb3d629022fa6e926050fdc17b2051ef98', class: "co-option-list__inner" }, showClear && (h("button", { key: '443791f8ee2d1f05a16c4002573264acf0a8de1b', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: 'ebe7e65669ff9eb76922ef76e21b9209658a444f', name: "x-circle", size: 14 }), h("span", { key: '82d2bcceb41ec5370e60ea9e25af91a2cbf11e70' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: '9f60fedc78ee66d198623a5e3ac9b0f1569ddef4', class: "co-option-list__loading" }, h("co-loader", { key: 'ab7b1947e03af880cc608bef8639d7dc882a53b7', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: '6b0870e6c5b2c25e2854431a28a2d6b56253ecf2', class: "co-option-list__empty" }, h("co-icon", { key: '302d71e23e0d56104dfd04948201630ddbb4b078', name: "magnifying-glass", size: 20 }), h("span", { key: 'fc580f9a50974ab22a7b648dbbe4ca17340094d8' }, this.emptyMessage))), items.length > 0 && this.virtual
763
+ return (h("div", { key: '93ec2aeb43a8f03e918eb068f683efdc93ca4db5', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (h("div", { key: '617640a5909cbb82f37168f19978be213b0de9e0', class: "co-option-list__search", part: "search" }, h("co-icon", { key: '5e4c73aa4cb53d71e37b628936cb699eee656056', name: "magnifying-glass", size: 16 }), h("input", { key: 'f9497413b2b8d72899051ee0d02f34411936ae8c', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), h("div", { key: '06403a47d664e34d9fa0381affdb32b6d3b8eb56', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, h("div", { key: 'aa17f1da0c46d9df52a0e3f1257ebf385c1ba945', class: "co-option-list__inner" }, showClear && (h("button", { key: 'e88eb444c5b94ebb800e4385515aa13542b2682f', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, h("co-icon", { key: 'f1e332a87ba9d83fd2a22150939b135766731dc6', name: "x-circle", size: 14 }), h("span", { key: '26dca00c81dd651982955562fc3747aae88ba536' }, this.clearOptionLabel))), this.loading && items.length === 0 && (h("div", { key: '147ffc9fefed3524bfdd08ebfa36fb2e89ff4bb1', class: "co-option-list__loading" }, h("co-loader", { key: 'd4be765a87c8222b5747749fce7787788a4b0aca', size: "sm" }))), !this.loading && items.length === 0 && (h("div", { key: 'f20612fb93140fff5463e2992e9beec1ccb1fda9', class: "co-option-list__empty" }, h("co-icon", { key: 'aa68b5891aae21c513a069e920ddae0378d0a736', name: "magnifying-glass", size: 20 }), h("span", { key: '2fa339d51962a1898493ba78febcd90d3dbf9310' }, this.emptyMessage))), items.length > 0 && this.virtual
745
764
  ? this.renderVirtual(items, selectedIds)
746
765
  : buildRows(items).map((row) => row.kind === 'header'
747
766
  ? h("div", { class: "co-option-list__group", role: "presentation" }, row.label)
748
- : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: '606a674960e4d16198ef36de4686de91ad742dde', class: "co-option-list__loading-more" }, h("co-loader", { key: '933613b7b606399cd9eea3f877a4b2c77f269785', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: '6a6220513b6db222b57155c54afa805519e4b1b8', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: '4d952742c39335d9f19c2e45f58ae6be3306857d', name: "footer" })));
767
+ : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (h("div", { key: '147e9bd6f1456284cd223e067b08979efb2cfe2c', class: "co-option-list__loading-more" }, h("co-loader", { key: '6e5b5181d803579ba3370a63849f0462a0685165', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (h("div", { key: 'b90b8fce9a427371e3a7de24feb6fce6765dafe1', class: "co-option-list__more" }, remaining, " more results")))), h("slot", { key: '33d6641dc16188f572c70528d54553313b4f4afb', name: "footer" })));
749
768
  }
750
769
  static get is() { return "co-option-list"; }
751
770
  static get encapsulation() { return "shadow"; }
@@ -1442,6 +1461,23 @@ export class CoOptionList {
1442
1461
  }
1443
1462
  static get methods() {
1444
1463
  return {
1464
+ "clearSearch": {
1465
+ "complexType": {
1466
+ "signature": "() => Promise<void>",
1467
+ "parameters": [],
1468
+ "references": {
1469
+ "Promise": {
1470
+ "location": "global",
1471
+ "id": "global::Promise"
1472
+ }
1473
+ },
1474
+ "return": "Promise<void>"
1475
+ },
1476
+ "docs": {
1477
+ "text": "Vac\u00EDa el buscador (texto, t\u00E9rmino y cualquier coSearch en vuelo) y emite\n`coSearch('')`. Para hosts que reabren el panel (co-popover): el t\u00E9rmino\nvive AC\u00C1, as\u00ED que sin esto la b\u00FAsqueda anterior reaparec\u00EDa con la lista del\nhost ya sin filtrar.",
1478
+ "tags": []
1479
+ }
1480
+ },
1445
1481
  "snapshotOrder": {
1446
1482
  "complexType": {
1447
1483
  "signature": "() => Promise<void>",
@@ -1455,7 +1491,7 @@ export class CoOptionList {
1455
1491
  "return": "Promise<void>"
1456
1492
  },
1457
1493
  "docs": {
1458
- "text": "Re-toma el snapshot selected-first. El host la llama al abrir su panel.",
1494
+ "text": "",
1459
1495
  "tags": []
1460
1496
  }
1461
1497
  },
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ¿Un `click` sobre el fondo del overlay es un gesto de cierre?
3
+ *
4
+ * El navegador despacha `click` al ANCESTRO COMÚN de donde empezó y donde
5
+ * terminó la pulsación: seleccionar texto dentro de un modal y soltar fuera
6
+ * producía un `click` en el fondo y cerraba el modal (con lo editado adentro).
7
+ * Solo cuenta si la pulsación entera —down, up y click— ocurrió sobre el MISMO
8
+ * elemento (`composedPath()[0]`, para ver a través de shadow roots).
9
+ */
10
+ export function isBackdropDismiss(downTarget, upTarget, clickTarget) {
11
+ return downTarget !== null && downTarget === upTarget && upTarget === clickTarget;
12
+ }
@@ -1,5 +1,6 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { afterEventFor } from "./overlayAfterClose";
3
+ import { isBackdropDismiss } from "./backdropDismiss";
3
4
  import { getFocusableElements, resolveTabIndex } from "./focusTrap";
4
5
  /**
5
6
  * Module-level body-scroll lock shared by every overlay instance.
@@ -51,8 +52,26 @@ export class CoOverlay {
51
52
  this.closeOnEscape = false;
52
53
  /** Whether THIS instance currently holds a scroll lock (prevents double-count). */
53
54
  this.hasLock = false;
54
- this.handleClick = () => {
55
- this.coClose.emit();
55
+ // Origen de la pulsación en curso (ver isBackdropDismiss): un drag que
56
+ // empieza dentro del contenido y suelta en el fondo NO es un cierre.
57
+ this.pressDownTarget = null;
58
+ this.pressUpTarget = null;
59
+ this.handlePointerDown = (e) => {
60
+ var _a;
61
+ this.pressDownTarget = (_a = e.composedPath()[0]) !== null && _a !== void 0 ? _a : null;
62
+ this.pressUpTarget = null;
63
+ };
64
+ this.handlePointerUp = (e) => {
65
+ var _a;
66
+ this.pressUpTarget = (_a = e.composedPath()[0]) !== null && _a !== void 0 ? _a : null;
67
+ };
68
+ this.handleClick = (e) => {
69
+ var _a;
70
+ const dismiss = isBackdropDismiss(this.pressDownTarget, this.pressUpTarget, (_a = e.composedPath()[0]) !== null && _a !== void 0 ? _a : null);
71
+ this.pressDownTarget = null;
72
+ this.pressUpTarget = null;
73
+ if (dismiss)
74
+ this.coClose.emit();
56
75
  };
57
76
  this.handleTransitionEnd = (e) => {
58
77
  if (e.target !== this.overlayEl)
@@ -189,7 +208,7 @@ export class CoOverlay {
189
208
  focusables[nextIndex].focus();
190
209
  }
191
210
  render() {
192
- return (h("div", { key: '4fafc87768eca581018ff578875b2362cf5297d2', class: { 'co-overlay': true, 'co-overlay--open': this.open }, part: "overlay", popover: "manual", tabindex: this.trapFocus ? -1 : undefined, ref: (el) => (this.overlayEl = el), onClick: this.handleClick, onTransitionEnd: this.handleTransitionEnd }, h("slot", { key: '2d18410bb6774701806101d38b6d41293b0e7ff9' })));
211
+ return (h("div", { key: '74051ac6a35eff0b9c873bafe2141b0a9486f83e', class: { 'co-overlay': true, 'co-overlay--open': this.open }, part: "overlay", popover: "manual", tabindex: this.trapFocus ? -1 : undefined, ref: (el) => (this.overlayEl = el), onPointerDown: this.handlePointerDown, onPointerUp: this.handlePointerUp, onClick: this.handleClick, onTransitionEnd: this.handleTransitionEnd }, h("slot", { key: '8ed7f244bfe88f3d38b9e1f6720b0a191529f6f1' })));
193
212
  }
194
213
  static get is() { return "co-overlay"; }
195
214
  static get encapsulation() { return "shadow"; }
@@ -59,10 +59,21 @@ export class CoPopover {
59
59
  // phase so we run before any inner-element listeners that might stop
60
60
  // propagation, and bypassing Stencil's @Listen delegation quirks across
61
61
  // nested shadow DOMs.
62
+ // La pulsación en curso EMPEZÓ dentro del popover: seleccionar texto en un
63
+ // input del panel y soltar afuera despacha el `click` al ancestro común (fuera)
64
+ // y cerraba el panel. Ese click no es un "click afuera".
65
+ this.pressStartedInside = false;
66
+ this.handleDocumentPointerDownManual = (e) => {
67
+ this.pressStartedInside = e.composedPath().includes(this.el);
68
+ };
62
69
  this.handleDocumentClickManual = (e) => {
70
+ const startedInside = this.pressStartedInside;
71
+ this.pressStartedInside = false;
63
72
  // Early-exit keeps closed instances silent.
64
73
  if (!this.open || !this.closeOnClickOutside)
65
74
  return;
75
+ if (startedInside)
76
+ return;
66
77
  // Solo el tope de la pila reacciona al click afuera: con popovers
67
78
  // anidados (dropdown dentro de un panel de filtro), el primer click
68
79
  // afuera cierra solo el de más arriba; el padre queda intacto. Nota: si
@@ -230,6 +241,7 @@ export class CoPopover {
230
241
  bindDocListeners() {
231
242
  if (this.docListenersBound)
232
243
  return;
244
+ document.addEventListener('pointerdown', this.handleDocumentPointerDownManual, true);
233
245
  document.addEventListener('click', this.handleDocumentClickManual, true);
234
246
  document.addEventListener('keydown', this.handleDocumentKeydownManual, true);
235
247
  this.docListenersBound = true;
@@ -237,9 +249,11 @@ export class CoPopover {
237
249
  unbindDocListeners() {
238
250
  if (!this.docListenersBound)
239
251
  return;
252
+ document.removeEventListener('pointerdown', this.handleDocumentPointerDownManual, true);
240
253
  document.removeEventListener('click', this.handleDocumentClickManual, true);
241
254
  document.removeEventListener('keydown', this.handleDocumentKeydownManual, true);
242
255
  this.docListenersBound = false;
256
+ this.pressStartedInside = false;
243
257
  }
244
258
  // ── Public methods ─────────────────────────────────────────
245
259
  async toggle() {
@@ -307,13 +321,13 @@ export class CoPopover {
307
321
  }
308
322
  // ── Render ─────────────────────────────────────────────────
309
323
  render() {
310
- return (h("div", { key: 'f8460e212fabe8828f1e33f08304d7e680a7cab0', class: "co-popover" }, h("div", { key: 'c9caad8ae7f16c82173e4b30ad5cc053dc73b6da', class: "co-popover__trigger", ref: (el) => (this.triggerEl = el), onClick: this.handleTriggerClick }, h("slot", { key: 'afa0443ba85607cf24f517e8c7fe0cee689df024', name: "trigger" })), (this.open || this.closing) && (h("div", { key: 'd2a081f8923f53ac456edd6e5eb7422dc5ab7daa', class: { 'co-popover__panel': true, 'co-popover__panel--closing': this.closing }, popover: "manual", onTransitionEnd: this.handlePanelTransitionEnd, ref: (el) => {
324
+ return (h("div", { key: 'f4f13f06a95f02735c615e896d367ca671270a68', class: "co-popover" }, h("div", { key: '504af8cebb0f83e7f882f09096a5bfba37e2ac56', class: "co-popover__trigger", ref: (el) => (this.triggerEl = el), onClick: this.handleTriggerClick }, h("slot", { key: 'd5853c372f2bda3f5c57718b5869ca8919c1dfcc', name: "trigger" })), (this.open || this.closing) && (h("div", { key: '3b9c2aa2feaab08eb5f03d36cc25a464600da7fe', class: { 'co-popover__panel': true, 'co-popover__panel--closing': this.closing }, popover: "manual", onTransitionEnd: this.handlePanelTransitionEnd, ref: (el) => {
311
325
  if (el && el !== this.panelEl) {
312
326
  this.panelEl = el;
313
327
  this.promotePanel();
314
328
  this.scheduleUpdate();
315
329
  }
316
- } }, h("slot", { key: '8466f617bd6b8a497e2040d3275b384156de126c' })))));
330
+ } }, h("slot", { key: '81e2b8070b4912bab1654e957890c92244ca83b8' })))));
317
331
  }
318
332
  static get is() { return "co-popover"; }
319
333
  static get encapsulation() { return "shadow"; }
@@ -358,7 +372,7 @@ export class CoPopover {
358
372
  "references": {
359
373
  "PopoverPlacement": {
360
374
  "location": "local",
361
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-popover/co-popover.tsx",
375
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-popover/co-popover.tsx",
362
376
  "id": "src/components/co-popover/co-popover.tsx::PopoverPlacement"
363
377
  }
364
378
  }
@@ -219,7 +219,7 @@ export class CoRadioGroup {
219
219
  "references": {
220
220
  "RadioOption": {
221
221
  "location": "local",
222
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-radio-group/co-radio-group.tsx",
222
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-radio-group/co-radio-group.tsx",
223
223
  "id": "src/components/co-radio-group/co-radio-group.tsx::RadioOption"
224
224
  }
225
225
  }
@@ -1321,7 +1321,7 @@ export class CoRefField {
1321
1321
  "references": {
1322
1322
  "RefFieldOption": {
1323
1323
  "location": "local",
1324
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1324
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1325
1325
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1326
1326
  }
1327
1327
  }
@@ -1462,7 +1462,7 @@ export class CoRefField {
1462
1462
  "references": {
1463
1463
  "RefFieldOption": {
1464
1464
  "location": "local",
1465
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1465
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1466
1466
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1467
1467
  }
1468
1468
  }
@@ -1483,7 +1483,7 @@ export class CoRefField {
1483
1483
  "references": {
1484
1484
  "RefFieldOption": {
1485
1485
  "location": "local",
1486
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1486
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1487
1487
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1488
1488
  }
1489
1489
  }
@@ -1522,7 +1522,7 @@ export class CoRefField {
1522
1522
  },
1523
1523
  "RefFieldOption": {
1524
1524
  "location": "local",
1525
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1525
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-ref-field/co-ref-field.tsx",
1526
1526
  "id": "src/components/co-ref-field/co-ref-field.tsx::RefFieldOption"
1527
1527
  }
1528
1528
  },
@@ -154,7 +154,7 @@ export class CoSegmentedBar {
154
154
  "references": {
155
155
  "CoSegment": {
156
156
  "location": "local",
157
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-segmented-bar/co-segmented-bar.tsx",
157
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-segmented-bar/co-segmented-bar.tsx",
158
158
  "id": "src/components/co-segmented-bar/co-segmented-bar.tsx::CoSegment"
159
159
  }
160
160
  }
@@ -737,7 +737,7 @@ export class CoSelect {
737
737
  "references": {
738
738
  "SelectOption": {
739
739
  "location": "local",
740
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-select/co-select.tsx",
740
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-select/co-select.tsx",
741
741
  "id": "src/components/co-select/co-select.tsx::SelectOption"
742
742
  }
743
743
  }
@@ -702,7 +702,7 @@ export class CoSidebarNav {
702
702
  "references": {
703
703
  "NavigateDetail": {
704
704
  "location": "local",
705
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-sidebar-nav/co-sidebar-nav.tsx",
705
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-sidebar-nav/co-sidebar-nav.tsx",
706
706
  "id": "src/components/co-sidebar-nav/co-sidebar-nav.tsx::NavigateDetail"
707
707
  }
708
708
  }
@@ -180,7 +180,7 @@ export class CoToast {
180
180
  "references": {
181
181
  "CoToastActionsLayout": {
182
182
  "location": "local",
183
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-toast/co-toast.tsx",
183
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-toast/co-toast.tsx",
184
184
  "id": "src/components/co-toast/co-toast.tsx::CoToastActionsLayout"
185
185
  }
186
186
  }
@@ -206,7 +206,7 @@ export class CoToast {
206
206
  "references": {
207
207
  "CoToastVariant": {
208
208
  "location": "local",
209
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-toast/co-toast.tsx",
209
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-toast/co-toast.tsx",
210
210
  "id": "src/components/co-toast/co-toast.tsx::CoToastVariant"
211
211
  }
212
212
  }
@@ -205,7 +205,7 @@ export class CoTransferList {
205
205
  "references": {
206
206
  "TransferOption": {
207
207
  "location": "local",
208
- "path": "/Users/agox/worktrees/cobalt-release-2026-09-18/packages/core/src/components/co-transfer-list/co-transfer-list.tsx",
208
+ "path": "/Users/agox/worktrees/cobalt-release-0.10.3/packages/core/src/components/co-transfer-list/co-transfer-list.tsx",
209
209
  "id": "src/components/co-transfer-list/co-transfer-list.tsx::TransferOption"
210
210
  }
211
211
  }
@@ -1 +1 @@
1
- import{t as e,p as t,H as o,c,h as a}from"./index.js";import{R as i}from"./p-CWneqh4n.js";import{d as s}from"./p-Dcg4krSX.js";import{d as r}from"./p-Du_CgT5E.js";import{d as l}from"./p-DNJAIVfI.js";import{d as n}from"./p-BH184F0X.js";import{d as h}from"./p-D7Lhxz7L.js";import{d as p}from"./p-Bsh0JMGf.js";const d=t(class extends o{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.coSearch=c(this,"coSearch",7),this.coChange=c(this,"coChange",7),this.coClear=c(this,"coClear",7),this.required=!1,this.placeholder="Search…",this.disabled=!1,this.clearable=!0,this.layout="vertical",this.size="md",this.status="default",this.options="[]",this.value="",this.multiple=!1,this.loading=!1,this.minChars=1,this.searchDebounce=300,this.emptyMessage="No results",this.isOpen=!1,this.query="",this.focused=!1,this.handleInput=e=>{const t=e.target.value;this.query=t,this.debounceTimer&&clearTimeout(this.debounceTimer),t.length>=this.minChars?(this.debounceTimer=setTimeout((()=>this.coSearch.emit(t)),this.searchDebounce),this.isOpen=!0):this.isOpen=!1},this.handleFocus=()=>{this.focused=!0,this.query.length>=this.minChars&&this.parsedOptions.length>0&&(this.isOpen=!0)},this.handleClear=e=>{var t;e.stopPropagation(),this.query="",this.value=this.multiple?"[]":"",this.isOpen=!1,this.coClear.emit(),this.coChange.emit({value:this.multiple?[]:"",item:null}),null===(t=this.inputEl)||void 0===t||t.focus()},this.handleChipRemove=e=>{const t=this.selectedValues.filter((t=>t!==e));this.value=JSON.stringify(t),this.coChange.emit({value:t,item:{_id:e,label:e}})},this.handleListChange=e=>{if(null==e.value)return this.value=this.multiple?"[]":"",this.query="",this.isOpen=!1,void this.coChange.emit({value:null,item:null});this.multiple?(this.value=JSON.stringify(e.value),this.coChange.emit({value:e.value,item:e.item})):(this.value=e.value,this.query=e.item.label,this.isOpen=!1,this.coChange.emit({value:e.value,item:e.item}))},this.handleInputKeyDown=async e=>{"Escape"!==e.key?this.isOpen&&this.optionListEl&&("ArrowDown"!==e.key&&"ArrowUp"!==e.key&&"Enter"!==e.key||(e.preventDefault(),await this.optionListEl.handleKey(e))):this.isOpen=!1}}get parsedOptions(){let e=this.options;if("string"==typeof e)try{e=JSON.parse(e)}catch(e){return[]}return Array.isArray(e)?e.map((e=>"string"==typeof e?{label:e,value:e}:e)):[]}get selectedValues(){if(this.multiple){if("string"==typeof this.value)try{return JSON.parse(this.value)}catch(e){return this.value?[this.value]:[]}return this.value}return"string"==typeof this.value&&this.value?[this.value]:[]}get hasValue(){return this.selectedValues.length>0}get statusIcon(){return{error:"warning-circle",success:"check-circle",warning:"warning",info:"info"}[this.status]||null}componentWillLoad(){this.syncQueryFromValue()}onOptionsChange(){this.query.length>=this.minChars&&(this.isOpen=!0),this.focused||this.syncQueryFromValue()}onValueChange(){this.syncQueryFromValue()}syncQueryFromValue(){if(!this.multiple&&"string"==typeof this.value&&this.value){const e=this.parsedOptions.find((e=>e.value===this.value));this.query=e?e.label:this.value}else this.multiple||this.value||(this.query="")}handleDocumentClick(e){this.el.contains(e.target)||(this.isOpen=!1,this.focused=!1)}render(){const e=this.parsedOptions,t=this.selectedValues;return a("div",{key:"0fad340e2daa5ee4b56e28325d5eaec4d60d7188",class:{"co-autocomplete":!0,"co-autocomplete--disabled":this.disabled,"co-autocomplete--focused":this.focused,["co-autocomplete--"+this.size]:!0,["co-autocomplete--"+this.status]:"default"!==this.status}},(this.label||this.secondaryLabel)&&a("div",{key:"a724b6267fd6dbe267725f3619677e043843c96c",class:"co-autocomplete__labels"},this.label&&a("label",{key:"45c176c82f0967c6ff0f1f323d36834d247f8ac6",class:"co-autocomplete__label"},this.label,a(i,{key:"52940ac88fa7ba5f2b662990a66b0ad84d728ecc",required:this.required})),this.secondaryLabel&&a("span",{key:"5eac2ccf44d59067f7ca070561c18c9b45b4cfc1",class:"co-autocomplete__secondary-label"},this.secondaryLabel)),a("div",{key:"4837e011ac491a34efdfb84bd80f2baa52c4f451",class:"co-autocomplete__field"},this.iconLeft&&a("co-icon",{key:"1a46dba433dec3b8dec82b6d2e93cee0575f5673",name:this.iconLeft,size:16,class:"co-autocomplete__icon"}),this.multiple&&t.length>0&&a("div",{key:"95054c8e5ec371ba04f6fa5938d74babffef473f",class:"co-autocomplete__chips"},t.map((e=>{const t=this.parsedOptions.find((t=>t.value===e));return a("co-chip",{label:t?t.label:e,size:"small",removable:!0,onCoRemove:()=>this.handleChipRemove(e)})}))),a("input",{key:"016887bf4fa1872bafd1ba60a7fb960ca89e8b76",ref:e=>this.inputEl=e,class:"co-autocomplete__input",type:"text",value:this.query,placeholder:this.placeholder,disabled:this.disabled,onInput:this.handleInput,onFocus:this.handleFocus,onKeyDown:this.handleInputKeyDown}),this.loading&&a("div",{key:"eac7e752a8d8f18b866c5fe4283707e851355328",class:"co-autocomplete__spinner"}),this.clearable&&(this.hasValue||this.query)&&!this.disabled&&a("button",{key:"aac8dcfced13e8abf3bb6beb0fa56124814804ea",class:"co-autocomplete__clear",type:"button",tabIndex:-1,onClick:this.handleClear,"aria-label":"Clear"},a("co-icon",{key:"8a5605cfe09eb17ca65c9fd97662ceec893431b7",name:"x-circle",size:16,weight:"fill"}))),this.isOpen&&a("div",{key:"7263c42e73656db3ee8d1c1c2f5f5cd941b0e40b",class:"co-autocomplete__dropdown"},a("co-option-list",{key:"32071562943c992b0013451c8b89da20590554cf",ref:e=>this.optionListEl=e,items:JSON.stringify(e.map((e=>({_id:e.value,label:e.label,icon:e.icon,disabled:e.disabled})))),value:this.multiple?JSON.stringify(this.selectedValues):this.selectedValues[0]||"",multiple:this.multiple,selectedAffordance:"check",virtual:!0,loading:this.loading,emptyMessage:this.emptyMessage,onCoChange:e=>this.handleListChange(e.detail)})),this.helperText&&a("div",{key:"47ba4956d829c700700a7509e8fd2fc58dd6e4d9",class:"co-autocomplete__helper co-autocomplete__helper--"+this.status},this.statusIcon&&a("co-icon",{key:"b4363e83a7258241d23f4911c1f6fb352330c19d",name:this.statusIcon,size:14,weight:"fill",class:"co-autocomplete__helper-icon"}),a("span",{key:"952777047bd27a6604daea9531f26ce5aab0c475",class:"co-autocomplete__helper-text"},this.helperText)))}get el(){return this}static get watchers(){return{options:[{onOptionsChange:0}],value:[{onValueChange:0}]}}static get style(){return":host{display:block;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14);letter-spacing:var(--co-font-letter-spacing-body);line-height:1;position:relative}.co-autocomplete{display:flex;flex-direction:column;gap:var(--co-spacing-sm2);position:relative}.co-autocomplete__labels{display:flex;align-items:center;justify-content:space-between;padding:0 var(--co-spacing-xs);gap:var(--co-spacing-sm2)}.co-autocomplete__label{color:var(--co-semantic-text-secondary);font-size:var(--co-font-size-14);font-weight:400;line-height:1;white-space:nowrap;cursor:default}.co-autocomplete__secondary-label{color:var(--co-semantic-text-muted);font-size:var(--co-font-size-14);font-weight:400;line-height:1;white-space:nowrap;text-align:right}.co-autocomplete--disabled .co-autocomplete__label,.co-autocomplete--disabled .co-autocomplete__secondary-label{color:var(--co-semantic-text-disabled)}.co-autocomplete__field{display:flex;align-items:center;flex-wrap:wrap;gap:var(--co-spacing-xs);padding:var(--co-spacing-sm2) var(--co-spacing-md);background:var(--co-semantic-surface-page);border:1px solid var(--co-semantic-border-field);border-radius:var(--co-border-radius-xs);min-height:40px;box-sizing:border-box;transition:border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-autocomplete--s .co-autocomplete__field{min-height:28px;padding:var(--co-spacing-xxs) var(--co-spacing-sm);font-size:var(--co-font-size-12)}.co-autocomplete--sm .co-autocomplete__field{min-height:32px;padding:var(--co-spacing-xs) var(--co-spacing-sm);font-size:var(--co-font-size-14)}.co-autocomplete--lg .co-autocomplete__field{min-height:48px;padding:var(--co-spacing-sm) var(--co-spacing-lg);font-size:var(--co-font-size-16)}.co-autocomplete--focused .co-autocomplete__field{border-color:var(--co-semantic-border-focus);box-shadow:0 0 0 2px var(--co-semantic-border-focus-ring)}.co-autocomplete--disabled .co-autocomplete__field{background:var(--co-semantic-surface-disabled);border-color:transparent;cursor:not-allowed}.co-autocomplete--error .co-autocomplete__field{border-color:var(--co-semantic-status-error)}.co-autocomplete--success .co-autocomplete__field{border-color:var(--co-semantic-status-success)}.co-autocomplete--warning .co-autocomplete__field{border-color:var(--co-color-status-review)}.co-autocomplete--info .co-autocomplete__field{border-color:var(--co-semantic-status-info)}.co-autocomplete__icon{flex-shrink:0;color:var(--co-semantic-text-muted);display:flex;align-items:center}.co-autocomplete__chips{display:flex;flex-wrap:wrap;gap:var(--co-spacing-xs)}.co-autocomplete__input{flex:1;min-width:80px;border:none;background:transparent;color:var(--co-semantic-text-default);font-family:inherit;font-size:inherit;font-weight:400;line-height:1;padding:0;outline:none}.co-autocomplete__input::placeholder{color:var(--co-semantic-text-muted)}.co-autocomplete--disabled .co-autocomplete__input{color:var(--co-semantic-text-disabled);cursor:not-allowed}.co-autocomplete__clear{flex-shrink:0;display:flex;align-items:center;padding:0;margin:0;border:none;background:transparent;cursor:pointer;color:var(--co-semantic-text-muted);transition:color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-autocomplete__clear:hover{color:var(--co-semantic-text-default)}.co-autocomplete__spinner{width:16px;height:16px;border:2px solid var(--co-semantic-border-subtle);border-top-color:var(--co-semantic-text-default);border-radius:var(--co-border-radius-full);animation:co-spin 0.6s linear infinite;flex-shrink:0}@keyframes co-spin{to{transform:rotate(360deg)}}.co-autocomplete__dropdown{position:absolute;top:100%;left:0;right:0;z-index:100;margin-top:var(--co-spacing-xs);background:var(--co-semantic-surface-secondary);border:1px solid var(--co-semantic-border-subtle);border-radius:var(--co-border-radius-sm, 12px);box-shadow:0 4px 16px rgba(31, 28, 27, 0.08);overflow:hidden;}.co-autocomplete__helper{display:flex;align-items:center;gap:var(--co-spacing-xs);padding:0 var(--co-spacing-xs)}.co-autocomplete__helper-icon{flex-shrink:0;display:flex;align-items:center}.co-autocomplete__helper-text{color:var(--co-semantic-text-muted);font-size:var(--co-font-size-14);font-weight:400;line-height:1}.co-autocomplete__helper--error .co-autocomplete__helper-icon,.co-autocomplete__helper--error .co-autocomplete__helper-text{color:var(--co-semantic-status-error)}.co-autocomplete__helper--success .co-autocomplete__helper-icon,.co-autocomplete__helper--success .co-autocomplete__helper-text{color:var(--co-semantic-status-success)}.co-autocomplete__helper--warning .co-autocomplete__helper-icon,.co-autocomplete__helper--warning .co-autocomplete__helper-text{color:var(--co-color-status-review)}.co-autocomplete__helper--info .co-autocomplete__helper-icon,.co-autocomplete__helper--info .co-autocomplete__helper-text{color:var(--co-semantic-status-info)}:host([layout='horizontal']) .co-autocomplete{display:grid;grid-template-columns:var(--co-field-label-width, max-content) 1fr;align-items:start;column-gap:var(--co-spacing-md);row-gap:var(--co-spacing-sm2)}:host([layout='horizontal']) .co-autocomplete__labels{grid-column:1;grid-row:1;padding-top:var(--co-spacing-sm2);min-width:0}:host([layout='horizontal']) .co-autocomplete__label{white-space:normal}:host([layout='horizontal']) .co-autocomplete>:not(.co-autocomplete__labels){grid-column:2;min-width:0}.co-field-required{margin-left:2px;color:var(--co-color-status-error)}.co-field-required__caption{margin-left:4px;color:var(--co-semantic-text-muted);font-size:var(--co-font-size-12);font-weight:400}.co-field-required__caption::before{content:var(--co-field-required-text, ' (required)')}"}},[1,"co-autocomplete",{label:[1],required:[4],secondaryLabel:[1,"secondary-label"],placeholder:[1],disabled:[4],iconLeft:[1,"icon-left"],clearable:[4],helperText:[1,"helper-text"],layout:[513],size:[513],status:[1],options:[1],value:[1025],multiple:[4],loading:[4],minChars:[2,"min-chars"],searchDebounce:[2,"search-debounce"],emptyMessage:[1,"empty-message"],isOpen:[32],query:[32],focused:[32]},[[4,"click","handleDocumentClick"]],{options:[{onOptionsChange:0}],value:[{onValueChange:0}]}]);function u(){"undefined"!=typeof customElements&&["co-autocomplete","co-avatar","co-chip","co-icon","co-loader","co-option-list","co-tooltip"].forEach((t=>{switch(t){case"co-autocomplete":customElements.get(e(t))||customElements.define(e(t),d);break;case"co-avatar":customElements.get(e(t))||s();break;case"co-chip":customElements.get(e(t))||r();break;case"co-icon":customElements.get(e(t))||l();break;case"co-loader":customElements.get(e(t))||n();break;case"co-option-list":customElements.get(e(t))||h();break;case"co-tooltip":customElements.get(e(t))||p()}}))}u();const m=d,f=u;export{m as CoAutocomplete,f as defineCustomElement}
1
+ import{t as e,p as t,H as o,c,h as a}from"./index.js";import{R as i}from"./p-CWneqh4n.js";import{d as s}from"./p-Dcg4krSX.js";import{d as r}from"./p-Du_CgT5E.js";import{d as l}from"./p-DNJAIVfI.js";import{d as n}from"./p-BH184F0X.js";import{d as h}from"./p-Dh8ffSjK.js";import{d as p}from"./p-Bsh0JMGf.js";const d=t(class extends o{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.coSearch=c(this,"coSearch",7),this.coChange=c(this,"coChange",7),this.coClear=c(this,"coClear",7),this.required=!1,this.placeholder="Search…",this.disabled=!1,this.clearable=!0,this.layout="vertical",this.size="md",this.status="default",this.options="[]",this.value="",this.multiple=!1,this.loading=!1,this.minChars=1,this.searchDebounce=300,this.emptyMessage="No results",this.isOpen=!1,this.query="",this.focused=!1,this.handleInput=e=>{const t=e.target.value;this.query=t,this.debounceTimer&&clearTimeout(this.debounceTimer),t.length>=this.minChars?(this.debounceTimer=setTimeout((()=>this.coSearch.emit(t)),this.searchDebounce),this.isOpen=!0):this.isOpen=!1},this.handleFocus=()=>{this.focused=!0,this.query.length>=this.minChars&&this.parsedOptions.length>0&&(this.isOpen=!0)},this.handleClear=e=>{var t;e.stopPropagation(),this.query="",this.value=this.multiple?"[]":"",this.isOpen=!1,this.coClear.emit(),this.coChange.emit({value:this.multiple?[]:"",item:null}),null===(t=this.inputEl)||void 0===t||t.focus()},this.handleChipRemove=e=>{const t=this.selectedValues.filter((t=>t!==e));this.value=JSON.stringify(t),this.coChange.emit({value:t,item:{_id:e,label:e}})},this.handleListChange=e=>{if(null==e.value)return this.value=this.multiple?"[]":"",this.query="",this.isOpen=!1,void this.coChange.emit({value:null,item:null});this.multiple?(this.value=JSON.stringify(e.value),this.coChange.emit({value:e.value,item:e.item})):(this.value=e.value,this.query=e.item.label,this.isOpen=!1,this.coChange.emit({value:e.value,item:e.item}))},this.handleInputKeyDown=async e=>{"Escape"!==e.key?this.isOpen&&this.optionListEl&&("ArrowDown"!==e.key&&"ArrowUp"!==e.key&&"Enter"!==e.key||(e.preventDefault(),await this.optionListEl.handleKey(e))):this.isOpen=!1}}get parsedOptions(){let e=this.options;if("string"==typeof e)try{e=JSON.parse(e)}catch(e){return[]}return Array.isArray(e)?e.map((e=>"string"==typeof e?{label:e,value:e}:e)):[]}get selectedValues(){if(this.multiple){if("string"==typeof this.value)try{return JSON.parse(this.value)}catch(e){return this.value?[this.value]:[]}return this.value}return"string"==typeof this.value&&this.value?[this.value]:[]}get hasValue(){return this.selectedValues.length>0}get statusIcon(){return{error:"warning-circle",success:"check-circle",warning:"warning",info:"info"}[this.status]||null}componentWillLoad(){this.syncQueryFromValue()}onOptionsChange(){this.query.length>=this.minChars&&(this.isOpen=!0),this.focused||this.syncQueryFromValue()}onValueChange(){this.syncQueryFromValue()}syncQueryFromValue(){if(!this.multiple&&"string"==typeof this.value&&this.value){const e=this.parsedOptions.find((e=>e.value===this.value));this.query=e?e.label:this.value}else this.multiple||this.value||(this.query="")}handleDocumentClick(e){this.el.contains(e.target)||(this.isOpen=!1,this.focused=!1)}render(){const e=this.parsedOptions,t=this.selectedValues;return a("div",{key:"0fad340e2daa5ee4b56e28325d5eaec4d60d7188",class:{"co-autocomplete":!0,"co-autocomplete--disabled":this.disabled,"co-autocomplete--focused":this.focused,["co-autocomplete--"+this.size]:!0,["co-autocomplete--"+this.status]:"default"!==this.status}},(this.label||this.secondaryLabel)&&a("div",{key:"a724b6267fd6dbe267725f3619677e043843c96c",class:"co-autocomplete__labels"},this.label&&a("label",{key:"45c176c82f0967c6ff0f1f323d36834d247f8ac6",class:"co-autocomplete__label"},this.label,a(i,{key:"52940ac88fa7ba5f2b662990a66b0ad84d728ecc",required:this.required})),this.secondaryLabel&&a("span",{key:"5eac2ccf44d59067f7ca070561c18c9b45b4cfc1",class:"co-autocomplete__secondary-label"},this.secondaryLabel)),a("div",{key:"4837e011ac491a34efdfb84bd80f2baa52c4f451",class:"co-autocomplete__field"},this.iconLeft&&a("co-icon",{key:"1a46dba433dec3b8dec82b6d2e93cee0575f5673",name:this.iconLeft,size:16,class:"co-autocomplete__icon"}),this.multiple&&t.length>0&&a("div",{key:"95054c8e5ec371ba04f6fa5938d74babffef473f",class:"co-autocomplete__chips"},t.map((e=>{const t=this.parsedOptions.find((t=>t.value===e));return a("co-chip",{label:t?t.label:e,size:"small",removable:!0,onCoRemove:()=>this.handleChipRemove(e)})}))),a("input",{key:"016887bf4fa1872bafd1ba60a7fb960ca89e8b76",ref:e=>this.inputEl=e,class:"co-autocomplete__input",type:"text",value:this.query,placeholder:this.placeholder,disabled:this.disabled,onInput:this.handleInput,onFocus:this.handleFocus,onKeyDown:this.handleInputKeyDown}),this.loading&&a("div",{key:"eac7e752a8d8f18b866c5fe4283707e851355328",class:"co-autocomplete__spinner"}),this.clearable&&(this.hasValue||this.query)&&!this.disabled&&a("button",{key:"aac8dcfced13e8abf3bb6beb0fa56124814804ea",class:"co-autocomplete__clear",type:"button",tabIndex:-1,onClick:this.handleClear,"aria-label":"Clear"},a("co-icon",{key:"8a5605cfe09eb17ca65c9fd97662ceec893431b7",name:"x-circle",size:16,weight:"fill"}))),this.isOpen&&a("div",{key:"7263c42e73656db3ee8d1c1c2f5f5cd941b0e40b",class:"co-autocomplete__dropdown"},a("co-option-list",{key:"32071562943c992b0013451c8b89da20590554cf",ref:e=>this.optionListEl=e,items:JSON.stringify(e.map((e=>({_id:e.value,label:e.label,icon:e.icon,disabled:e.disabled})))),value:this.multiple?JSON.stringify(this.selectedValues):this.selectedValues[0]||"",multiple:this.multiple,selectedAffordance:"check",virtual:!0,loading:this.loading,emptyMessage:this.emptyMessage,onCoChange:e=>this.handleListChange(e.detail)})),this.helperText&&a("div",{key:"47ba4956d829c700700a7509e8fd2fc58dd6e4d9",class:"co-autocomplete__helper co-autocomplete__helper--"+this.status},this.statusIcon&&a("co-icon",{key:"b4363e83a7258241d23f4911c1f6fb352330c19d",name:this.statusIcon,size:14,weight:"fill",class:"co-autocomplete__helper-icon"}),a("span",{key:"952777047bd27a6604daea9531f26ce5aab0c475",class:"co-autocomplete__helper-text"},this.helperText)))}get el(){return this}static get watchers(){return{options:[{onOptionsChange:0}],value:[{onValueChange:0}]}}static get style(){return":host{display:block;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14);letter-spacing:var(--co-font-letter-spacing-body);line-height:1;position:relative}.co-autocomplete{display:flex;flex-direction:column;gap:var(--co-spacing-sm2);position:relative}.co-autocomplete__labels{display:flex;align-items:center;justify-content:space-between;padding:0 var(--co-spacing-xs);gap:var(--co-spacing-sm2)}.co-autocomplete__label{color:var(--co-semantic-text-secondary);font-size:var(--co-font-size-14);font-weight:400;line-height:1;white-space:nowrap;cursor:default}.co-autocomplete__secondary-label{color:var(--co-semantic-text-muted);font-size:var(--co-font-size-14);font-weight:400;line-height:1;white-space:nowrap;text-align:right}.co-autocomplete--disabled .co-autocomplete__label,.co-autocomplete--disabled .co-autocomplete__secondary-label{color:var(--co-semantic-text-disabled)}.co-autocomplete__field{display:flex;align-items:center;flex-wrap:wrap;gap:var(--co-spacing-xs);padding:var(--co-spacing-sm2) var(--co-spacing-md);background:var(--co-semantic-surface-page);border:1px solid var(--co-semantic-border-field);border-radius:var(--co-border-radius-xs);min-height:40px;box-sizing:border-box;transition:border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-autocomplete--s .co-autocomplete__field{min-height:28px;padding:var(--co-spacing-xxs) var(--co-spacing-sm);font-size:var(--co-font-size-12)}.co-autocomplete--sm .co-autocomplete__field{min-height:32px;padding:var(--co-spacing-xs) var(--co-spacing-sm);font-size:var(--co-font-size-14)}.co-autocomplete--lg .co-autocomplete__field{min-height:48px;padding:var(--co-spacing-sm) var(--co-spacing-lg);font-size:var(--co-font-size-16)}.co-autocomplete--focused .co-autocomplete__field{border-color:var(--co-semantic-border-focus);box-shadow:0 0 0 2px var(--co-semantic-border-focus-ring)}.co-autocomplete--disabled .co-autocomplete__field{background:var(--co-semantic-surface-disabled);border-color:transparent;cursor:not-allowed}.co-autocomplete--error .co-autocomplete__field{border-color:var(--co-semantic-status-error)}.co-autocomplete--success .co-autocomplete__field{border-color:var(--co-semantic-status-success)}.co-autocomplete--warning .co-autocomplete__field{border-color:var(--co-color-status-review)}.co-autocomplete--info .co-autocomplete__field{border-color:var(--co-semantic-status-info)}.co-autocomplete__icon{flex-shrink:0;color:var(--co-semantic-text-muted);display:flex;align-items:center}.co-autocomplete__chips{display:flex;flex-wrap:wrap;gap:var(--co-spacing-xs)}.co-autocomplete__input{flex:1;min-width:80px;border:none;background:transparent;color:var(--co-semantic-text-default);font-family:inherit;font-size:inherit;font-weight:400;line-height:1;padding:0;outline:none}.co-autocomplete__input::placeholder{color:var(--co-semantic-text-muted)}.co-autocomplete--disabled .co-autocomplete__input{color:var(--co-semantic-text-disabled);cursor:not-allowed}.co-autocomplete__clear{flex-shrink:0;display:flex;align-items:center;padding:0;margin:0;border:none;background:transparent;cursor:pointer;color:var(--co-semantic-text-muted);transition:color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-autocomplete__clear:hover{color:var(--co-semantic-text-default)}.co-autocomplete__spinner{width:16px;height:16px;border:2px solid var(--co-semantic-border-subtle);border-top-color:var(--co-semantic-text-default);border-radius:var(--co-border-radius-full);animation:co-spin 0.6s linear infinite;flex-shrink:0}@keyframes co-spin{to{transform:rotate(360deg)}}.co-autocomplete__dropdown{position:absolute;top:100%;left:0;right:0;z-index:100;margin-top:var(--co-spacing-xs);background:var(--co-semantic-surface-secondary);border:1px solid var(--co-semantic-border-subtle);border-radius:var(--co-border-radius-sm, 12px);box-shadow:0 4px 16px rgba(31, 28, 27, 0.08);overflow:hidden;}.co-autocomplete__helper{display:flex;align-items:center;gap:var(--co-spacing-xs);padding:0 var(--co-spacing-xs)}.co-autocomplete__helper-icon{flex-shrink:0;display:flex;align-items:center}.co-autocomplete__helper-text{color:var(--co-semantic-text-muted);font-size:var(--co-font-size-14);font-weight:400;line-height:1}.co-autocomplete__helper--error .co-autocomplete__helper-icon,.co-autocomplete__helper--error .co-autocomplete__helper-text{color:var(--co-semantic-status-error)}.co-autocomplete__helper--success .co-autocomplete__helper-icon,.co-autocomplete__helper--success .co-autocomplete__helper-text{color:var(--co-semantic-status-success)}.co-autocomplete__helper--warning .co-autocomplete__helper-icon,.co-autocomplete__helper--warning .co-autocomplete__helper-text{color:var(--co-color-status-review)}.co-autocomplete__helper--info .co-autocomplete__helper-icon,.co-autocomplete__helper--info .co-autocomplete__helper-text{color:var(--co-semantic-status-info)}:host([layout='horizontal']) .co-autocomplete{display:grid;grid-template-columns:var(--co-field-label-width, max-content) 1fr;align-items:start;column-gap:var(--co-spacing-md);row-gap:var(--co-spacing-sm2)}:host([layout='horizontal']) .co-autocomplete__labels{grid-column:1;grid-row:1;padding-top:var(--co-spacing-sm2);min-width:0}:host([layout='horizontal']) .co-autocomplete__label{white-space:normal}:host([layout='horizontal']) .co-autocomplete>:not(.co-autocomplete__labels){grid-column:2;min-width:0}.co-field-required{margin-left:2px;color:var(--co-color-status-error)}.co-field-required__caption{margin-left:4px;color:var(--co-semantic-text-muted);font-size:var(--co-font-size-12);font-weight:400}.co-field-required__caption::before{content:var(--co-field-required-text, ' (required)')}"}},[1,"co-autocomplete",{label:[1],required:[4],secondaryLabel:[1,"secondary-label"],placeholder:[1],disabled:[4],iconLeft:[1,"icon-left"],clearable:[4],helperText:[1,"helper-text"],layout:[513],size:[513],status:[1],options:[1],value:[1025],multiple:[4],loading:[4],minChars:[2,"min-chars"],searchDebounce:[2,"search-debounce"],emptyMessage:[1,"empty-message"],isOpen:[32],query:[32],focused:[32]},[[4,"click","handleDocumentClick"]],{options:[{onOptionsChange:0}],value:[{onValueChange:0}]}]);function u(){"undefined"!=typeof customElements&&["co-autocomplete","co-avatar","co-chip","co-icon","co-loader","co-option-list","co-tooltip"].forEach((t=>{switch(t){case"co-autocomplete":customElements.get(e(t))||customElements.define(e(t),d);break;case"co-avatar":customElements.get(e(t))||s();break;case"co-chip":customElements.get(e(t))||r();break;case"co-icon":customElements.get(e(t))||l();break;case"co-loader":customElements.get(e(t))||n();break;case"co-option-list":customElements.get(e(t))||h();break;case"co-tooltip":customElements.get(e(t))||p()}}))}u();const m=d,f=u;export{m as CoAutocomplete,f as defineCustomElement}