vant-vtk 1.0.0 → 1.0.2

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.
@@ -0,0 +1,179 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("[data-v-54417869] .van-checkbox{margin-bottom:8px;margin-right:12px}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ import { computed as v, resolveComponent as d, openBlock as g, createBlock as k, normalizeProps as h, guardReactiveProps as C, withCtx as V, createVNode as _, createElementBlock as x, Fragment as b, renderList as F, createTextVNode as P, toDisplayString as j, ref as N, mergeProps as B } from "vue";
3
+ const T = (a, i) => {
4
+ const e = a.__vccOpts || a;
5
+ for (const [p, u] of i)
6
+ e[p] = u;
7
+ return e;
8
+ }, O = /* @__PURE__ */ Object.assign({
9
+ name: "VtkCheckboxField"
10
+ }, {
11
+ __name: "index",
12
+ props: {
13
+ // 绑定值
14
+ modelValue: {
15
+ type: [String, Array, Object],
16
+ default: () => []
17
+ },
18
+ // 选项数据:支持数组 [{value, text}] 或 字符串 '1:选项1/2:选项2'
19
+ options: {
20
+ type: [Array, String],
21
+ default: () => []
22
+ },
23
+ // 返回值类型: 'string' (逗号分隔), 'array' (值数组), 'object' (对象数组)
24
+ valueType: {
25
+ type: String,
26
+ default: "array",
27
+ validator: (a) => ["string", "array", "object"].includes(a)
28
+ },
29
+ // 当 valueType 为 string 时的分隔符
30
+ separator: {
31
+ type: String,
32
+ default: ","
33
+ }
34
+ },
35
+ emits: ["update:modelValue", "change"],
36
+ setup(a, { emit: i }) {
37
+ const e = a, p = i, u = v(() => Array.isArray(e.options) ? e.options : typeof e.options == "string" && e.options ? e.options.split("/").filter(Boolean).map((t) => {
38
+ const [n, l] = t.split(":");
39
+ return {
40
+ text: l || n,
41
+ value: n
42
+ };
43
+ }) : []), c = v({
44
+ get: () => {
45
+ const t = e.modelValue;
46
+ if (!t) return [];
47
+ let n = [];
48
+ return e.valueType === "string" ? n = typeof t == "string" ? t.split(e.separator).filter(Boolean) : [] : e.valueType === "object" ? n = Array.isArray(t) ? t.map((l) => (l == null ? void 0 : l.value) ?? l) : [] : n = Array.isArray(t) ? t : [], n.map(String);
49
+ },
50
+ set: (t) => {
51
+ let n;
52
+ e.valueType === "string" ? n = t.join(e.separator) : e.valueType === "object" ? n = u.value.filter((l) => t.includes(String(l.value))) : n = t.map((l) => isNaN(Number(l)) ? l : Array.isArray(e.modelValue) && typeof e.modelValue[0] == "number" ? Number(l) : l), p("update:modelValue", n), p("change", n);
53
+ }
54
+ });
55
+ return (t, n) => {
56
+ const l = d("van-checkbox"), s = d("van-checkbox-group"), o = d("van-field");
57
+ return g(), k(o, h(C(t.$attrs)), {
58
+ input: V(() => [
59
+ _(s, {
60
+ modelValue: c.value,
61
+ "onUpdate:modelValue": n[0] || (n[0] = (r) => c.value = r),
62
+ direction: "horizontal"
63
+ }, {
64
+ default: V(() => [
65
+ (g(!0), x(b, null, F(u.value, (r) => (g(), k(l, {
66
+ key: String(r.value),
67
+ name: String(r.value),
68
+ shape: "square"
69
+ }, {
70
+ default: V(() => [
71
+ P(j(r.text), 1)
72
+ ]),
73
+ _: 2
74
+ }, 1032, ["name"]))), 128))
75
+ ]),
76
+ _: 1
77
+ }, 8, ["modelValue"])
78
+ ]),
79
+ _: 1
80
+ }, 16);
81
+ };
82
+ }
83
+ }), f = /* @__PURE__ */ T(O, [["__scopeId", "data-v-54417869"]]);
84
+ f.install = (a) => {
85
+ a.component(f.name || "VtkCheckboxField", f);
86
+ };
87
+ const y = /* @__PURE__ */ Object.assign({
88
+ name: "VtkPickerField"
89
+ }, {
90
+ __name: "index",
91
+ props: {
92
+ // 绑定值 (value)
93
+ modelValue: {
94
+ type: [String, Number],
95
+ default: ""
96
+ },
97
+ // 选项数据:支持数组 [{value, text}] 或 字符串 '1:选项1/2:选项2'
98
+ options: {
99
+ type: [Array, String],
100
+ default: () => []
101
+ },
102
+ // 弹窗标题
103
+ title: {
104
+ type: String,
105
+ default: "请选择"
106
+ }
107
+ },
108
+ emits: ["update:modelValue", "change"],
109
+ setup(a, { emit: i }) {
110
+ const e = a, p = i, u = N(!1), c = v(() => Array.isArray(e.options) ? e.options : typeof e.options == "string" && e.options ? e.options.split("/").filter(Boolean).map((s) => {
111
+ const [o, r] = s.split(":");
112
+ return {
113
+ text: r || o,
114
+ // 如果没有冒号,则 text 和 value 相同
115
+ value: o
116
+ };
117
+ }) : []), t = v(() => {
118
+ const s = c.value.find((o) => String(o.value) === String(e.modelValue));
119
+ return s ? s.text : e.modelValue;
120
+ }), n = v(() => e.modelValue !== void 0 && e.modelValue !== null && e.modelValue !== "" ? [e.modelValue] : []), l = ({ selectedOptions: s }) => {
121
+ var r;
122
+ const o = (r = s[0]) == null ? void 0 : r.value;
123
+ p("update:modelValue", o), p("change", o, s[0]), u.value = !1;
124
+ };
125
+ return (s, o) => {
126
+ const r = d("van-field"), S = d("van-picker"), A = d("van-popup");
127
+ return g(), x(b, null, [
128
+ _(r, B({
129
+ modelValue: t.value,
130
+ "onUpdate:modelValue": o[0] || (o[0] = (m) => t.value = m),
131
+ "is-link": "",
132
+ readonly: "",
133
+ onClick: o[1] || (o[1] = (m) => u.value = !0)
134
+ }, s.$attrs), null, 16, ["modelValue"]),
135
+ _(A, {
136
+ show: u.value,
137
+ "onUpdate:show": o[3] || (o[3] = (m) => u.value = m),
138
+ position: "bottom",
139
+ round: ""
140
+ }, {
141
+ default: V(() => [
142
+ _(S, {
143
+ title: a.title,
144
+ columns: c.value,
145
+ "model-value": n.value,
146
+ onConfirm: l,
147
+ onCancel: o[2] || (o[2] = (m) => u.value = !1)
148
+ }, null, 8, ["title", "columns", "model-value"])
149
+ ]),
150
+ _: 1
151
+ }, 8, ["show"])
152
+ ], 64);
153
+ };
154
+ }
155
+ });
156
+ y.install = (a) => {
157
+ a.component(y.name || "VtkPickerField", y);
158
+ };
159
+ const $ = [
160
+ f,
161
+ y
162
+ ], w = (a) => {
163
+ $.forEach((i) => {
164
+ i.install ? a.use(i) : i.name && a.component(i.name, i);
165
+ });
166
+ }, z = {
167
+ install: w,
168
+ // 也导出所有组件,方便直接访问
169
+ CheckboxField: f,
170
+ PickerField: y
171
+ }, E = "1.0.0";
172
+ export {
173
+ f as CheckboxField,
174
+ y as PickerField,
175
+ z as default,
176
+ w as install,
177
+ E as version
178
+ };
179
+ //# sourceMappingURL=vant-vtk.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vant-vtk.es.js","sources":["../packages/checkbox-field/index.vue","../packages/checkbox-field/index.js","../packages/picker-field/index.vue","../packages/picker-field/index.js","../src/index.js"],"sourcesContent":["<template>\r\n <van-field v-bind=\"$attrs\">\r\n <template #input>\r\n <van-checkbox-group v-model=\"internalValue\" direction=\"horizontal\">\r\n <van-checkbox v-for=\"item in parsedOptions\" :key=\"String(item.value)\" :name=\"String(item.value)\" shape=\"square\">\r\n {{ item.text }}\r\n </van-checkbox>\r\n </van-checkbox-group>\r\n </template>\r\n </van-field>\r\n</template>\r\n\r\n<script setup>\r\n import { computed } from 'vue'\r\n\r\n defineOptions({\r\n name: 'VtkCheckboxField'\r\n })\r\n\r\n const props = defineProps({\r\n // 绑定值\r\n modelValue: {\r\n type: [String, Array, Object],\r\n default: () => [],\r\n },\r\n // 选项数据:支持数组 [{value, text}] 或 字符串 '1:选项1/2:选项2'\r\n options: {\r\n type: [Array, String],\r\n default: () => [],\r\n },\r\n // 返回值类型: 'string' (逗号分隔), 'array' (值数组), 'object' (对象数组)\r\n valueType: {\r\n type: String,\r\n default: 'array',\r\n validator: (val) => ['string', 'array', 'object'].includes(val),\r\n },\r\n // 当 valueType 为 string 时的分隔符\r\n separator: {\r\n type: String,\r\n default: ',',\r\n },\r\n })\r\n\r\n const emit = defineEmits(['update:modelValue', 'change'])\r\n\r\n // 解析选项\r\n const parsedOptions = computed(() => {\r\n if (Array.isArray(props.options)) {\r\n return props.options\r\n }\r\n if (typeof props.options === 'string' && props.options) {\r\n return props.options\r\n .split('/')\r\n .filter(Boolean)\r\n .map((item) => {\r\n const [value, text] = item.split(':')\r\n return {\r\n text: text || value,\r\n value: value,\r\n }\r\n })\r\n }\r\n return []\r\n })\r\n\r\n // 使用可写计算属性处理 v-model 绑定\r\n const internalValue = computed({\r\n get: () => {\r\n const val = props.modelValue\r\n if (!val) return []\r\n\r\n let arr = []\r\n if (props.valueType === 'string') {\r\n arr = typeof val === 'string' ? val.split(props.separator).filter(Boolean) : []\r\n } else if (props.valueType === 'object') {\r\n arr = Array.isArray(val) ? val.map((item) => item?.value ?? item) : []\r\n } else {\r\n arr = Array.isArray(val) ? val : []\r\n }\r\n // 统一转为字符串,确保与 van-checkbox 的 name 匹配\r\n return arr.map(String)\r\n },\r\n set: (newValues) => {\r\n let emitValue\r\n if (props.valueType === 'string') {\r\n emitValue = newValues.join(props.separator)\r\n } else if (props.valueType === 'object') {\r\n // 从解析后的选项中过滤出完整的对象\r\n emitValue = parsedOptions.value.filter((opt) => newValues.includes(String(opt.value)))\r\n } else {\r\n // 如果原始数据是数字,则尝试转回数字,否则保持字符串\r\n emitValue = newValues.map((val) => {\r\n return isNaN(Number(val)) ? val : Array.isArray(props.modelValue) && typeof props.modelValue[0] === 'number' ? Number(val) : val\r\n })\r\n }\r\n\r\n emit('update:modelValue', emitValue)\r\n emit('change', emitValue)\r\n },\r\n })\r\n</script>\r\n\r\n<style scoped>\r\n :deep(.van-checkbox) {\r\n margin-bottom: 8px;\r\n margin-right: 12px;\r\n }\r\n</style>\r\n","/**\r\n * CheckboxField 组件单独导出入口\r\n * 支持按需引入\r\n */\r\nimport CheckboxField from './index.vue'\r\n\r\n// 为组件添加 install 方法,支持 app.use() 方式注册\r\nCheckboxField.install = (app) => {\r\n app.component(CheckboxField.name || 'VtkCheckboxField', CheckboxField)\r\n}\r\n\r\nexport default CheckboxField\r\nexport { CheckboxField }\r\n","<template>\r\n <van-field v-model=\"displayValue\" is-link readonly @click=\"showPicker = true\" v-bind=\"$attrs\" />\r\n\r\n <van-popup v-model:show=\"showPicker\" position=\"bottom\" round>\r\n <van-picker :title=\"title\" :columns=\"parsedOptions\" :model-value=\"pickerValue\" @confirm=\"onConfirm\" @cancel=\"showPicker = false\" />\r\n </van-popup>\r\n</template>\r\n\r\n<script setup>\r\n import { ref, computed } from 'vue'\r\n\r\n defineOptions({\r\n name: 'VtkPickerField'\r\n })\r\n\r\n const props = defineProps({\r\n // 绑定值 (value)\r\n modelValue: {\r\n type: [String, Number],\r\n default: '',\r\n },\r\n // 选项数据:支持数组 [{value, text}] 或 字符串 '1:选项1/2:选项2'\r\n options: {\r\n type: [Array, String],\r\n default: () => [],\r\n },\r\n // 弹窗标题\r\n title: {\r\n type: String,\r\n default: '请选择',\r\n },\r\n })\r\n\r\n const emit = defineEmits(['update:modelValue', 'change'])\r\n\r\n const showPicker = ref(false)\r\n\r\n // 解析选项:将字符串或数组统一转化为 [{text, value}] 格式\r\n const parsedOptions = computed(() => {\r\n if (Array.isArray(props.options)) {\r\n return props.options\r\n }\r\n if (typeof props.options === 'string' && props.options) {\r\n // 解析格式 '1:选项1/2:选项2'\r\n return props.options\r\n .split('/')\r\n .filter(Boolean)\r\n .map((item) => {\r\n const [value, text] = item.split(':')\r\n return {\r\n text: text || value, // 如果没有冒号,则 text 和 value 相同\r\n value: value,\r\n }\r\n })\r\n }\r\n return []\r\n })\r\n\r\n // 计算显示文本\r\n const displayValue = computed(() => {\r\n const selected = parsedOptions.value.find((opt) => String(opt.value) === String(props.modelValue))\r\n return selected ? selected.text : props.modelValue\r\n })\r\n\r\n // Picker 组件当前选中的值(Vant 4 的 model-value 是数组)\r\n const pickerValue = computed(() => {\r\n return props.modelValue !== undefined && props.modelValue !== null && props.modelValue !== '' ? [props.modelValue] : []\r\n })\r\n\r\n // 确认选择\r\n const onConfirm = ({ selectedOptions }) => {\r\n const value = selectedOptions[0]?.value\r\n emit('update:modelValue', value)\r\n emit('change', value, selectedOptions[0])\r\n showPicker.value = false\r\n }\r\n</script>\r\n\r\n<style scoped></style>\r\n","/**\r\n * PickerField 组件单独导出入口\r\n * 支持按需引入\r\n */\r\nimport PickerField from './index.vue'\r\n\r\n// 为组件添加 install 方法,支持 app.use() 方式注册\r\nPickerField.install = (app) => {\r\n app.component(PickerField.name || 'VtkPickerField', PickerField)\r\n}\r\n\r\nexport default PickerField\r\nexport { PickerField }\r\n","/**\r\n * Vant-VTK 组件库全量导出入口\r\n * 支持全量引入和按需引入\r\n */\r\nimport CheckboxField from '../packages/checkbox-field/index.js'\r\nimport PickerField from '../packages/picker-field/index.js'\r\n\r\n// 所有组件列表\r\nconst components = [\r\n CheckboxField,\r\n PickerField\r\n]\r\n\r\n// 全量注册方法\r\nconst install = (app) => {\r\n components.forEach(component => {\r\n if (component.install) {\r\n app.use(component)\r\n } else if (component.name) {\r\n app.component(component.name, component)\r\n }\r\n })\r\n}\r\n\r\n// 默认导出 - 支持 app.use(VantVtk) 全量注册\r\nexport default {\r\n install,\r\n // 也导出所有组件,方便直接访问\r\n CheckboxField,\r\n PickerField\r\n}\r\n\r\n// 具名导出 - 支持按需引入\r\nexport {\r\n install,\r\n CheckboxField,\r\n PickerField\r\n}\r\n\r\n// 导出版本号\r\nexport const version = '1.0.0'\r\n"],"names":["props","__props","emit","__emit","parsedOptions","computed","item","value","text","internalValue","val","arr","newValues","emitValue","opt","_openBlock","_createBlock","_component_van_field","$attrs","_createVNode","_component_van_checkbox_group","$event","_createElementBlock","_Fragment","_renderList","_component_van_checkbox","_createTextVNode","_toDisplayString","CheckboxField","app","showPicker","ref","displayValue","selected","pickerValue","onConfirm","selectedOptions","_a","_mergeProps","_component_van_popup","_component_van_picker","PickerField","components","install","component","index","version"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("[data-v-54417869] .van-checkbox{margin-bottom:8px;margin-right:12px}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ (function(s,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(s=typeof globalThis<"u"?globalThis:s||self,e(s.VantVtk={},s.Vue))})(this,function(s,e){"use strict";const m=((r,p)=>{const t=r.__vccOpts||r;for(const[d,c]of p)t[d]=c;return t})(Object.assign({name:"VtkCheckboxField"},{__name:"index",props:{modelValue:{type:[String,Array,Object],default:()=>[]},options:{type:[Array,String],default:()=>[]},valueType:{type:String,default:"array",validator:r=>["string","array","object"].includes(r)},separator:{type:String,default:","}},emits:["update:modelValue","change"],setup(r,{emit:p}){const t=r,d=p,c=e.computed(()=>Array.isArray(t.options)?t.options:typeof t.options=="string"&&t.options?t.options.split("/").filter(Boolean).map(n=>{const[o,a]=n.split(":");return{text:a||o,value:o}}):[]),y=e.computed({get:()=>{const n=t.modelValue;if(!n)return[];let o=[];return t.valueType==="string"?o=typeof n=="string"?n.split(t.separator).filter(Boolean):[]:t.valueType==="object"?o=Array.isArray(n)?n.map(a=>(a==null?void 0:a.value)??a):[]:o=Array.isArray(n)?n:[],o.map(String)},set:n=>{let o;t.valueType==="string"?o=n.join(t.separator):t.valueType==="object"?o=c.value.filter(a=>n.includes(String(a.value))):o=n.map(a=>isNaN(Number(a))?a:Array.isArray(t.modelValue)&&typeof t.modelValue[0]=="number"?Number(a):a),d("update:modelValue",o),d("change",o)}});return(n,o)=>{const a=e.resolveComponent("van-checkbox"),u=e.resolveComponent("van-checkbox-group"),l=e.resolveComponent("van-field");return e.openBlock(),e.createBlock(l,e.normalizeProps(e.guardReactiveProps(n.$attrs)),{input:e.withCtx(()=>[e.createVNode(u,{modelValue:y.value,"onUpdate:modelValue":o[0]||(o[0]=i=>y.value=i),direction:"horizontal"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,i=>(e.openBlock(),e.createBlock(a,{key:String(i.value),name:String(i.value),shape:"square"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.text),1)]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue"])]),_:1},16)}}}),[["__scopeId","data-v-54417869"]]);m.install=r=>{r.component(m.name||"VtkCheckboxField",m)};const f=Object.assign({name:"VtkPickerField"},{__name:"index",props:{modelValue:{type:[String,Number],default:""},options:{type:[Array,String],default:()=>[]},title:{type:String,default:"请选择"}},emits:["update:modelValue","change"],setup(r,{emit:p}){const t=r,d=p,c=e.ref(!1),y=e.computed(()=>Array.isArray(t.options)?t.options:typeof t.options=="string"&&t.options?t.options.split("/").filter(Boolean).map(u=>{const[l,i]=u.split(":");return{text:i||l,value:l}}):[]),n=e.computed(()=>{const u=y.value.find(l=>String(l.value)===String(t.modelValue));return u?u.text:t.modelValue}),o=e.computed(()=>t.modelValue!==void 0&&t.modelValue!==null&&t.modelValue!==""?[t.modelValue]:[]),a=({selectedOptions:u})=>{var i;const l=(i=u[0])==null?void 0:i.value;d("update:modelValue",l),d("change",l,u[0]),c.value=!1};return(u,l)=>{const i=e.resolveComponent("van-field"),x=e.resolveComponent("van-picker"),b=e.resolveComponent("van-popup");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(i,e.mergeProps({modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=g=>n.value=g),"is-link":"",readonly:"",onClick:l[1]||(l[1]=g=>c.value=!0)},u.$attrs),null,16,["modelValue"]),e.createVNode(b,{show:c.value,"onUpdate:show":l[3]||(l[3]=g=>c.value=g),position:"bottom",round:""},{default:e.withCtx(()=>[e.createVNode(x,{title:r.title,columns:y.value,"model-value":o.value,onConfirm:a,onCancel:l[2]||(l[2]=g=>c.value=!1)},null,8,["title","columns","model-value"])]),_:1},8,["show"])],64)}}});f.install=r=>{r.component(f.name||"VtkPickerField",f)};const k=[m,f],V=r=>{k.forEach(p=>{p.install?r.use(p):p.name&&r.component(p.name,p)})},_={install:V,CheckboxField:m,PickerField:f},v="1.0.0";s.CheckboxField=m,s.PickerField=f,s.default=_,s.install=V,s.version=v,Object.defineProperties(s,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
3
+ //# sourceMappingURL=vant-vtk.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vant-vtk.umd.js","sources":["../packages/checkbox-field/index.vue","../packages/checkbox-field/index.js","../packages/picker-field/index.vue","../packages/picker-field/index.js","../src/index.js"],"sourcesContent":["<template>\r\n <van-field v-bind=\"$attrs\">\r\n <template #input>\r\n <van-checkbox-group v-model=\"internalValue\" direction=\"horizontal\">\r\n <van-checkbox v-for=\"item in parsedOptions\" :key=\"String(item.value)\" :name=\"String(item.value)\" shape=\"square\">\r\n {{ item.text }}\r\n </van-checkbox>\r\n </van-checkbox-group>\r\n </template>\r\n </van-field>\r\n</template>\r\n\r\n<script setup>\r\n import { computed } from 'vue'\r\n\r\n defineOptions({\r\n name: 'VtkCheckboxField'\r\n })\r\n\r\n const props = defineProps({\r\n // 绑定值\r\n modelValue: {\r\n type: [String, Array, Object],\r\n default: () => [],\r\n },\r\n // 选项数据:支持数组 [{value, text}] 或 字符串 '1:选项1/2:选项2'\r\n options: {\r\n type: [Array, String],\r\n default: () => [],\r\n },\r\n // 返回值类型: 'string' (逗号分隔), 'array' (值数组), 'object' (对象数组)\r\n valueType: {\r\n type: String,\r\n default: 'array',\r\n validator: (val) => ['string', 'array', 'object'].includes(val),\r\n },\r\n // 当 valueType 为 string 时的分隔符\r\n separator: {\r\n type: String,\r\n default: ',',\r\n },\r\n })\r\n\r\n const emit = defineEmits(['update:modelValue', 'change'])\r\n\r\n // 解析选项\r\n const parsedOptions = computed(() => {\r\n if (Array.isArray(props.options)) {\r\n return props.options\r\n }\r\n if (typeof props.options === 'string' && props.options) {\r\n return props.options\r\n .split('/')\r\n .filter(Boolean)\r\n .map((item) => {\r\n const [value, text] = item.split(':')\r\n return {\r\n text: text || value,\r\n value: value,\r\n }\r\n })\r\n }\r\n return []\r\n })\r\n\r\n // 使用可写计算属性处理 v-model 绑定\r\n const internalValue = computed({\r\n get: () => {\r\n const val = props.modelValue\r\n if (!val) return []\r\n\r\n let arr = []\r\n if (props.valueType === 'string') {\r\n arr = typeof val === 'string' ? val.split(props.separator).filter(Boolean) : []\r\n } else if (props.valueType === 'object') {\r\n arr = Array.isArray(val) ? val.map((item) => item?.value ?? item) : []\r\n } else {\r\n arr = Array.isArray(val) ? val : []\r\n }\r\n // 统一转为字符串,确保与 van-checkbox 的 name 匹配\r\n return arr.map(String)\r\n },\r\n set: (newValues) => {\r\n let emitValue\r\n if (props.valueType === 'string') {\r\n emitValue = newValues.join(props.separator)\r\n } else if (props.valueType === 'object') {\r\n // 从解析后的选项中过滤出完整的对象\r\n emitValue = parsedOptions.value.filter((opt) => newValues.includes(String(opt.value)))\r\n } else {\r\n // 如果原始数据是数字,则尝试转回数字,否则保持字符串\r\n emitValue = newValues.map((val) => {\r\n return isNaN(Number(val)) ? val : Array.isArray(props.modelValue) && typeof props.modelValue[0] === 'number' ? Number(val) : val\r\n })\r\n }\r\n\r\n emit('update:modelValue', emitValue)\r\n emit('change', emitValue)\r\n },\r\n })\r\n</script>\r\n\r\n<style scoped>\r\n :deep(.van-checkbox) {\r\n margin-bottom: 8px;\r\n margin-right: 12px;\r\n }\r\n</style>\r\n","/**\r\n * CheckboxField 组件单独导出入口\r\n * 支持按需引入\r\n */\r\nimport CheckboxField from './index.vue'\r\n\r\n// 为组件添加 install 方法,支持 app.use() 方式注册\r\nCheckboxField.install = (app) => {\r\n app.component(CheckboxField.name || 'VtkCheckboxField', CheckboxField)\r\n}\r\n\r\nexport default CheckboxField\r\nexport { CheckboxField }\r\n","<template>\r\n <van-field v-model=\"displayValue\" is-link readonly @click=\"showPicker = true\" v-bind=\"$attrs\" />\r\n\r\n <van-popup v-model:show=\"showPicker\" position=\"bottom\" round>\r\n <van-picker :title=\"title\" :columns=\"parsedOptions\" :model-value=\"pickerValue\" @confirm=\"onConfirm\" @cancel=\"showPicker = false\" />\r\n </van-popup>\r\n</template>\r\n\r\n<script setup>\r\n import { ref, computed } from 'vue'\r\n\r\n defineOptions({\r\n name: 'VtkPickerField'\r\n })\r\n\r\n const props = defineProps({\r\n // 绑定值 (value)\r\n modelValue: {\r\n type: [String, Number],\r\n default: '',\r\n },\r\n // 选项数据:支持数组 [{value, text}] 或 字符串 '1:选项1/2:选项2'\r\n options: {\r\n type: [Array, String],\r\n default: () => [],\r\n },\r\n // 弹窗标题\r\n title: {\r\n type: String,\r\n default: '请选择',\r\n },\r\n })\r\n\r\n const emit = defineEmits(['update:modelValue', 'change'])\r\n\r\n const showPicker = ref(false)\r\n\r\n // 解析选项:将字符串或数组统一转化为 [{text, value}] 格式\r\n const parsedOptions = computed(() => {\r\n if (Array.isArray(props.options)) {\r\n return props.options\r\n }\r\n if (typeof props.options === 'string' && props.options) {\r\n // 解析格式 '1:选项1/2:选项2'\r\n return props.options\r\n .split('/')\r\n .filter(Boolean)\r\n .map((item) => {\r\n const [value, text] = item.split(':')\r\n return {\r\n text: text || value, // 如果没有冒号,则 text 和 value 相同\r\n value: value,\r\n }\r\n })\r\n }\r\n return []\r\n })\r\n\r\n // 计算显示文本\r\n const displayValue = computed(() => {\r\n const selected = parsedOptions.value.find((opt) => String(opt.value) === String(props.modelValue))\r\n return selected ? selected.text : props.modelValue\r\n })\r\n\r\n // Picker 组件当前选中的值(Vant 4 的 model-value 是数组)\r\n const pickerValue = computed(() => {\r\n return props.modelValue !== undefined && props.modelValue !== null && props.modelValue !== '' ? [props.modelValue] : []\r\n })\r\n\r\n // 确认选择\r\n const onConfirm = ({ selectedOptions }) => {\r\n const value = selectedOptions[0]?.value\r\n emit('update:modelValue', value)\r\n emit('change', value, selectedOptions[0])\r\n showPicker.value = false\r\n }\r\n</script>\r\n\r\n<style scoped></style>\r\n","/**\r\n * PickerField 组件单独导出入口\r\n * 支持按需引入\r\n */\r\nimport PickerField from './index.vue'\r\n\r\n// 为组件添加 install 方法,支持 app.use() 方式注册\r\nPickerField.install = (app) => {\r\n app.component(PickerField.name || 'VtkPickerField', PickerField)\r\n}\r\n\r\nexport default PickerField\r\nexport { PickerField }\r\n","/**\r\n * Vant-VTK 组件库全量导出入口\r\n * 支持全量引入和按需引入\r\n */\r\nimport CheckboxField from '../packages/checkbox-field/index.js'\r\nimport PickerField from '../packages/picker-field/index.js'\r\n\r\n// 所有组件列表\r\nconst components = [\r\n CheckboxField,\r\n PickerField\r\n]\r\n\r\n// 全量注册方法\r\nconst install = (app) => {\r\n components.forEach(component => {\r\n if (component.install) {\r\n app.use(component)\r\n } else if (component.name) {\r\n app.component(component.name, component)\r\n }\r\n })\r\n}\r\n\r\n// 默认导出 - 支持 app.use(VantVtk) 全量注册\r\nexport default {\r\n install,\r\n // 也导出所有组件,方便直接访问\r\n CheckboxField,\r\n PickerField\r\n}\r\n\r\n// 具名导出 - 支持按需引入\r\nexport {\r\n install,\r\n CheckboxField,\r\n PickerField\r\n}\r\n\r\n// 导出版本号\r\nexport const version = '1.0.0'\r\n"],"names":["props","__props","emit","__emit","parsedOptions","computed","item","value","text","internalValue","val","arr","newValues","emitValue","opt","_openBlock","_createBlock","_component_van_field","$attrs","_createVNode","_component_van_checkbox_group","$event","_createElementBlock","_Fragment","_renderList","_component_van_checkbox","_createTextVNode","_toDisplayString","CheckboxField","app","showPicker","ref","displayValue","selected","pickerValue","onConfirm","selectedOptions","_a","_mergeProps","_component_van_popup","_component_van_picker","PickerField","components","install","component","index","version"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vant-vtk",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Vue3 + Vant4 扩展组件库",
5
5
  "type": "module",
6
6
  "main": "./dist/vant-vtk.umd.js",
@@ -12,10 +12,7 @@
12
12
  "require": "./dist/vant-vtk.umd.js"
13
13
  },
