@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.
- package/README.md +70 -0
- package/es/components/article/index.js +66 -0
- package/es/components/article/index.js.map +1 -0
- package/es/components/box/index.js +98 -0
- package/es/components/box/index.js.map +1 -0
- package/es/components/button/index.js +96 -0
- package/es/components/button/index.js.map +1 -0
- package/es/components/calendar/index.js +44 -0
- package/es/components/calendar/index.js.map +1 -0
- package/es/components/card/index.js +290 -0
- package/es/components/card/index.js.map +1 -0
- package/es/components/checkbox/index.js +97 -0
- package/es/components/checkbox/index.js.map +1 -0
- package/es/components/datepicker/index.js +44 -0
- package/es/components/datepicker/index.js.map +1 -0
- package/es/components/form/index.js +303 -0
- package/es/components/form/index.js.map +1 -0
- package/es/components/grid/index.js +253 -0
- package/es/components/grid/index.js.map +1 -0
- package/es/components/header/index.js +233 -0
- package/es/components/header/index.js.map +1 -0
- package/es/components/icon/index.js +98 -0
- package/es/components/icon/index.js.map +1 -0
- package/es/components/input/index.js +436 -0
- package/es/components/input/index.js.map +1 -0
- package/es/components/line/index.js +100 -0
- package/es/components/line/index.js.map +1 -0
- package/es/components/msg/index.js +322 -0
- package/es/components/msg/index.js.map +1 -0
- package/es/components/padding/index.js +92 -0
- package/es/components/padding/index.js.map +1 -0
- package/es/components/page/index.js +334 -0
- package/es/components/page/index.js.map +1 -0
- package/es/components/select/index.js +218 -0
- package/es/components/select/index.js.map +1 -0
- package/es/components/space/index.js +88 -0
- package/es/components/space/index.js.map +1 -0
- package/es/components/step/index.js +127 -0
- package/es/components/step/index.js.map +1 -0
- package/es/components/switch/index.js +120 -0
- package/es/components/switch/index.js.map +1 -0
- package/es/components/tab/index.js +227 -0
- package/es/components/tab/index.js.map +1 -0
- package/es/components/table/index.js +893 -0
- package/es/components/table/index.js.map +1 -0
- package/es/directives/dis/index.js +32 -0
- package/es/directives/dis/index.js.map +1 -0
- package/es/directives/size/index.js +23 -0
- package/es/directives/size/index.js.map +1 -0
- package/es/hooks/index.js +2 -0
- package/es/hooks/index.js.map +1 -0
- package/es/index.js +4209 -0
- package/es/index.js.map +1 -0
- package/es/utils/index.js +90 -0
- package/es/utils/index.js.map +1 -0
- package/lib/components/article/index.js +70 -0
- package/lib/components/article/index.js.map +1 -0
- package/lib/components/box/index.js +102 -0
- package/lib/components/box/index.js.map +1 -0
- package/lib/components/button/index.js +98 -0
- package/lib/components/button/index.js.map +1 -0
- package/lib/components/calendar/index.js +46 -0
- package/lib/components/calendar/index.js.map +1 -0
- package/lib/components/card/index.js +292 -0
- package/lib/components/card/index.js.map +1 -0
- package/lib/components/checkbox/index.js +99 -0
- package/lib/components/checkbox/index.js.map +1 -0
- package/lib/components/datepicker/index.js +46 -0
- package/lib/components/datepicker/index.js.map +1 -0
- package/lib/components/form/index.js +306 -0
- package/lib/components/form/index.js.map +1 -0
- package/lib/components/grid/index.js +256 -0
- package/lib/components/grid/index.js.map +1 -0
- package/lib/components/header/index.js +235 -0
- package/lib/components/header/index.js.map +1 -0
- package/lib/components/icon/index.js +101 -0
- package/lib/components/icon/index.js.map +1 -0
- package/lib/components/input/index.js +438 -0
- package/lib/components/input/index.js.map +1 -0
- package/lib/components/line/index.js +102 -0
- package/lib/components/line/index.js.map +1 -0
- package/lib/components/msg/index.js +324 -0
- package/lib/components/msg/index.js.map +1 -0
- package/lib/components/padding/index.js +94 -0
- package/lib/components/padding/index.js.map +1 -0
- package/lib/components/page/index.js +336 -0
- package/lib/components/page/index.js.map +1 -0
- package/lib/components/select/index.js +220 -0
- package/lib/components/select/index.js.map +1 -0
- package/lib/components/space/index.js +90 -0
- package/lib/components/space/index.js.map +1 -0
- package/lib/components/step/index.js +129 -0
- package/lib/components/step/index.js.map +1 -0
- package/lib/components/switch/index.js +122 -0
- package/lib/components/switch/index.js.map +1 -0
- package/lib/components/tab/index.js +230 -0
- package/lib/components/tab/index.js.map +1 -0
- package/lib/components/table/index.js +898 -0
- package/lib/components/table/index.js.map +1 -0
- package/lib/directives/dis/index.js +34 -0
- package/lib/directives/dis/index.js.map +1 -0
- package/lib/directives/size/index.js +25 -0
- package/lib/directives/size/index.js.map +1 -0
- package/lib/hooks/index.js +3 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/index.js +4251 -0
- package/lib/index.js.map +1 -0
- package/lib/utils/index.js +99 -0
- package/lib/utils/index.js.map +1 -0
- package/package.json +35 -0
- package/theme/components/article/index.css +1 -0
- package/theme/components/box/index.css +1 -0
- package/theme/components/button/index.css +1 -0
- package/theme/components/calendar/index.css +0 -0
- package/theme/components/card/index.css +1 -0
- package/theme/components/checkbox/index.css +1 -0
- package/theme/components/datepicker/index.css +0 -0
- package/theme/components/form/index.css +1 -0
- package/theme/components/grid/index.css +1 -0
- package/theme/components/header/index.css +1 -0
- package/theme/components/icon/index.css +1 -0
- package/theme/components/input/index.css +1 -0
- package/theme/components/line/index.css +1 -0
- package/theme/components/msg/index.css +1 -0
- package/theme/components/padding/index.css +1 -0
- package/theme/components/space/index.css +1 -0
- package/theme/components/step/index.css +1 -0
- package/theme/components/switch/index.css +1 -0
- package/theme/components/tab/index.css +1 -0
- package/theme/components/table/index.css +1 -0
- package/theme/img/default.png +0 -0
- package/theme/img/icon-type-fill.ttf +0 -0
- package/theme/img/icon.ttf +0 -0
- package/theme/img/loading-in.png +0 -0
- package/theme/img/loading-out.png +0 -0
- package/theme/img/msg/error-bg.png +0 -0
- package/theme/img/msg/error-icon.png +0 -0
- package/theme/img/msg/success-bg.png +0 -0
- package/theme/img/msg/success-icon.png +0 -0
- package/theme/index.css +1 -0
- package/theme/skin/default.css +1 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle } from 'vue';
|
|
2
|
+
|
|
3
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
|
+
...{
|
|
5
|
+
name: "ToSpace"
|
|
6
|
+
},
|
|
7
|
+
__name: "space",
|
|
8
|
+
props: {
|
|
9
|
+
mode: { type: String, required: false, default: "default" },
|
|
10
|
+
value: { type: [String, Number], required: false, default: "" },
|
|
11
|
+
inline: { type: Boolean, required: false, default: false }
|
|
12
|
+
},
|
|
13
|
+
setup(__props) {
|
|
14
|
+
const props = __props;
|
|
15
|
+
const setStyle = computed(() => {
|
|
16
|
+
const obj = {};
|
|
17
|
+
if (props.value) {
|
|
18
|
+
if (props.inline) {
|
|
19
|
+
if (!isNaN(Number(props.value))) {
|
|
20
|
+
obj.width = props.value + "em";
|
|
21
|
+
} else {
|
|
22
|
+
obj.width = props.value;
|
|
23
|
+
}
|
|
24
|
+
} else {
|
|
25
|
+
if (!isNaN(Number(props.value))) {
|
|
26
|
+
obj.height = props.value + "em";
|
|
27
|
+
} else {
|
|
28
|
+
obj.height = props.value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return obj;
|
|
33
|
+
});
|
|
34
|
+
const setClass = computed(() => {
|
|
35
|
+
let arr = [];
|
|
36
|
+
if (props.mode) {
|
|
37
|
+
arr.push(`mode-${props.mode}`);
|
|
38
|
+
}
|
|
39
|
+
if (props.inline) {
|
|
40
|
+
arr.push(`is-inline`);
|
|
41
|
+
}
|
|
42
|
+
return arr;
|
|
43
|
+
});
|
|
44
|
+
return (_ctx, _cache) => {
|
|
45
|
+
return openBlock(), createElementBlock(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
class: normalizeClass(["to-space", setClass.value]),
|
|
49
|
+
style: normalizeStyle(setStyle.value)
|
|
50
|
+
},
|
|
51
|
+
null,
|
|
52
|
+
6
|
|
53
|
+
/* CLASS, STYLE */
|
|
54
|
+
);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
var _export_sfc = (sfc, props) => {
|
|
60
|
+
const target = sfc.__vccOpts || sfc;
|
|
61
|
+
for (const [key, val] of props) {
|
|
62
|
+
target[key] = val;
|
|
63
|
+
}
|
|
64
|
+
return target;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
var Space = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/space/src/space.vue"]]);
|
|
68
|
+
|
|
69
|
+
const withInstall = (main, extra) => {
|
|
70
|
+
main.install = (app) => {
|
|
71
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
72
|
+
app.component(comp.name, comp);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
if (extra) {
|
|
76
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
77
|
+
main[key] = comp;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return main;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
navigator.userAgent.toLowerCase();
|
|
84
|
+
|
|
85
|
+
const ToSpace = withInstall(Space);
|
|
86
|
+
|
|
87
|
+
export { ToSpace };
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/space/src/space.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/space/index.ts"],"sourcesContent":["<template>\n <div class=\"to-space\" :style=\"setStyle\" :class=\"setClass\"></div>\n</template>\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { CSSProperties } from 'vue';\n\ndefineOptions({\n name: 'ToSpace',\n});\n\ninterface Props {\n mode?: string;\n value?: string | number;\n inline?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n mode: 'default',\n value: '',\n inline: false,\n});\n\nconst setStyle = computed((): CSSProperties => {\n const obj: CSSProperties = {};\n if (props.value) {\n if (props.inline) {\n if (!isNaN(Number(props.value))) {\n obj.width = props.value + 'em';\n } else {\n obj.width = props.value;\n }\n } else {\n if (!isNaN(Number(props.value))) {\n obj.height = props.value + 'em';\n } else {\n obj.height = props.value;\n }\n }\n }\n return obj;\n});\nconst setClass = computed(() => {\n let arr: string[] = [];\n if (props.mode) {\n arr.push(`mode-${props.mode}`);\n }\n if (props.inline) {\n arr.push(`is-inline`);\n }\n return arr;\n});\n</script>\n","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","import Space from './src/space.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\n\nexport const ToSpace: SFCWithInstall<typeof Space> = withInstall(Space);\n\nexport * from './src/instance';\n"],"names":["_createElementBlock","_normalizeClass"],"mappings":";;;;;;;;;;;;;AAiBA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAMd,IAAM,MAAA,QAAA,GAAW,SAAS,MAAqB;AAC7C,MAAA,MAAM,MAAqB,EAAC,CAAA;AAC5B,MAAA,IAAI,MAAM,KAAO,EAAA;AACf,QAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,UAAA,IAAI,CAAC,KAAM,CAAA,MAAA,CAAO,KAAM,CAAA,KAAK,CAAC,CAAG,EAAA;AAC/B,YAAI,GAAA,CAAA,KAAA,GAAQ,MAAM,KAAQ,GAAA,IAAA,CAAA;AAAA,WACrB,MAAA;AACL,YAAA,GAAA,CAAI,QAAQ,KAAM,CAAA,KAAA,CAAA;AAAA,WACpB;AAAA,SACK,MAAA;AACL,UAAA,IAAI,CAAC,KAAM,CAAA,MAAA,CAAO,KAAM,CAAA,KAAK,CAAC,CAAG,EAAA;AAC/B,YAAI,GAAA,CAAA,MAAA,GAAS,MAAM,KAAQ,GAAA,IAAA,CAAA;AAAA,WACtB,MAAA;AACL,YAAA,GAAA,CAAI,SAAS,KAAM,CAAA,KAAA,CAAA;AAAA,WACrB;AAAA,SACF;AAAA,OACF;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACD,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,MAAM,MAAQ,EAAA;AAChB,QAAA,GAAA,CAAI,KAAK,CAAW,SAAA,CAAA,CAAA,CAAA;AAAA,OACtB;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;;wBAlDC,EAAAA,kBAAA;AAAA,QAAgE,KAAA;AAAA,QAAA;AAAA,UAA3D,OAAKC,cAAA,CAAA,CAAC,UAAqC,EAAA,QAAA,CAAQ,KAAA,CAAA,CAAA;AAAA,UAAjC,KAAA,gBAAO,CAAA,QAAA,CAAQ,KAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;ACS3B,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;;ACP9B,MAAA,OAAA,GAAwC,YAAY,KAAK;;;;"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { defineComponent, openBlock, createElementBlock, Fragment, renderList, normalizeClass, createElementVNode, toDisplayString } from 'vue';
|
|
2
|
+
|
|
3
|
+
const _hoisted_1 = { class: "to-step" };
|
|
4
|
+
const _hoisted_2 = { class: "to-step-index" };
|
|
5
|
+
const _hoisted_3 = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "to-step-icon"
|
|
8
|
+
};
|
|
9
|
+
const _hoisted_4 = {
|
|
10
|
+
key: 1,
|
|
11
|
+
class: "to-step-number"
|
|
12
|
+
};
|
|
13
|
+
const _hoisted_5 = { class: "to-step-text" };
|
|
14
|
+
const _hoisted_6 = { class: "to-step-title" };
|
|
15
|
+
const _hoisted_7 = { class: "to-step-label" };
|
|
16
|
+
const _hoisted_8 = { class: "to-step-content" };
|
|
17
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
18
|
+
...{
|
|
19
|
+
name: "ToStep"
|
|
20
|
+
},
|
|
21
|
+
__name: "step",
|
|
22
|
+
props: {
|
|
23
|
+
data: {
|
|
24
|
+
type: Array,
|
|
25
|
+
default: () => []
|
|
26
|
+
},
|
|
27
|
+
modelValue: { type: [Number, String], default: 0 }
|
|
28
|
+
},
|
|
29
|
+
emits: ["update:modelValue"],
|
|
30
|
+
setup(__props, { emit: __emit }) {
|
|
31
|
+
const props = __props;
|
|
32
|
+
const emit = __emit;
|
|
33
|
+
const updateValue = (idx) => {
|
|
34
|
+
console.log(props);
|
|
35
|
+
emit("update:modelValue", idx);
|
|
36
|
+
};
|
|
37
|
+
console.log(updateValue);
|
|
38
|
+
return (_ctx, _cache) => {
|
|
39
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
40
|
+
(openBlock(true), createElementBlock(
|
|
41
|
+
Fragment,
|
|
42
|
+
null,
|
|
43
|
+
renderList(__props.data, (item, idx) => {
|
|
44
|
+
return openBlock(), createElementBlock(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
key: idx,
|
|
48
|
+
class: normalizeClass(["to-step-item", { "is-on": idx === Number(__props.modelValue), "is-completed": Number(__props.modelValue) > idx }])
|
|
49
|
+
},
|
|
50
|
+
[
|
|
51
|
+
createElementVNode("div", _hoisted_2, [
|
|
52
|
+
Number(__props.modelValue) > idx ? (openBlock(), createElementBlock("div", _hoisted_3)) : (openBlock(), createElementBlock(
|
|
53
|
+
"div",
|
|
54
|
+
_hoisted_4,
|
|
55
|
+
toDisplayString(idx + 1),
|
|
56
|
+
1
|
|
57
|
+
/* TEXT */
|
|
58
|
+
))
|
|
59
|
+
]),
|
|
60
|
+
createElementVNode("div", _hoisted_5, [
|
|
61
|
+
createElementVNode("div", _hoisted_6, [
|
|
62
|
+
createElementVNode(
|
|
63
|
+
"div",
|
|
64
|
+
_hoisted_7,
|
|
65
|
+
toDisplayString(item.label),
|
|
66
|
+
1
|
|
67
|
+
/* TEXT */
|
|
68
|
+
),
|
|
69
|
+
_cache[0] || (_cache[0] = createElementVNode(
|
|
70
|
+
"div",
|
|
71
|
+
{ class: "to-step-line" },
|
|
72
|
+
null,
|
|
73
|
+
-1
|
|
74
|
+
/* CACHED */
|
|
75
|
+
))
|
|
76
|
+
]),
|
|
77
|
+
createElementVNode(
|
|
78
|
+
"div",
|
|
79
|
+
_hoisted_8,
|
|
80
|
+
toDisplayString(item.content),
|
|
81
|
+
1
|
|
82
|
+
/* TEXT */
|
|
83
|
+
)
|
|
84
|
+
])
|
|
85
|
+
],
|
|
86
|
+
2
|
|
87
|
+
/* CLASS */
|
|
88
|
+
);
|
|
89
|
+
}),
|
|
90
|
+
128
|
|
91
|
+
/* KEYED_FRAGMENT */
|
|
92
|
+
))
|
|
93
|
+
]);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
var _export_sfc = (sfc, props) => {
|
|
99
|
+
const target = sfc.__vccOpts || sfc;
|
|
100
|
+
for (const [key, val] of props) {
|
|
101
|
+
target[key] = val;
|
|
102
|
+
}
|
|
103
|
+
return target;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var Step = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/step/src/step.vue"]]);
|
|
107
|
+
|
|
108
|
+
const withInstall = (main, extra) => {
|
|
109
|
+
main.install = (app) => {
|
|
110
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
111
|
+
app.component(comp.name, comp);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
if (extra) {
|
|
115
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
116
|
+
main[key] = comp;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return main;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
navigator.userAgent.toLowerCase();
|
|
123
|
+
|
|
124
|
+
const ToStep = withInstall(Step);
|
|
125
|
+
|
|
126
|
+
export { ToStep };
|
|
127
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/step/src/step.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/step/index.ts"],"sourcesContent":["<template>\n <div class=\"to-step\">\n <div\n v-for=\"(item, idx) in data\"\n :key=\"idx\"\n class=\"to-step-item\"\n :class=\"{ 'is-on': idx === Number(modelValue), 'is-completed': Number(modelValue) > idx }\"\n >\n <div class=\"to-step-index\">\n <div v-if=\"Number(modelValue) > idx\" class=\"to-step-icon\"></div>\n <div v-else class=\"to-step-number\">{{ idx + 1 }}</div>\n </div>\n <div class=\"to-step-text\">\n <div class=\"to-step-title\">\n <div class=\"to-step-label\">{{ item.label }}</div>\n <div class=\"to-step-line\"></div>\n </div>\n <div class=\"to-step-content\">{{ item.content }}</div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineOptions({\n name: 'ToStep',\n});\nconst props = defineProps({\n data: {\n type: Array as () => { label: string; content: string }[],\n default: () => [],\n },\n modelValue: { type: [Number, String], default: 0 },\n});\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: number): void;\n}>();\n\nconst updateValue = (idx: number) => {\n console.log(props);\n emit('update:modelValue', idx);\n};\nconsole.log(updateValue);\n</script>\n","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","import Step from './src/step.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\n\nexport const ToStep: SFCWithInstall<typeof Step> = withInstall(Step);\n\nexport * from './src/instance';\n"],"names":["_openBlock","_createElementBlock","_Fragment","_renderList","_normalizeClass","_createElementVNode","_toDisplayString"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { ref, watch, computed, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString } from 'vue';
|
|
2
|
+
|
|
3
|
+
var _export_sfc = (sfc, props) => {
|
|
4
|
+
const target = sfc.__vccOpts || sfc;
|
|
5
|
+
for (const [key, val] of props) {
|
|
6
|
+
target[key] = val;
|
|
7
|
+
}
|
|
8
|
+
return target;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const _hoisted_1 = { class: "to-switch-on" };
|
|
12
|
+
const _hoisted_2 = { class: "to-switch-off" };
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
const _sfc_main = /*@__PURE__*/Object.assign({
|
|
16
|
+
name: 'ToSwitch',
|
|
17
|
+
}, {
|
|
18
|
+
__name: 'switch',
|
|
19
|
+
props: {
|
|
20
|
+
readonly: Boolean,
|
|
21
|
+
modelValue: {
|
|
22
|
+
type: [Boolean, String, Number],
|
|
23
|
+
default: false
|
|
24
|
+
},
|
|
25
|
+
onValue: {
|
|
26
|
+
type: [Boolean, String, Number],
|
|
27
|
+
default: true
|
|
28
|
+
},
|
|
29
|
+
offValue: {
|
|
30
|
+
type: [Boolean, String, Number],
|
|
31
|
+
default: false
|
|
32
|
+
},
|
|
33
|
+
onText: {
|
|
34
|
+
type: String,
|
|
35
|
+
default: ''
|
|
36
|
+
},
|
|
37
|
+
offText: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: ''
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
emits: ['update:modelValue', 'change', 'beforeChange'],
|
|
43
|
+
setup(__props, { emit: __emit }) {
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
const props = __props;
|
|
47
|
+
|
|
48
|
+
const emit = __emit;
|
|
49
|
+
|
|
50
|
+
const ivalue = ref(props.modelValue);
|
|
51
|
+
const disabled = ref(props.readonly);
|
|
52
|
+
|
|
53
|
+
watch(() => props.modelValue, val => {
|
|
54
|
+
ivalue.value = val;
|
|
55
|
+
}, { immediate: true });
|
|
56
|
+
|
|
57
|
+
watch(() => props.readonly, val => {
|
|
58
|
+
disabled.value = val;
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const setClass = computed(() => {
|
|
62
|
+
const arr = [];
|
|
63
|
+
if (ivalue.value === props.onValue) {
|
|
64
|
+
arr.push(`is-on`);
|
|
65
|
+
}
|
|
66
|
+
return arr;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
function toggle() {
|
|
70
|
+
if (disabled.value) return;
|
|
71
|
+
|
|
72
|
+
emit('beforeChange', ivalue.value);
|
|
73
|
+
ivalue.value = (ivalue.value === props.onValue) ? props.offValue : props.onValue;
|
|
74
|
+
emit('update:modelValue', ivalue.value);
|
|
75
|
+
emit('change', ivalue.value);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return (_ctx, _cache) => {
|
|
79
|
+
const _directive_dis = resolveDirective("dis");
|
|
80
|
+
|
|
81
|
+
return withDirectives((openBlock(), createElementBlock("div", {
|
|
82
|
+
class: normalizeClass(["to-switch", setClass.value]),
|
|
83
|
+
onClick: toggle
|
|
84
|
+
}, [
|
|
85
|
+
createElementVNode("div", _hoisted_1, toDisplayString(__props.onText), 1 /* TEXT */),
|
|
86
|
+
createElementVNode("div", _hoisted_2, toDisplayString(__props.offText), 1 /* TEXT */)
|
|
87
|
+
], 2 /* CLASS */)), [
|
|
88
|
+
[
|
|
89
|
+
_directive_dis,
|
|
90
|
+
disabled.value,
|
|
91
|
+
void 0,
|
|
92
|
+
{ opacity: true }
|
|
93
|
+
]
|
|
94
|
+
])
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
});
|
|
99
|
+
var Switch = /*#__PURE__*/_export_sfc(_sfc_main, [['__file',"/Users/wangding/WorkSpace/AsiaInfo/projects/前端框架/touch-vue3-ui/packages/components/switch/src/switch.vue"]]);
|
|
100
|
+
|
|
101
|
+
const withInstall = (main, extra) => {
|
|
102
|
+
main.install = (app) => {
|
|
103
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
104
|
+
app.component(comp.name, comp);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
if (extra) {
|
|
108
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
109
|
+
main[key] = comp;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return main;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
navigator.userAgent.toLowerCase();
|
|
116
|
+
|
|
117
|
+
const ToSwitch = withInstall(Switch);
|
|
118
|
+
|
|
119
|
+
export { ToSwitch };
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/switch/src/switch.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/switch/index.ts"],"sourcesContent":["<template>\n\t<div v-dis.opacity=\"disabled\" class=\"to-switch\" :class=\"setClass\" @click=\"toggle\">\n\t\t<div class=\"to-switch-on\">{{ onText }}</div>\n\t\t<div class=\"to-switch-off\">{{ offText }}</div>\n\t</div>\n</template>\n\n<script setup>\ndefineOptions({\n name: 'ToSwitch',\n});\nimport { computed, ref, watch, defineEmits, defineProps } from 'vue';\n\nconst props = defineProps({\n\treadonly: Boolean,\n\tmodelValue: {\n\t\ttype: [Boolean, String, Number],\n\t\tdefault: false\n\t},\n\tonValue: {\n\t\ttype: [Boolean, String, Number],\n\t\tdefault: true\n\t},\n\toffValue: {\n\t\ttype: [Boolean, String, Number],\n\t\tdefault: false\n\t},\n\tonText: {\n\t\ttype: String,\n\t\tdefault: ''\n\t},\n\toffText: {\n\t\ttype: String,\n\t\tdefault: ''\n\t}\n});\n\nconst emit = defineEmits(['update:modelValue', 'change', 'beforeChange']);\n\nconst ivalue = ref(props.modelValue);\nconst disabled = ref(props.readonly);\n\nwatch(() => props.modelValue, val => {\n\tivalue.value = val;\n}, { immediate: true });\n\nwatch(() => props.readonly, val => {\n\tdisabled.value = val;\n});\n\nconst setClass = computed(() => {\n\tconst arr = [];\n\tif (ivalue.value === props.onValue) {\n\t\tarr.push(`is-on`);\n\t}\n\treturn arr;\n});\n\nfunction toggle() {\n\tif (disabled.value) return;\n\n\temit('beforeChange', ivalue.value);\n\tivalue.value = (ivalue.value === props.onValue) ? props.offValue : props.onValue;\n\temit('update:modelValue', ivalue.value);\n\temit('change', ivalue.value);\n}\n</script>\n","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","import Switch from './src/switch.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\n\nexport const ToSwitch: SFCWithInstall<typeof Switch> = withInstall(Switch);\n\nexport * from './src/instance';"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString"],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { defineComponent, ref, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, createElementVNode, Fragment, renderList, renderSlot, mergeProps, createTextVNode, toDisplayString, withModifiers, createCommentVNode } from 'vue';
|
|
2
|
+
|
|
3
|
+
const _hoisted_1 = { class: "to-tab-tab" };
|
|
4
|
+
const _hoisted_2 = { class: "to-tab-list" };
|
|
5
|
+
const _hoisted_3 = ["onClick"];
|
|
6
|
+
const _hoisted_4 = { class: "to-tab-item-main" };
|
|
7
|
+
const _hoisted_5 = { class: "to-tab-item-content" };
|
|
8
|
+
const _hoisted_6 = { class: "to-tab-item-label" };
|
|
9
|
+
const _hoisted_7 = ["onClick"];
|
|
10
|
+
const _hoisted_8 = { class: "to-tab-fn" };
|
|
11
|
+
const _hoisted_9 = { class: "to-tab-page" };
|
|
12
|
+
var _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
13
|
+
...{
|
|
14
|
+
name: "ToTab"
|
|
15
|
+
},
|
|
16
|
+
__name: "tab",
|
|
17
|
+
props: {
|
|
18
|
+
modelValue: { type: [String, Number], required: false, default: "" },
|
|
19
|
+
position: { type: String, required: false, default: "" },
|
|
20
|
+
mode: { type: String, required: false, default: "default" },
|
|
21
|
+
data: { type: Array, required: false, default: () => [] },
|
|
22
|
+
deletable: { type: Boolean, required: false, default: false },
|
|
23
|
+
tabOver: { type: String, required: false, default: "control" }
|
|
24
|
+
},
|
|
25
|
+
emits: ["update:modelValue", "change"],
|
|
26
|
+
setup(__props, { emit: __emit }) {
|
|
27
|
+
const emit = __emit;
|
|
28
|
+
const props = __props;
|
|
29
|
+
const left = ref(0);
|
|
30
|
+
const setClass = computed(() => {
|
|
31
|
+
let arr = [];
|
|
32
|
+
if (props.mode) {
|
|
33
|
+
arr.push(`mode-${props.mode}`);
|
|
34
|
+
}
|
|
35
|
+
if (props.position) {
|
|
36
|
+
arr.push(`position-${props.position}`);
|
|
37
|
+
}
|
|
38
|
+
return arr;
|
|
39
|
+
});
|
|
40
|
+
const setStyle = computed(() => {
|
|
41
|
+
let obj = {};
|
|
42
|
+
return obj;
|
|
43
|
+
});
|
|
44
|
+
const setUlStyle = computed(() => {
|
|
45
|
+
let obj = {};
|
|
46
|
+
obj.transform = `translateX(${left}px)`;
|
|
47
|
+
return obj;
|
|
48
|
+
});
|
|
49
|
+
function changeTab(item, index) {
|
|
50
|
+
emit("update:modelValue", item.value, index);
|
|
51
|
+
emit("change", item.value, index);
|
|
52
|
+
}
|
|
53
|
+
function removeTab(item, index) {
|
|
54
|
+
}
|
|
55
|
+
return (_ctx, _cache) => {
|
|
56
|
+
return openBlock(), createElementBlock(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
class: normalizeClass(["to-tab", setClass.value]),
|
|
60
|
+
style: normalizeStyle(setStyle.value)
|
|
61
|
+
},
|
|
62
|
+
[
|
|
63
|
+
createElementVNode("div", _hoisted_1, [
|
|
64
|
+
createElementVNode("div", _hoisted_2, [
|
|
65
|
+
createElementVNode(
|
|
66
|
+
"ul",
|
|
67
|
+
{
|
|
68
|
+
ref: "ul",
|
|
69
|
+
class: "to-tab-wrapper",
|
|
70
|
+
style: normalizeStyle(setUlStyle.value)
|
|
71
|
+
},
|
|
72
|
+
[
|
|
73
|
+
(openBlock(true), createElementBlock(
|
|
74
|
+
Fragment,
|
|
75
|
+
null,
|
|
76
|
+
renderList(_ctx.data, (item, index) => {
|
|
77
|
+
return openBlock(), createElementBlock("li", {
|
|
78
|
+
key: index,
|
|
79
|
+
class: normalizeClass(["to-tab-item", { "is-on": item.value === _ctx.modelValue }]),
|
|
80
|
+
onClick: ($event) => changeTab(item, index)
|
|
81
|
+
}, [
|
|
82
|
+
renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, item), () => [
|
|
83
|
+
createElementVNode("div", _hoisted_4, [
|
|
84
|
+
_cache[1] || (_cache[1] = createElementVNode(
|
|
85
|
+
"div",
|
|
86
|
+
{ class: "to-tab-item-left" },
|
|
87
|
+
null,
|
|
88
|
+
-1
|
|
89
|
+
/* CACHED */
|
|
90
|
+
)),
|
|
91
|
+
createElementVNode("div", _hoisted_5, [
|
|
92
|
+
createElementVNode("div", _hoisted_6, [
|
|
93
|
+
renderSlot(_ctx.$slots, "label", mergeProps({ ref_for: true }, item), () => [
|
|
94
|
+
createTextVNode(
|
|
95
|
+
toDisplayString(item.label),
|
|
96
|
+
1
|
|
97
|
+
/* TEXT */
|
|
98
|
+
)
|
|
99
|
+
])
|
|
100
|
+
]),
|
|
101
|
+
_ctx.deletable ? (openBlock(), createElementBlock("span", {
|
|
102
|
+
key: 0,
|
|
103
|
+
class: "to-tab-item-delete",
|
|
104
|
+
onClick: withModifiers(($event) => removeTab(), ["stop"])
|
|
105
|
+
}, [..._cache[0] || (_cache[0] = [
|
|
106
|
+
createElementVNode(
|
|
107
|
+
"span",
|
|
108
|
+
null,
|
|
109
|
+
null,
|
|
110
|
+
-1
|
|
111
|
+
/* CACHED */
|
|
112
|
+
)
|
|
113
|
+
])], 8, _hoisted_7)) : createCommentVNode("v-if", true)
|
|
114
|
+
]),
|
|
115
|
+
_cache[2] || (_cache[2] = createElementVNode(
|
|
116
|
+
"div",
|
|
117
|
+
{ class: "to-tab-item-right" },
|
|
118
|
+
null,
|
|
119
|
+
-1
|
|
120
|
+
/* CACHED */
|
|
121
|
+
))
|
|
122
|
+
]),
|
|
123
|
+
_cache[3] || (_cache[3] = createElementVNode(
|
|
124
|
+
"div",
|
|
125
|
+
{ class: "to-tab-item-under" },
|
|
126
|
+
null,
|
|
127
|
+
-1
|
|
128
|
+
/* CACHED */
|
|
129
|
+
))
|
|
130
|
+
])
|
|
131
|
+
], 10, _hoisted_3);
|
|
132
|
+
}),
|
|
133
|
+
128
|
|
134
|
+
/* KEYED_FRAGMENT */
|
|
135
|
+
))
|
|
136
|
+
],
|
|
137
|
+
4
|
|
138
|
+
/* STYLE */
|
|
139
|
+
)
|
|
140
|
+
]),
|
|
141
|
+
_cache[4] || (_cache[4] = createElementVNode(
|
|
142
|
+
"div",
|
|
143
|
+
{ class: "to-tab-line" },
|
|
144
|
+
null,
|
|
145
|
+
-1
|
|
146
|
+
/* CACHED */
|
|
147
|
+
)),
|
|
148
|
+
createElementVNode("div", _hoisted_8, [
|
|
149
|
+
renderSlot(_ctx.$slots, "fn"),
|
|
150
|
+
createCommentVNode(' <div class="to-tab-fn-item fn-left"></div>\n <div class="to-tab-fn-item fn-right"></div>\n <div class="to-tab-fn-item fn-refresh"></div> ')
|
|
151
|
+
])
|
|
152
|
+
]),
|
|
153
|
+
createElementVNode("div", _hoisted_9, [
|
|
154
|
+
renderSlot(_ctx.$slots, "default")
|
|
155
|
+
])
|
|
156
|
+
],
|
|
157
|
+
6
|
|
158
|
+
/* CLASS, STYLE */
|
|
159
|
+
);
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
var _export_sfc = (sfc, props) => {
|
|
165
|
+
const target = sfc.__vccOpts || sfc;
|
|
166
|
+
for (const [key, val] of props) {
|
|
167
|
+
target[key] = val;
|
|
168
|
+
}
|
|
169
|
+
return target;
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
var Tab = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/tab/src/tab.vue"]]);
|
|
173
|
+
|
|
174
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
175
|
+
...{
|
|
176
|
+
name: "ToTabItem"
|
|
177
|
+
},
|
|
178
|
+
__name: "tab-item",
|
|
179
|
+
props: {
|
|
180
|
+
mode: { type: String, required: true, default: "default" }
|
|
181
|
+
},
|
|
182
|
+
setup(__props) {
|
|
183
|
+
const props = __props;
|
|
184
|
+
const setClass = computed(() => {
|
|
185
|
+
let arr = [];
|
|
186
|
+
if (props.mode) {
|
|
187
|
+
arr.push(`mode-${props.mode}`);
|
|
188
|
+
}
|
|
189
|
+
return arr;
|
|
190
|
+
});
|
|
191
|
+
return (_ctx, _cache) => {
|
|
192
|
+
return openBlock(), createElementBlock(
|
|
193
|
+
"div",
|
|
194
|
+
{
|
|
195
|
+
class: normalizeClass(["to-tab-item", setClass.value])
|
|
196
|
+
},
|
|
197
|
+
null,
|
|
198
|
+
2
|
|
199
|
+
/* CLASS */
|
|
200
|
+
);
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
var TabItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/tab/src/tab-item.vue"]]);
|
|
206
|
+
|
|
207
|
+
const withInstall = (main, extra) => {
|
|
208
|
+
main.install = (app) => {
|
|
209
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
210
|
+
app.component(comp.name, comp);
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
if (extra) {
|
|
214
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
215
|
+
main[key] = comp;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return main;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
navigator.userAgent.toLowerCase();
|
|
222
|
+
|
|
223
|
+
const ToTab = withInstall(Tab);
|
|
224
|
+
const ToTabItem = withInstall(TabItem);
|
|
225
|
+
|
|
226
|
+
export { ToTab, ToTabItem };
|
|
227
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/tab/src/tab.vue","../../../../packages/components/tab/src/tab-item.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/tab/index.ts"],"sourcesContent":["<template>\n\t<div class=\"to-tab\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<div class=\"to-tab-tab\">\n\t\t\t<div class=\"to-tab-list\">\n\t\t\t\t<ul ref=\"ul\" class=\"to-tab-wrapper\" :style=\"setUlStyle\">\n\t\t\t\t\t<template v-for=\"(item, index) in data\" :key=\"index\">\n\t\t\t\t\t\t<li class=\"to-tab-item\" :class=\"{ 'is-on': item.value === modelValue }\" @click=\"changeTab(item, index)\">\n\t\t\t\t\t\t\t<slot name=\"item\" v-bind=\"item\">\n\t\t\t\t\t\t\t\t<div class=\"to-tab-item-main\">\n\t\t\t\t\t\t\t\t\t<div class=\"to-tab-item-left\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"to-tab-item-content\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"to-tab-item-label\">\n\t\t\t\t\t\t\t\t\t\t\t<slot name=\"label\" v-bind=\"item\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{ item.label }}\n\t\t\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<span class=\"to-tab-item-delete\" v-if=\"deletable\" @click.stop=\"removeTab(item, index)\"><span></span></span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class=\"to-tab-item-right\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"to-tab-item-under\"></div>\n\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</template>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"to-tab-line\"></div>\n\t\t\t<div class=\"to-tab-fn\">\n\t\t\t\t<slot name=\"fn\"></slot>\n\t\t\t\t<!-- <div class=\"to-tab-fn-item fn-left\"></div>\n\t\t\t\t<div class=\"to-tab-fn-item fn-right\"></div>\n\t\t\t\t<div class=\"to-tab-fn-item fn-refresh\"></div> -->\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"to-tab-page\">\n\t\t\t<slot></slot>\n\t\t</div>\n\t</div>\n</template>\n<script setup lang=\"ts\">\ndefineOptions({\n name: 'ToTab',\n});\nimport { ref, reactive, computed, onMounted, CSSProperties } from 'vue'\n\nconst emit = defineEmits(['update:modelValue', 'change'])\n\ninterface TabItem {\n\tlabel: string,\n\tvalue: string | number,\n}\ninterface Props {\n\tmodelValue?: string | number,\n\tposition?: string,\n\tmode?: string,\n\tdata?: TabItem[],\n\tdeletable?: boolean,\n\ttabOver?: 'float' | 'avg' | 'control' | 'scroll'\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n\tmodelValue: '',\n\tposition: '',\n\tmode: 'default',\n\ttabOver: 'control',\n\tdeletable: false,\n\tdata: () => [] as TabItem[]\n})\n\nconst left = ref(0)\n\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\tif (props.position) {\n\t\tarr.push(`position-${props.position}`)\n\t}\n\treturn arr\n})\n\nconst setStyle = computed(() => {\n\tlet obj: CSSProperties = {}\n\treturn obj\n})\n\nconst setUlStyle = computed(() => {\n\tlet obj: CSSProperties = {}\n\tobj.transform = `translateX(${left}px)`\n\treturn obj\n})\n\nfunction changeTab(item, index) {\n\temit('update:modelValue', item.value, index)\n\temit('change', item.value, index)\n}\n\nfunction removeTab(item, index) {\n\t// \n}\n</script>","<template>\n\t<div class=\"to-tab-item\" :class=\"setClass\"></div>\n</template>\n<script setup lang=\"ts\">\ndefineOptions({\n name: 'ToTabItem',\n});\nimport { ref, reactive, computed, onMounted, defineProps } from 'vue'\n\ninterface Props {\n\tmode: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n\tmode: 'default'\n})\n\n\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\treturn arr\n})\n</script>","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","import Tab from './src/tab.vue';\nimport TabItem from './src/tab-item.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\n\nexport const ToTab: SFCWithInstall<typeof Tab> = withInstall(Tab);\nexport const ToTabItem: SFCWithInstall<typeof TabItem> = withInstall(TabItem);\n\nexport * from './src/instance';"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_openBlock","_Fragment","data","modelValue","_renderSlot","_mergeProps","_createTextVNode","_toDisplayString","deletable","_withModifiers","_createCommentVNode"],"mappings":"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"}
|