@touchvue/ui 0.0.1-alpha.2 → 1.0.0-beta.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/package.json +82 -34
  2. package/README.md +0 -70
  3. package/es/components/article/index.js +0 -66
  4. package/es/components/article/index.js.map +0 -1
  5. package/es/components/box/index.js +0 -98
  6. package/es/components/box/index.js.map +0 -1
  7. package/es/components/button/index.js +0 -96
  8. package/es/components/button/index.js.map +0 -1
  9. package/es/components/calendar/index.js +0 -44
  10. package/es/components/calendar/index.js.map +0 -1
  11. package/es/components/card/index.js +0 -290
  12. package/es/components/card/index.js.map +0 -1
  13. package/es/components/checkbox/index.js +0 -97
  14. package/es/components/checkbox/index.js.map +0 -1
  15. package/es/components/datepicker/index.js +0 -44
  16. package/es/components/datepicker/index.js.map +0 -1
  17. package/es/components/form/index.js +0 -303
  18. package/es/components/form/index.js.map +0 -1
  19. package/es/components/grid/index.js +0 -253
  20. package/es/components/grid/index.js.map +0 -1
  21. package/es/components/header/index.js +0 -233
  22. package/es/components/header/index.js.map +0 -1
  23. package/es/components/icon/index.js +0 -98
  24. package/es/components/icon/index.js.map +0 -1
  25. package/es/components/input/index.js +0 -436
  26. package/es/components/input/index.js.map +0 -1
  27. package/es/components/line/index.js +0 -100
  28. package/es/components/line/index.js.map +0 -1
  29. package/es/components/msg/index.js +0 -322
  30. package/es/components/msg/index.js.map +0 -1
  31. package/es/components/padding/index.js +0 -92
  32. package/es/components/padding/index.js.map +0 -1
  33. package/es/components/page/index.js +0 -334
  34. package/es/components/page/index.js.map +0 -1
  35. package/es/components/select/index.js +0 -218
  36. package/es/components/select/index.js.map +0 -1
  37. package/es/components/space/index.js +0 -88
  38. package/es/components/space/index.js.map +0 -1
  39. package/es/components/step/index.js +0 -127
  40. package/es/components/step/index.js.map +0 -1
  41. package/es/components/switch/index.js +0 -120
  42. package/es/components/switch/index.js.map +0 -1
  43. package/es/components/tab/index.js +0 -227
  44. package/es/components/tab/index.js.map +0 -1
  45. package/es/components/table/index.js +0 -893
  46. package/es/components/table/index.js.map +0 -1
  47. package/es/directives/dis/index.js +0 -32
  48. package/es/directives/dis/index.js.map +0 -1
  49. package/es/directives/size/index.js +0 -23
  50. package/es/directives/size/index.js.map +0 -1
  51. package/es/hooks/index.js +0 -2
  52. package/es/hooks/index.js.map +0 -1
  53. package/es/index.js +0 -4209
  54. package/es/index.js.map +0 -1
  55. package/es/utils/index.js +0 -90
  56. package/es/utils/index.js.map +0 -1
  57. package/lib/components/article/index.js +0 -70
  58. package/lib/components/article/index.js.map +0 -1
  59. package/lib/components/box/index.js +0 -102
  60. package/lib/components/box/index.js.map +0 -1
  61. package/lib/components/button/index.js +0 -98
  62. package/lib/components/button/index.js.map +0 -1
  63. package/lib/components/calendar/index.js +0 -46
  64. package/lib/components/calendar/index.js.map +0 -1
  65. package/lib/components/card/index.js +0 -292
  66. package/lib/components/card/index.js.map +0 -1
  67. package/lib/components/checkbox/index.js +0 -99
  68. package/lib/components/checkbox/index.js.map +0 -1
  69. package/lib/components/datepicker/index.js +0 -46
  70. package/lib/components/datepicker/index.js.map +0 -1
  71. package/lib/components/form/index.js +0 -306
  72. package/lib/components/form/index.js.map +0 -1
  73. package/lib/components/grid/index.js +0 -256
  74. package/lib/components/grid/index.js.map +0 -1
  75. package/lib/components/header/index.js +0 -235
  76. package/lib/components/header/index.js.map +0 -1
  77. package/lib/components/icon/index.js +0 -101
  78. package/lib/components/icon/index.js.map +0 -1
  79. package/lib/components/input/index.js +0 -438
  80. package/lib/components/input/index.js.map +0 -1
  81. package/lib/components/line/index.js +0 -102
  82. package/lib/components/line/index.js.map +0 -1
  83. package/lib/components/msg/index.js +0 -324
  84. package/lib/components/msg/index.js.map +0 -1
  85. package/lib/components/padding/index.js +0 -94
  86. package/lib/components/padding/index.js.map +0 -1
  87. package/lib/components/page/index.js +0 -336
  88. package/lib/components/page/index.js.map +0 -1
  89. package/lib/components/select/index.js +0 -220
  90. package/lib/components/select/index.js.map +0 -1
  91. package/lib/components/space/index.js +0 -90
  92. package/lib/components/space/index.js.map +0 -1
  93. package/lib/components/step/index.js +0 -129
  94. package/lib/components/step/index.js.map +0 -1
  95. package/lib/components/switch/index.js +0 -122
  96. package/lib/components/switch/index.js.map +0 -1
  97. package/lib/components/tab/index.js +0 -230
  98. package/lib/components/tab/index.js.map +0 -1
  99. package/lib/components/table/index.js +0 -898
  100. package/lib/components/table/index.js.map +0 -1
  101. package/lib/directives/dis/index.js +0 -34
  102. package/lib/directives/dis/index.js.map +0 -1
  103. package/lib/directives/size/index.js +0 -25
  104. package/lib/directives/size/index.js.map +0 -1
  105. package/lib/hooks/index.js +0 -3
  106. package/lib/hooks/index.js.map +0 -1
  107. package/lib/index.js +0 -4251
  108. package/lib/index.js.map +0 -1
  109. package/lib/utils/index.js +0 -99
  110. package/lib/utils/index.js.map +0 -1
  111. package/theme/components/article/index.css +0 -1
  112. package/theme/components/box/index.css +0 -1
  113. package/theme/components/button/index.css +0 -1
  114. package/theme/components/calendar/index.css +0 -0
  115. package/theme/components/card/index.css +0 -1
  116. package/theme/components/checkbox/index.css +0 -1
  117. package/theme/components/datepicker/index.css +0 -0
  118. package/theme/components/form/index.css +0 -1
  119. package/theme/components/grid/index.css +0 -1
  120. package/theme/components/header/index.css +0 -1
  121. package/theme/components/icon/index.css +0 -1
  122. package/theme/components/input/index.css +0 -1
  123. package/theme/components/line/index.css +0 -1
  124. package/theme/components/msg/index.css +0 -1
  125. package/theme/components/padding/index.css +0 -1
  126. package/theme/components/space/index.css +0 -1
  127. package/theme/components/step/index.css +0 -1
  128. package/theme/components/switch/index.css +0 -1
  129. package/theme/components/tab/index.css +0 -1
  130. package/theme/components/table/index.css +0 -1
  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 +0 -1
  141. package/theme/skin/default.css +0 -1
