vft 0.0.241 → 0.0.243

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 { 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";
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";
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 } = at(), { inputId: Y } = ot(xe.props, {
88
+ }), { form: Ce, formItem: F } = et(), { inputId: Y } = tt(xe.props, {
89
89
  formItemContext: F
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", {
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", {
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<string | number, string | number>;
49
+ currentName: import("vue").Ref<import("./types").TabPaneName, import("./types").TabPaneName>;
50
50
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
51
51
  "update:modelValue": (name: string | number) => void;
52
52
  tabClick: (pane: {
@@ -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<string | number, string | number>;
30
+ currentName: import("vue").Ref<TabPaneName, TabPaneName>;
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 h, useSlots as M, computed as l, ref as C, watch as g, nextTick as U, createVNode as c, provide as W } from "vue";
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";
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 $ } from "../../hooks/use-namespace/index.js";
6
+ import { useNamespace as W } from "../../hooks/use-namespace/index.js";
7
7
  import "../../hooks/use-model-toggle/index.js";
8
- import { useOrderedChildren as D } from "../../hooks/use-ordered-children/index.js";
8
+ import { useOrderedChildren as $ } 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 O } from "@vft/constants";
12
- import K from "./tab-nav.vue2.js";
13
- import { TabsRootContextKey as j } from "./types.js";
14
- const q = I({
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({
15
15
  name: "vft-tabs"
16
- }), ie = /* @__PURE__ */ I({
17
- ...q,
16
+ }), ne = /* @__PURE__ */ I({
17
+ ...j,
18
18
  props: {
19
19
  closable: {
20
20
  type: Boolean
@@ -57,106 +57,106 @@ const q = I({
57
57
  expose: w,
58
58
  emit: x
59
59
  }) {
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) => {
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) => {
66
66
  if (!(i.value === e || v(e)))
67
67
  try {
68
68
  let o;
69
69
  if (t.beforeLeave) {
70
- const d = t.beforeLeave(e, i.value);
71
- o = d instanceof Promise ? await d : d;
70
+ const s = t.beforeLeave(e, i.value);
71
+ o = s instanceof Promise ? await s : s;
72
72
  } else
73
73
  o = !0;
74
74
  if (o !== !1) {
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();
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();
77
77
  }
78
78
  } catch {
79
79
  }
80
- }, L = (e, a, o) => {
81
- e.props.disabled || (n("tabClick", e, o), m(a, !0));
82
- }, V = (e, a) => {
80
+ }, y = (e, a, o) => {
81
+ e.props.disabled || (n("tabClick", e, o), b(a, !0));
82
+ }, L = (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
- }, B = () => {
84
+ }, N = () => {
85
85
  n("edit", void 0, "add"), n("tabAdd");
86
- }, b = (e) => {
86
+ }, C = (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) => m(e)), g(i, async () => {
91
- await U(), s.value?.scrollToActiveTab();
90
+ g(() => t.modelValue, (e) => b(e)), g(i, async () => {
91
+ await M(), c.value?.scrollToActiveTab();
92
92
  });
93
- const N = (e, a, o) => {
93
+ const V = (e, a, o) => {
94
94
  n("tabContextMenu", e, a, o);
95
- }, A = l(() => c("div", {
96
- class: r.e("content")
97
- }, [f.default?.()]));
98
- W(j, {
99
- props: T.props,
95
+ };
96
+ U(K, {
97
+ props: u.props,
100
98
  currentName: i,
101
- registerPane: P,
102
- unregisterPane: R,
103
- nav$: s
99
+ registerPane: p,
100
+ unregisterPane: P,
101
+ nav$: c
104
102
  }), w({
105
103
  currentName: i
106
104
  });
107
- const E = l(() => ({
105
+ const B = d(() => ({
108
106
  icon: "icon-plus",
109
107
  size: 12,
110
108
  ...t.addIconCfg
111
- })), k = l(() => ({
109
+ })), A = d(() => ({
112
110
  icon: "icon-close",
113
111
  size: 14,
114
112
  ...t.closeIconCfg
115
- })), S = l(() => ({
113
+ })), E = d(() => ({
116
114
  icon: "icon-arrow-left",
117
115
  size: 18,
118
116
  ...t.arrowLeftIconCfg
119
- })), z = l(() => ({
117
+ })), k = d(() => ({
120
118
  icon: "icon-arrow-right",
121
119
  size: 18,
122
120
  ...t.arrowRightIconCfg
123
121
  }));
124
122
  return () => {
125
- const e = () => c(K, {
126
- ref: s,
123
+ const e = () => l(O, {
124
+ ref: c,
127
125
  currentName: i.value,
128
126
  editable: t.editable,
129
- panes: u.value,
127
+ panes: m.value,
130
128
  stretch: t.stretch,
131
129
  showBar: t.showBar,
132
- closeIconCfg: k.value,
133
- addIconCfg: E.value,
134
- arrowRightIconCfg: z.value,
135
- arrowLeftIconCfg: S.value,
130
+ closeIconCfg: A.value,
131
+ addIconCfg: B.value,
132
+ arrowRightIconCfg: k.value,
133
+ arrowLeftIconCfg: E.value,
136
134
  fixTabCount: t.fixTabCount,
137
135
  fixExtraScrollWidth: t.fixExtraScrollWidth,
138
136
  addable: t.addable,
139
137
  trigger: t.trigger,
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, {
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, {
147
152
  default: e,
148
153
  $stable: !0
149
- }), f.navRight ? c("div", {
154
+ }), f.navRight ? l("div", {
150
155
  class: "nav-right"
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]);
156
+ }, [f.navRight?.()]) : null])]);
157
157
  };
158
158
  }
159
159
  });
160
160
  export {
161
- ie as default
161
+ ne 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,37 +2,37 @@ 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(
5
+ import { flattedChildren as v } from "../../utils/vue/vnode.js";
6
+ import { shallowRef as m, defineComponent as x, h as M, triggerRef as p, onMounted as O, isVNode as R } from "vue";
7
+ const S = (l, u, r) => v(l.subTree).filter(
8
8
  (e) => R(e) && e.type?.name === u && !!e.component
9
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) => {
10
+ const r = m({}), c = m([]), d = /* @__PURE__ */ new WeakMap(), e = (t) => {
11
11
  r.value[t.uid] = t, p(r), O(() => {
12
12
  const o = t.getVnode().el, n = o.parentNode;
13
13
  if (!d.has(n)) {
14
14
  d.set(n, []);
15
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));
16
+ n.insertBefore = (i, a) => (d.get(n).some((h) => i === h || a === h) && p(r), s(i, a));
17
17
  }
18
18
  d.get(n).push(o);
19
19
  });
20
- }, C = (t) => {
20
+ }, f = (t) => {
21
21
  delete r.value[t.uid], p(r);
22
22
  const o = t.getVnode().el, n = o.parentNode, s = d.get(n), i = s.indexOf(o);
23
23
  s.splice(i, 1);
24
- }, g = () => {
24
+ }, C = () => {
25
25
  c.value = S(
26
26
  l,
27
27
  u,
28
28
  r.value
29
29
  );
30
- }, N = (t) => t.render(), v = M({
30
+ }, g = (t) => t.render(), N = x({
31
31
  setup(t, { slots: o }) {
32
- return () => (g(), o.default ? (
32
+ return () => (C(), o.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, {
35
+ M(g, {
36
36
  render: o.default
37
37
  })
38
38
  ) : null);
@@ -41,8 +41,8 @@ const S = (l, u, r) => x(l.subTree).filter(
41
41
  return {
42
42
  children: c,
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.241",
3
+ "version": "0.0.243",
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.241";
1
+ const o = "0.0.243";
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-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;
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;
@@ -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<string | number, string | number>;
49
+ currentName: import("vue").Ref<import("./types").TabPaneName, import("./types").TabPaneName>;
50
50
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
51
51
  "update:modelValue": (name: string | number) => void;
52
52
  tabClick: (pane: {
@@ -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<string | number, string | number>;
30
+ currentName: import("vue").Ref<TabPaneName, TabPaneName>;
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 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
+ "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 +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=(u,c,o)=>v.flattedChildren(u.subTree).filter(e=>t.isVNode(e)&&e.type?.name===c&&!!e.component).map(e=>e.component.uid).map(e=>o[e]).filter(e=>!!e),q=(u,c)=>{const o=t.shallowRef({}),a=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 i=n.insertBefore.bind(n);n.insertBefore=(l,h)=>(s.get(n).some(f=>l===f||h===f)&&t.triggerRef(o),i(l,h))}s.get(n).push(d)})},p=r=>{delete o.value[r.uid],t.triggerRef(o);const d=r.getVnode().el,n=d.parentNode,i=s.get(n),l=i.indexOf(d);i.splice(l,1)},g=()=>{a.value=N(u,c,o.value)},C=r=>r.render(),m=t.defineComponent({setup(r,{slots:d}){return()=>(g(),d.default?t.h(C,{render:d.default}):null)}});return{children:a,addChild:e,removeChild:p,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.241";exports.version=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.243";exports.version=e;
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  "name": "vft",
3
- "version": "0.0.241",
3
+ "version": "0.0.243",
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.241",
3
+ "version": "0.0.243",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.js",
@@ -54,11 +54,11 @@
54
54
  "qrcode": "1.5.3",
55
55
  "resize-detector": "0.3.0",
56
56
  "sortablejs": "1.15.0",
57
- "@vft/utils": "0.0.114",
58
- "@vft/use": "0.0.54",
59
57
  "@vft/constants": "0.0.71",
60
58
  "@vft/router": "0.0.57",
61
59
  "@vft/store": "0.0.42",
60
+ "@vft/use": "0.0.54",
61
+ "@vft/utils": "0.0.114",
62
62
  "@vft/directives": "0.0.29"
63
63
  },
64
64
  "vetur": {
package/web-types.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"http://json.schemastore.org/web-types","framework":"vue","name":"vft","version":"0.0.241","js-types-syntax":"typescript","description-markup":"markdown","contributions":{"html":{}}}
1
+ {"$schema":"http://json.schemastore.org/web-types","framework":"vue","name":"vft","version":"0.0.243","js-types-syntax":"typescript","description-markup":"markdown","contributions":{"html":{}}}