@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.
- package/custom-elements.json +44 -22
- package/dist/cjs/co-chip_2.cjs.entry.js +21 -2
- package/dist/cjs/co-number-field.cjs.entry.js +25 -4
- package/dist/cjs/co-overlay.cjs.entry.js +34 -3
- package/dist/cjs/co-popover.cjs.entry.js +16 -2
- package/dist/cjs/cobalt.cjs.js +1 -1
- package/dist/cjs/index-MDAnKsze.js +4 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cobalt/cobalt.esm.js +1 -1
- package/dist/cobalt/p-07416e31.entry.js +1 -0
- package/dist/cobalt/p-1d3a79af.entry.js +1 -0
- package/dist/cobalt/p-8e05b979.entry.js +1 -0
- package/dist/cobalt/{p-410bee4d.entry.js → p-b0762fd8.entry.js} +1 -1
- package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
- package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
- package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
- package/dist/collection/components/co-combobox/co-combobox.js +1 -1
- package/dist/collection/components/co-command-search/co-command-search.js +1 -1
- package/dist/collection/components/co-data-table/co-data-table.js +1 -1
- package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +2 -2
- package/dist/collection/components/co-number-field/co-number-field.js +25 -4
- package/dist/collection/components/co-option-list/co-option-list.js +39 -3
- package/dist/collection/components/co-overlay/backdropDismiss.js +12 -0
- package/dist/collection/components/co-overlay/co-overlay.js +22 -3
- package/dist/collection/components/co-popover/co-popover.js +17 -3
- package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
- package/dist/collection/components/co-ref-field/co-ref-field.js +4 -4
- package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
- package/dist/collection/components/co-select/co-select.js +1 -1
- package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
- package/dist/collection/components/co-toast/co-toast.js +2 -2
- package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
- package/dist/components/co-autocomplete.js +1 -1
- package/dist/components/co-color-picker.js +1 -1
- package/dist/components/co-combobox.js +1 -1
- package/dist/components/co-command-search.js +1 -1
- package/dist/components/co-date-picker.js +1 -1
- package/dist/components/co-date-range-picker.js +1 -1
- package/dist/components/co-date-range.js +1 -1
- package/dist/components/co-date-time-picker.js +1 -1
- package/dist/components/co-drawer.js +1 -1
- package/dist/components/co-menu-item.js +1 -1
- package/dist/components/co-menu.js +1 -1
- package/dist/components/co-modal.js +1 -1
- package/dist/components/co-number-field.js +1 -1
- package/dist/components/co-option-list.js +1 -1
- package/dist/components/co-overlay.js +1 -1
- package/dist/components/co-popover.js +1 -1
- package/dist/components/co-ref-field.js +1 -1
- package/dist/components/co-select.js +1 -1
- package/dist/components/{p-DrTRB8Ev.js → p-B56LX2SH.js} +1 -1
- package/dist/components/p-BJh68Jqe.js +1 -0
- package/dist/components/{p-DRP8D9ro.js → p-D9T7zKeL.js} +1 -1
- package/dist/components/p-Dh8ffSjK.js +1 -0
- package/dist/components/{p-DxtNejr2.js → p-P4HlMBlL.js} +1 -1
- package/dist/esm/co-chip_2.entry.js +21 -2
- package/dist/esm/co-number-field.entry.js +25 -4
- package/dist/esm/co-overlay.entry.js +34 -3
- package/dist/esm/co-popover.entry.js +16 -2
- package/dist/esm/cobalt.js +1 -1
- package/dist/esm/index-DH5lfRNj.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/co-number-field/co-number-field.d.ts +7 -0
- package/dist/types/components/co-option-list/co-option-list.d.ts +7 -0
- package/dist/types/components/co-overlay/backdropDismiss.d.ts +10 -0
- package/dist/types/components/co-overlay/co-overlay.d.ts +4 -0
- package/dist/types/components/co-popover/co-popover.d.ts +2 -0
- package/dist/types/components.d.ts +4 -3
- package/package.json +4 -4
- package/dist/cobalt/p-2a30c143.entry.js +0 -1
- package/dist/cobalt/p-39dc4ec8.entry.js +0 -1
- package/dist/cobalt/p-be34e447.entry.js +0 -1
- package/dist/components/p-CBTGN490.js +0 -1
- 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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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": "
|
|
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
|
-
|
|
55
|
-
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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}
|