@@ -1,334 +0,0 @@
1
- import { defineComponent, ref, computed, watch, onMounted, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createElementVNode, Fragment, renderList, createVNode, withKeys } from 'vue';
2
-
3
- const _hoisted_1 = {
4
- key: 0,
5
- class: "to-page-total"
6
- };
7
- const _hoisted_2 = {
8
- key: 1,
9
- class: "to-page-pager"
10
- };
11
- const _hoisted_3 = { class: "to-page-pager-list" };
12
- const _hoisted_4 = {
13
- key: 0,
14
- class: "to-page-pager-ellipsis"
15
- };
16
- const _hoisted_5 = ["onClick"];
17
- const _hoisted_6 = {
18
- key: 1,
19
- class: "to-page-pager-ellipsis"
20
- };
21
- const _hoisted_7 = {
22
- key: 2,
23
- class: "to-page-size"
24
- };
25
- const _hoisted_8 = {
26
- key: 3,
27
- class: "to-page-jumper"
28
- };
29
- var _sfc_main = /* @__PURE__ */ defineComponent({
30
- __name: "page",
31
- props: {
32
- align: { type: String, default: "" },
33
- pageSize: { type: [Number, String], default: 10 },
34
- total: { type: [Number, String], default: 0 },
35
- pageCount: { type: [Number, String], default: void 0 },
36
- pagerCount: { type: [Number, String], default: 7 },
37
- currentPage: { type: [Number, String], default: 1 },
38
- layout: { type: String, default: "all" },
39
- pageSizes: { type: [Array, String], default: () => [10, 20, 30, 40, 50, 100] },
40
- prevText: { type: String, default: "" },
41
- nextText: { type: String, default: "" },
42
- disabled: { type: Boolean, default: false },
43
- hideOnSinglePage: { type: Boolean, default: false },
44
- lite: Boolean
45
- },
46
- emits: [
47
- "update:pageSize",
48
- "size-change",
49
- "update:currentPage",
50
- "current-change",
51
- "prev-click",
52
- "next-click"
53
- ],
54
- setup(__props, { emit: __emit }) {
55
- const props = __props;
56
- const emit = __emit;
57
- const pageCount_ = ref(0);
58
- const pageSize_ = ref(Number(props.pageSize));
59
- const currentPage_ = ref(Number(props.currentPage));
60
- const pager_ = ref([]);
61
- const jumperPage = ref("");
62
- const showPrevMore = ref(false);
63
- const showNextMore = ref(false);
64
- const cShowInSingle = computed(() => {
65
- return !(props.hideOnSinglePage && Number(pageCount_.value) <= 1) || !props.hideOnSinglePage;
66
- });
67
- const cPageSizes = computed(() => {
68
- const sizes = typeof props.pageSizes === "string" ? props.pageSizes.split(",") : props.pageSizes;
69
- return sizes.map((size) => ({
70
- label: size,
71
- value: Number(size)
72
- }));
73
- });
74
- const setClass = computed(() => {
75
- let arr = [];
76
- if (props.lite) {
77
- arr.push(`is-lite`);
78
- }
79
- return arr;
80
- });
81
- watch(
82
- () => props.pageSize,
83
- (val) => {
84
- const sizes = typeof props.pageSizes === "string" ? props.pageSizes.split(",") : props.pageSizes;
85
- pageSize_.value = sizes.includes(val) ? Number(val) : Number(sizes[0]);
86
- },
87
- { immediate: true }
88
- );
89
- watch(
90
- () => props.currentPage,
91
- (val) => {
92
- currentPage_.value = Number(val);
93
- computePager();
94
- },
95
- { immediate: true }
96
- );
97
- watch(
98
- () => props.pageCount,
99
- (val) => {
100
- pageCount_.value = Number(val);
101
- computePager();
102
- },
103
- { immediate: true }
104
- );
105
- watch(() => props.total, computePager);
106
- watch(() => props.pagerCount, computePager);
107
- onMounted(() => computePager());
108
- function handleJump() {
109
- if (props.disabled || !jumperPage.value)
110
- return;
111
- let jump = Number(jumperPage.value);
112
- jump = Math.max(1, Math.min(jump, pageCount_.value));
113
- jumperPage.value = "";
114
- handleCurrentChange(jump);
115
- }
116
- function handleSizeChange(size) {
117
- if (props.disabled)
118
- return;
119
- emit("update:pageSize", size);
120
- emit("size-change", size);
121
- computePager();
122
- }
123
- function handleCurrentChange(page) {
124
- if (props.disabled)
125
- return;
126
- currentPage_.value = page;
127
- emit("update:currentPage", page);
128
- emit("current-change", page);
129
- computePager();
130
- }
131
- function handlePagePrev() {
132
- if (props.disabled || currentPage_.value <= 1)
133
- return;
134
- currentPage_.value--;
135
- handleCurrentChange(currentPage_.value);
136
- emit("prev-click", currentPage_.value);
137
- }
138
- function handlePageNext() {
139
- if (props.disabled || currentPage_.value >= pageCount_.value)
140
- return;
141
- currentPage_.value++;
142
- handleCurrentChange(currentPage_.value);
143
- emit("next-click", currentPage_.value);
144
- }
145
- function computePager() {
146
- const pagerCount = Number(props.pagerCount);
147
- const halfPagerCount = (pagerCount - 1) / 2;
148
- const count = props.pageCount ? Number(props.pageCount) : Math.ceil(Number(props.total) / pageSize_.value);
149
- pageCount_.value = Math.max(1, count);
150
- const current = currentPage_.value;
151
- showPrevMore.value = current > pagerCount - halfPagerCount;
152
- showNextMore.value = current < pageCount_.value - halfPagerCount;
153
- const pages = [];
154
- if (showPrevMore.value && !showNextMore.value) {
155
- const start = pageCount_.value - (pagerCount - 2);
156
- for (let i = start; i < pageCount_.value; i++)
157
- pages.push(i);
158
- } else if (!showPrevMore.value && showNextMore.value) {
159
- for (let i = 2; i < pagerCount; i++)
160
- pages.push(i);
161
- } else if (showPrevMore.value && showNextMore.value) {
162
- const offset = Math.floor(pagerCount / 2) - 1;
163
- for (let i = current - offset; i <= current + offset; i++)
164
- pages.push(i);
165
- } else {
166
- for (let i = 2; i < pageCount_.value; i++)
167
- pages.push(i);
168
- }
169
- pager_.value = pages;
170
- }
171
- return (_ctx, _cache) => {
172
- const _component_to_select = resolveComponent("to-select");
173
- const _component_to_input = resolveComponent("to-input");
174
- const _directive_dis = resolveDirective("dis");
175
- const _directive_align = resolveDirective("align");
176
- return cShowInSingle.value ? withDirectives((openBlock(), createElementBlock(
177
- "div",
178
- {
179
- key: 0,
180
- class: normalizeClass([setClass.value, "to-page"])
181
- },
182
- [
183
- __props.layout.includes("total") || __props.layout === "all" ? (openBlock(), createElementBlock(
184
- "div",
185
- _hoisted_1,
186
- " \u5171 " + toDisplayString(__props.total) + " \u9879\u6570\u636E ",
187
- 1
188
- /* TEXT */
189
- )) : createCommentVNode("v-if", true),
190
- createCommentVNode(' <div class="to-page-slot" v-if="slots.default || !lite"> '),
191
- renderSlot(_ctx.$slots, "default"),
192
- createCommentVNode(" </div> "),
193
- __props.layout.includes("pager") || __props.layout === "all" ? (openBlock(), createElementBlock("div", _hoisted_2, [
194
- withDirectives(createElementVNode(
195
- "div",
196
- {
197
- class: "to-page-pager-prev",
198
- onClick: handlePagePrev
199
- },
200
- null,
201
- 512
202
- /* NEED_PATCH */
203
- ), [
204
- [_directive_dis, Number(currentPage_.value) <= 1]
205
- ]),
206
- createElementVNode("ul", _hoisted_3, [
207
- createElementVNode(
208
- "li",
209
- {
210
- class: normalizeClass(["to-page-pager-item", { "is-on": Number(currentPage_.value) === 1 }]),
211
- onClick: _cache[0] || (_cache[0] = ($event) => handleCurrentChange(1))
212
- },
213
- " 1 ",
214
- 2
215
- /* CLASS */
216
- ),
217
- showPrevMore.value ? (openBlock(), createElementBlock("li", _hoisted_4, "\u2026")) : createCommentVNode("v-if", true),
218
- (openBlock(true), createElementBlock(
219
- Fragment,
220
- null,
221
- renderList(pager_.value, (page) => {
222
- return openBlock(), createElementBlock("li", {
223
- key: page,
224
- class: normalizeClass(["to-page-pager-item", { "is-on": Number(currentPage_.value) === page }]),
225
- onClick: ($event) => handleCurrentChange(page)
226
- }, toDisplayString(page), 11, _hoisted_5);
227
- }),
228
- 128
229
- /* KEYED_FRAGMENT */
230
- )),
231
- showNextMore.value ? (openBlock(), createElementBlock("li", _hoisted_6, "\u2026")) : createCommentVNode("v-if", true),
232
- pageCount_.value > 1 ? (openBlock(), createElementBlock(
233
- "li",
234
- {
235
- key: 2,
236
- class: normalizeClass(["to-page-pager-item", { "is-on": Number(currentPage_.value) === Number(pageCount_.value) }]),
237
- onClick: _cache[1] || (_cache[1] = ($event) => handleCurrentChange(pageCount_.value))
238
- },
239
- toDisplayString(pageCount_.value),
240
- 3
241
- /* TEXT, CLASS */
242
- )) : createCommentVNode("v-if", true)
243
- ]),
244
- withDirectives(createElementVNode(
245
- "div",
246
- {
247
- class: "to-page-pager-next",
248
- onClick: handlePageNext
249
- },
250
- null,
251
- 512
252
- /* NEED_PATCH */
253
- ), [
254
- [_directive_dis, Number(currentPage_.value) >= Number(pageCount_.value)]
255
- ])
256
- ])) : createCommentVNode("v-if", true),
257
- __props.layout.includes("size") || __props.layout === "all" ? (openBlock(), createElementBlock("div", _hoisted_7, [
258
- withDirectives(createVNode(_component_to_select, {
259
- modelValue: pageSize_.value,
260
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => pageSize_.value = $event),
261
- suffix: "\u6761/\u9875",
262
- mode: "none",
263
- clearable: false,
264
- data: cPageSizes.value,
265
- "option-width": 10,
266
- onChange: handleSizeChange
267
- }, null, 8, ["modelValue", "data"]), [
268
- [_directive_dis, __props.disabled]
269
- ])
270
- ])) : createCommentVNode("v-if", true),
271
- __props.layout.includes("jumper") || __props.layout === "all" ? (openBlock(), createElementBlock("div", _hoisted_8, [
272
- _cache[4] || (_cache[4] = createElementVNode(
273
- "span",
274
- null,
275
- "\u8DF3\u81F3",
276
- -1
277
- /* CACHED */
278
- )),
279
- withDirectives(createVNode(_component_to_input, {
280
- modelValue: jumperPage.value,
281
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => jumperPage.value = $event),
282
- placeholder: "1",
283
- onKeyup: withKeys(handleJump, ["enter"])
284
- }, null, 8, ["modelValue"]), [
285
- [_directive_dis, __props.disabled]
286
- ]),
287
- createElementVNode(
288
- "span",
289
- null,
290
- "/" + toDisplayString(pageCount_.value) + "\u9875",
291
- 1
292
- /* TEXT */
293
- )
294
- ])) : createCommentVNode("v-if", true)
295
- ],
296
- 2
297
- /* CLASS */
298
- )), [
299
- [_directive_align, __props.align]
300
- ]) : createCommentVNode("v-if", true);
301
- };
302
- }
303
- });
304
-
305
- var _export_sfc = (sfc, props) => {
306
- const target = sfc.__vccOpts || sfc;
307
- for (const [key, val] of props) {
308
- target[key] = val;
309
- }
310
- return target;
311
- };
312
-
313
- var Page = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/page/src/page.vue"]]);
314
-
315
- const withInstall = (main, extra) => {
316
- main.install = (app) => {
317
- for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
318
- app.component(comp.name, comp);
319
- }
320
- };
321
- if (extra) {
322
- for (const [key, comp] of Object.entries(extra)) {
323
- main[key] = comp;
324
- }
325
- }
326
- return main;
327
- };
328
-
329
- navigator.userAgent.toLowerCase();
330
-
331
- const ToPage = withInstall(Page);
332
-
333
- export { ToPage };
334
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/components/page/src/page.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/page/index.ts"],"sourcesContent":["<template>\n <div v-if=\"cShowInSingle\" v-align=\"align\" :class=\"setClass\" class=\"to-page\">\n <div v-if=\"layout.includes('total') || layout === 'all'\" class=\"to-page-total\">\n 共 {{ total }} 项数据\n </div>\n <!-- <div class=\"to-page-slot\" v-if=\"slots.default || !lite\"> -->\n <slot />\n <!-- </div> -->\n <div v-if=\"layout.includes('pager') || layout === 'all'\" class=\"to-page-pager\">\n <div\n v-dis=\"Number(currentPage_) <= 1\"\n class=\"to-page-pager-prev\"\n @click=\"handlePagePrev\"\n ></div>\n <ul class=\"to-page-pager-list\">\n <li\n class=\"to-page-pager-item\"\n :class=\"{ 'is-on': Number(currentPage_) === 1 }\"\n @click=\"handleCurrentChange(1)\"\n >\n 1\n </li>\n <li v-if=\"showPrevMore\" class=\"to-page-pager-ellipsis\">…</li>\n <li\n v-for=\"page in pager_\"\n :key=\"page\"\n class=\"to-page-pager-item\"\n :class=\"{ 'is-on': Number(currentPage_) === page }\"\n @click=\"handleCurrentChange(page)\"\n >\n {{ page }}\n </li>\n <li v-if=\"showNextMore\" class=\"to-page-pager-ellipsis\">…</li>\n <li\n v-if=\"pageCount_ > 1\"\n class=\"to-page-pager-item\"\n :class=\"{ 'is-on': Number(currentPage_) === Number(pageCount_) }\"\n @click=\"handleCurrentChange(pageCount_)\"\n >\n {{ pageCount_ }}\n </li>\n </ul>\n <div\n v-dis=\"Number(currentPage_) >= Number(pageCount_)\"\n class=\"to-page-pager-next\"\n @click=\"handlePageNext\"\n ></div>\n </div>\n <div v-if=\"layout.includes('size') || layout === 'all'\" class=\"to-page-size\">\n <to-select\n v-model=\"pageSize_\"\n v-dis=\"disabled\"\n suffix=\"条/页\"\n mode=\"none\"\n :clearable=\"false\"\n :data=\"cPageSizes\"\n :option-width=\"10\"\n @change=\"handleSizeChange\"\n />\n </div>\n <div v-if=\"layout.includes('jumper') || layout === 'all'\" class=\"to-page-jumper\">\n <span>跳至</span>\n <to-input\n v-model=\"jumperPage\"\n v-dis=\"disabled\"\n placeholder=\"1\"\n @keyup.enter=\"handleJump\"\n ></to-input>\n <span>/{{ pageCount_ }}页</span>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch, defineProps, defineEmits, onMounted } from 'vue';\n// const slots = useSlots\nconst props = defineProps({\n align: { type: String, default: '' },\n pageSize: { type: [Number, String], default: 10 },\n total: { type: [Number, String], default: 0 },\n pageCount: { type: [Number, String], default: undefined },\n pagerCount: { type: [Number, String], default: 7 },\n currentPage: { type: [Number, String], default: 1 },\n layout: { type: String, default: 'all' },\n pageSizes: { type: [Array, String], default: () => [10, 20, 30, 40, 50, 100] },\n prevText: { type: String, default: '' },\n nextText: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n hideOnSinglePage: { type: Boolean, default: false },\n lite: Boolean,\n});\n\nconst emit = defineEmits([\n 'update:pageSize',\n 'size-change',\n 'update:currentPage',\n 'current-change',\n 'prev-click',\n 'next-click',\n]);\n\nconst pageCount_ = ref<number>(0);\nconst pageSize_ = ref<number>(Number(props.pageSize));\nconst currentPage_ = ref<number>(Number(props.currentPage));\nconst pager_ = ref<number[]>([]);\nconst jumperPage = ref<string>('');\nconst showPrevMore = ref(false);\nconst showNextMore = ref(false);\n\nconst cShowInSingle = computed(() => {\n return !(props.hideOnSinglePage && Number(pageCount_.value) <= 1) || !props.hideOnSinglePage;\n});\n\nconst cPageSizes = computed(() => {\n const sizes = typeof props.pageSizes === 'string' ? props.pageSizes.split(',') : props.pageSizes;\n return sizes.map(size => ({\n label: size,\n value: Number(size),\n }));\n});\n\nconst setClass = computed(() => {\n let arr: string[] = [];\n if (props.lite) {\n arr.push(`is-lite`);\n }\n return arr;\n});\n\nwatch(\n () => props.pageSize,\n val => {\n const sizes =\n typeof props.pageSizes === 'string' ? props.pageSizes.split(',') : props.pageSizes;\n pageSize_.value = sizes.includes(val) ? Number(val) : Number(sizes[0]);\n },\n { immediate: true }\n);\n\nwatch(\n () => props.currentPage,\n val => {\n currentPage_.value = Number(val);\n computePager();\n },\n { immediate: true }\n);\n\nwatch(\n () => props.pageCount,\n val => {\n pageCount_.value = Number(val);\n computePager();\n },\n { immediate: true }\n);\n\nwatch(() => props.total, computePager);\nwatch(() => props.pagerCount, computePager);\n\nonMounted(() => computePager());\n\nfunction handleJump() {\n if (props.disabled || !jumperPage.value) return;\n let jump = Number(jumperPage.value);\n jump = Math.max(1, Math.min(jump, pageCount_.value));\n jumperPage.value = '';\n handleCurrentChange(jump);\n}\n\nfunction handleSizeChange(size: number) {\n if (props.disabled) return;\n emit('update:pageSize', size);\n emit('size-change', size);\n computePager();\n}\n\nfunction handleCurrentChange(page: number) {\n if (props.disabled) return;\n currentPage_.value = page;\n emit('update:currentPage', page);\n emit('current-change', page);\n computePager();\n}\n\nfunction handlePagePrev() {\n if (props.disabled || currentPage_.value <= 1) return;\n currentPage_.value--;\n handleCurrentChange(currentPage_.value);\n emit('prev-click', currentPage_.value);\n}\n\nfunction handlePageNext() {\n if (props.disabled || currentPage_.value >= pageCount_.value) return;\n currentPage_.value++;\n handleCurrentChange(currentPage_.value);\n emit('next-click', currentPage_.value);\n}\n\nfunction computePager() {\n const pagerCount = Number(props.pagerCount);\n const halfPagerCount = (pagerCount - 1) / 2;\n const count = props.pageCount\n ? Number(props.pageCount)\n : Math.ceil(Number(props.total) / pageSize_.value);\n pageCount_.value = Math.max(1, count);\n\n const current = currentPage_.value;\n showPrevMore.value = current > pagerCount - halfPagerCount;\n showNextMore.value = current < pageCount_.value - halfPagerCount;\n\n const pages: number[] = [];\n\n if (showPrevMore.value && !showNextMore.value) {\n const start = pageCount_.value - (pagerCount - 2);\n for (let i = start; i < pageCount_.value; i++) pages.push(i);\n } else if (!showPrevMore.value && showNextMore.value) {\n for (let i = 2; i < pagerCount; i++) pages.push(i);\n } else if (showPrevMore.value && showNextMore.value) {\n const offset = Math.floor(pagerCount / 2) - 1;\n for (let i = current - offset; i <= current + offset; i++) pages.push(i);\n } else {\n for (let i = 2; i < pageCount_.value; i++) pages.push(i);\n }\n\n pager_.value = pages;\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 Page from './src/page.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\nexport const ToPage: SFCWithInstall<typeof Page> = withInstall(Page);\nexport * from './src/instance';\n"],"names":["_createElementBlock","_normalizeClass","_openBlock","_toDisplayString","_createCommentVNode","_renderSlot","_createElementVNode","_Fragment","_renderList","_createVNode"],"mappings":"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"}
@@ -1,218 +0,0 @@
1
- import { ref, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, createTextVNode, createBlock, Teleport, unref, normalizeStyle, Fragment, renderList } 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-select-content" };
12
- const _hoisted_2 = { key: 0 };
13
- const _hoisted_3 = { key: 1 };
14
- const _hoisted_4 = ["onClick"];
15
-
16
- const _sfc_main = /*@__PURE__*/Object.assign({
17
- name: 'ToSelect',
18
- }, {
19
- __name: 'select',
20
- props: {
21
- modelValue: {
22
- type: [String, Number],
23
- default: '',
24
- },
25
- data: {
26
- type: [Boolean, Array],
27
- default: () => {
28
- return [];
29
- },
30
- },
31
- prefix: {
32
- type: String,
33
- default: '',
34
- },
35
- suffix: {
36
- type: String,
37
- default: '',
38
- },
39
- mode: {
40
- type: String,
41
- default: 'default',
42
- },
43
- placeholderText: {
44
- type: String,
45
- default: '请选择',
46
- },
47
- },
48
- emits: ['update:modelValue', 'change'],
49
- setup(__props, { emit: __emit }) {
50
-
51
-
52
- const props = __props;
53
- const elRef = ref(null);
54
- const optionRef = ref(null);
55
- let showOption = ref(false);
56
- const options = computed(() => {
57
- if (typeof props.data === 'string') {
58
- // 按逗号拆分字符串,过滤空项
59
- return props.data
60
- .split(',')
61
- .map(item => item.trim())
62
- .filter(item => item.length > 0)
63
- .map(item => ({ label: item, value: item }));
64
- } else if (Array.isArray(props.data)) {
65
- return props.data;
66
- }
67
- // 其它情况返回空数组
68
- return [];
69
- });
70
-
71
- const emit = __emit;
72
-
73
- const isPlaceholder = computed(
74
- () => props.modelValue === undefined || props.modelValue === null || props.modelValue === ''
75
- );
76
-
77
- const displayText = computed(() => {
78
- if (isPlaceholder.value) return props.placeholderText;
79
- if (options.value.length) {
80
- const found = options.value.find(item => item.value === props.modelValue);
81
- return found && found.label !== undefined ? found.label : String(props.modelValue);
82
- }
83
- return String(props.modelValue);
84
- });
85
-
86
- const setClass = computed(() => {
87
- const arr = [];
88
- if (props.mode) {
89
- arr.push(`mode-${props.mode}`);
90
- }
91
- return arr;
92
- });
93
-
94
- const setOptionStyle = computed(() => {
95
- const obj = {};
96
- return obj;
97
- });
98
-
99
- const open = () => {
100
- if (showOption.value) {
101
- showOption.value = false;
102
- } else {
103
- // 获取初始变量
104
- const baseInfo = elRef.value.getBoundingClientRect();
105
- // const floatInfo = optionRef.value.getBoundingClientRect()
106
- const contentHeight = optionRef.value.scrollHeight;
107
- const spaceHeight = document.body.offsetHeight - (baseInfo.top + baseInfo.height);
108
-
109
- // 定位
110
- optionRef.value.style.left = `${baseInfo.left}px`;
111
- optionRef.value.style.top = `${baseInfo.top + baseInfo.height - 1}px`;
112
-
113
- // 设置大小
114
- optionRef.value.style.width = `${baseInfo.width}px`;
115
-
116
- // 设置高度
117
- if (spaceHeight < contentHeight) {
118
- optionRef.value.style.height = `${spaceHeight}px`;
119
- }
120
-
121
- // 打开
122
- showOption.value = true;
123
-
124
- // 点击组件之外关闭
125
- document.body.addEventListener('mousedown', blur);
126
- }
127
- };
128
-
129
- const blur = e => {
130
- let node = e.target;
131
- while (node && node !== optionRef.value && node !== elRef.value && node.nodeName !== 'BODY') {
132
- node = node.parentNode;
133
- }
134
- if (node && node.nodeName === 'BODY') {
135
- close();
136
- }
137
- };
138
-
139
- const select = item => {
140
- emit('update:modelValue', item.value);
141
- emit('change', item.value);
142
- close();
143
- };
144
-
145
- const close = () => {
146
- showOption.value = false;
147
- };
148
-
149
- const clear = () => {
150
- emit('update:modelValue', '');
151
- emit('change', '');
152
- close();
153
- };
154
-
155
- return (_ctx, _cache) => {
156
- return (openBlock(), createElementBlock("div", {
157
- ref_key: "elRef",
158
- ref: elRef,
159
- class: normalizeClass(["to-select", [{ 'is-placeholder': isPlaceholder.value }, ...setClass.value]]),
160
- onClick: open
161
- }, [
162
- createElementVNode("div", _hoisted_1, [
163
- (!isPlaceholder.value)
164
- ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(__props.prefix), 1 /* TEXT */))
165
- : createCommentVNode("v-if", true),
166
- createTextVNode(" " + toDisplayString(displayText.value) + " ", 1 /* TEXT */),
167
- (!isPlaceholder.value)
168
- ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(__props.suffix), 1 /* TEXT */))
169
- : createCommentVNode("v-if", true)
170
- ]),
171
- _cache[0] || (_cache[0] = createElementVNode("div", { class: "to-select-arrow" }, null, -1 /* CACHED */)),
172
- (openBlock(), createBlock(Teleport, { to: "body" }, [
173
- createElementVNode("div", {
174
- ref_key: "optionRef",
175
- ref: optionRef,
176
- class: normalizeClass(["to-select-option", { 'is-show': unref(showOption) }]),
177
- style: normalizeStyle(setOptionStyle.value)
178
- }, [
179
- createElementVNode("div", {
180
- class: "to-select-item",
181
- onClick: clear
182
- }, toDisplayString(__props.placeholderText), 1 /* TEXT */),
183
- (openBlock(true), createElementBlock(Fragment, null, renderList(options.value, (item, index) => {
184
- return (openBlock(), createElementBlock("div", {
185
- key: index,
186
- class: normalizeClass(["to-select-item", { 'is-on': __props.modelValue === item.value }]),
187
- onClick: $event => (select(item))
188
- }, toDisplayString(item.label), 11 /* TEXT, CLASS, PROPS */, _hoisted_4))
189
- }), 128 /* KEYED_FRAGMENT */))
190
- ], 6 /* CLASS, STYLE */)
191
- ]))
192
- ], 2 /* CLASS */))
193
- }
194
- }
195
-
196
- });
197
- var Select = /*#__PURE__*/_export_sfc(_sfc_main, [['__file',"/Users/wangding/WorkSpace/AsiaInfo/projects/前端框架/touch-vue3-ui/packages/components/select/src/select.vue"]]);
198
-
199
- const withInstall = (main, extra) => {
200
- main.install = (app) => {
201
- for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
202
- app.component(comp.name, comp);
203
- }
204
- };
205
- if (extra) {
206
- for (const [key, comp] of Object.entries(extra)) {
207
- main[key] = comp;
208
- }
209
- }
210
- return main;
211
- };
212
-
213
- navigator.userAgent.toLowerCase();
214
-
215
- const ToSelect = withInstall(Select);
216
-
217
- export { ToSelect };
218
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/components/select/src/select.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/select/index.ts"],"sourcesContent":["<template>\n <div\n ref=\"elRef\"\n class=\"to-select\"\n :class=\"[{ 'is-placeholder': isPlaceholder }, ...setClass]\"\n @click=\"open\"\n >\n <div class=\"to-select-content\">\n <span v-if=\"!isPlaceholder\">{{ prefix }}</span>\n {{ displayText }}\n <span v-if=\"!isPlaceholder\">{{ suffix }}</span>\n </div>\n <div class=\"to-select-arrow\"></div>\n <Teleport to=\"body\">\n <div\n ref=\"optionRef\"\n class=\"to-select-option\"\n :class=\"{ 'is-show': showOption }\"\n :style=\"setOptionStyle\"\n >\n <div class=\"to-select-item\" @click=\"clear\">{{ placeholderText }}</div>\n <div\n v-for=\"(item, index) in options\"\n :key=\"index\"\n class=\"to-select-item\"\n :class=\"{ 'is-on': modelValue === item.value }\"\n @click=\"select(item)\"\n >\n {{ item.label }}\n </div>\n </div>\n </Teleport>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\ndefineOptions({\n name: 'ToSelect',\n});\nconst props = defineProps({\n modelValue: {\n type: [String, Number],\n default: '',\n },\n data: {\n type: [Boolean, Array],\n default: () => {\n return [];\n },\n },\n prefix: {\n type: String,\n default: '',\n },\n suffix: {\n type: String,\n default: '',\n },\n mode: {\n type: String,\n default: 'default',\n },\n placeholderText: {\n type: String,\n default: '请选择',\n },\n});\nconst elRef = ref(null);\nconst optionRef = ref(null);\nlet showOption = ref(false);\nconst options = computed(() => {\n if (typeof props.data === 'string') {\n // 按逗号拆分字符串,过滤空项\n return props.data\n .split(',')\n .map(item => item.trim())\n .filter(item => item.length > 0)\n .map(item => ({ label: item, value: item }));\n } else if (Array.isArray(props.data)) {\n return props.data;\n }\n // 其它情况返回空数组\n return [];\n});\n\nconst emit = defineEmits(['update:modelValue', 'change']);\n\nconst isPlaceholder = computed(\n () => props.modelValue === undefined || props.modelValue === null || props.modelValue === ''\n);\n\nconst displayText = computed(() => {\n if (isPlaceholder.value) return props.placeholderText;\n if (options.value.length) {\n const found = options.value.find(item => item.value === props.modelValue);\n return found && found.label !== undefined ? found.label : String(props.modelValue);\n }\n return String(props.modelValue);\n});\n\nconst setClass = computed(() => {\n const arr = [];\n if (props.mode) {\n arr.push(`mode-${props.mode}`);\n }\n return arr;\n});\n\nconst setOptionStyle = computed(() => {\n const obj = {};\n return obj;\n});\n\nconst open = () => {\n if (showOption.value) {\n showOption.value = false;\n } else {\n // 获取初始变量\n const baseInfo = elRef.value.getBoundingClientRect();\n // const floatInfo = optionRef.value.getBoundingClientRect()\n const contentHeight = optionRef.value.scrollHeight;\n const spaceHeight = document.body.offsetHeight - (baseInfo.top + baseInfo.height);\n\n // 定位\n optionRef.value.style.left = `${baseInfo.left}px`;\n optionRef.value.style.top = `${baseInfo.top + baseInfo.height - 1}px`;\n\n // 设置大小\n optionRef.value.style.width = `${baseInfo.width}px`;\n\n // 设置高度\n if (spaceHeight < contentHeight) {\n optionRef.value.style.height = `${spaceHeight}px`;\n }\n\n // 打开\n showOption.value = true;\n\n // 点击组件之外关闭\n document.body.addEventListener('mousedown', blur);\n }\n};\n\nconst blur = e => {\n let node = e.target;\n while (node && node !== optionRef.value && node !== elRef.value && node.nodeName !== 'BODY') {\n node = node.parentNode;\n }\n if (node && node.nodeName === 'BODY') {\n close();\n }\n};\n\nconst select = item => {\n emit('update:modelValue', item.value);\n emit('change', item.value);\n close();\n};\n\nconst close = () => {\n showOption.value = false;\n};\n\nconst clear = () => {\n emit('update:modelValue', '');\n emit('change', '');\n close();\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 Select from './src/select.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\n\nexport const ToSelect: SFCWithInstall<typeof Select> = withInstall(Select);\n\nexport * from './src/instance';\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_openBlock","_toDisplayString","_createBlock","_Teleport","_unref","_Fragment","_renderList"],"mappings":"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"}