@touchvue/ui 0.0.1-alpha.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.
Files changed (141) hide show
  1. package/README.md +70 -0
  2. package/es/components/article/index.js +66 -0
  3. package/es/components/article/index.js.map +1 -0
  4. package/es/components/box/index.js +98 -0
  5. package/es/components/box/index.js.map +1 -0
  6. package/es/components/button/index.js +96 -0
  7. package/es/components/button/index.js.map +1 -0
  8. package/es/components/calendar/index.js +44 -0
  9. package/es/components/calendar/index.js.map +1 -0
  10. package/es/components/card/index.js +290 -0
  11. package/es/components/card/index.js.map +1 -0
  12. package/es/components/checkbox/index.js +97 -0
  13. package/es/components/checkbox/index.js.map +1 -0
  14. package/es/components/datepicker/index.js +44 -0
  15. package/es/components/datepicker/index.js.map +1 -0
  16. package/es/components/form/index.js +303 -0
  17. package/es/components/form/index.js.map +1 -0
  18. package/es/components/grid/index.js +253 -0
  19. package/es/components/grid/index.js.map +1 -0
  20. package/es/components/header/index.js +233 -0
  21. package/es/components/header/index.js.map +1 -0
  22. package/es/components/icon/index.js +98 -0
  23. package/es/components/icon/index.js.map +1 -0
  24. package/es/components/input/index.js +436 -0
  25. package/es/components/input/index.js.map +1 -0
  26. package/es/components/line/index.js +100 -0
  27. package/es/components/line/index.js.map +1 -0
  28. package/es/components/msg/index.js +322 -0
  29. package/es/components/msg/index.js.map +1 -0
  30. package/es/components/padding/index.js +92 -0
  31. package/es/components/padding/index.js.map +1 -0
  32. package/es/components/page/index.js +334 -0
  33. package/es/components/page/index.js.map +1 -0
  34. package/es/components/select/index.js +218 -0
  35. package/es/components/select/index.js.map +1 -0
  36. package/es/components/space/index.js +88 -0
  37. package/es/components/space/index.js.map +1 -0
  38. package/es/components/step/index.js +127 -0
  39. package/es/components/step/index.js.map +1 -0
  40. package/es/components/switch/index.js +120 -0
  41. package/es/components/switch/index.js.map +1 -0
  42. package/es/components/tab/index.js +227 -0
  43. package/es/components/tab/index.js.map +1 -0
  44. package/es/components/table/index.js +893 -0
  45. package/es/components/table/index.js.map +1 -0
  46. package/es/directives/dis/index.js +32 -0
  47. package/es/directives/dis/index.js.map +1 -0
  48. package/es/directives/size/index.js +23 -0
  49. package/es/directives/size/index.js.map +1 -0
  50. package/es/hooks/index.js +2 -0
  51. package/es/hooks/index.js.map +1 -0
  52. package/es/index.js +4209 -0
  53. package/es/index.js.map +1 -0
  54. package/es/utils/index.js +90 -0
  55. package/es/utils/index.js.map +1 -0
  56. package/lib/components/article/index.js +70 -0
  57. package/lib/components/article/index.js.map +1 -0
  58. package/lib/components/box/index.js +102 -0
  59. package/lib/components/box/index.js.map +1 -0
  60. package/lib/components/button/index.js +98 -0
  61. package/lib/components/button/index.js.map +1 -0
  62. package/lib/components/calendar/index.js +46 -0
  63. package/lib/components/calendar/index.js.map +1 -0
  64. package/lib/components/card/index.js +292 -0
  65. package/lib/components/card/index.js.map +1 -0
  66. package/lib/components/checkbox/index.js +99 -0
  67. package/lib/components/checkbox/index.js.map +1 -0
  68. package/lib/components/datepicker/index.js +46 -0
  69. package/lib/components/datepicker/index.js.map +1 -0
  70. package/lib/components/form/index.js +306 -0
  71. package/lib/components/form/index.js.map +1 -0
  72. package/lib/components/grid/index.js +256 -0
  73. package/lib/components/grid/index.js.map +1 -0
  74. package/lib/components/header/index.js +235 -0
  75. package/lib/components/header/index.js.map +1 -0
  76. package/lib/components/icon/index.js +101 -0
  77. package/lib/components/icon/index.js.map +1 -0
  78. package/lib/components/input/index.js +438 -0
  79. package/lib/components/input/index.js.map +1 -0
  80. package/lib/components/line/index.js +102 -0
  81. package/lib/components/line/index.js.map +1 -0
  82. package/lib/components/msg/index.js +324 -0
  83. package/lib/components/msg/index.js.map +1 -0
  84. package/lib/components/padding/index.js +94 -0
  85. package/lib/components/padding/index.js.map +1 -0
  86. package/lib/components/page/index.js +336 -0
  87. package/lib/components/page/index.js.map +1 -0
  88. package/lib/components/select/index.js +220 -0
  89. package/lib/components/select/index.js.map +1 -0
  90. package/lib/components/space/index.js +90 -0
  91. package/lib/components/space/index.js.map +1 -0
  92. package/lib/components/step/index.js +129 -0
  93. package/lib/components/step/index.js.map +1 -0
  94. package/lib/components/switch/index.js +122 -0
  95. package/lib/components/switch/index.js.map +1 -0
  96. package/lib/components/tab/index.js +230 -0
  97. package/lib/components/tab/index.js.map +1 -0
  98. package/lib/components/table/index.js +898 -0
  99. package/lib/components/table/index.js.map +1 -0
  100. package/lib/directives/dis/index.js +34 -0
  101. package/lib/directives/dis/index.js.map +1 -0
  102. package/lib/directives/size/index.js +25 -0
  103. package/lib/directives/size/index.js.map +1 -0
  104. package/lib/hooks/index.js +3 -0
  105. package/lib/hooks/index.js.map +1 -0
  106. package/lib/index.js +4251 -0
  107. package/lib/index.js.map +1 -0
  108. package/lib/utils/index.js +99 -0
  109. package/lib/utils/index.js.map +1 -0
  110. package/package.json +35 -0
  111. package/theme/components/article/index.css +1 -0
  112. package/theme/components/box/index.css +1 -0
  113. package/theme/components/button/index.css +1 -0
  114. package/theme/components/calendar/index.css +0 -0
  115. package/theme/components/card/index.css +1 -0
  116. package/theme/components/checkbox/index.css +1 -0
  117. package/theme/components/datepicker/index.css +0 -0
  118. package/theme/components/form/index.css +1 -0
  119. package/theme/components/grid/index.css +1 -0
  120. package/theme/components/header/index.css +1 -0
  121. package/theme/components/icon/index.css +1 -0
  122. package/theme/components/input/index.css +1 -0
  123. package/theme/components/line/index.css +1 -0
  124. package/theme/components/msg/index.css +1 -0
  125. package/theme/components/padding/index.css +1 -0
  126. package/theme/components/space/index.css +1 -0
  127. package/theme/components/step/index.css +1 -0
  128. package/theme/components/switch/index.css +1 -0
  129. package/theme/components/tab/index.css +1 -0
  130. package/theme/components/table/index.css +1 -0
  131. package/theme/img/default.png +0 -0
  132. package/theme/img/icon-type-fill.ttf +0 -0
  133. package/theme/img/icon.ttf +0 -0
  134. package/theme/img/loading-in.png +0 -0
  135. package/theme/img/loading-out.png +0 -0
  136. package/theme/img/msg/error-bg.png +0 -0
  137. package/theme/img/msg/error-icon.png +0 -0
  138. package/theme/img/msg/success-bg.png +0 -0
  139. package/theme/img/msg/success-icon.png +0 -0
  140. package/theme/index.css +1 -0
  141. package/theme/skin/default.css +1 -0