14
14
  "./es": "./dist/vant-vtk.es.js",
15
- "./lib": "./dist/vant-vtk.umd.js",
16
- "./es/*": "./dist/es/*",
17
- "./lib/*": "./dist/lib/*",
18
- "./dist/style.css": "./dist/style.css"
15
+ "./lib": "./dist/vant-vtk.umd.js"
19
16
  },
20
17
  "files": [
21
18
  "dist",
@@ -41,18 +38,23 @@
41
38
  "author": "",
42
39
  "license": "MIT",
43
40
  "peerDependencies": {
44
- "vue": "^3.2.0",
45
- "vant": "^4.0.0"
41
+ "vant": "^4.0.0",
42
+ "vue": "^3.2.0"
46
43
  },
47
44
  "devDependencies": {
48
45
  "@vitejs/plugin-vue": "^5.0.0",
46
+ "sass-embedded": "^1.97.3",
47
+ "vant": "^4.8.0",
49
48
  "vite": "^5.0.0",
50
- "vue": "^3.4.0",
51
- "vant": "^4.8.0"
49
+ "vite-plugin-css-injected-by-js": "^3.5.2",
50
+ "vue": "^3.4.0"
52
51
  },
53
52
  "repository": {
54
53
  "type": "git",
55
54
  "url": ""
56
55
  },
57
- "homepage": ""
56
+ "homepage": "",
57
+ "dependencies": {
58
+ "vue-pdf-embed": "^2.1.4"
59
+ }
58
60
  }
