vft 0.0.242 → 0.0.244

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.
@@ -13,8 +13,8 @@ import "../../hooks/use-model-toggle/index.js";
13
13
  import "@popperjs/core";
14
14
  import "../../hooks/use-z-index/index.js";
15
15
  import { calcTextareaHeight as ye } from "./utils.js";
16
- import { useFormItem as et, useFormItemInputId as tt } from "../form/hooks/use-form-item.js";
17
- import { useFormSize as at, useFormDisabled as ot } from "../form/hooks/use-form-common-props.js";
16
+ import { useFormSize as et, useFormDisabled as tt } from "../form/hooks/use-form-common-props.js";
17
+ import { useFormItem as at, useFormItemInputId as ot } from "../form/hooks/use-form-item.js";
18
18
  const nt = ["role"], lt = ["id", "type", "disabled", "formatter", "parser", "readonly", "autocomplete", "tabindex", "aria-label", "placeholder", "form"], st = ["id", "tabindex", "disabled", "readonly", "autocomplete", "aria-label", "placeholder", "form"], It = /* @__PURE__ */ Oe({
19
19
  __name: "input",
20
20
  props: {
@@ -85,9 +85,9 @@ const nt = ["role"], lt = ["id", "type", "disabled", "formatter", "parser", "rea
85
85
  o.is("focus", h.value)
86
86
  ]), d = Je({
87
87
  excludeKeys: l(() => Object.keys(X.value))
88
- }), { form: Ce, formItem: F } = et(), { inputId: Y } = tt(xe.props, {
88
+ }), { form: Ce, formItem: F } = at(), { inputId: Y } = ot(xe.props, {
89
89
  formItemContext: F
90
- }), ke = at(), p = ot(), o = pe("input"), Z = pe("textarea"), K = H(), y = H(), h = S(!1), D = S(!1), g = S(!1), M = S(!1), _ = S(), O = H(e.inputStyle), C = l(() => K.value || y.value), T = l(() => J(e.prefixIcon, "icon", { size: 16 })), ee = l(() => J(e.suffixIcon, "icon", { size: 16 })), Ie = l(() => J(e.clearIcon, "icon", {
90
+ }), ke = et(), p = tt(), o = pe("input"), Z = pe("textarea"), K = H(), y = H(), h = S(!1), D = S(!1), g = S(!1), M = S(!1), _ = S(), O = H(e.inputStyle), C = l(() => K.value || y.value), T = l(() => J(e.prefixIcon, "icon", { size: 16 })), ee = l(() => J(e.suffixIcon, "icon", { size: 16 })), Ie = l(() => J(e.clearIcon, "icon", {
91
91
  icon: "icon-circle-close",
92
92
  size: 16
93
93
  })), te = l(() => Ce?.statusIcon ?? !1), k = l(() => F?.validateState || ""), ae = l(
@@ -46,7 +46,7 @@ export declare const VftTabs: import("vft/es/utils").SFCWithInstall<import("vue"
46
46
  type: import("vue").PropType<"click" | "hover">;
47
47
  };
48
48
  }>, {
49
- currentName: import("vue").Ref<import("./types").TabPaneName, import("./types").TabPaneName>;
49
+ currentName: import("vue").Ref<string | number, string | number>;
50
50
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
51
51
  "update:modelValue": (name: string | number) => void;
52
52
  tabClick: (pane: {
@@ -1,18 +1,18 @@
1
- import { defineComponent as f, getCurrentInstance as C, useSlots as B, inject as g, ref as i, computed as u, watch as R, reactive as k, onMounted as w, onUnmounted as N, withDirectives as _, createCommentVNode as x, unref as o, createElementBlock as z, openBlock as S, normalizeClass as $, renderSlot as E, vShow as P } from "vue";
2
- import { eagerComputed as d } from "@vueuse/core";
1
+ import { defineComponent as b, getCurrentInstance as C, useSlots as g, inject as R, ref as i, computed as f, watch as k, reactive as w, onBeforeUnmount as N, onBeforeUpdate as _, withDirectives as $, createCommentVNode as x, unref as n, createElementBlock as z, openBlock as E, normalizeClass as P, renderSlot as S, vShow as I } from "vue";
2
+ import { eagerComputed as v } from "@vueuse/core";
3
3
  import "@vft/utils";
4
- import { throwError as j } from "../../utils/error.js";
4
+ import { throwError as U } from "../../utils/error.js";
5
5
  import "../../utils/ns-cover.js";
6
6
  import "lodash-es";
7
- import { useNamespace as D } from "../../hooks/use-namespace/index.js";
7
+ import { useNamespace as V } from "../../hooks/use-namespace/index.js";
8
8
  import "../../hooks/use-model-toggle/index.js";
9
9
  import "@popperjs/core";
10
10
  import "../../hooks/use-z-index/index.js";
11
- import { TabsRootContextKey as I } from "./types.js";
12
- const K = ["id", "aria-hidden", "aria-labelledby"], M = f({
11
+ import { TabsRootContextKey as j } from "./types.js";
12
+ const D = ["id", "aria-hidden", "aria-labelledby"], F = b({
13
13
  name: "vft-tab-pane"
14
- }), W = /* @__PURE__ */ f({
15
- ...M,
14
+ }), X = /* @__PURE__ */ b({
15
+ ...F,
16
16
  props: {
17
17
  label: {},
18
18
  name: {},
@@ -21,46 +21,48 @@ const K = ["id", "aria-hidden", "aria-labelledby"], M = f({
21
21
  lazy: { type: Boolean }
22
22
  },
23
23
  setup(a) {
24
- const c = D("tab-pane"), n = C(), b = B(), t = g(I);
25
- t || j(c.b(), "usage: <vft-tabs><vft-tab-pane /></vft-tabs/>");
26
- const v = i(), r = i(), y = u(() => a.closable || t.props.closable), e = d(
27
- () => t.currentName.value === (a.name ?? r.value)
28
- ), m = i(e.value), s = u(() => a.name ?? r.value), h = d(
29
- () => !a.lazy || m.value || e.value
30
- );
31
- R(e, (l) => {
24
+ const c = V("tab-pane"), o = C(), u = g(), e = R(j);
25
+ e || U(c.b(), "usage: <vft-tabs><vft-tab-pane /></vft-tabs/>");
26
+ const d = i(), r = i(), h = f(() => a.closable || e.props.closable), t = v(
27
+ () => e.currentName.value === (a.name ?? r.value)
28
+ ), m = i(t.value), s = f(() => a.name ?? r.value), y = v(
29
+ () => !a.lazy || m.value || t.value
30
+ ), B = () => d.value?.contains(document.activeElement);
31
+ k(t, (l) => {
32
32
  l && (m.value = !0);
33
33
  });
34
- const p = k({
35
- uid: n.uid,
36
- slots: b,
37
- props: n.props,
34
+ const p = w({
35
+ uid: o.uid,
36
+ getVnode: () => o.vnode,
37
+ slots: u,
38
+ props: o.props,
38
39
  paneName: s,
39
- active: e,
40
+ active: t,
40
41
  index: r,
41
- isClosable: y,
42
- attrs: n.attrs
42
+ isClosable: h,
43
+ isFocusInsidePane: B,
44
+ attrs: o.attrs
43
45
  });
44
- return w(() => {
45
- t.registerPane(p);
46
- }), N(() => {
47
- t.unregisterPane(p.uid);
48
- }), (l, T) => o(h) ? _((S(), z("div", {
46
+ return e.registerPane(p), N(() => {
47
+ e.unregisterPane(p.uid);
48
+ }), _(() => {
49
+ u.label && e.nav$.value?.scheduleRender();
50
+ }), (l, K) => n(y) ? $((E(), z("div", {
49
51
  key: 0,
50
52
  id: `pane-${s.value}`,
51
53
  ref_key: "paneRef",
52
- ref: v,
53
- class: $(o(c).b()),
54
+ ref: d,
55
+ class: P(n(c).b()),
54
56
  role: "tabpanel",
55
- "aria-hidden": !o(e),
57
+ "aria-hidden": !n(t),
56
58
  "aria-labelledby": `tab-${s.value}`
57
59
  }, [
58
- E(l.$slots, "default")
59
- ], 10, K)), [
60
- [P, o(e)]
60
+ S(l.$slots, "default")
61
+ ], 10, D)), [
62
+ [I, n(t)]
61
63
  ]) : x("", !0);
62
64
  }
63
65
  });
64
66
  export {
65
- W as default
67
+ X as default
66
68
  };
@@ -27,7 +27,7 @@ export interface TabsProps {
27
27
  trigger?: 'click' | 'hover';
28
28
  }
29
29
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<TabsProps>>, {
30
- currentName: import("vue").Ref<TabPaneName, TabPaneName>;
30
+ currentName: import("vue").Ref<string | number, string | number>;
31
31
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
32
32
  "update:modelValue": (name: string | number) => void;
33
33
  tabClick: (pane: {
@@ -1,20 +1,20 @@
1
- import { defineComponent as I, getCurrentInstance as z, useSlots as F, computed as d, ref as h, watch as g, nextTick as M, provide as U, createVNode as l } from "vue";
1
+ import { defineComponent as I, getCurrentInstance as h, useSlots as M, computed as l, ref as C, watch as g, nextTick as U, createVNode as c, provide as W } from "vue";
2
2
  import "@vueuse/core";
3
3
  import { isUndefined as v } from "@vft/utils";
4
4
  import "../../utils/ns-cover.js";
5
5
  import "lodash-es";
6
- import { useNamespace as W } from "../../hooks/use-namespace/index.js";
6
+ import { useNamespace as $ } from "../../hooks/use-namespace/index.js";
7
7
  import "../../hooks/use-model-toggle/index.js";
8
- import { useOrderedChildren as $ } from "../../hooks/use-ordered-children/index.js";
8
+ import { useOrderedChildren as D } from "../../hooks/use-ordered-children/index.js";
9
9
  import "@popperjs/core";
10
10
  import "../../hooks/use-z-index/index.js";
11
- import { UPDATE_MODEL_EVENT as D } from "@vft/constants";
12
- import O from "./tab-nav.vue2.js";
13
- import { TabsRootContextKey as K } from "./types.js";
14
- const j = I({
11
+ import { UPDATE_MODEL_EVENT as O } from "@vft/constants";
12
+ import K from "./tab-nav.vue2.js";
13
+ import { TabsRootContextKey as j } from "./types.js";
14
+ const q = I({
15
15
  name: "vft-tabs"
16
- }), ne = /* @__PURE__ */ I({
17
- ...j,
16
+ }), ie = /* @__PURE__ */ I({
17
+ ...q,
18
18
  props: {
19
19
  closable: {
20
20
  type: Boolean
@@ -57,106 +57,106 @@ const j = I({
57
57
  expose: w,
58
58
  emit: x
59
59
  }) {
60
- const n = x, r = W("tabs"), u = z(), f = F(), T = d(() => ["left", "right"].includes(t.tabPosition)), {
61
- children: m,
62
- addChild: p,
63
- removeChild: P,
64
- ChildrenSorter: R
65
- } = $(u, "vft-tab-pane"), c = h(), i = h(t.modelValue ?? "0"), b = async (e, a = !1) => {
60
+ const n = x, r = $("tabs"), T = h(), f = M(), p = l(() => ["left", "right"].includes(t.tabPosition)), {
61
+ children: u,
62
+ addChild: P,
63
+ removeChild: R,
64
+ ChildrenSorter: y
65
+ } = D(h(), "vft-tab-pane"), s = C(), i = C(t.modelValue ?? "0"), m = async (e, a = !1) => {
66
66
  if (!(i.value === e || v(e)))
67
67
  try {
68
68
  let o;
69
69
  if (t.beforeLeave) {
70
- const s = t.beforeLeave(e, i.value);
71
- o = s instanceof Promise ? await s : s;
70
+ const d = t.beforeLeave(e, i.value);
71
+ o = d instanceof Promise ? await d : d;
72
72
  } else
73
73
  o = !0;
74
74
  if (o !== !1) {
75
- const s = m.value.find((S) => S.paneName === i.value)?.isFocusInsidePane();
76
- i.value = e, a && (n(D, e), n("tabChange", e)), c.value?.removeFocus?.(), s && c.value?.focusActiveTab();
75
+ const d = u.value.find((F) => F.paneName === i.value)?.isFocusInsidePane();
76
+ i.value = e, a && (n(O, e), n("tabChange", e)), s.value?.removeFocus?.(), d && s.value?.focusActiveTab();
77
77
  }
78
78
  } catch {
79
79
  }
80
- }, y = (e, a, o) => {
81
- e.props.disabled || (n("tabClick", e, o), b(a, !0));
82
- }, L = (e, a) => {
80
+ }, L = (e, a, o) => {
81
+ e.props.disabled || (n("tabClick", e, o), m(a, !0));
82
+ }, V = (e, a) => {
83
83
  e.props.disabled || v(e.props.name) || (a.stopPropagation(), n("edit", e.props.name, "remove"), n("tabRemove", e.props.name));
84
- }, N = () => {
84
+ }, B = () => {
85
85
  n("edit", void 0, "add"), n("tabAdd");
86
- }, C = (e) => {
86
+ }, b = (e) => {
87
87
  const a = e.el.firstChild, o = ["bottom", "right"].includes(t.tabPosition) ? e.children[0].el : e.children[1].el;
88
88
  a !== o && a.before(o);
89
89
  };
90
- g(() => t.modelValue, (e) => b(e)), g(i, async () => {
91
- await M(), c.value?.scrollToActiveTab();
90
+ g(() => t.modelValue, (e) => m(e)), g(i, async () => {
91
+ await U(), s.value?.scrollToActiveTab();
92
92
  });
93
- const V = (e, a, o) => {
93
+ const N = (e, a, o) => {
94
94
  n("tabContextMenu", e, a, o);
95
- };
96
- U(K, {
97
- props: u.props,
95
+ }, A = l(() => c("div", {
96
+ class: r.e("content")
97
+ }, [f.default?.()]));
98
+ W(j, {
99
+ props: T.props,
98
100
  currentName: i,
99
- registerPane: p,
100
- unregisterPane: P,
101
- nav$: c
101
+ registerPane: P,
102
+ unregisterPane: R,
103
+ nav$: s
102
104
  }), w({
103
105
  currentName: i
104
106
  });
105
- const B = d(() => ({
107
+ const E = l(() => ({
106
108
  icon: "icon-plus",
107
109
  size: 12,
108
110
  ...t.addIconCfg
109
- })), A = d(() => ({
111
+ })), k = l(() => ({
110
112
  icon: "icon-close",
111
113
  size: 14,
112
114
  ...t.closeIconCfg
113
- })), E = d(() => ({
115
+ })), S = l(() => ({
114
116
  icon: "icon-arrow-left",
115
117
  size: 18,
116
118
  ...t.arrowLeftIconCfg
117
- })), k = d(() => ({
119
+ })), z = l(() => ({
118
120
  icon: "icon-arrow-right",
119
121
  size: 18,
120
122
  ...t.arrowRightIconCfg
121
123
  }));
122
124
  return () => {
123
- const e = () => l(O, {
124
- ref: c,
125
+ const e = () => c(K, {
126
+ ref: s,
125
127
  currentName: i.value,
126
128
  editable: t.editable,
127
- panes: m.value,
129
+ panes: u.value,
128
130
  stretch: t.stretch,
129
131
  showBar: t.showBar,
130
- closeIconCfg: A.value,
131
- addIconCfg: B.value,
132
- arrowRightIconCfg: k.value,
133
- arrowLeftIconCfg: E.value,
132
+ closeIconCfg: k.value,
133
+ addIconCfg: E.value,
134
+ arrowRightIconCfg: z.value,
135
+ arrowLeftIconCfg: S.value,
134
136
  fixTabCount: t.fixTabCount,
135
137
  fixExtraScrollWidth: t.fixExtraScrollWidth,
136
138
  addable: t.addable,
137
139
  trigger: t.trigger,
138
- onTabClick: y,
139
- onTabRemove: L,
140
- onTabAdd: N,
141
- onTabContextmenu: V
142
- }, null);
143
- return l("div", {
144
- class: [r.b(), r.m(t.tabPosition)],
145
- onVnodeMounted: C,
146
- onVnodeUpdated: C
147
- }, [l("div", {
148
- className: r.e("content")
149
- }, [f.default?.()]), l("div", {
150
- class: [r.e("header"), T.value && r.e("header-vertical"), r.is(t.tabPosition)]
151
- }, [l(R, null, {
140
+ onTabClick: L,
141
+ onTabRemove: V,
142
+ onTabAdd: B,
143
+ onTabContextmenu: N
144
+ }, null), a = c("div", {
145
+ class: [r.e("header"), p.value && r.e("header-vertical"), r.is(t.tabPosition)]
146
+ }, [c(y, null, {
152
147
  default: e,
153
148
  $stable: !0
154
- }), f.navRight ? l("div", {
149
+ }), f.navRight ? c("div", {
155
150
  class: "nav-right"
156
- }, [f.navRight?.()]) : null])]);
151
+ }, [f.navRight?.()]) : null]);
152
+ return c("div", {
153
+ class: [r.b(), r.m(t.tabPosition)],
154
+ onVnodeMounted: b,
155
+ onVnodeUpdated: b
156
+ }, [A.value, a]);
157
157
  };
158
158
  }
159
159
  });
160
160
  export {
161
- ne as default
161
+ ie as default
162
162
  };
@@ -7,6 +7,8 @@ export declare const useOrderedChildren: <T extends ChildEssential>(vm: Componen
7
7
  children: import("vue").ShallowRef<T[], T[]>;
8
8
  addChild: (child: T) => void;
9
9
  removeChild: (child: T) => void;
10
- ChildrenSorter: import("vue").DefineComponent<{}, () => any, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
10
+ ChildrenSorter: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
11
+ [key: string]: any;
12
+ }> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
11
13
  };
12
14
  export {};
@@ -2,47 +2,47 @@ import "@vueuse/core";
2
2
  import "@vft/utils";
3
3
  import "../../utils/ns-cover.js";
4
4
  import "lodash-es";
5
- import { flattedChildren as x } from "../../utils/vue/vnode.js";
6
- import { shallowRef as f, defineComponent as M, triggerRef as p, onMounted as O, isVNode as R } from "vue";
7
- const S = (l, u, r) => x(l.subTree).filter(
8
- (e) => R(e) && e.type?.name === u && !!e.component
9
- ).map((e) => e.component.uid).map((e) => r[e]).filter((e) => !!e), I = (l, u) => {
10
- const r = f({}), c = f([]), d = /* @__PURE__ */ new WeakMap(), e = (t) => {
11
- r.value[t.uid] = t, p(r), O(() => {
12
- const o = t.getVnode().el, n = o.parentNode;
13
- if (!d.has(n)) {
14
- d.set(n, []);
15
- const s = n.insertBefore.bind(n);
16
- n.insertBefore = (i, a) => (d.get(n).some((m) => i === m || a === m) && p(r), s(i, a));
5
+ import { flattedChildren as v } from "../../utils/vue/vnode.js";
6
+ import { shallowRef as m, defineComponent as x, h as M, triggerRef as a, onMounted as O, isVNode as R } from "vue";
7
+ const S = (u, c, t) => v(u.subTree).filter(
8
+ (e) => R(e) && e.type?.name === c && !!e.component
9
+ ).map((e) => e.component.uid).map((e) => t[e]).filter((e) => !!e), I = (u, c) => {
10
+ const t = m({}), s = m([]), d = /* @__PURE__ */ new WeakMap(), e = (n) => {
11
+ t.value[n.uid] = n, a(t), O(() => {
12
+ const r = n.getVnode().el, o = r.parentNode;
13
+ if (!d.has(o)) {
14
+ d.set(o, []);
15
+ const i = o.insertBefore.bind(o);
16
+ o.insertBefore = (l, p) => (d.get(o).some((h) => l === h || p === h) && a(t), i(l, p));
17
17
  }
18
- d.get(n).push(o);
18
+ d.get(o).push(r);
19
19
  });
20
- }, C = (t) => {
21
- delete r.value[t.uid], p(r);
22
- const o = t.getVnode().el, n = o.parentNode, s = d.get(n), i = s.indexOf(o);
23
- s.splice(i, 1);
24
- }, g = () => {
25
- c.value = S(
26
- l,
20
+ }, f = (n) => {
21
+ delete t.value[n.uid], a(t);
22
+ const r = n.getVnode().el, o = r.parentNode, i = d.get(o), l = i.indexOf(r);
23
+ i.splice(l, 1);
24
+ }, C = () => {
25
+ s.value = S(
27
26
  u,
28
- r.value
29
- );
30
- }, N = (t) => t.render(), v = M({
31
- setup(t, { slots: o }) {
32
- return () => (g(), o.default ? (
27
+ c,
28
+ t.value
29
+ ), console.log(s.value, "---");
30
+ }, g = (n) => n.render(), N = x({
31
+ setup(n, { slots: r }) {
32
+ return () => (C(), r.default ? (
33
33
  // Create a new `ReactiveEffect` to ensure `ChildrenSorter` doesn't track any extra dependencies
34
34
  // @ts-ignore TODO: Remove this after Vue is upgraded
35
- h(N, {
36
- render: o.default
35
+ M(g, {
36
+ render: r.default
37
37
  })
38
38
  ) : null);
39
39
  }
40
40
  });
41
41
  return {
42
- children: c,
42
+ children: s,
43
43
  addChild: e,
44
- removeChild: C,
45
- ChildrenSorter: v
44
+ removeChild: f,
45
+ ChildrenSorter: N
46
46
  };
47
47
  };
48
48
  export {
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  "name": "vft",
3
- "version": "0.0.242",
3
+ "version": "0.0.244",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.js",
@@ -1,4 +1,4 @@
1
- const o = "0.0.242";
1
+ const o = "0.0.244";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),T=require("@vft/constants"),Y=require("@vft/use"),s=require("@vft/utils");require("../form/index.cjs");const b=require("../icon/index.cjs"),Z=require("@vueuse/core"),q=require("../../utils/error.cjs");require("../../utils/ns-cover.cjs");const Be=require("lodash-es"),_=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const ee=require("./utils.cjs"),te=require("../form/hooks/use-form-item.cjs"),oe=require("../form/hooks/use-form-common-props.cjs"),Ve=["role"],Ie=["id","type","disabled","formatter","parser","readonly","autocomplete","tabindex","aria-label","placeholder","form"],Se=["id","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form"],ze=e.defineComponent({__name:"input",props:{id:{},size:{default:""},disabled:{type:Boolean},modelValue:{},type:{default:"text"},resize:{},autosize:{type:[Object,Boolean],default:!1},autocomplete:{default:"off"},formatter:{},parser:{},placeholder:{},form:{},readonly:{type:Boolean},clearable:{type:Boolean},showPassword:{type:Boolean},showWordLimit:{type:Boolean},suffixIcon:{},prefixIcon:{},clearIcon:{},containerRole:{},label:{},tabindex:{default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:[Boolean,null,String,Object,Array]}},emits:{[T.UPDATE_MODEL_EVENT]:t=>s.isString(t),input:t=>s.isString(t),change:t=>s.isString(t),suffixClick:t=>s.isString(t),prefixClick:t=>s.isString(t),focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent,clear:()=>!0,enter:()=>!0,mouseleave:t=>t instanceof MouseEvent,mouseenter:t=>t instanceof MouseEvent,keydown:t=>t instanceof Event,compositionstart:t=>t instanceof CompositionEvent,compositionupdate:t=>t instanceof CompositionEvent,compositionend:t=>t instanceof CompositionEvent},setup(t,{expose:ne,emit:ae}){const l=ae,p=e.useAttrs(),i=e.useSlots(),F=e.computed(()=>{const o={};return t.containerRole==="combobox"&&(o["aria-haspopup"]=p["aria-haspopup"],o["aria-owns"]=p["aria-owns"],o["aria-expanded"]=p["aria-expanded"]),o}),le=e.computed(()=>[t.type==="textarea"?A.b():n.b(),n.m(ie.value),n.is("disabled",c.value),n.is("exceed",fe.value),n.is("focus",m.value),{[n.b("group")]:i.prepend||i.append,[n.bm("group","append")]:i.append,[n.bm("group","prepend")]:i.prepend,[n.m("prefix")]:i.prefix||t.prefixIcon,[n.m("suffix")]:i.suffix||t.suffixIcon||t.clearable||t.showPassword,[n.bm("suffix","password-clear")]:E.value&&z.value},p.class]),se=e.getCurrentInstance(),re=e.computed(()=>[n.e("wrapper"),n.is("focus",m.value)]),r=Y.useAttrs({excludeKeys:e.computed(()=>Object.keys(F.value))}),{form:ue,formItem:C}=te.useFormItem(),{inputId:M}=te.useFormItemInputId(se.props,{formItemContext:C}),ie=oe.useFormSize(),c=oe.useFormDisabled(),n=_.useNamespace("input"),A=_.useNamespace("textarea"),w=e.shallowRef(),d=e.shallowRef(),m=e.ref(!1),V=e.ref(!1),v=e.ref(!1),x=e.ref(!1),D=e.ref(),I=e.shallowRef(t.inputStyle),y=e.computed(()=>w.value||d.value),S=e.computed(()=>s.singleAttrToObj(t.prefixIcon,"icon",{size:16})),O=e.computed(()=>s.singleAttrToObj(t.suffixIcon,"icon",{size:16})),ce=e.computed(()=>s.singleAttrToObj(t.clearIcon,"icon",{icon:"icon-circle-close",size:16})),R=e.computed(()=>ue?.statusIcon??!1),h=e.computed(()=>C?.validateState||""),K=e.computed(()=>h.value&&{validating:"icon-loading",success:"icon-circle-check",error:"icon-circle-close"}[h.value]),de=e.computed(()=>x.value?{icon:"icon-view",size:16}:{icon:"icon-hide",size:16}),me=e.computed(()=>[p.style,t.inputStyle]),$=e.computed(()=>[t.inputStyle,I.value,{resize:t.resize}]),u=e.computed(()=>Be.isNil(t.modelValue)?"":String(t.modelValue)),E=e.computed(()=>t.clearable&&!c.value&&!t.readonly&&!!u.value&&(m.value||V.value)),z=e.computed(()=>t.showPassword&&!c.value&&!t.readonly&&!!u.value&&(!!u.value||m.value)),f=e.computed(()=>t.showWordLimit&&!!r.value.maxlength&&(t.type==="text"||t.type==="textarea")&&!c.value&&!t.readonly&&!t.showPassword),N=e.computed(()=>Array.from(u.value).length),fe=e.computed(()=>!!f.value&&N.value>Number(r.value.maxlength)),pe=e.computed(()=>!!i.suffix||!!t.suffixIcon||E.value||t.showPassword||f.value||!!h.value&&R.value),[ve,ye]=Y.useCursor(w);Z.useResizeObserver(d,o=>{if(!f.value||t.resize!=="both")return;const a=o[0],{width:k}=a.contentRect;D.value={right:`calc(100% - ${k+15+6}px)`}});const B=()=>{if(!(!Z.isClient||t.type!=="textarea"))if(t.autosize){const o=s.isObject(t.autosize)?t.autosize.minRows:void 0,a=s.isObject(t.autosize)?t.autosize.maxRows:void 0;I.value={...ee.calcTextareaHeight(d.value,o,a)}}else I.value={minHeight:ee.calcTextareaHeight(d.value).minHeight}},g=()=>{const o=y.value;!o||o.value===u.value||(o.value=u.value)},P=async o=>{ve();let{value:a}=o.target;if(r.value.maxlength&&a.length>=r.value.maxlength&&(a=a.slice(0,Number(r.value.maxlength))),t.formatter&&(a=t.parser?t.parser(a):a,a=t.formatter(a)),!v.value){if(a===u.value){g();return}l(T.UPDATE_MODEL_EVENT,a),l("input",a),await e.nextTick(),g(),ye()}},j=o=>{l("change",o.target.value)},he=()=>{l("suffixClick",t.modelValue)},ge=()=>{l("prefixClick",t.modelValue)},L=o=>{l("compositionstart",o),v.value=!0},ke=o=>/([(\uAC00-\uD7AF)|\u3130-\u318F])+/.test(o),W=o=>{l("compositionupdate",o);const a=o.target?.value,k=a[a.length-1]||"";v.value=!ke(k)},H=o=>{l("compositionend",o),v.value&&(v.value=!1,P(o))},be=()=>{x.value=!x.value,U()},U=async()=>{await e.nextTick(),y.value?.focus()},Ce=()=>y.value?.blur(),G=o=>{m.value=!0,l("focus",o)},J=o=>{m.value=!1,l("blur",o),t.validateEvent&&C?.validate?.("blur").catch(a=>q.debugWarn(a))},we=o=>{V.value=!1,l("mouseleave",o)},xe=o=>{V.value=!0,l("mouseenter",o)},Q=o=>{let a=o.key;if(o.target.type==="number"&&["e","+","-0","E"].includes(a))return o.returnValue=!1,!1;l("keydown",o)},Ee=()=>{y.value?.select()},X=()=>{l(T.UPDATE_MODEL_EVENT,""),l("change",""),l("clear"),l("input","")};return e.watch(()=>t.modelValue,()=>{e.nextTick(()=>B()),t.validateEvent&&C?.validate?.("change").catch(o=>q.debugWarn(o))}),e.watch(u,()=>g()),e.watch(()=>t.type,async()=>{await e.nextTick(),g(),B()}),e.onMounted(()=>{!t.formatter&&t.parser&&q.debugWarn("VftInput","If you set the parser, you also need to set the formatter."),g(),e.nextTick(B)}),ne({input:w,textarea:d,ref:y,textareaStyle:$,autosize:t.autosize,focus:U,blur:Ce,select:Ee,clear:X,resizeTextarea:B}),(o,a)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",e.mergeProps(F.value,{class:le.value,style:me.value,role:o.containerRole,onMouseenter:xe,onMouseleave:we}),[o.type!=="textarea"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[o.$slots.prepend?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(n).be("group","prepend"))},[e.renderSlot(o.$slots,"prepend")],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(re.value)},[o.$slots.prefix||S.value?.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(n).e("prefix"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(n).e("prefix-inner")),onClick:ge},[e.renderSlot(o.$slots,"prefix"),S.value?.icon?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:0,pointer:""},S.value,{class:e.unref(n).e("icon")}),null,16,["class"])):e.createCommentVNode("",!0)],2)],2)):e.createCommentVNode("",!0),e.createElementVNode("input",e.mergeProps({id:e.unref(M),ref_key:"input",ref:w,class:e.unref(n).e("inner")},e.unref(r),{type:o.showPassword?x.value?"text":"password":o.type,disabled:e.unref(c),formatter:o.formatter,parser:o.parser,readonly:o.readonly,autocomplete:o.autocomplete,tabindex:o.tabindex,"aria-label":o.label,placeholder:o.placeholder,style:o.inputStyle,form:o.form,onCompositionstart:L,onCompositionupdate:W,onCompositionend:H,onInput:P,onFocus:G,onBlur:J,onChange:j,onKeydown:Q,onKeyup:a[0]||(a[0]=e.withKeys(k=>l("enter"),["enter"]))}),null,16,Ie),pe.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(n).e("suffix"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(n).e("suffix-inner")),onClick:he},[!E.value||!z.value||!f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.renderSlot(o.$slots,"suffix"),O.value?.icon?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:0},O.value,{class:e.unref(n).e("icon")}),null,16,["class"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),E.value?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:1,pointer:"",class:[e.unref(n).e("icon"),e.unref(n).e("clear")]},ce.value,{onMousedown:e.withModifiers(e.unref(s.noop),["prevent"]),onClick:e.withModifiers(X,["stop"])}),null,16,["class","onMousedown"])):e.createCommentVNode("",!0),z.value?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:2},de.value,{class:[e.unref(n).e("icon"),e.unref(n).e("password")],onClick:be}),null,16,["class"])):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("span",{key:3,class:e.normalizeClass(e.unref(n).e("count"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(n).e("count-inner"))},e.toDisplayString(N.value)+" / "+e.toDisplayString(e.unref(r).maxlength),3)],2)):e.createCommentVNode("",!0),h.value&&K.value&&R.value?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),{key:4,icon:K.value,class:e.normalizeClass([e.unref(n).e("icon"),e.unref(n).e("validateIcon"),e.unref(n).is("loading",h.value==="validating")])},null,8,["icon","class"])):e.createCommentVNode("",!0)],2)],2)):e.createCommentVNode("",!0)],2),o.$slots.append?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(n).be("group","append"))},[e.renderSlot(o.$slots,"append")],2)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("textarea",e.mergeProps({id:e.unref(M),ref_key:"textarea",ref:d,class:e.unref(A).e("inner")},e.unref(r),{tabindex:o.tabindex,disabled:e.unref(c),readonly:o.readonly,autocomplete:o.autocomplete,style:$.value,"aria-label":o.label,placeholder:o.placeholder,form:o.form,onCompositionstart:L,onCompositionupdate:W,onCompositionend:H,onInput:P,onFocus:G,onBlur:J,onChange:j,onKeydown:Q}),null,16,Se),f.value?(e.openBlock(),e.createElementBlock("span",{key:0,style:e.normalizeStyle(D.value),class:e.normalizeClass(e.unref(n).e("count"))},e.toDisplayString(N.value)+" / "+e.toDisplayString(e.unref(r).maxlength),7)):e.createCommentVNode("",!0)],64))],16,Ve)),[[e.vShow,o.type!=="hidden"]])}});exports.default=ze;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),T=require("@vft/constants"),Y=require("@vft/use"),s=require("@vft/utils");require("../form/index.cjs");const b=require("../icon/index.cjs"),Z=require("@vueuse/core"),q=require("../../utils/error.cjs");require("../../utils/ns-cover.cjs");const Be=require("lodash-es"),_=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const ee=require("./utils.cjs"),te=require("../form/hooks/use-form-common-props.cjs"),oe=require("../form/hooks/use-form-item.cjs"),Ve=["role"],Ie=["id","type","disabled","formatter","parser","readonly","autocomplete","tabindex","aria-label","placeholder","form"],Se=["id","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form"],ze=e.defineComponent({__name:"input",props:{id:{},size:{default:""},disabled:{type:Boolean},modelValue:{},type:{default:"text"},resize:{},autosize:{type:[Object,Boolean],default:!1},autocomplete:{default:"off"},formatter:{},parser:{},placeholder:{},form:{},readonly:{type:Boolean},clearable:{type:Boolean},showPassword:{type:Boolean},showWordLimit:{type:Boolean},suffixIcon:{},prefixIcon:{},clearIcon:{},containerRole:{},label:{},tabindex:{default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:[Boolean,null,String,Object,Array]}},emits:{[T.UPDATE_MODEL_EVENT]:t=>s.isString(t),input:t=>s.isString(t),change:t=>s.isString(t),suffixClick:t=>s.isString(t),prefixClick:t=>s.isString(t),focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent,clear:()=>!0,enter:()=>!0,mouseleave:t=>t instanceof MouseEvent,mouseenter:t=>t instanceof MouseEvent,keydown:t=>t instanceof Event,compositionstart:t=>t instanceof CompositionEvent,compositionupdate:t=>t instanceof CompositionEvent,compositionend:t=>t instanceof CompositionEvent},setup(t,{expose:ne,emit:ae}){const l=ae,p=e.useAttrs(),i=e.useSlots(),F=e.computed(()=>{const o={};return t.containerRole==="combobox"&&(o["aria-haspopup"]=p["aria-haspopup"],o["aria-owns"]=p["aria-owns"],o["aria-expanded"]=p["aria-expanded"]),o}),le=e.computed(()=>[t.type==="textarea"?A.b():n.b(),n.m(ie.value),n.is("disabled",c.value),n.is("exceed",fe.value),n.is("focus",m.value),{[n.b("group")]:i.prepend||i.append,[n.bm("group","append")]:i.append,[n.bm("group","prepend")]:i.prepend,[n.m("prefix")]:i.prefix||t.prefixIcon,[n.m("suffix")]:i.suffix||t.suffixIcon||t.clearable||t.showPassword,[n.bm("suffix","password-clear")]:E.value&&z.value},p.class]),se=e.getCurrentInstance(),re=e.computed(()=>[n.e("wrapper"),n.is("focus",m.value)]),r=Y.useAttrs({excludeKeys:e.computed(()=>Object.keys(F.value))}),{form:ue,formItem:C}=oe.useFormItem(),{inputId:M}=oe.useFormItemInputId(se.props,{formItemContext:C}),ie=te.useFormSize(),c=te.useFormDisabled(),n=_.useNamespace("input"),A=_.useNamespace("textarea"),w=e.shallowRef(),d=e.shallowRef(),m=e.ref(!1),V=e.ref(!1),v=e.ref(!1),x=e.ref(!1),D=e.ref(),I=e.shallowRef(t.inputStyle),y=e.computed(()=>w.value||d.value),S=e.computed(()=>s.singleAttrToObj(t.prefixIcon,"icon",{size:16})),O=e.computed(()=>s.singleAttrToObj(t.suffixIcon,"icon",{size:16})),ce=e.computed(()=>s.singleAttrToObj(t.clearIcon,"icon",{icon:"icon-circle-close",size:16})),R=e.computed(()=>ue?.statusIcon??!1),h=e.computed(()=>C?.validateState||""),K=e.computed(()=>h.value&&{validating:"icon-loading",success:"icon-circle-check",error:"icon-circle-close"}[h.value]),de=e.computed(()=>x.value?{icon:"icon-view",size:16}:{icon:"icon-hide",size:16}),me=e.computed(()=>[p.style,t.inputStyle]),$=e.computed(()=>[t.inputStyle,I.value,{resize:t.resize}]),u=e.computed(()=>Be.isNil(t.modelValue)?"":String(t.modelValue)),E=e.computed(()=>t.clearable&&!c.value&&!t.readonly&&!!u.value&&(m.value||V.value)),z=e.computed(()=>t.showPassword&&!c.value&&!t.readonly&&!!u.value&&(!!u.value||m.value)),f=e.computed(()=>t.showWordLimit&&!!r.value.maxlength&&(t.type==="text"||t.type==="textarea")&&!c.value&&!t.readonly&&!t.showPassword),N=e.computed(()=>Array.from(u.value).length),fe=e.computed(()=>!!f.value&&N.value>Number(r.value.maxlength)),pe=e.computed(()=>!!i.suffix||!!t.suffixIcon||E.value||t.showPassword||f.value||!!h.value&&R.value),[ve,ye]=Y.useCursor(w);Z.useResizeObserver(d,o=>{if(!f.value||t.resize!=="both")return;const a=o[0],{width:k}=a.contentRect;D.value={right:`calc(100% - ${k+15+6}px)`}});const B=()=>{if(!(!Z.isClient||t.type!=="textarea"))if(t.autosize){const o=s.isObject(t.autosize)?t.autosize.minRows:void 0,a=s.isObject(t.autosize)?t.autosize.maxRows:void 0;I.value={...ee.calcTextareaHeight(d.value,o,a)}}else I.value={minHeight:ee.calcTextareaHeight(d.value).minHeight}},g=()=>{const o=y.value;!o||o.value===u.value||(o.value=u.value)},P=async o=>{ve();let{value:a}=o.target;if(r.value.maxlength&&a.length>=r.value.maxlength&&(a=a.slice(0,Number(r.value.maxlength))),t.formatter&&(a=t.parser?t.parser(a):a,a=t.formatter(a)),!v.value){if(a===u.value){g();return}l(T.UPDATE_MODEL_EVENT,a),l("input",a),await e.nextTick(),g(),ye()}},j=o=>{l("change",o.target.value)},he=()=>{l("suffixClick",t.modelValue)},ge=()=>{l("prefixClick",t.modelValue)},L=o=>{l("compositionstart",o),v.value=!0},ke=o=>/([(\uAC00-\uD7AF)|\u3130-\u318F])+/.test(o),W=o=>{l("compositionupdate",o);const a=o.target?.value,k=a[a.length-1]||"";v.value=!ke(k)},H=o=>{l("compositionend",o),v.value&&(v.value=!1,P(o))},be=()=>{x.value=!x.value,U()},U=async()=>{await e.nextTick(),y.value?.focus()},Ce=()=>y.value?.blur(),G=o=>{m.value=!0,l("focus",o)},J=o=>{m.value=!1,l("blur",o),t.validateEvent&&C?.validate?.("blur").catch(a=>q.debugWarn(a))},we=o=>{V.value=!1,l("mouseleave",o)},xe=o=>{V.value=!0,l("mouseenter",o)},Q=o=>{let a=o.key;if(o.target.type==="number"&&["e","+","-0","E"].includes(a))return o.returnValue=!1,!1;l("keydown",o)},Ee=()=>{y.value?.select()},X=()=>{l(T.UPDATE_MODEL_EVENT,""),l("change",""),l("clear"),l("input","")};return e.watch(()=>t.modelValue,()=>{e.nextTick(()=>B()),t.validateEvent&&C?.validate?.("change").catch(o=>q.debugWarn(o))}),e.watch(u,()=>g()),e.watch(()=>t.type,async()=>{await e.nextTick(),g(),B()}),e.onMounted(()=>{!t.formatter&&t.parser&&q.debugWarn("VftInput","If you set the parser, you also need to set the formatter."),g(),e.nextTick(B)}),ne({input:w,textarea:d,ref:y,textareaStyle:$,autosize:t.autosize,focus:U,blur:Ce,select:Ee,clear:X,resizeTextarea:B}),(o,a)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",e.mergeProps(F.value,{class:le.value,style:me.value,role:o.containerRole,onMouseenter:xe,onMouseleave:we}),[o.type!=="textarea"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[o.$slots.prepend?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(n).be("group","prepend"))},[e.renderSlot(o.$slots,"prepend")],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(re.value)},[o.$slots.prefix||S.value?.icon?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(n).e("prefix"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(n).e("prefix-inner")),onClick:ge},[e.renderSlot(o.$slots,"prefix"),S.value?.icon?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:0,pointer:""},S.value,{class:e.unref(n).e("icon")}),null,16,["class"])):e.createCommentVNode("",!0)],2)],2)):e.createCommentVNode("",!0),e.createElementVNode("input",e.mergeProps({id:e.unref(M),ref_key:"input",ref:w,class:e.unref(n).e("inner")},e.unref(r),{type:o.showPassword?x.value?"text":"password":o.type,disabled:e.unref(c),formatter:o.formatter,parser:o.parser,readonly:o.readonly,autocomplete:o.autocomplete,tabindex:o.tabindex,"aria-label":o.label,placeholder:o.placeholder,style:o.inputStyle,form:o.form,onCompositionstart:L,onCompositionupdate:W,onCompositionend:H,onInput:P,onFocus:G,onBlur:J,onChange:j,onKeydown:Q,onKeyup:a[0]||(a[0]=e.withKeys(k=>l("enter"),["enter"]))}),null,16,Ie),pe.value?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(n).e("suffix"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(n).e("suffix-inner")),onClick:he},[!E.value||!z.value||!f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.renderSlot(o.$slots,"suffix"),O.value?.icon?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:0},O.value,{class:e.unref(n).e("icon")}),null,16,["class"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),E.value?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:1,pointer:"",class:[e.unref(n).e("icon"),e.unref(n).e("clear")]},ce.value,{onMousedown:e.withModifiers(e.unref(s.noop),["prevent"]),onClick:e.withModifiers(X,["stop"])}),null,16,["class","onMousedown"])):e.createCommentVNode("",!0),z.value?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),e.mergeProps({key:2},de.value,{class:[e.unref(n).e("icon"),e.unref(n).e("password")],onClick:be}),null,16,["class"])):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("span",{key:3,class:e.normalizeClass(e.unref(n).e("count"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(n).e("count-inner"))},e.toDisplayString(N.value)+" / "+e.toDisplayString(e.unref(r).maxlength),3)],2)):e.createCommentVNode("",!0),h.value&&K.value&&R.value?(e.openBlock(),e.createBlock(e.unref(b.VftIcon),{key:4,icon:K.value,class:e.normalizeClass([e.unref(n).e("icon"),e.unref(n).e("validateIcon"),e.unref(n).is("loading",h.value==="validating")])},null,8,["icon","class"])):e.createCommentVNode("",!0)],2)],2)):e.createCommentVNode("",!0)],2),o.$slots.append?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(n).be("group","append"))},[e.renderSlot(o.$slots,"append")],2)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("textarea",e.mergeProps({id:e.unref(M),ref_key:"textarea",ref:d,class:e.unref(A).e("inner")},e.unref(r),{tabindex:o.tabindex,disabled:e.unref(c),readonly:o.readonly,autocomplete:o.autocomplete,style:$.value,"aria-label":o.label,placeholder:o.placeholder,form:o.form,onCompositionstart:L,onCompositionupdate:W,onCompositionend:H,onInput:P,onFocus:G,onBlur:J,onChange:j,onKeydown:Q}),null,16,Se),f.value?(e.openBlock(),e.createElementBlock("span",{key:0,style:e.normalizeStyle(D.value),class:e.normalizeClass(e.unref(n).e("count"))},e.toDisplayString(N.value)+" / "+e.toDisplayString(e.unref(r).maxlength),7)):e.createCommentVNode("",!0)],64))],16,Ve)),[[e.vShow,o.type!=="hidden"]])}});exports.default=ze;
@@ -46,7 +46,7 @@ export declare const VftTabs: import("vft/es/utils").SFCWithInstall<import("vue"
46
46
  type: import("vue").PropType<"click" | "hover">;
47
47
  };
48
48
  }>, {
49
- currentName: import("vue").Ref<import("./types").TabPaneName, import("./types").TabPaneName>;
49
+ currentName: import("vue").Ref<string | number, string | number>;
50
50
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
51
51
  "update:modelValue": (name: string | number) => void;
52
52
  tabClick: (pane: {
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),d=require("@vueuse/core");require("@vft/utils");const m=require("../../utils/error.cjs");require("../../utils/ns-cover.cjs");require("lodash-es");const y=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const q=require("./types.cjs"),h=["id","aria-hidden","aria-labelledby"],C=e.defineComponent({name:"vft-tab-pane"}),g=e.defineComponent({...C,props:{label:{},name:{},closable:{type:Boolean},disabled:{type:Boolean},lazy:{type:Boolean}},setup(n){const l=y.useNamespace("tab-pane"),r=e.getCurrentInstance(),p=e.useSlots(),a=e.inject(q.TabsRootContextKey);a||m.throwError(l.b(),"usage: <vft-tabs><vft-tab-pane /></vft-tabs/>");const f=e.ref(),o=e.ref(),b=e.computed(()=>n.closable||a.props.closable),t=d.eagerComputed(()=>a.currentName.value===(n.name??o.value)),i=e.ref(t.value),s=e.computed(()=>n.name??o.value),v=d.eagerComputed(()=>!n.lazy||i.value||t.value);e.watch(t,u=>{u&&(i.value=!0)});const c=e.reactive({uid:r.uid,slots:p,props:r.props,paneName:s,active:t,index:o,isClosable:b,attrs:r.attrs});return e.onMounted(()=>{a.registerPane(c)}),e.onUnmounted(()=>{a.unregisterPane(c.uid)}),(u,B)=>e.unref(v)?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:0,id:`pane-${s.value}`,ref_key:"paneRef",ref:f,class:e.normalizeClass(e.unref(l).b()),role:"tabpanel","aria-hidden":!e.unref(t),"aria-labelledby":`tab-${s.value}`},[e.renderSlot(u.$slots,"default")],10,h)),[[e.vShow,e.unref(t)]]):e.createCommentVNode("",!0)}});exports.default=g;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),p=require("@vueuse/core");require("@vft/utils");const y=require("../../utils/error.cjs");require("../../utils/ns-cover.cjs");require("lodash-es");const q=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const h=require("./types.cjs"),g=["id","aria-hidden","aria-labelledby"],C=e.defineComponent({name:"vft-tab-pane"}),B=e.defineComponent({...C,props:{label:{},name:{},closable:{type:Boolean},disabled:{type:Boolean},lazy:{type:Boolean}},setup(n){const l=q.useNamespace("tab-pane"),r=e.getCurrentInstance(),i=e.useSlots(),t=e.inject(h.TabsRootContextKey);t||y.throwError(l.b(),"usage: <vft-tabs><vft-tab-pane /></vft-tabs/>");const c=e.ref(),o=e.ref(),v=e.computed(()=>n.closable||t.props.closable),a=p.eagerComputed(()=>t.currentName.value===(n.name??o.value)),d=e.ref(a.value),s=e.computed(()=>n.name??o.value),b=p.eagerComputed(()=>!n.lazy||d.value||a.value),m=()=>c.value?.contains(document.activeElement);e.watch(a,u=>{u&&(d.value=!0)});const f=e.reactive({uid:r.uid,getVnode:()=>r.vnode,slots:i,props:r.props,paneName:s,active:a,index:o,isClosable:v,isFocusInsidePane:m,attrs:r.attrs});return t.registerPane(f),e.onBeforeUnmount(()=>{t.unregisterPane(f.uid)}),e.onBeforeUpdate(()=>{i.label&&t.nav$.value?.scheduleRender()}),(u,R)=>e.unref(b)?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:0,id:`pane-${s.value}`,ref_key:"paneRef",ref:c,class:e.normalizeClass(e.unref(l).b()),role:"tabpanel","aria-hidden":!e.unref(a),"aria-labelledby":`tab-${s.value}`},[e.renderSlot(u.$slots,"default")],10,g)),[[e.vShow,e.unref(a)]]):e.createCommentVNode("",!0)}});exports.default=B;
@@ -27,7 +27,7 @@ export interface TabsProps {
27
27
  trigger?: 'click' | 'hover';
28
28
  }
