@signal24/vue-foundation 4.19.3 → 4.19.5
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.
|
@@ -27,6 +27,7 @@ declare const _default: <T, V = T>(__VLS_props: NonNullable<Awaited<typeof __VLS
|
|
|
27
27
|
debug?: boolean;
|
|
28
28
|
required?: boolean;
|
|
29
29
|
showCreateTextOnNewItem?: boolean;
|
|
30
|
+
autoNext?: boolean;
|
|
30
31
|
}> & import("vue").PublicProps;
|
|
31
32
|
expose(exposed: import("vue").ShallowUnwrapRef<{
|
|
32
33
|
addRemoteOption: (option: T) => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var Tt = Object.defineProperty;
|
|
2
2
|
var St = (e, t, n) => t in e ? Tt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
|
|
3
3
|
var O = (e, t, n) => St(e, typeof t != "symbol" ? t + "" : t, n);
|
|
4
|
-
import { defineComponent as N, ref as T, computed as M, watch as A, onMounted as V, openBlock as E, createElementBlock as b, createElementVNode as F, toDisplayString as U, withDirectives as Q, createCommentVNode as D, Fragment as J, renderList as he, vModelSelect as
|
|
4
|
+
import { defineComponent as N, ref as T, computed as M, watch as A, onMounted as V, openBlock as E, createElementBlock as b, createElementVNode as F, toDisplayString as U, withDirectives as Q, createCommentVNode as D, Fragment as J, renderList as he, vModelSelect as xt, getCurrentInstance as pe, withModifiers as ye, normalizeStyle as Ct, normalizeClass as $, renderSlot as G, reactive as Lt, h as ee, Teleport as Mt, markRaw as It, onBeforeUnmount as ge, resolveDirective as Ht, createBlock as qe, createSlots as Ot, withCtx as ue, createTextVNode as ce, vModelText as At, onActivated as ze, onDeactivated as Ye } from "vue";
|
|
5
5
|
import { compact as Ke, debounce as Ft, isEqual as Xe, startCase as Dt, upperFirst as Bt, cloneDeep as $t, remove as Vt, last as _t } from "lodash";
|
|
6
6
|
import { escapeHtml as Nt } from "@vue/shared";
|
|
7
7
|
import { escapeHtml as Uo } from "@vue/shared";
|
|
@@ -49,7 +49,7 @@ const Ut = {
|
|
|
49
49
|
}, U(k), 9, Pt);
|
|
50
50
|
}), 128))
|
|
51
51
|
], 512)), [
|
|
52
|
-
[
|
|
52
|
+
[xt, u.value]
|
|
53
53
|
]) : (E(), b("select", Ut, [
|
|
54
54
|
F("option", null, U(n.loadingText || "Loading..."), 1)
|
|
55
55
|
]));
|
|
@@ -76,14 +76,14 @@ const Ut = {
|
|
|
76
76
|
if (f.y === "center")
|
|
77
77
|
c = w.top + w.height / 2 - m.height / 2, r.push("anchored-center-y");
|
|
78
78
|
else {
|
|
79
|
-
const
|
|
80
|
-
c =
|
|
79
|
+
const C = (w.bottom + m.height < window.innerHeight || f.y === "below") && f.y !== "above";
|
|
80
|
+
c = C ? w.bottom : w.top - m.height, r.push(C ? "anchored-top" : "anchored-bottom");
|
|
81
81
|
}
|
|
82
82
|
if (f.x === "center")
|
|
83
83
|
S = w.left + w.width / 2 - m.width / 2, r.push("anchored-center-x");
|
|
84
84
|
else {
|
|
85
|
-
const
|
|
86
|
-
S =
|
|
85
|
+
const C = (w.left + m.width < window.innerWidth || f.x === "left") && f.x !== "right";
|
|
86
|
+
S = C ? w.left : w.right - m.width, r.push(C ? "anchored-left" : "anchored-right");
|
|
87
87
|
}
|
|
88
88
|
return {
|
|
89
89
|
styles: {
|
|
@@ -104,7 +104,7 @@ const Ut = {
|
|
|
104
104
|
}, 10);
|
|
105
105
|
}), (g, k) => (E(), b("div", {
|
|
106
106
|
class: $(["vf-overlay-anchor", i.value]),
|
|
107
|
-
style:
|
|
107
|
+
style: Ct(o.value),
|
|
108
108
|
onClick: ye(d, ["stop"])
|
|
109
109
|
}, [
|
|
110
110
|
G(g.$slots, "default")
|
|
@@ -456,7 +456,7 @@ function dn(e, t, n) {
|
|
|
456
456
|
const o = e.random || (e.rng || un)();
|
|
457
457
|
return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, an(o);
|
|
458
458
|
}
|
|
459
|
-
function
|
|
459
|
+
function xo(e) {
|
|
460
460
|
return e.replace(/\n/g, "<br>");
|
|
461
461
|
}
|
|
462
462
|
function fn(e) {
|
|
@@ -469,7 +469,7 @@ function vn(e) {
|
|
|
469
469
|
function mn(e, t = 1) {
|
|
470
470
|
return "$" + (Number(e) / t).toFixed(3).replace(/0$/, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
471
471
|
}
|
|
472
|
-
function
|
|
472
|
+
function Co() {
|
|
473
473
|
return dn();
|
|
474
474
|
}
|
|
475
475
|
const hn = ["disabled", "placeholder", "required"], pn = {
|
|
@@ -504,7 +504,8 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
504
504
|
optionsListId: {},
|
|
505
505
|
debug: { type: Boolean },
|
|
506
506
|
required: { type: Boolean },
|
|
507
|
-
showCreateTextOnNewItem: { type: Boolean }
|
|
507
|
+
showCreateTextOnNewItem: { type: Boolean },
|
|
508
|
+
autoNext: { type: Boolean }
|
|
508
509
|
},
|
|
509
510
|
emits: ["optionsLoaded", "update:modelValue"],
|
|
510
511
|
setup(e, { expose: t, emit: n }) {
|
|
@@ -512,12 +513,12 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
512
513
|
t({
|
|
513
514
|
addRemoteOption: kt
|
|
514
515
|
});
|
|
515
|
-
const a = T(), d = T(), g = T(), k = T(!1), f = T(!1), w = T([]), m = T(!1), r = T(""), c = T(null), S = T(null), I = T(!1),
|
|
516
|
+
const a = T(), d = T(), g = T(), k = T(!1), f = T(!1), w = T([]), m = T(!1), r = T(""), c = T(null), S = T(null), I = T(!1), C = T(null), Se = T(!1), at = M(() => l.showCreateTextOnNewItem ?? !0), rt = M(() => l.prependOptions ?? []), ut = M(() => l.appendOptions ?? []), xe = M(() => !!l.disabled), ct = M(() => !f.value && l.preload ? "Loading..." : l.nullTitle ? l.nullTitle : l.placeholder || ""), dt = M(() => l.noResultsText || "No options match your search."), W = M(() => l.valueExtractor ? l.valueExtractor : l.valueField ? (s) => s[l.valueField] : null), j = M(() => l.keyExtractor ? l.keyExtractor : l.keyField ? (s) => String(s[l.keyField]) : W.value ? (s) => String(W.value(s)) : null), se = M(() => l.formatter ? l.formatter : l.labelField ? (s) => String(s[l.labelField]) : (s) => String(s)), Ce = M(() => [...rt.value, ...w.value, ...ut.value]), ie = M(() => Ce.value.map((s, v) => {
|
|
516
517
|
var Ae, Fe;
|
|
517
|
-
const h = se.value(s), p = (Ae = l.subtitleFormatter) == null ? void 0 : Ae.call(l, s), y = h ? h.trim().toLowerCase() : "",
|
|
518
|
+
const h = se.value(s), p = (Ae = l.subtitleFormatter) == null ? void 0 : Ae.call(l, s), y = h ? h.trim().toLowerCase() : "", x = p ? p.trim().toLowerCase() : "", Z = [];
|
|
518
519
|
return l.searchFields ? l.searchFields.forEach((De) => {
|
|
519
520
|
s[De] && Z.push(String(s[De]).toLowerCase());
|
|
520
|
-
}) : (Z.push(y),
|
|
521
|
+
}) : (Z.push(y), x && Z.push(x)), {
|
|
521
522
|
key: ((Fe = j.value) == null ? void 0 : Fe.call(j, s)) ?? String(v),
|
|
522
523
|
title: h,
|
|
523
524
|
subtitle: p,
|
|
@@ -532,13 +533,13 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
532
533
|
s = s.filter((y) => y.searchContent.includes(v));
|
|
533
534
|
const h = Nt(r.value).replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"), p = new RegExp(`(${h})`, "ig");
|
|
534
535
|
s = s.map((y) => {
|
|
535
|
-
var
|
|
536
|
+
var x;
|
|
536
537
|
return {
|
|
537
538
|
...y,
|
|
538
539
|
title: y.title.replace(p, "<mark>$1</mark>"),
|
|
539
|
-
subtitle: (
|
|
540
|
+
subtitle: (x = y.subtitle) == null ? void 0 : x.replace(p, "<mark>$1</mark>")
|
|
540
541
|
};
|
|
541
|
-
}), Se.value && (s.find((
|
|
542
|
+
}), Se.value && (s.find((x) => x.searchContent === v) !== void 0 || s.push({
|
|
542
543
|
key: i,
|
|
543
544
|
title: at.value ? "Create <strong>" + r.value.trim() + "</strong>..." : r.value.trim()
|
|
544
545
|
}));
|
|
@@ -562,7 +563,7 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
562
563
|
I.value ? setTimeout(wt, 0) : (m.value = !1, r.value = S.value || "", g.value && (g.value.style.visibility = "hidden"));
|
|
563
564
|
}), A(H, () => {
|
|
564
565
|
var s;
|
|
565
|
-
l.modelValue && !c.value && re(), (
|
|
566
|
+
l.modelValue && !c.value && re(), (C.value || m.value) && !H.value.find((v) => v.key == C.value) && (C.value = ((s = H.value[0]) == null ? void 0 : s.key) ?? o);
|
|
566
567
|
}), V(async () => {
|
|
567
568
|
Se.value = l.onCreateItem !== void 0, l.options ? (w.value = [...l.options], f.value = !0) : l.preload && await Le(), re(), A(c, () => {
|
|
568
569
|
c.value !== l.modelValue && u(
|
|
@@ -600,7 +601,7 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
600
601
|
return s.preventDefault(), ae(s.key == "Home" ? -Number.MAX_SAFE_INTEGER : Number.MAX_SAFE_INTEGER);
|
|
601
602
|
if (s.key == "Enter") {
|
|
602
603
|
s.preventDefault();
|
|
603
|
-
const v = H.value.find((h) => h.key ==
|
|
604
|
+
const v = H.value.find((h) => h.key == C.value);
|
|
604
605
|
if (v) return He(v);
|
|
605
606
|
}
|
|
606
607
|
if (s.key === "Delete" || s.key === "Backspace") {
|
|
@@ -617,7 +618,7 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
617
618
|
}, 0);
|
|
618
619
|
}
|
|
619
620
|
function ht(s) {
|
|
620
|
-
c.value ?
|
|
621
|
+
c.value ? C.value = pt(c.value) : l.nullTitle && (C.value = o);
|
|
621
622
|
}
|
|
622
623
|
function pt(s) {
|
|
623
624
|
var v;
|
|
@@ -627,7 +628,7 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
627
628
|
const v = H.value.find((y) => y.ref === s);
|
|
628
629
|
if (v)
|
|
629
630
|
return v;
|
|
630
|
-
const h = l.keyExtractor ? (y,
|
|
631
|
+
const h = l.keyExtractor ? (y, x) => l.keyExtractor(y) === l.keyExtractor(x) : Xe, p = H.value.find((y) => h(y.ref, s));
|
|
631
632
|
return p || null;
|
|
632
633
|
}
|
|
633
634
|
function gt() {
|
|
@@ -639,27 +640,27 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
639
640
|
}
|
|
640
641
|
function Et() {
|
|
641
642
|
const s = a.value.getBoundingClientRect(), v = s.y + s.height + 2, h = s.x, p = g.value, y = window.getComputedStyle(a.value);
|
|
642
|
-
for (let
|
|
643
|
-
/^(font|text)/.test(
|
|
643
|
+
for (let x in y)
|
|
644
|
+
/^(font|text)/.test(x) && (p.style[x] = y[x]);
|
|
644
645
|
if (p.style.top = v + "px", p.style.left = h + "px", p.style.minWidth = s.width + "px", !y.maxHeight || y.maxHeight == "none") {
|
|
645
|
-
const
|
|
646
|
-
p.style.maxHeight =
|
|
646
|
+
const x = window.innerHeight - v - 12;
|
|
647
|
+
p.style.maxHeight = x + "px";
|
|
647
648
|
}
|
|
648
649
|
p.style.visibility = "visible", document.body.appendChild(p), setTimeout(Ie, 0);
|
|
649
650
|
}
|
|
650
651
|
function Ie() {
|
|
651
|
-
if (!f.value || !
|
|
652
|
-
const s = H.value.findIndex((p) => p.key ==
|
|
652
|
+
if (!f.value || !C.value) return;
|
|
653
|
+
const s = H.value.findIndex((p) => p.key == C.value), v = g.value, h = v == null ? void 0 : v.querySelectorAll(".option")[s];
|
|
653
654
|
h && (v.scrollTop = h.offsetTop);
|
|
654
655
|
}
|
|
655
656
|
function bt(s) {
|
|
656
|
-
|
|
657
|
+
C.value = s ? s.key : null;
|
|
657
658
|
}
|
|
658
659
|
function ae(s) {
|
|
659
|
-
const v = H.value.findIndex((
|
|
660
|
+
const v = H.value.findIndex((x) => x.key == C.value);
|
|
660
661
|
let h = v + s;
|
|
661
662
|
if (h < 0 ? h = 0 : h >= H.value.length && (h = H.value.length - 1), v == h) return;
|
|
662
|
-
|
|
663
|
+
C.value = H.value[h].key;
|
|
663
664
|
const p = g.value, y = p == null ? void 0 : p.querySelectorAll(".option")[h];
|
|
664
665
|
y && (y.offsetTop < p.scrollTop ? p.scrollTop = y.offsetTop : y.offsetTop + y.offsetHeight > p.scrollTop + p.clientHeight && (p.scrollTop = y.offsetTop + y.offsetHeight - p.clientHeight));
|
|
665
666
|
}
|
|
@@ -671,39 +672,40 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
671
672
|
const p = r.value.trim();
|
|
672
673
|
r.value = "", c.value = null, S.value = null, (v = l.onCreateItem) == null || v.call(l, p);
|
|
673
674
|
} else {
|
|
674
|
-
const y = ie.value.find((
|
|
675
|
+
const y = ie.value.find((x) => x.key == s.key).ref;
|
|
675
676
|
c.value = y, S.value = se.value(y), r.value = S.value || "";
|
|
676
677
|
}
|
|
677
678
|
(h = d.value) == null || h.blur(), Oe();
|
|
678
679
|
}
|
|
679
680
|
function re() {
|
|
680
|
-
l.modelValue ? (c.value = W.value ?
|
|
681
|
+
l.modelValue ? (c.value = W.value ? Ce.value.find((s) => l.modelValue === W.value(s)) : l.modelValue, S.value = c.value ? se.value(c.value) : null, r.value = S.value || "") : (c.value = null, S.value = null, r.value = "");
|
|
681
682
|
}
|
|
682
683
|
function kt(s) {
|
|
683
684
|
w.value.unshift(s);
|
|
684
685
|
}
|
|
685
686
|
function Oe() {
|
|
686
687
|
var y;
|
|
688
|
+
if (!l.autoNext) return;
|
|
687
689
|
let s = (y = a.value) == null ? void 0 : y.parentElement;
|
|
688
690
|
for (; s && s.tagName !== "FORM" && s.tagName !== "BODY"; )
|
|
689
691
|
s = s.parentElement;
|
|
690
692
|
if (!s) return;
|
|
691
693
|
const v = s.querySelectorAll('input, button, textarea, select, [tabindex]:not([tabindex="-1"])');
|
|
692
694
|
if (!v) return;
|
|
693
|
-
const h = Array.from(v).findIndex((
|
|
695
|
+
const h = Array.from(v).findIndex((x) => x === d.value), p = v[h + 1];
|
|
694
696
|
p && setTimeout(() => p.focus(), 0);
|
|
695
697
|
}
|
|
696
698
|
return (s, v) => (E(), b("div", {
|
|
697
699
|
ref_key: "el",
|
|
698
700
|
ref: a,
|
|
699
|
-
class: $(["vf-smart-select", { disabled:
|
|
701
|
+
class: $(["vf-smart-select", { disabled: xe.value, open: I.value }])
|
|
700
702
|
}, [
|
|
701
703
|
Q(F("input", {
|
|
702
704
|
ref_key: "searchField",
|
|
703
705
|
ref: d,
|
|
704
706
|
"onUpdate:modelValue": v[0] || (v[0] = (h) => r.value = h),
|
|
705
707
|
type: "text",
|
|
706
|
-
disabled:
|
|
708
|
+
disabled: xe.value,
|
|
707
709
|
class: $({ nullable: !!s.nullTitle }),
|
|
708
710
|
placeholder: ct.value,
|
|
709
711
|
required: s.required,
|
|
@@ -724,7 +726,7 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
724
726
|
(E(!0), b(J, null, he(H.value, (h) => (E(), b("div", {
|
|
725
727
|
key: String(h.key),
|
|
726
728
|
class: $(["option", {
|
|
727
|
-
highlighted:
|
|
729
|
+
highlighted: C.value === h.key
|
|
728
730
|
}]),
|
|
729
731
|
onMousemove: (p) => bt(h),
|
|
730
732
|
onMousedown: (p) => He(h)
|
|
@@ -773,17 +775,18 @@ const hn = ["disabled", "placeholder", "required"], pn = {
|
|
|
773
775
|
"onUpdate:modelValue": d[0] || (d[0] = (g) => u.value = g),
|
|
774
776
|
options: o.value,
|
|
775
777
|
formatter: i.value,
|
|
776
|
-
"null-title": a.nullTitle
|
|
777
|
-
|
|
778
|
+
"null-title": a.nullTitle,
|
|
779
|
+
placeholder: a.placeholder
|
|
780
|
+
}, null, 8, ["modelValue", "options", "formatter", "null-title", "placeholder"]));
|
|
778
781
|
}
|
|
779
782
|
});
|
|
780
783
|
function Mo() {
|
|
781
784
|
return T();
|
|
782
785
|
}
|
|
783
|
-
const Tn = { class: "content" }, Sn = { class: "message" },
|
|
786
|
+
const Tn = { class: "content" }, Sn = { class: "message" }, xn = {
|
|
784
787
|
key: 0,
|
|
785
788
|
class: "close"
|
|
786
|
-
},
|
|
789
|
+
}, Cn = {
|
|
787
790
|
key: 0,
|
|
788
791
|
class: "progress-bar"
|
|
789
792
|
}, Ln = /* @__PURE__ */ N({
|
|
@@ -815,9 +818,9 @@ const Tn = { class: "content" }, Sn = { class: "message" }, Cn = {
|
|
|
815
818
|
}, [
|
|
816
819
|
F("div", Tn, [
|
|
817
820
|
F("div", Sn, U(i.message), 1),
|
|
818
|
-
i.disableClose ? D("", !0) : (E(), b("div",
|
|
821
|
+
i.disableClose ? D("", !0) : (E(), b("div", xn, "x"))
|
|
819
822
|
]),
|
|
820
|
-
i.durationSecs !== null ? (E(), b("div",
|
|
823
|
+
i.durationSecs !== null ? (E(), b("div", Cn, [
|
|
821
824
|
F("div", {
|
|
822
825
|
ref_key: "progressInnerEl",
|
|
823
826
|
ref: o,
|
|
@@ -1262,7 +1265,7 @@ export {
|
|
|
1262
1265
|
To as maskComponent,
|
|
1263
1266
|
Gt as maskEl,
|
|
1264
1267
|
Qt as maskForm,
|
|
1265
|
-
|
|
1268
|
+
xo as nl2br,
|
|
1266
1269
|
Bo as nullifyEmptyInputs,
|
|
1267
1270
|
Ee as presentOverlay,
|
|
1268
1271
|
te as removeOverlayInjection,
|
|
@@ -1281,6 +1284,6 @@ export {
|
|
|
1281
1284
|
Qe as unmaskForm,
|
|
1282
1285
|
Vo as useInfiniteScroll,
|
|
1283
1286
|
_o as useResizeWatcher,
|
|
1284
|
-
|
|
1287
|
+
Co as uuid,
|
|
1285
1288
|
Mo as vfModalRef
|
|
1286
1289
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<VfSmartSelect v-model="selectedItem" :options="computedOpts" :formatter="ezFormatter" :null-title="nullTitle" />
|
|
2
|
+
<VfSmartSelect v-model="selectedItem" :options="computedOpts" :formatter="ezFormatter" :null-title="nullTitle" :placeholder="placeholder" />
|
|
3
3
|
</template>
|
|
4
4
|
|
|
5
5
|
<script lang="ts" setup>
|
|
@@ -82,6 +82,7 @@ const props = defineProps<{
|
|
|
82
82
|
debug?: boolean;
|
|
83
83
|
required?: boolean;
|
|
84
84
|
showCreateTextOnNewItem?: boolean;
|
|
85
|
+
autoNext?: boolean;
|
|
85
86
|
}>();
|
|
86
87
|
|
|
87
88
|
const emit = defineEmits<{
|
|
@@ -523,6 +524,8 @@ function addRemoteOption(option: T) {
|
|
|
523
524
|
}
|
|
524
525
|
|
|
525
526
|
function focusNextInput() {
|
|
527
|
+
if (!props.autoNext) return;
|
|
528
|
+
|
|
526
529
|
let parent = el.value?.parentElement;
|
|
527
530
|
while (parent && parent.tagName !== 'FORM' && parent.tagName !== 'BODY') {
|
|
528
531
|
parent = parent.parentElement;
|