package/types/index.d.ts CHANGED
@@ -5,22 +5,34 @@ export interface OptionItem {
5
5
  text: string
6
6
  }
7
7
 
8
- export interface CheckboxFieldProps {
8
+ export interface CheckboxProps {
9
9
  modelValue?: string | any[] | object
10
10
  options?: OptionItem[] | string
11
11
  valueType?: 'string' | 'array' | 'object'
12
12
  separator?: string
13
13
  }
14
14
 
15
- export type CheckboxFieldInstance = DefineComponent<CheckboxFieldProps>
15
+ export interface PickerProps {
16
+ modelValue?: string | number
17
+ options?: OptionItem[] | string
18
+ title?: string
19
+ }
20
+
21
+ export type CheckboxInstance = DefineComponent<CheckboxProps>
22
+ export type PickerInstance = DefineComponent<PickerProps>
23
+
24
+ export declare const Checkbox: CheckboxInstance & {
25
+ install: (app: App) => void
26
+ }
16
27
 
17
- export declare const CheckboxField: CheckboxFieldInstance & {
28
+ export declare const Picker: PickerInstance & {
18
29
  install: (app: App) => void
19
30
  }
20
31
 
21
32
  declare const VantVtk: {
22
33
  install: (app: App) => void
23
- CheckboxField: typeof CheckboxField
34
+ Checkbox: typeof Checkbox
35
+ Picker: typeof Picker
24
36
  }
25
37
 
26
38
  export default VantVtk