@@ -0,0 +1,290 @@
1
+ import { provide, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, renderSlot, createCommentVNode, createElementVNode } from 'vue';
2
+
3
+ const withInstall = (main, extra) => {
4
+ main.install = (app) => {
5
+ for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
6
+ app.component(comp.name, comp);
7
+ }
8
+ };
9
+ if (extra) {
10
+ for (const [key, comp] of Object.entries(extra)) {
11
+ main[key] = comp;
12
+ }
13
+ }
14
+ return main;
15
+ };
16
+
17
+ navigator.userAgent.toLowerCase();
18
+
19
+ var _export_sfc = (sfc, props) => {
20
+ const target = sfc.__vccOpts || sfc;
21
+ for (const [key, val] of props) {
22
+ target[key] = val;
23
+ }
24
+ return target;
25
+ };
26
+
27
+ const _sfc_main$1 = /*@__PURE__*/Object.assign({
28
+ name: 'ToCard',
29
+ }, {
30
+ __name: 'Card',
31
+ props: {
32
+ fillet: { type: String, default: 'none' },
33
+ color: { type: String, default: '' },
34
+ mode: { type: String, default: 'default' },
35
+ padding: { type: [Number, String], default: '' },
36
+ link: Boolean,
37
+ shadow: Boolean,
38
+ checked: Boolean,
39
+ wrap: Boolean,
40
+ type: { type: String, default: '' },
41
+ width: { type: [Number, String], default: '' },
42
+ },
43
+ emits: ['click'],
44
+ setup(__props, { emit: __emit }) {
45
+
46
+
47
+
48
+ const props = __props;
49
+
50
+ const emits = __emit;
51
+
52
+ provide('toCard', {});
53
+
54
+ const setClass = computed(() => {
55
+ const arr = [];
56
+ if (props.wrap) arr.push('is-wrap');
57
+ if (props.mode) arr.push(`mode-${props.mode}`);
58
+ if (props.color) arr.push(`color-${props.color}`);
59
+ if (props.link) arr.push('is-link');
60
+ if (props.type) arr.push(`type-${props.type}`);
61
+ if (props.checked) arr.push('is-checked');
62
+ if (props.width === 'auto') arr.push('width-auto');
63
+ return arr;
64
+ });
65
+
66
+ const setStyle = computed(() => {
67
+ const obj = {};
68
+ if (props.width) {
69
+ obj.width = isNaN(Number(props.width)) ? props.width : `${props.width}em`;
70
+ }
71
+
72
+ const hasUnit = val => /[a-z%]+$/i.test(val);
73
+ if (String(props.padding).trim()) {
74
+ // 分割成各个值
75
+ const padded = String(props.padding)
76
+ .trim()
77
+ .split(/\s+/)
78
+ .map(val => {
79
+ // 如果是数字(或纯数字字符串),或末尾无单位,就加 em
80
+ return hasUnit(val) ? val : `${val}em`;
81
+ })
82
+ .join(' ');
83
+
84
+ obj.padding = padded;
85
+ }
86
+ return obj;
87
+ });
88
+
89
+ const setFnStyle = computed(() => {
90
+ const obj = {};
91
+ if (props.padding >= 0 && props.padding !== 1) {
92
+ obj.top = `${props.padding}em`;
93
+ obj.right = `${props.padding}em`;
94
+ }
95
+ return obj;
96
+ });
97
+
98
+ function clickHandle(evt) {
99
+ if (props.link) {
100
+ emits('click', evt);
101
+ }
102
+ }
103
+
104
+ return (_ctx, _cache) => {
105
+ return (openBlock(), createElementBlock("div", {
106
+ class: normalizeClass(["to-card", setClass.value]),
107
+ style: normalizeStyle(setStyle.value),
108
+ onClick: clickHandle
109
+ }, [
110
+ renderSlot(_ctx.$slots, "default"),
111
+ (_ctx.$slots.fn)
112
+ ? (openBlock(), createElementBlock("div", {
113
+ key: 0,
114
+ class: "to-card-fn",
115
+ style: normalizeStyle(setFnStyle.value)
116
+ }, [
117
+ renderSlot(_ctx.$slots, "fn")
118
+ ], 4 /* STYLE */))
119
+ : createCommentVNode("v-if", true)
120
+ ], 6 /* CLASS, STYLE */))
121
+ }
122
+ }
123
+
124
+ });
125
+ var Card = /*#__PURE__*/_export_sfc(_sfc_main$1, [['__file',"/Users/wangding/WorkSpace/AsiaInfo/projects/前端框架/touch-vue3-ui/packages/components/card/src/Card.vue"]]);
126
+
127
+ const _hoisted_1 = {
128
+ key: 0,
129
+ class: "to-card-title"
130
+ };
131
+ const _hoisted_2 = {
132
+ key: 0,
133
+ class: "to-card-title-main"
134
+ };
135
+ const _hoisted_3 = { class: "to-card-title-text" };
136
+ const _hoisted_4 = {
137
+ key: 1,
138
+ class: "to-card-title-side"
139
+ };
140
+ const _hoisted_5 = { class: "to-card-title-side-text" };
141
+ const _hoisted_6 = {
142
+ key: 1,
143
+ class: "to-card-content"
144
+ };
145
+ const _hoisted_7 = {
146
+ key: 0,
147
+ class: "to-card-content-main"
148
+ };
149
+ const _hoisted_8 = { class: "to-card-content-text" };
150
+ const _hoisted_9 = {
151
+ key: 1,
152
+ class: "to-card-content-side"
153
+ };
154
+ const _hoisted_10 = { class: "to-card-content-side-text" };
155
+ const _hoisted_11 = {
156
+ key: 2,
157
+ class: "to-card-value"
158
+ };
159
+ const _hoisted_12 = { class: "to-card-value-text" };
160
+ const _hoisted_13 = {
161
+ key: 3,
162
+ class: "to-card-label"
163
+ };
164
+ const _hoisted_14 = { class: "to-card-value-text" };
165
+
166
+
167
+ const _sfc_main = /*@__PURE__*/Object.assign({
168
+ name: 'ToCardItem',
169
+ }, {
170
+ __name: 'CardItem',
171
+ props: {
172
+ type: { type: String, default: 'side' },
173
+ align: { type: String, default: '' },
174
+ padding: { type: [Number, String], default: 0 },
175
+ width: { type: [Number, String], default: 0 },
176
+ line: Boolean,
177
+ more: Boolean,
178
+ link: Boolean,
179
+ main: Boolean,
180
+ },
181
+ setup(__props) {
182
+
183
+ const props = __props;
184
+
185
+ // const toCard = inject('toCard')
186
+
187
+
188
+
189
+ const setClass = computed(() => {
190
+ const arr = [];
191
+ if (props.type === 'main' || props.main) arr.push('is-main');
192
+ if (props.type === 'more' || props.more) arr.push('is-more');
193
+ if (props.type === 'link' || props.link) arr.push('is-link');
194
+ if (props.line === 'solid') arr.push('line-solid');
195
+ if (props.align) arr.push(`align-${props.align}`);
196
+ return arr;
197
+ });
198
+
199
+ const setStyle = computed(() => {
200
+ const obj = {};
201
+
202
+ const hasUnit = val => /[a-z%]+$/i.test(val);
203
+ if (String(props.padding).trim()) {
204
+ // 分割成各个值
205
+ const padded = String(props.padding)
206
+ .trim()
207
+ .split(/\s+/)
208
+ .map(val => {
209
+ // 如果是数字(或纯数字字符串),或末尾无单位,就加 em
210
+ return hasUnit(val) ? val : `${val}em`;
211
+ })
212
+ .join(' ');
213
+
214
+ obj.padding = padded;
215
+ }
216
+
217
+ if (props.width) {
218
+ obj.width = props.width + 'em';
219
+ }
220
+
221
+ return obj;
222
+ });
223
+
224
+ return (_ctx, _cache) => {
225
+ return (openBlock(), createElementBlock("div", {
226
+ class: normalizeClass(["to-card-item", setClass.value]),
227
+ style: normalizeStyle(setStyle.value)
228
+ }, [
229
+ renderSlot(_ctx.$slots, "default"),
230
+ (_ctx.$slots.title || _ctx.$slots.titleSide)
231
+ ? (openBlock(), createElementBlock("div", _hoisted_1, [
232
+ (_ctx.$slots.title)
233
+ ? (openBlock(), createElementBlock("div", _hoisted_2, [
234
+ createElementVNode("span", _hoisted_3, [
235
+ renderSlot(_ctx.$slots, "title")
236
+ ])
237
+ ]))
238
+ : createCommentVNode("v-if", true),
239
+ (_ctx.$slots.titleSide)
240
+ ? (openBlock(), createElementBlock("div", _hoisted_4, [
241
+ createElementVNode("span", _hoisted_5, [
242
+ renderSlot(_ctx.$slots, "titleSide")
243
+ ])
244
+ ]))
245
+ : createCommentVNode("v-if", true)
246
+ ]))
247
+ : createCommentVNode("v-if", true),
248
+ (_ctx.$slots.content || _ctx.$slots.contentSide)
249
+ ? (openBlock(), createElementBlock("div", _hoisted_6, [
250
+ (_ctx.$slots.content)
251
+ ? (openBlock(), createElementBlock("div", _hoisted_7, [
252
+ createElementVNode("span", _hoisted_8, [
253
+ renderSlot(_ctx.$slots, "content")
254
+ ])
255
+ ]))
256
+ : createCommentVNode("v-if", true),
257
+ (_ctx.$slots.contentSide)
258
+ ? (openBlock(), createElementBlock("div", _hoisted_9, [
259
+ createElementVNode("span", _hoisted_10, [
260
+ renderSlot(_ctx.$slots, "contentSide")
261
+ ])
262
+ ]))
263
+ : createCommentVNode("v-if", true)
264
+ ]))
265
+ : createCommentVNode("v-if", true),
266
+ (_ctx.$slots.value)
267
+ ? (openBlock(), createElementBlock("div", _hoisted_11, [
268
+ createElementVNode("span", _hoisted_12, [
269
+ renderSlot(_ctx.$slots, "value")
270
+ ])
271
+ ]))
272
+ : createCommentVNode("v-if", true),
273
+ (_ctx.$slots.label)
274
+ ? (openBlock(), createElementBlock("div", _hoisted_13, [
275
+ createElementVNode("span", _hoisted_14, [
276
+ renderSlot(_ctx.$slots, "label")
277
+ ])
278
+ ]))
279
+ : createCommentVNode("v-if", true)
280
+ ], 6 /* CLASS, STYLE */))
281
+ }
282
+ }
283
+
284
+ });
285
+ var CardItem = /*#__PURE__*/_export_sfc(_sfc_main, [['__file',"/Users/wangding/WorkSpace/AsiaInfo/projects/前端框架/touch-vue3-ui/packages/components/card/src/CardItem.vue"]]);
286
+
287
+ const ToCard = withInstall(Card, [CardItem]);
288
+
289
+ export { ToCard };
290
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/card/src/Card.vue","../../../../packages/components/card/src/CardItem.vue","../../../../packages/components/card/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\n\n/* 生成install函数 */\n\nexport type SFCWithInstall<T> = T & Plugin;\n\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\n _context: App | null;\n};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\n (main as SFCWithInstall<T>).install = (app: App): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp);\n }\n };\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp;\n }\n }\n return main as SFCWithInstall<T> & E;\n};\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app: App) => {\n (fn as SFCInstallWithContext<T>)._context = app;\n app.config.globalProperties[name] = fn;\n };\n\n return fn as SFCInstallWithContext<T>;\n};\n","interface Options {\n ratio?: {\n base?: {\n pc?: number;\n pad?: number;\n phone?: number;\n };\n };\n}\n\nconst ua = navigator.userAgent.toLowerCase();\n\nexport function setRatio(options: Options = {}) {\n const ua = navigator.userAgent.toLowerCase();\n const base = options?.ratio?.base ?? {};\n\n const baseSize = /iphone|android.*mobile|windows phone|ipod/i.test(ua)\n ? (base.phone ?? 375)\n : /ipad|android(?!.*mobile)|tablet/i.test(ua)\n ? (base.pad ?? 1100)\n : (base.pc ?? 1366);\n\n const updateFontSize = () => {\n const width = window.innerWidth || document.documentElement.clientWidth;\n document.documentElement.style.fontSize = (width / baseSize) * 100 + 'px';\n };\n\n updateFontSize();\n window.addEventListener('resize', updateFontSize);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getMedia(options: Options = {}) {\n const isMobile = /iphone|android.*mobile|windows phone|ipod/i.test(ua);\n const isTablet = /ipad|android(?!.*mobile)|tablet/i.test(ua);\n\n return isMobile ? 'phone' : isTablet ? 'pad' : 'pc';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function setMedia(options: Options = {}) {\n const html = document.documentElement;\n const classList: string[] = [];\n\n // 判断操作系统\n if (/windows/i.test(ua)) {\n classList.push('os-windows');\n } else if (/macintosh|mac os x/i.test(ua)) {\n classList.push('os-macos');\n } else if (/android/i.test(ua)) {\n classList.push('os-android');\n } else if (/iphone|ipad|ipod/i.test(ua)) {\n classList.push('os-ios');\n }\n\n // 判断设备类型\n const media = getMedia();\n if (media === 'pad') {\n classList.push('media-pad');\n } else if (media === 'phone') {\n classList.push('media-phone');\n } else {\n classList.push('media-pc');\n }\n\n // 添加 class 到 <html>\n html.className += ' ' + classList.join(' ');\n}\n\nexport function getEm() {\n const el = document.createElement('div');\n el.style.width = '1em';\n el.style.height = '1em';\n el.style.position = 'absolute';\n document.body.appendChild(el);\n const size = el.getBoundingClientRect().height;\n document.body.removeChild(el);\n return size;\n}\n","<template>\n <div class=\"to-card\" :style=\"setStyle\" :class=\"setClass\" @click=\"clickHandle\">\n <slot></slot>\n <div v-if=\"$slots.fn\" class=\"to-card-fn\" :style=\"setFnStyle\">\n <slot name=\"fn\"></slot>\n </div>\n </div>\n</template>\n<script setup>\nimport { computed, provide } from 'vue';\n\ndefineOptions({\n name: 'ToCard',\n});\n\nconst props = defineProps({\n fillet: { type: String, default: 'none' },\n color: { type: String, default: '' },\n mode: { type: String, default: 'default' },\n padding: { type: [Number, String], default: '' },\n link: Boolean,\n shadow: Boolean,\n checked: Boolean,\n wrap: Boolean,\n type: { type: String, default: '' },\n width: { type: [Number, String], default: '' },\n});\n\nconst emits = defineEmits(['click']);\n\nprovide('toCard', {});\n\nconst setClass = computed(() => {\n const arr = [];\n if (props.wrap) arr.push('is-wrap');\n if (props.mode) arr.push(`mode-${props.mode}`);\n if (props.color) arr.push(`color-${props.color}`);\n if (props.link) arr.push('is-link');\n if (props.type) arr.push(`type-${props.type}`);\n if (props.checked) arr.push('is-checked');\n if (props.width === 'auto') arr.push('width-auto');\n return arr;\n});\n\nconst setStyle = computed(() => {\n const obj = {};\n if (props.width) {\n obj.width = isNaN(Number(props.width)) ? props.width : `${props.width}em`;\n }\n\n const hasUnit = val => /[a-z%]+$/i.test(val);\n if (String(props.padding).trim()) {\n // 分割成各个值\n const padded = String(props.padding)\n .trim()\n .split(/\\s+/)\n .map(val => {\n // 如果是数字(或纯数字字符串),或末尾无单位,就加 em\n return hasUnit(val) ? val : `${val}em`;\n })\n .join(' ');\n\n obj.padding = padded;\n }\n return obj;\n});\n\nconst setFnStyle = computed(() => {\n const obj = {};\n if (props.padding >= 0 && props.padding !== 1) {\n obj.top = `${props.padding}em`;\n obj.right = `${props.padding}em`;\n }\n return obj;\n});\n\nfunction clickHandle(evt) {\n if (props.link) {\n emits('click', evt);\n }\n}\n</script>\n","<template>\n <div class=\"to-card-item\" :class=\"setClass\" :style=\"setStyle\">\n <slot></slot>\n <div v-if=\"$slots.title || $slots.titleSide\" class=\"to-card-title\">\n <div v-if=\"$slots.title\" class=\"to-card-title-main\">\n <span class=\"to-card-title-text\">\n <slot name=\"title\" />\n </span>\n </div>\n <div v-if=\"$slots.titleSide\" class=\"to-card-title-side\">\n <span class=\"to-card-title-side-text\">\n <slot name=\"titleSide\" />\n </span>\n </div>\n </div>\n <div v-if=\"$slots.content || $slots.contentSide\" class=\"to-card-content\">\n <div v-if=\"$slots.content\" class=\"to-card-content-main\">\n <span class=\"to-card-content-text\">\n <slot name=\"content\" />\n </span>\n </div>\n <div v-if=\"$slots.contentSide\" class=\"to-card-content-side\">\n <span class=\"to-card-content-side-text\">\n <slot name=\"contentSide\" />\n </span>\n </div>\n </div>\n <div v-if=\"$slots.value\" class=\"to-card-value\">\n <span class=\"to-card-value-text\">\n <slot name=\"value\" />\n </span>\n </div>\n <div v-if=\"$slots.label\" class=\"to-card-label\">\n <span class=\"to-card-value-text\">\n <slot name=\"label\" />\n </span>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\n\nconst props = defineProps({\n type: { type: String, default: 'side' },\n align: { type: String, default: '' },\n padding: { type: [Number, String], default: 0 },\n width: { type: [Number, String], default: 0 },\n line: Boolean,\n more: Boolean,\n link: Boolean,\n main: Boolean,\n});\n\n// const toCard = inject('toCard')\n\ndefineOptions({\n name: 'ToCardItem',\n});\n\nconst setClass = computed(() => {\n const arr = [];\n if (props.type === 'main' || props.main) arr.push('is-main');\n if (props.type === 'more' || props.more) arr.push('is-more');\n if (props.type === 'link' || props.link) arr.push('is-link');\n if (props.line === 'solid') arr.push('line-solid');\n if (props.align) arr.push(`align-${props.align}`);\n return arr;\n});\n\nconst setStyle = computed(() => {\n const obj = {};\n\n const hasUnit = val => /[a-z%]+$/i.test(val);\n if (String(props.padding).trim()) {\n // 分割成各个值\n const padded = String(props.padding)\n .trim()\n .split(/\\s+/)\n .map(val => {\n // 如果是数字(或纯数字字符串),或末尾无单位,就加 em\n return hasUnit(val) ? val : `${val}em`;\n })\n .join(' ');\n\n obj.padding = padded;\n }\n\n if (props.width) {\n obj.width = props.width + 'em';\n }\n\n return obj;\n});\n</script>\n","import { withInstall } from '@touchvue/utils';\nimport Card from './src/Card.vue';\nimport CardItem from './src/CardItem.vue';\n\nexport const ToCard = withInstall(Card, [CardItem]);\n\nexport * from './src/Card.vue';\nexport * from './src/CardItem.vue';\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot","$slots","_openBlock","_createElementVNode"],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { defineComponent, ref, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, withModifiers, createElementVNode, toDisplayString, createCommentVNode } from 'vue';
2
+
3
+ const withInstall = (main, extra) => {
4
+ main.install = (app) => {
5
+ for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
6
+ app.component(comp.name, comp);
7
+ }
8
+ };
9
+ if (extra) {
10
+ for (const [key, comp] of Object.entries(extra)) {
11
+ main[key] = comp;
12
+ }
13
+ }
14
+ return main;
15
+ };
16
+
17
+ navigator.userAgent.toLowerCase();
18
+
19
+ const _hoisted_1 = {
20
+ key: 0,
21
+ class: "to-checkbox-label"
22
+ };
23
+ var _sfc_main = /* @__PURE__ */ defineComponent({
24
+ ...{
25
+ name: "ToCheckbox"
26
+ },
27
+ __name: "Checkbox",
28
+ props: {
29
+ mode: { type: String, required: false, default: "default" },
30
+ label: { type: String, required: false, default: "" },
31
+ value: { type: Boolean, required: false }
32
+ },
33
+ setup(__props) {
34
+ const props = __props;
35
+ let checked = ref(false);
36
+ const setStyle = computed(() => {
37
+ const obj = {};
38
+ return obj;
39
+ });
40
+ const setClass = computed(() => {
41
+ let arr = [];
42
+ if (props.mode) {
43
+ arr.push(`mode-${props.mode}`);
44
+ }
45
+ if (checked.value) {
46
+ arr.push(`is-checked`);
47
+ }
48
+ return arr;
49
+ });
50
+ function toggle() {
51
+ checked.value = !checked.value;
52
+ }
53
+ return (_ctx, _cache) => {
54
+ return openBlock(), createElementBlock(
55
+ "div",
56
+ {
57
+ class: normalizeClass(["to-checkbox", setClass.value]),
58
+ style: normalizeStyle(setStyle.value),
59
+ onClick: withModifiers(toggle, ["stop"])
60
+ },
61
+ [
62
+ _cache[0] || (_cache[0] = createElementVNode(
63
+ "div",
64
+ { class: "to-checkbox-box" },
65
+ null,
66
+ -1
67
+ /* CACHED */
68
+ )),
69
+ _ctx.label ? (openBlock(), createElementBlock(
70
+ "div",
71
+ _hoisted_1,
72
+ toDisplayString(_ctx.label),
73
+ 1
74
+ /* TEXT */
75
+ )) : createCommentVNode("v-if", true)
76
+ ],
77
+ 6
78
+ /* CLASS, STYLE */
79
+ );
80
+ };
81
+ }
82
+ });
83
+
84
+ var _export_sfc = (sfc, props) => {
85
+ const target = sfc.__vccOpts || sfc;
86
+ for (const [key, val] of props) {
87
+ target[key] = val;
88
+ }
89
+ return target;
90
+ };
91
+
92
+ var Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/checkbox/src/Checkbox.vue"]]);
93
+
94
+ const ToCheckbox = withInstall(Checkbox);
95
+
96
+ export { ToCheckbox };
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/checkbox/src/Checkbox.vue","../../../../packages/components/checkbox/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\n\n/* 生成install函数 */\n\nexport type SFCWithInstall<T> = T & Plugin;\n\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\n _context: App | null;\n};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\n (main as SFCWithInstall<T>).install = (app: App): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp);\n }\n };\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp;\n }\n }\n return main as SFCWithInstall<T> & E;\n};\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app: App) => {\n (fn as SFCInstallWithContext<T>)._context = app;\n app.config.globalProperties[name] = fn;\n };\n\n return fn as SFCInstallWithContext<T>;\n};\n","interface Options {\n ratio?: {\n base?: {\n pc?: number;\n pad?: number;\n phone?: number;\n };\n };\n}\n\nconst ua = navigator.userAgent.toLowerCase();\n\nexport function setRatio(options: Options = {}) {\n const ua = navigator.userAgent.toLowerCase();\n const base = options?.ratio?.base ?? {};\n\n const baseSize = /iphone|android.*mobile|windows phone|ipod/i.test(ua)\n ? (base.phone ?? 375)\n : /ipad|android(?!.*mobile)|tablet/i.test(ua)\n ? (base.pad ?? 1100)\n : (base.pc ?? 1366);\n\n const updateFontSize = () => {\n const width = window.innerWidth || document.documentElement.clientWidth;\n document.documentElement.style.fontSize = (width / baseSize) * 100 + 'px';\n };\n\n updateFontSize();\n window.addEventListener('resize', updateFontSize);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getMedia(options: Options = {}) {\n const isMobile = /iphone|android.*mobile|windows phone|ipod/i.test(ua);\n const isTablet = /ipad|android(?!.*mobile)|tablet/i.test(ua);\n\n return isMobile ? 'phone' : isTablet ? 'pad' : 'pc';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function setMedia(options: Options = {}) {\n const html = document.documentElement;\n const classList: string[] = [];\n\n // 判断操作系统\n if (/windows/i.test(ua)) {\n classList.push('os-windows');\n } else if (/macintosh|mac os x/i.test(ua)) {\n classList.push('os-macos');\n } else if (/android/i.test(ua)) {\n classList.push('os-android');\n } else if (/iphone|ipad|ipod/i.test(ua)) {\n classList.push('os-ios');\n }\n\n // 判断设备类型\n const media = getMedia();\n if (media === 'pad') {\n classList.push('media-pad');\n } else if (media === 'phone') {\n classList.push('media-phone');\n } else {\n classList.push('media-pc');\n }\n\n // 添加 class 到 <html>\n html.className += ' ' + classList.join(' ');\n}\n\nexport function getEm() {\n const el = document.createElement('div');\n el.style.width = '1em';\n el.style.height = '1em';\n el.style.position = 'absolute';\n document.body.appendChild(el);\n const size = el.getBoundingClientRect().height;\n document.body.removeChild(el);\n return size;\n}\n","<template>\n <div class=\"to-checkbox\" :class=\"setClass\" :style=\"setStyle\" @click.stop=\"toggle\">\n <div class=\"to-checkbox-box\"></div>\n <div v-if=\"label\" class=\"to-checkbox-label\">{{ label }}</div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, computed, defineProps } from 'vue';\n\ndefineOptions({\n name: 'ToCheckbox',\n});\n\ninterface Props {\n mode?: string;\n label?: string;\n value?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n mode: 'default',\n label: '',\n});\n\nlet checked = ref<boolean>(false);\n\nconst setStyle = computed(() => {\n const obj = {};\n return obj;\n});\n\nconst setClass = computed(() => {\n let arr: string[] = [];\n if (props.mode) {\n arr.push(`mode-${props.mode}`);\n }\n if (checked.value) {\n arr.push(`is-checked`);\n }\n return arr;\n});\n\nfunction toggle() {\n checked.value = !checked.value;\n}\n</script>\n","import { withInstall, SFCWithInstall } from '@touchvue/utils';\nimport Checkbox from './src/Checkbox.vue';\n\nexport const ToCheckbox: SFCWithInstall<typeof Checkbox> = withInstall(Checkbox);\nexport * from './src/Checkbox.vue';\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","label","_toDisplayString"],"mappings":";;AAUa,MAAA,WAAA,GAAc,CAAmC,IAAA,EAAS,KAAc,KAAA;AACnF,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAmB,KAAA;AACxD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAA,EAAM,GAAG,MAAA,CAAO,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,EAAE,CAAC,CAAG,EAAA;AACxD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAC,IAAA,CAAa,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;;ACbW,SAAU,CAAA,SAAA,CAAU,WAAY;;;;;;;;;;;;;;;;;ACS3C,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAKd,IAAI,IAAA,OAAA,GAAU,IAAa,KAAK,CAAA,CAAA;AAEhC,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAA,MAAM,MAAM,EAAC,CAAA;AACb,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAA,IAAI,MAAgB,EAAC,CAAA;AACrB,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAI,GAAA,CAAA,IAAA,CAAK,CAAQ,KAAA,EAAA,KAAA,CAAM,IAAM,CAAA,CAAA,CAAA,CAAA;AAAA,OAC/B;AACA,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAA,GAAA,CAAI,KAAK,CAAY,UAAA,CAAA,CAAA,CAAA;AAAA,OACvB;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,SAAS,MAAS,GAAA;AAChB,MAAQ,OAAA,CAAA,KAAA,GAAQ,CAAC,OAAQ,CAAA,KAAA,CAAA;AAAA,KAC3B;;wBA3CE,EAAAA,kBAAA;AAAA,QAGM,KAAA;AAAA,QAAA;AAAA,UAHD,OAAKC,cAAA,CAAA,CAAC,aAAsB,EAAA,QAAA,CAAQ,KAAA,CAAA,CAAA;AAAA,UAAG,KAAA,gBAAO,CAAA,QAAA,CAAQ,KAAA,CAAA;AAAA,UAAG,uBAAY,MAAM,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA;;iCAC9E,GAAAC,kBAAA;AAAA,YAAmC,KAAA;AAAA,YAAA,EAA9B,OAAM,iBAAiB,EAAA;AAAA,YAAA,IAAA;AAAA,YAAA,CAAA,CAAA;AAAA;AAAA,WAAA,CAAA;AAAA,UACjBC,IAAAA,CAAK,oBAAhB,EAAAH,kBAAA;AAAA,YAA6D,KAAA;AAAA,YAA7D,UAAA;AAAA,YAA6DI,eAAA,CAAdD,KAAK,KAAA,CAAA;AAAA,YAAA,CAAA;AAAA;AAAA,WAAA;;;;;;;;;;;;;;;;;;;ACA3C,MAAA,UAAA,GAA8C,YAAY,QAAQ;;;;"}
@@ -0,0 +1,44 @@
1
+ import { defineComponent, openBlock, createElementBlock } from 'vue';
2
+
3
+ const withInstall = (main, extra) => {
4
+ main.install = (app) => {
5
+ for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
6
+ app.component(comp.name, comp);
7
+ }
8
+ };
9
+ if (extra) {
10
+ for (const [key, comp] of Object.entries(extra)) {
11
+ main[key] = comp;
12
+ }
13
+ }
14
+ return main;
15
+ };
16
+
17
+ navigator.userAgent.toLowerCase();
18
+
19
+ var _sfc_main = /* @__PURE__ */ defineComponent({
20
+ ...{
21
+ name: "ToDatepicker"
22
+ },
23
+ __name: "DatePicker",
24
+ setup(__props) {
25
+ return (_ctx, _cache) => {
26
+ return openBlock(), createElementBlock("div");
27
+ };
28
+ }
29
+ });
30
+
31
+ var _export_sfc = (sfc, props) => {
32
+ const target = sfc.__vccOpts || sfc;
33
+ for (const [key, val] of props) {
34
+ target[key] = val;
35
+ }
36
+ return target;
37
+ };
38
+
39
+ var DatePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/datepicker/src/DatePicker.vue"]]);
40
+
41
+ const ToDatepikcer = withInstall(DatePicker);
42
+
43
+ export { ToDatepikcer };
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/datepicker/src/DatePicker.vue","../../../../packages/components/datepicker/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\n\n/* 生成install函数 */\n\nexport type SFCWithInstall<T> = T & Plugin;\n\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\n _context: App | null;\n};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\n (main as SFCWithInstall<T>).install = (app: App): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp);\n }\n };\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp;\n }\n }\n return main as SFCWithInstall<T> & E;\n};\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app: App) => {\n (fn as SFCInstallWithContext<T>)._context = app;\n app.config.globalProperties[name] = fn;\n };\n\n return fn as SFCInstallWithContext<T>;\n};\n","interface Options {\n ratio?: {\n base?: {\n pc?: number;\n pad?: number;\n phone?: number;\n };\n };\n}\n\nconst ua = navigator.userAgent.toLowerCase();\n\nexport function setRatio(options: Options = {}) {\n const ua = navigator.userAgent.toLowerCase();\n const base = options?.ratio?.base ?? {};\n\n const baseSize = /iphone|android.*mobile|windows phone|ipod/i.test(ua)\n ? (base.phone ?? 375)\n : /ipad|android(?!.*mobile)|tablet/i.test(ua)\n ? (base.pad ?? 1100)\n : (base.pc ?? 1366);\n\n const updateFontSize = () => {\n const width = window.innerWidth || document.documentElement.clientWidth;\n document.documentElement.style.fontSize = (width / baseSize) * 100 + 'px';\n };\n\n updateFontSize();\n window.addEventListener('resize', updateFontSize);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getMedia(options: Options = {}) {\n const isMobile = /iphone|android.*mobile|windows phone|ipod/i.test(ua);\n const isTablet = /ipad|android(?!.*mobile)|tablet/i.test(ua);\n\n return isMobile ? 'phone' : isTablet ? 'pad' : 'pc';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function setMedia(options: Options = {}) {\n const html = document.documentElement;\n const classList: string[] = [];\n\n // 判断操作系统\n if (/windows/i.test(ua)) {\n classList.push('os-windows');\n } else if (/macintosh|mac os x/i.test(ua)) {\n classList.push('os-macos');\n } else if (/android/i.test(ua)) {\n classList.push('os-android');\n } else if (/iphone|ipad|ipod/i.test(ua)) {\n classList.push('os-ios');\n }\n\n // 判断设备类型\n const media = getMedia();\n if (media === 'pad') {\n classList.push('media-pad');\n } else if (media === 'phone') {\n classList.push('media-phone');\n } else {\n classList.push('media-pc');\n }\n\n // 添加 class 到 <html>\n html.className += ' ' + classList.join(' ');\n}\n\nexport function getEm() {\n const el = document.createElement('div');\n el.style.width = '1em';\n el.style.height = '1em';\n el.style.position = 'absolute';\n document.body.appendChild(el);\n const size = el.getBoundingClientRect().height;\n document.body.removeChild(el);\n return size;\n}\n","<template>\n <div></div>\n</template>\n<script setup lang=\"ts\">\ndefineOptions({\n name: 'ToDatepicker',\n});\n</script>\n","import { withInstall, SFCWithInstall } from '@touchvue/utils';\nimport DatePicker from './src/DatePicker.vue';\n\nexport const ToDatepikcer: SFCWithInstall<typeof DatePicker> = withInstall(DatePicker);\nexport * from './src/DatePicker.vue';\n"],"names":["_createElementBlock"],"mappings":";;AAUa,MAAA,WAAA,GAAc,CAAmC,IAAA,EAAS,KAAc,KAAA;AACnF,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAmB,KAAA;AACxD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAA,EAAM,GAAG,MAAA,CAAO,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,EAAE,CAAC,CAAG,EAAA;AACxD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAC,IAAA,CAAa,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;;ACbW,SAAU,CAAA,SAAA,CAAU,WAAY;;;;;;;;;wBCTzC,EAAAA,kBAAA,CAAW,KAAA,CAAA,CAAA;AAAA;;;;;;;;;;;;;;ACEA,MAAA,YAAA,GAAkD,YAAY,UAAU;;;;"}