29
29
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<TabsProps>>, {
30
- currentName: import("vue").Ref<TabPaneName, TabPaneName>;
30
+ currentName: import("vue").Ref<string | number, string | number>;
31
31
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
32
32
  "update:modelValue": (name: string | number) => void;
33
33
  tabClick: (pane: {
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue");require("@vueuse/core");const g=require("@vft/utils");require("../../utils/ns-cover.cjs");require("lodash-es");const B=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");const S=require("../../hooks/use-ordered-children/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const A=require("@vft/constants"),E=require("./tab-nav.vue2.cjs"),k=require("./types.cjs"),M=t.defineComponent({name:"vft-tabs"}),z=t.defineComponent({...M,props:{closable:{type:Boolean},addable:{type:Boolean,default:!1},modelValue:{},editable:{type:Boolean},tabPosition:{default:"top"},beforeLeave:{},stretch:{type:Boolean},showBar:{type:Boolean,default:!0},closeIconCfg:{},addIconCfg:{},arrowLeftIconCfg:{},arrowRightIconCfg:{},fixTabCount:{default:0},fixExtraScrollWidth:{default:0},trigger:{default:"click"}},emits:["update:modelValue","tabClick","tabContextMenu","tabChange","tabRemove","tabAdd","edit"],setup(a,{expose:h,emit:v}){const r=v,c=B.useNamespace("tabs"),u=t.getCurrentInstance(),d=t.useSlots(),m=t.computed(()=>["left","right"].includes(a.tabPosition)),{children:f,addChild:I,removeChild:w,ChildrenSorter:x}=S.useOrderedChildren(u,"vft-tab-pane"),s=t.ref(),i=t.ref(a.modelValue??"0"),b=async(e,n=!1)=>{if(!(i.value===e||g.isUndefined(e)))try{let o;if(a.beforeLeave){const l=a.beforeLeave(e,i.value);o=l instanceof Promise?await l:l}else o=!0;if(o!==!1){const l=f.value.find(L=>L.paneName===i.value)?.isFocusInsidePane();i.value=e,n&&(r(A.UPDATE_MODEL_EVENT,e),r("tabChange",e)),s.value?.removeFocus?.(),l&&s.value?.focusActiveTab()}}catch{}},T=(e,n,o)=>{e.props.disabled||(r("tabClick",e,o),b(n,!0))},N=(e,n)=>{e.props.disabled||g.isUndefined(e.props.name)||(n.stopPropagation(),r("edit",e.props.name,"remove"),r("tabRemove",e.props.name))},P=()=>{r("edit",void 0,"add"),r("tabAdd")},C=e=>{const n=e.el.firstChild,o=["bottom","right"].includes(a.tabPosition)?e.children[0].el:e.children[1].el;n!==o&&n.before(o)};t.watch(()=>a.modelValue,e=>b(e)),t.watch(i,async()=>{await t.nextTick(),s.value?.scrollToActiveTab()});const V=(e,n,o)=>{r("tabContextMenu",e,n,o)};t.provide(k.TabsRootContextKey,{props:u.props,currentName:i,registerPane:I,unregisterPane:w,nav$:s}),h({currentName:i});const q=t.computed(()=>({icon:"icon-plus",size:12,...a.addIconCfg})),y=t.computed(()=>({icon:"icon-close",size:14,...a.closeIconCfg})),R=t.computed(()=>({icon:"icon-arrow-left",size:18,...a.arrowLeftIconCfg})),p=t.computed(()=>({icon:"icon-arrow-right",size:18,...a.arrowRightIconCfg}));return()=>{const e=()=>t.createVNode(E.default,{ref:s,currentName:i.value,editable:a.editable,panes:f.value,stretch:a.stretch,showBar:a.showBar,closeIconCfg:y.value,addIconCfg:q.value,arrowRightIconCfg:p.value,arrowLeftIconCfg:R.value,fixTabCount:a.fixTabCount,fixExtraScrollWidth:a.fixExtraScrollWidth,addable:a.addable,trigger:a.trigger,onTabClick:T,onTabRemove:N,onTabAdd:P,onTabContextmenu:V},null);return t.createVNode("div",{class:[c.b(),c.m(a.tabPosition)],onVnodeMounted:C,onVnodeUpdated:C},[t.createVNode("div",{className:c.e("content")},[d.default?.()]),t.createVNode("div",{class:[c.e("header"),m.value&&c.e("header-vertical"),c.is(a.tabPosition)]},[t.createVNode(x,null,{default:e,$stable:!0}),d.navRight?t.createVNode("div",{class:"nav-right"},[d.navRight?.()]):null])])}}});exports.default=z;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue");require("@vueuse/core");const C=require("@vft/utils");require("../../utils/ns-cover.cjs");require("lodash-es");const S=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");const A=require("../../hooks/use-ordered-children/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const E=require("@vft/constants"),k=require("./tab-nav.vue2.cjs"),M=require("./types.cjs"),z=t.defineComponent({name:"vft-tabs"}),F=t.defineComponent({...z,props:{closable:{type:Boolean},addable:{type:Boolean,default:!1},modelValue:{},editable:{type:Boolean},tabPosition:{default:"top"},beforeLeave:{},stretch:{type:Boolean},showBar:{type:Boolean,default:!0},closeIconCfg:{},addIconCfg:{},arrowLeftIconCfg:{},arrowRightIconCfg:{},fixTabCount:{default:0},fixExtraScrollWidth:{default:0},trigger:{default:"click"}},emits:["update:modelValue","tabClick","tabContextMenu","tabChange","tabRemove","tabAdd","edit"],setup(a,{expose:g,emit:h}){const r=h,c=S.useNamespace("tabs"),v=t.getCurrentInstance(),d=t.useSlots(),m=t.computed(()=>["left","right"].includes(a.tabPosition)),{children:u,addChild:I,removeChild:w,ChildrenSorter:x}=A.useOrderedChildren(t.getCurrentInstance(),"vft-tab-pane"),s=t.ref(),i=t.ref(a.modelValue??"0"),f=async(e,n=!1)=>{if(!(i.value===e||C.isUndefined(e)))try{let o;if(a.beforeLeave){const l=a.beforeLeave(e,i.value);o=l instanceof Promise?await l:l}else o=!0;if(o!==!1){const l=u.value.find(B=>B.paneName===i.value)?.isFocusInsidePane();i.value=e,n&&(r(E.UPDATE_MODEL_EVENT,e),r("tabChange",e)),s.value?.removeFocus?.(),l&&s.value?.focusActiveTab()}}catch{}},T=(e,n,o)=>{e.props.disabled||(r("tabClick",e,o),f(n,!0))},N=(e,n)=>{e.props.disabled||C.isUndefined(e.props.name)||(n.stopPropagation(),r("edit",e.props.name,"remove"),r("tabRemove",e.props.name))},P=()=>{r("edit",void 0,"add"),r("tabAdd")},b=e=>{const n=e.el.firstChild,o=["bottom","right"].includes(a.tabPosition)?e.children[0].el:e.children[1].el;n!==o&&n.before(o)};t.watch(()=>a.modelValue,e=>f(e)),t.watch(i,async()=>{await t.nextTick(),s.value?.scrollToActiveTab()});const V=(e,n,o)=>{r("tabContextMenu",e,n,o)},q=t.computed(()=>t.createVNode("div",{class:c.e("content")},[d.default?.()]));t.provide(M.TabsRootContextKey,{props:v.props,currentName:i,registerPane:I,unregisterPane:w,nav$:s}),g({currentName:i});const y=t.computed(()=>({icon:"icon-plus",size:12,...a.addIconCfg})),p=t.computed(()=>({icon:"icon-close",size:14,...a.closeIconCfg})),R=t.computed(()=>({icon:"icon-arrow-left",size:18,...a.arrowLeftIconCfg})),L=t.computed(()=>({icon:"icon-arrow-right",size:18,...a.arrowRightIconCfg}));return()=>{const e=()=>t.createVNode(k.default,{ref:s,currentName:i.value,editable:a.editable,panes:u.value,stretch:a.stretch,showBar:a.showBar,closeIconCfg:p.value,addIconCfg:y.value,arrowRightIconCfg:L.value,arrowLeftIconCfg:R.value,fixTabCount:a.fixTabCount,fixExtraScrollWidth:a.fixExtraScrollWidth,addable:a.addable,trigger:a.trigger,onTabClick:T,onTabRemove:N,onTabAdd:P,onTabContextmenu:V},null),n=t.createVNode("div",{class:[c.e("header"),m.value&&c.e("header-vertical"),c.is(a.tabPosition)]},[t.createVNode(x,null,{default:e,$stable:!0}),d.navRight?t.createVNode("div",{class:"nav-right"},[d.navRight?.()]):null]);return t.createVNode("div",{class:[c.b(),c.m(a.tabPosition)],onVnodeMounted:b,onVnodeUpdated:b},[q.value,n])}}});exports.default=F;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("@vueuse/core");require("@vft/utils");require("../../utils/ns-cover.cjs");require("lodash-es");const N=require("../../utils/vue/vnode.cjs"),d=require("vue"),q=(u,c,t)=>N.flattedChildren(u.subTree).filter(e=>d.isVNode(e)&&e.type?.name===c&&!!e.component).map(e=>e.component.uid).map(e=>t[e]).filter(e=>!!e),R=(u,c)=>{const t=d.shallowRef({}),a=d.shallowRef([]),s=new WeakMap,e=r=>{t.value[r.uid]=r,d.triggerRef(t),d.onMounted(()=>{const o=r.getVnode().el,n=o.parentNode;if(!s.has(n)){s.set(n,[]);const i=n.insertBefore.bind(n);n.insertBefore=(l,f)=>(s.get(n).some(p=>l===p||f===p)&&d.triggerRef(t),i(l,f))}s.get(n).push(o)})},g=r=>{delete t.value[r.uid],d.triggerRef(t);const o=r.getVnode().el,n=o.parentNode,i=s.get(n),l=i.indexOf(o);i.splice(l,1)},C=()=>{a.value=q(u,c,t.value)},m=r=>r.render(),v=d.defineComponent({setup(r,{slots:o}){return()=>(C(),o.default?h(m,{render:o.default}):null)}});return{children:a,addChild:e,removeChild:g,ChildrenSorter:v}};exports.useOrderedChildren=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("@vueuse/core");require("@vft/utils");require("../../utils/ns-cover.cjs");require("lodash-es");const v=require("../../utils/vue/vnode.cjs"),t=require("vue"),N=(c,a,o)=>v.flattedChildren(c.subTree).filter(e=>t.isVNode(e)&&e.type?.name===a&&!!e.component).map(e=>e.component.uid).map(e=>o[e]).filter(e=>!!e),q=(c,a)=>{const o=t.shallowRef({}),i=t.shallowRef([]),s=new WeakMap,e=r=>{o.value[r.uid]=r,t.triggerRef(o),t.onMounted(()=>{const d=r.getVnode().el,n=d.parentNode;if(!s.has(n)){s.set(n,[]);const l=n.insertBefore.bind(n);n.insertBefore=(u,h)=>(s.get(n).some(f=>u===f||h===f)&&t.triggerRef(o),l(u,h))}s.get(n).push(d)})},g=r=>{delete o.value[r.uid],t.triggerRef(o);const d=r.getVnode().el,n=d.parentNode,l=s.get(n),u=l.indexOf(d);l.splice(u,1)},p=()=>{i.value=N(c,a,o.value),console.log(i.value,"---")},C=r=>r.render(),m=t.defineComponent({setup(r,{slots:d}){return()=>(p(),d.default?t.h(C,{render:d.default}):null)}});return{children:i,addChild:e,removeChild:g,ChildrenSorter:m}};exports.useOrderedChildren=q;
@@ -7,6 +7,8 @@ export declare const useOrderedChildren: <T extends ChildEssential>(vm: Componen
7
7
  children: import("vue").ShallowRef<T[], T[]>;
8
8
  addChild: (child: T) => void;
9
9
  removeChild: (child: T) => void;
10
- ChildrenSorter: import("vue").DefineComponent<{}, () => any, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
10
+ ChildrenSorter: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
11
+ [key: string]: any;
12
+ }> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
11
13
  };
12
14
  export {};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.242";exports.version=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.244";exports.version=e;
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  "name": "vft",
3
- "version": "0.0.242",
3
+ "version": "0.0.244",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vft",
3
- "version": "0.0.242",
3
+ "version": "0.0.244",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.js",
@@ -55,11 +55,11 @@
55
55
  "resize-detector": "0.3.0",
56
56
  "sortablejs": "1.15.0",
57
57
  "@vft/router": "0.0.57",
58
- "@vft/utils": "0.0.114",
59
- "@vft/store": "0.0.42",
60
58
  "@vft/constants": "0.0.71",
61
- "@vft/directives": "0.0.29",
62
- "@vft/use": "0.0.54"
59
+ "@vft/store": "0.0.42",
60
+ "@vft/utils": "0.0.114",
61
+ "@vft/use": "0.0.54",
62
+ "@vft/directives": "0.0.29"
63
63
  },
64
64
  "vetur": {
65
65
  "tags": "tags.json",
package/web-types.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"http://json.schemastore.org/web-types","framework":"vue","name":"vft","version":"0.0.242","js-types-syntax":"typescript","description-markup":"markdown","contributions":{"html":{}}}
1
+ {"$schema":"http://json.schemastore.org/web-types","framework":"vue","name":"vft","version":"0.0.244","js-types-syntax":"typescript","description-markup":"markdown","contributions":{"html":{}}}