@a2simcode/ui 0.0.176 → 0.0.177

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 (344) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +86 -86
  2. package/.cursor/skills/ui-component-helper/SKILL.md +115 -115
  3. package/LICENSE +53 -53
  4. package/README.md +156 -156
  5. package/dist/simcode-ui.es.js +2 -4
  6. package/dist/simcode-ui.umd.js +2 -2
  7. package/dist/stats.html +1 -1
  8. package/dist/ui.css +1 -1
  9. package/docs/components/autocomplete.md +89 -89
  10. package/docs/components/barcode.md +101 -101
  11. package/docs/components/button-select.md +24 -24
  12. package/docs/components/button.md +117 -117
  13. package/docs/components/buttons.md +119 -119
  14. package/docs/components/cascader-select.md +114 -114
  15. package/docs/components/checkbox.md +114 -114
  16. package/docs/components/code-mirror.md +85 -85
  17. package/docs/components/collapse.md +26 -26
  18. package/docs/components/comp.md +71 -71
  19. package/docs/components/count-up.md +24 -24
  20. package/docs/components/count.md +24 -24
  21. package/docs/components/data-panel.md +24 -24
  22. package/docs/components/date.md +76 -76
  23. package/docs/components/dialog-full.md +112 -112
  24. package/docs/components/dialog.md +127 -127
  25. package/docs/components/divider.md +24 -24
  26. package/docs/components/drawer.md +127 -127
  27. package/docs/components/dynamic-layer.md +118 -118
  28. package/docs/components/echarts.md +72 -72
  29. package/docs/components/editor.md +24 -24
  30. package/docs/components/form.md +72 -72
  31. package/docs/components/guid.md +39 -39
  32. package/docs/components/hpanel.md +24 -24
  33. package/docs/components/icon.md +56 -56
  34. package/docs/components/input-button.md +24 -24
  35. package/docs/components/input-code.md +24 -24
  36. package/docs/components/input-color.md +114 -114
  37. package/docs/components/input-layer.md +26 -26
  38. package/docs/components/input-rows.md +370 -370
  39. package/docs/components/input-tag.md +50 -50
  40. package/docs/components/input.md +129 -129
  41. package/docs/components/layer-form.md +61 -61
  42. package/docs/components/layer.md +127 -127
  43. package/docs/components/layout.md +132 -132
  44. package/docs/components/map.md +24 -24
  45. package/docs/components/menu.md +121 -121
  46. package/docs/components/meta/button.ts +4 -4
  47. package/docs/components/meta/buttons.ts +76 -76
  48. package/docs/components/meta/code-mirror.ts +108 -108
  49. package/docs/components/meta/comp.ts +236 -236
  50. package/docs/components/meta/date.ts +267 -267
  51. package/docs/components/meta/echarts.ts +64 -64
  52. package/docs/components/meta/form-item.ts +50 -50
  53. package/docs/components/meta/form.ts +181 -181
  54. package/docs/components/meta/input-button.ts +2 -2
  55. package/docs/components/meta/input-cards.ts +112 -112
  56. package/docs/components/meta/input-code.ts +2 -2
  57. package/docs/components/meta/input-color.ts +243 -243
  58. package/docs/components/meta/input-layer.ts +366 -366
  59. package/docs/components/meta/input-rows.ts +119 -119
  60. package/docs/components/meta/layer-form.ts +56 -56
  61. package/docs/components/meta/map.ts +68 -68
  62. package/docs/components/meta/panel.ts +152 -152
  63. package/docs/components/meta/slider.ts +270 -270
  64. package/docs/components/meta/table-panel.ts +232 -232
  65. package/docs/components/meta/table.ts +391 -391
  66. package/docs/components/meta/tabs.ts +146 -146
  67. package/docs/components/meta/title.ts +91 -91
  68. package/docs/components/meta/tree-select.ts +199 -199
  69. package/docs/components/meta/tree.ts +219 -219
  70. package/docs/components/meta/vpanel.ts +19 -19
  71. package/docs/components/meta/workflow-viewer.ts +55 -55
  72. package/docs/components/number.md +124 -124
  73. package/docs/components/page.md +102 -102
  74. package/docs/components/panel.md +37 -37
  75. package/docs/components/radio.md +87 -87
  76. package/docs/components/rate.md +71 -71
  77. package/docs/components/select.md +133 -133
  78. package/docs/components/slider-captcha.md +41 -41
  79. package/docs/components/slider.md +101 -101
  80. package/docs/components/switch.md +90 -90
  81. package/docs/components/table-panel.md +236 -236
  82. package/docs/components/table.md +391 -391
  83. package/docs/components/tabs.md +26 -26
  84. package/docs/components/title.md +24 -24
  85. package/docs/components/tree.md +207 -207
  86. package/docs/components/upload.md +117 -117
  87. package/docs/components/workflow-viewer.md +21 -21
  88. package/docs/components/workflow.md +21 -21
  89. package/docs/examples/autocomplete/advanced.vue +35 -35
  90. package/docs/examples/autocomplete/basic.vue +32 -32
  91. package/docs/examples/autocomplete/clearable.vue +33 -33
  92. package/docs/examples/autocomplete/custom-template.vue +49 -49
  93. package/docs/examples/autocomplete/disabled.vue +33 -33
  94. package/docs/examples/autocomplete/icon.vue +37 -37
  95. package/docs/examples/barcode/all-types.vue +380 -380
  96. package/docs/examples/barcode/basic.vue +14 -14
  97. package/docs/examples/barcode/props-appearance.vue +243 -243
  98. package/docs/examples/barcode/props-geometry.vue +143 -143
  99. package/docs/examples/barcode/props-logic.vue +216 -216
  100. package/docs/examples/barcode/props-symbology.vue +199 -199
  101. package/docs/examples/barcode/props-text.vue +268 -268
  102. package/docs/examples/button/basic.vue +7 -7
  103. package/docs/examples/button/danger-ghost.vue +17 -17
  104. package/docs/examples/button/disabled.vue +10 -10
  105. package/docs/examples/button/loading.vue +6 -6
  106. package/docs/examples/button/shape.vue +7 -7
  107. package/docs/examples/button/size.vue +14 -14
  108. package/docs/examples/button/type.vue +10 -10
  109. package/docs/examples/button-select/basic.vue +19 -19
  110. package/docs/examples/buttons/basic.vue +45 -45
  111. package/docs/examples/buttons/disabled.vue +36 -36
  112. package/docs/examples/buttons/dropdown.vue +63 -63
  113. package/docs/examples/buttons/group.vue +52 -52
  114. package/docs/examples/buttons/link.vue +47 -47
  115. package/docs/examples/buttons/popup.vue +39 -39
  116. package/docs/examples/buttons/size.vue +45 -45
  117. package/docs/examples/cascader-select/basic.vue +28 -28
  118. package/docs/examples/cascader-select/clearable.vue +34 -34
  119. package/docs/examples/cascader-select/disabled.vue +43 -43
  120. package/docs/examples/cascader-select/filterable.vue +37 -37
  121. package/docs/examples/cascader-select/methods.vue +84 -84
  122. package/docs/examples/cascader-select/multiple.vue +38 -38
  123. package/docs/examples/cascader-select/slot.vue +45 -45
  124. package/docs/examples/checkbox/basic.vue +18 -18
  125. package/docs/examples/checkbox/button.vue +19 -19
  126. package/docs/examples/checkbox/color.vue +25 -25
  127. package/docs/examples/checkbox/disabled.vue +17 -17
  128. package/docs/examples/checkbox/min-max.vue +20 -20
  129. package/docs/examples/checkbox/mixed.vue +56 -56
  130. package/docs/examples/checkbox/size.vue +28 -28
  131. package/docs/examples/code-mirror/basic.vue +11 -11
  132. package/docs/examples/code-mirror/events.vue +42 -42
  133. package/docs/examples/code-mirror/height.vue +25 -25
  134. package/docs/examples/code-mirror/mode.vue +33 -33
  135. package/docs/examples/code-mirror/readonly.vue +14 -14
  136. package/docs/examples/collapse/basic.vue +82 -82
  137. package/docs/examples/comp/basic.vue +7 -7
  138. package/docs/examples/comp/collapse.vue +38 -38
  139. package/docs/examples/comp/tabs.vue +38 -38
  140. package/docs/examples/count/basic.vue +101 -101
  141. package/docs/examples/count-up/basic.vue +89 -89
  142. package/docs/examples/data-panel/basic.vue +110 -110
  143. package/docs/examples/date/basic.vue +73 -73
  144. package/docs/examples/date/default-value.vue +59 -59
  145. package/docs/examples/date/format.vue +75 -75
  146. package/docs/examples/date/range.vue +66 -66
  147. package/docs/examples/date/types.vue +79 -79
  148. package/docs/examples/decorated-title/basic.vue +31 -31
  149. package/docs/examples/dialog/basic.vue +36 -36
  150. package/docs/examples/dialog/custom-buttons.vue +44 -44
  151. package/docs/examples/dialog/fullscreen.vue +23 -23
  152. package/docs/examples/dialog/no-mask.vue +17 -17
  153. package/docs/examples/dialog/size.vue +44 -44
  154. package/docs/examples/dialog/steps.vue +57 -57
  155. package/docs/examples/dialog-full/basic.vue +29 -29
  156. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  157. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  158. package/docs/examples/dialog-full/no-header.vue +27 -27
  159. package/docs/examples/dialog-full/steps.vue +71 -71
  160. package/docs/examples/divider/basic.vue +52 -52
  161. package/docs/examples/drawer/basic.vue +35 -35
  162. package/docs/examples/drawer/custom-buttons.vue +34 -34
  163. package/docs/examples/drawer/direction.vue +47 -47
  164. package/docs/examples/drawer/mask.vue +36 -36
  165. package/docs/examples/drawer/no-buttons.vue +20 -20
  166. package/docs/examples/drawer/size.vue +28 -28
  167. package/docs/examples/dynamic-layer/basic.vue +33 -33
  168. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  169. package/docs/examples/dynamic-layer/form.vue +73 -73
  170. package/docs/examples/dynamic-layer/steps.vue +52 -52
  171. package/docs/examples/dynamic-layer/types.vue +40 -40
  172. package/docs/examples/echarts/basic.vue +31 -31
  173. package/docs/examples/echarts/dynamic.vue +43 -43
  174. package/docs/examples/echarts/line.vue +46 -46
  175. package/docs/examples/echarts/pie.vue +44 -44
  176. package/docs/examples/editor/basic.vue +15 -15
  177. package/docs/examples/form/basic.vue +665 -665
  178. package/docs/examples/form/init.vue +76 -76
  179. package/docs/examples/form/master-detail.vue +203 -203
  180. package/docs/examples/form/rule-format.vue +179 -179
  181. package/docs/examples/guid/basic.vue +10 -10
  182. package/docs/examples/guid/size.vue +13 -13
  183. package/docs/examples/hpanel/basic.vue +79 -79
  184. package/docs/examples/icon/basic.vue +9 -9
  185. package/docs/examples/icon/rotate-flip.vue +9 -9
  186. package/docs/examples/icon/size.vue +7 -7
  187. package/docs/examples/input/basic.vue +10 -10
  188. package/docs/examples/input/clearable.vue +12 -12
  189. package/docs/examples/input/disabled.vue +6 -6
  190. package/docs/examples/input/icon.vue +23 -23
  191. package/docs/examples/input/password.vue +18 -18
  192. package/docs/examples/input/size.vue +13 -13
  193. package/docs/examples/input/textarea.vue +25 -25
  194. package/docs/examples/input/word-limit.vue +28 -28
  195. package/docs/examples/input-button/basic.vue +33 -33
  196. package/docs/examples/input-code/basic.vue +29 -29
  197. package/docs/examples/input-color/basic.vue +10 -10
  198. package/docs/examples/input-color/disabled.vue +13 -13
  199. package/docs/examples/input-color/format.vue +17 -17
  200. package/docs/examples/input-color/no-alpha.vue +13 -13
  201. package/docs/examples/input-color/only-button.vue +15 -15
  202. package/docs/examples/input-color/predefine.vue +31 -31
  203. package/docs/examples/input-color/size.vue +15 -15
  204. package/docs/examples/input-layer/basic.vue +86 -86
  205. package/docs/examples/input-rows/basic.vue +73 -73
  206. package/docs/examples/input-rows/drag.vue +48 -48
  207. package/docs/examples/input-rows/layer-form.vue +85 -85
  208. package/docs/examples/input-rows/nested.vue +91 -91
  209. package/docs/examples/input-tag/basic.vue +27 -27
  210. package/docs/examples/input-tag/colors.vue +23 -23
  211. package/docs/examples/input-tag/readonly.vue +17 -17
  212. package/docs/examples/layer/basic.vue +43 -43
  213. package/docs/examples/layer/custom-buttons.vue +61 -61
  214. package/docs/examples/layer/drawer.vue +37 -37
  215. package/docs/examples/layer/full.vue +38 -38
  216. package/docs/examples/layer/modal.vue +34 -34
  217. package/docs/examples/layer/steps.vue +46 -46
  218. package/docs/examples/layer-form/basic.vue +76 -76
  219. package/docs/examples/layer-form/config.vue +82 -82
  220. package/docs/examples/layer-form/size.vue +72 -72
  221. package/docs/examples/layout/basic.vue +36 -36
  222. package/docs/examples/layout/custom-size.vue +50 -50
  223. package/docs/examples/layout/disable-move.vue +37 -37
  224. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  225. package/docs/examples/layout/min-size.vue +73 -73
  226. package/docs/examples/layout/percent-size.vue +80 -80
  227. package/docs/examples/layout/simple.vue +22 -22
  228. package/docs/examples/layout/top-side.vue +34 -34
  229. package/docs/examples/map/basic.vue +22 -22
  230. package/docs/examples/menu/basic.vue +58 -58
  231. package/docs/examples/menu/collapsed.vue +49 -49
  232. package/docs/examples/menu/horizontal.vue +44 -44
  233. package/docs/examples/menu/selection-test.vue +104 -104
  234. package/docs/examples/menu/theme.vue +46 -46
  235. package/docs/examples/menu/vertical.vue +46 -46
  236. package/docs/examples/number/advanced.vue +143 -143
  237. package/docs/examples/number/basic.vue +63 -63
  238. package/docs/examples/number/disabled.vue +49 -49
  239. package/docs/examples/number/size.vue +42 -42
  240. package/docs/examples/number/slots.vue +123 -123
  241. package/docs/examples/number/step-strictly.vue +41 -41
  242. package/docs/examples/number/step.vue +47 -47
  243. package/docs/examples/page/basic.vue +41 -41
  244. package/docs/examples/page/code-table-model.vue +428 -428
  245. package/docs/examples/page/dept-user-management.vue +211 -211
  246. package/docs/examples/page/init.vue +87 -87
  247. package/docs/examples/page/log.vue +453 -453
  248. package/docs/examples/page/user-management.vue +313 -313
  249. package/docs/examples/panel/tool-buttons.vue +18 -18
  250. package/docs/examples/radio/basic.vue +17 -17
  251. package/docs/examples/radio/button.vue +17 -17
  252. package/docs/examples/radio/color.vue +18 -18
  253. package/docs/examples/radio/disabled.vue +17 -17
  254. package/docs/examples/radio/size.vue +29 -29
  255. package/docs/examples/rate/basic.vue +24 -24
  256. package/docs/examples/rate/half.vue +24 -24
  257. package/docs/examples/rate/readonly.vue +11 -11
  258. package/docs/examples/rate/text.vue +37 -37
  259. package/docs/examples/select/basic.vue +16 -16
  260. package/docs/examples/select/clearable.vue +22 -22
  261. package/docs/examples/select/disabled.vue +31 -31
  262. package/docs/examples/select/filterable.vue +24 -24
  263. package/docs/examples/select/group.vue +23 -23
  264. package/docs/examples/select/icon.vue +16 -16
  265. package/docs/examples/select/multiple.vue +18 -18
  266. package/docs/examples/select/size.vue +39 -39
  267. package/docs/examples/slider/basic.vue +42 -42
  268. package/docs/examples/slider/disabled.vue +17 -17
  269. package/docs/examples/slider/marks.vue +30 -30
  270. package/docs/examples/slider/size.vue +37 -37
  271. package/docs/examples/slider/tooltip.vue +36 -36
  272. package/docs/examples/slider/vertical.vue +26 -26
  273. package/docs/examples/slider-captcha/basic.vue +44 -44
  274. package/docs/examples/slider-captcha/custom.vue +48 -48
  275. package/docs/examples/switch/basic.vue +16 -16
  276. package/docs/examples/switch/disabled.vue +13 -13
  277. package/docs/examples/switch/loading.vue +13 -13
  278. package/docs/examples/switch/size.vue +15 -15
  279. package/docs/examples/switch/text.vue +13 -13
  280. package/docs/examples/table/action-filter.vue +126 -126
  281. package/docs/examples/table/actions.vue +116 -116
  282. package/docs/examples/table/add-row.vue +103 -103
  283. package/docs/examples/table/basic.vue +168 -168
  284. package/docs/examples/table/checkbox-layout.vue +68 -68
  285. package/docs/examples/table/custom-layout.vue +115 -115
  286. package/docs/examples/table/dynamic-type.vue +73 -73
  287. package/docs/examples/table/editable.vue +262 -262
  288. package/docs/examples/table/field-selection.vue +87 -87
  289. package/docs/examples/table/frozen-column.vue +140 -140
  290. package/docs/examples/table/height-mode.vue +99 -99
  291. package/docs/examples/table/icon.vue +85 -85
  292. package/docs/examples/table/link.vue +66 -66
  293. package/docs/examples/table/multiple.vue +188 -188
  294. package/docs/examples/table/pagination.vue +151 -151
  295. package/docs/examples/table/single-selection.vue +64 -64
  296. package/docs/examples/table/sub-table-lazy.vue +97 -97
  297. package/docs/examples/table/sub-table.vue +103 -103
  298. package/docs/examples/table/tag.vue +43 -43
  299. package/docs/examples/table/tree-column.vue +119 -119
  300. package/docs/examples/table/tree-data.vue +141 -141
  301. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  302. package/docs/examples/table/tree-lazy.vue +80 -80
  303. package/docs/examples/table/tree-set-selection.vue +75 -75
  304. package/docs/examples/table-panel/basic.vue +229 -229
  305. package/docs/examples/table-panel/batch-operations.vue +285 -285
  306. package/docs/examples/table-panel/button-visibility.vue +88 -88
  307. package/docs/examples/table-panel/filter.vue +219 -219
  308. package/docs/examples/table-panel/get-selection.vue +111 -111
  309. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  310. package/docs/examples/table-panel/pagination.vue +133 -133
  311. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  312. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  313. package/docs/examples/tabs/basic.vue +98 -98
  314. package/docs/examples/time/base.vue +67 -67
  315. package/docs/examples/title/basic.vue +87 -87
  316. package/docs/examples/tree/accordion.vue +46 -46
  317. package/docs/examples/tree/basic.vue +50 -50
  318. package/docs/examples/tree/buttons.vue +53 -53
  319. package/docs/examples/tree/checkable.vue +52 -52
  320. package/docs/examples/tree/custom-keys.vue +39 -39
  321. package/docs/examples/tree/default-expanded.vue +52 -52
  322. package/docs/examples/tree/draggable.vue +29 -29
  323. package/docs/examples/tree/expand-on-click.vue +39 -39
  324. package/docs/examples/tree/flat-data.vue +20 -20
  325. package/docs/examples/tree/icon.vue +40 -40
  326. package/docs/examples/tree/load-data.vue +37 -37
  327. package/docs/examples/tree/methods.vue +74 -74
  328. package/docs/examples/tree/theme.vue +33 -33
  329. package/docs/examples/tree-select/basic.vue +47 -47
  330. package/docs/examples/upload/accept.vue +31 -31
  331. package/docs/examples/upload/basic.vue +12 -12
  332. package/docs/examples/upload/drag.vue +11 -11
  333. package/docs/examples/upload/image.vue +17 -17
  334. package/docs/examples/upload/limit.vue +20 -20
  335. package/docs/examples/upload/multiple.vue +17 -17
  336. package/docs/examples/upload/readonly.vue +17 -17
  337. package/docs/examples/utils/cipher.vue +160 -160
  338. package/docs/examples/utils/common.vue +153 -153
  339. package/docs/examples/utils/date.vue +56 -56
  340. package/docs/examples/utils/dom.vue +52 -52
  341. package/docs/examples/utils/is.vue +70 -70
  342. package/docs/examples/workflow/basic.vue +265 -265
  343. package/docs/examples/workflow-viewer/basic.vue +248 -248
  344. package/package.json +23 -23
@@ -1,85 +1,85 @@
1
- <template>
2
- <div style="position: relative; width: 100%; height: 300px">
3
- <j-table v-if="iconsReady" :columns="columns" :records="records" />
4
- </div>
5
- </template>
6
-
7
- <script setup lang="ts">
8
- import { getIcon, iconLoaded, loadIcon } from '@iconify/vue'
9
- import { onBeforeMount, ref } from 'vue'
10
-
11
- const iconsReady = ref(false)
12
-
13
- const browsers = [
14
- { name: 'Chrome', icon: 'logos:chrome' },
15
- { name: 'Firefox', icon: 'logos:firefox' },
16
- { name: 'Safari', icon: 'logos:safari' },
17
- { name: 'Edge', icon: 'logos:microsoft-edge' },
18
- ]
19
-
20
- const toSvg = (iconName: string) => {
21
- const iconData = getIcon(iconName)
22
- if (!iconData) return ''
23
- return `<svg viewBox="0 0 ${iconData.width} ${iconData.height}">${iconData.body}</svg>`
24
- }
25
-
26
- const records = ref<Record<string, any>[]>([])
27
-
28
- onBeforeMount(async () => {
29
- // @ts-ignore
30
- if (import.meta.env.SSR) {
31
- iconsReady.value = true
32
- return
33
- }
34
-
35
- const icons = browsers.map((item) => item.icon)
36
-
37
- await Promise.all(
38
- icons.map(async (icon) => {
39
- if (!iconLoaded(icon)) {
40
- await loadIcon(icon)
41
- }
42
- })
43
- )
44
-
45
- records.value = browsers.map((item) => {
46
- return {
47
- ...item,
48
- svg: toSvg(item.icon),
49
- }
50
- })
51
-
52
- iconsReady.value = true
53
- })
54
-
55
- const columns = ref([
56
- {
57
- id: 'name',
58
- config: {
59
- label: '浏览器',
60
- width: 150,
61
- align: 'left',
62
- },
63
- },
64
- {
65
- id: 'icon',
66
- type: 'j-icon',
67
- config: {
68
- label: '图标(Iconify)',
69
- width: 120,
70
- align: 'center',
71
- size: 24,
72
- },
73
- },
74
- {
75
- id: 'svg',
76
- type: 'j-icon',
77
- config: {
78
- label: '图标(SVG)',
79
- width: 120,
80
- align: 'center',
81
- size: 24,
82
- },
83
- },
84
- ])
85
- </script>
1
+ <template>
2
+ <div style="position: relative; width: 100%; height: 300px">
3
+ <j-table v-if="iconsReady" :columns="columns" :records="records" />
4
+ </div>
5
+ </template>
6
+
7
+ <script setup lang="ts">
8
+ import { getIcon, iconLoaded, loadIcon } from '@iconify/vue'
9
+ import { onBeforeMount, ref } from 'vue'
10
+
11
+ const iconsReady = ref(false)
12
+
13
+ const browsers = [
14
+ { name: 'Chrome', icon: 'logos:chrome' },
15
+ { name: 'Firefox', icon: 'logos:firefox' },
16
+ { name: 'Safari', icon: 'logos:safari' },
17
+ { name: 'Edge', icon: 'logos:microsoft-edge' },
18
+ ]
19
+
20
+ const toSvg = (iconName: string) => {
21
+ const iconData = getIcon(iconName)
22
+ if (!iconData) return ''
23
+ return `<svg viewBox="0 0 ${iconData.width} ${iconData.height}">${iconData.body}</svg>`
24
+ }
25
+
26
+ const records = ref<Record<string, any>[]>([])
27
+
28
+ onBeforeMount(async () => {
29
+ // @ts-ignore
30
+ if (import.meta.env.SSR) {
31
+ iconsReady.value = true
32
+ return
33
+ }
34
+
35
+ const icons = browsers.map((item) => item.icon)
36
+
37
+ await Promise.all(
38
+ icons.map(async (icon) => {
39
+ if (!iconLoaded(icon)) {
40
+ await loadIcon(icon)
41
+ }
42
+ })
43
+ )
44
+
45
+ records.value = browsers.map((item) => {
46
+ return {
47
+ ...item,
48
+ svg: toSvg(item.icon),
49
+ }
50
+ })
51
+
52
+ iconsReady.value = true
53
+ })
54
+
55
+ const columns = ref([
56
+ {
57
+ id: 'name',
58
+ config: {
59
+ label: '浏览器',
60
+ width: 150,
61
+ align: 'left',
62
+ },
63
+ },
64
+ {
65
+ id: 'icon',
66
+ type: 'j-icon',
67
+ config: {
68
+ label: '图标(Iconify)',
69
+ width: 120,
70
+ align: 'center',
71
+ size: 24,
72
+ },
73
+ },
74
+ {
75
+ id: 'svg',
76
+ type: 'j-icon',
77
+ config: {
78
+ label: '图标(SVG)',
79
+ width: 120,
80
+ align: 'center',
81
+ size: 24,
82
+ },
83
+ },
84
+ ])
85
+ </script>
@@ -1,66 +1,66 @@
1
- <template>
2
- <div style="position: relative; width: 100%; height: 400px">
3
- <j-table :columns="columns" :records="records" />
4
- </div>
5
- </template>
6
-
7
- <script setup lang="ts">
8
- import { ref } from 'vue'
9
- import { ElMessage } from 'element-plus'
10
-
11
- const columns = ref([
12
- {
13
- id: 'name',
14
- type: 'link',
15
- config: {
16
- label: '项目名称',
17
- width: 'auto',
18
- align: 'left',
19
- click: ({ row }: { row: any }) => {
20
- ElMessage.success(`点击了项目: ${row.name}`)
21
- },
22
- },
23
- },
24
- {
25
- id: 'status',
26
- config: {
27
- label: '状态',
28
- width: 'auto',
29
- align: 'center',
30
- },
31
- },
32
- {
33
- id: 'owner',
34
- type: 'link',
35
- config: {
36
- label: '负责人',
37
- width: 'auto',
38
- align: 'center',
39
- click: ({ row }: { row: any }) => {
40
- ElMessage.info(`查看负责人: ${row.owner}`)
41
- },
42
- },
43
- },
44
- ])
45
-
46
- const records = ref([
47
- {
48
- id: '1',
49
- name: '项目A',
50
- status: '进行中',
51
- owner: '张三',
52
- },
53
- {
54
- id: '2',
55
- name: '项目B',
56
- status: '已完成',
57
- owner: '李四',
58
- },
59
- {
60
- id: '3',
61
- name: '项目C',
62
- status: '待审核',
63
- owner: '王五',
64
- },
65
- ])
66
- </script>
1
+ <template>
2
+ <div style="position: relative; width: 100%; height: 400px">
3
+ <j-table :columns="columns" :records="records" />
4
+ </div>
5
+ </template>
6
+
7
+ <script setup lang="ts">
8
+ import { ref } from 'vue'
9
+ import { ElMessage } from 'element-plus'
10
+
11
+ const columns = ref([
12
+ {
13
+ id: 'name',
14
+ type: 'link',
15
+ config: {
16
+ label: '项目名称',
17
+ width: 'auto',
18
+ align: 'left',
19
+ click: ({ row }: { row: any }) => {
20
+ ElMessage.success(`点击了项目: ${row.name}`)
21
+ },
22
+ },
23
+ },
24
+ {
25
+ id: 'status',
26
+ config: {
27
+ label: '状态',
28
+ width: 'auto',
29
+ align: 'center',
30
+ },
31
+ },
32
+ {
33
+ id: 'owner',
34
+ type: 'link',
35
+ config: {
36
+ label: '负责人',
37
+ width: 'auto',
38
+ align: 'center',
39
+ click: ({ row }: { row: any }) => {
40
+ ElMessage.info(`查看负责人: ${row.owner}`)
41
+ },
42
+ },
43
+ },
44
+ ])
45
+
46
+ const records = ref([
47
+ {
48
+ id: '1',
49
+ name: '项目A',
50
+ status: '进行中',
51
+ owner: '张三',
52
+ },
53
+ {
54
+ id: '2',
55
+ name: '项目B',
56
+ status: '已完成',
57
+ owner: '李四',
58
+ },
59
+ {
60
+ id: '3',
61
+ name: '项目C',
62
+ status: '待审核',
63
+ owner: '王五',
64
+ },
65
+ ])
66
+ </script>
@@ -1,188 +1,188 @@
1
- <template>
2
- <div style="margin-bottom: 10px">
3
- <j-button type="primary" label="获取选中数据" @click="getSelection" />
4
- <j-button label="选中前两行" @click="setSelection" />
5
- </div>
6
- <div style="position: relative; width: 100%; height: 500px">
7
- <j-table ref="tableRef" :columns="columns" :records="records" is-multiple />
8
- </div>
9
- </template>
10
-
11
- <script setup lang="ts">
12
- import { ref } from 'vue'
13
-
14
- const tableRef = ref()
15
-
16
- const getSelection = () => {
17
- const records = tableRef.value.getSelection()
18
- console.log(records)
19
- alert(`选中了 ${records.length} 条数据,详情请查看控制台`)
20
- }
21
-
22
- const setSelection = () => {
23
- const selectedRecords = [records.value[0], records.value[1]]
24
- tableRef.value.setSelection(selectedRecords)
25
- }
26
-
27
- const columns = ref([
28
- {
29
- id: 'Order ID',
30
- config: {
31
- label: 'Order ID',
32
- width: 'auto',
33
- align: 'left',
34
- },
35
- },
36
- {
37
- id: 'Customer ID',
38
- config: {
39
- label: 'Customer ID',
40
- width: 'auto',
41
- align: 'left',
42
- },
43
- },
44
- {
45
- id: 'Product Name',
46
- config: {
47
- label: 'Product Name',
48
- width: 'auto',
49
- align: 'left',
50
- },
51
- },
52
- {
53
- id: 'Category',
54
- config: {
55
- label: 'Category',
56
- width: 'auto',
57
- align: 'left',
58
- },
59
- },
60
- {
61
- id: 'Quantity',
62
- config: {
63
- label: 'Quantity',
64
- width: 'auto',
65
- align: 'right',
66
- },
67
- },
68
- {
69
- id: 'Sales',
70
- config: {
71
- label: 'Sales',
72
- width: 'auto',
73
- align: 'right',
74
- },
75
- },
76
- {
77
- id: 'Profit',
78
- config: {
79
- label: 'Profit',
80
- width: 'auto',
81
- align: 'right',
82
- },
83
- },
84
- ])
85
-
86
- const records = ref([
87
- {
88
- id: 'CA-2016-152156',
89
- 'Order ID': 'CA-2016-152156',
90
- 'Customer ID': 'CG-12520',
91
- 'Product Name': 'Canon ImageCLASS 2200 Advanced Copier',
92
- Category: 'Office Supplies',
93
- Quantity: 2,
94
- Sales: 2399.99,
95
- Profit: 400.0,
96
- },
97
- {
98
- id: 'CA-2017-152157',
99
- 'Order ID': 'CA-2017-152157',
100
- 'Customer ID': 'DV-13045',
101
- 'Product Name': 'Logitech Wireless Mouse',
102
- Category: 'Technology',
103
- Quantity: 3,
104
- Sales: 89.97,
105
- Profit: 25.5,
106
- },
107
- {
108
- id: 'US-2017-108966',
109
- 'Order ID': 'US-2017-108966',
110
- 'Customer ID': 'SO-20335',
111
- 'Product Name': 'HON Mesh Task Chair',
112
- Category: 'Furniture',
113
- Quantity: 4,
114
- Sales: 799.96,
115
- Profit: 120.0,
116
- },
117
- {
118
- id: 'US-2016-108967',
119
- 'Order ID': 'US-2016-108967',
120
- 'Customer ID': 'AB-10015',
121
- 'Product Name': 'Avery Binder Labels',
122
- Category: 'Office Supplies',
123
- Quantity: 10,
124
- Sales: 15.9,
125
- Profit: 5.2,
126
- },
127
- {
128
- id: 'CA-2015-108968',
129
- 'Order ID': 'CA-2015-108968',
130
- 'Customer ID': 'ML-12515',
131
- 'Product Name': 'Apple iPhone 7',
132
- Category: 'Technology',
133
- Quantity: 1,
134
- Sales: 699.0,
135
- Profit: 80.0,
136
- },
137
- {
138
- id: 'CA-2016-108969',
139
- 'Order ID': 'CA-2016-108969',
140
- 'Customer ID': 'CG-12520',
141
- 'Product Name': 'Staples Paper',
142
- Category: 'Office Supplies',
143
- Quantity: 20,
144
- Sales: 40.0,
145
- Profit: 12.0,
146
- },
147
- {
148
- id: 'US-2016-108970',
149
- 'Order ID': 'US-2016-108970',
150
- 'Customer ID': 'DV-13045',
151
- 'Product Name': 'Dell Monitor 24"',
152
- Category: 'Technology',
153
- Quantity: 2,
154
- Sales: 320.0,
155
- Profit: 60.0,
156
- },
157
- {
158
- id: 'US-2017-108971',
159
- 'Order ID': 'US-2017-108971',
160
- 'Customer ID': 'SO-20335',
161
- 'Product Name': 'Office Chair Ergonomic',
162
- Category: 'Furniture',
163
- Quantity: 1,
164
- Sales: 199.0,
165
- Profit: 35.0,
166
- },
167
- {
168
- id: 'CA-2017-108972',
169
- 'Order ID': 'CA-2017-108972',
170
- 'Customer ID': 'AB-10015',
171
- 'Product Name': 'Notebook Set',
172
- Category: 'Office Supplies',
173
- Quantity: 15,
174
- Sales: 60.0,
175
- Profit: 18.0,
176
- },
177
- {
178
- id: 'US-2015-108973',
179
- 'Order ID': 'US-2015-108973',
180
- 'Customer ID': 'ML-12515',
181
- 'Product Name': 'Bluetooth Headset',
182
- Category: 'Technology',
183
- Quantity: 2,
184
- Sales: 150.0,
185
- Profit: 30.0,
186
- },
187
- ])
188
- </script>
1
+ <template>
2
+ <div style="margin-bottom: 10px">
3
+ <j-button type="primary" label="获取选中数据" @click="getSelection" />
4
+ <j-button label="选中前两行" @click="setSelection" />
5
+ </div>
6
+ <div style="position: relative; width: 100%; height: 500px">
7
+ <j-table ref="tableRef" :columns="columns" :records="records" is-multiple />
8
+ </div>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import { ref } from 'vue'
13
+
14
+ const tableRef = ref()
15
+
16
+ const getSelection = () => {
17
+ const records = tableRef.value.getSelection()
18
+ console.log(records)
19
+ alert(`选中了 ${records.length} 条数据,详情请查看控制台`)
20
+ }
21
+
22
+ const setSelection = () => {
23
+ const selectedRecords = [records.value[0], records.value[1]]
24
+ tableRef.value.setSelection(selectedRecords)
25
+ }
26
+
27
+ const columns = ref([
28
+ {
29
+ id: 'Order ID',
30
+ config: {
31
+ label: 'Order ID',
32
+ width: 'auto',
33
+ align: 'left',
34
+ },
35
+ },
36
+ {
37
+ id: 'Customer ID',
38
+ config: {
39
+ label: 'Customer ID',
40
+ width: 'auto',
41
+ align: 'left',
42
+ },
43
+ },
44
+ {
45
+ id: 'Product Name',
46
+ config: {
47
+ label: 'Product Name',
48
+ width: 'auto',
49
+ align: 'left',
50
+ },
51
+ },
52
+ {
53
+ id: 'Category',
54
+ config: {
55
+ label: 'Category',
56
+ width: 'auto',
57
+ align: 'left',
58
+ },
59
+ },
60
+ {
61
+ id: 'Quantity',
62
+ config: {
63
+ label: 'Quantity',
64
+ width: 'auto',
65
+ align: 'right',
66
+ },
67
+ },
68
+ {
69
+ id: 'Sales',
70
+ config: {
71
+ label: 'Sales',
72
+ width: 'auto',
73
+ align: 'right',
74
+ },
75
+ },
76
+ {
77
+ id: 'Profit',
78
+ config: {
79
+ label: 'Profit',
80
+ width: 'auto',
81
+ align: 'right',
82
+ },
83
+ },
84
+ ])
85
+
86
+ const records = ref([
87
+ {
88
+ id: 'CA-2016-152156',
89
+ 'Order ID': 'CA-2016-152156',
90
+ 'Customer ID': 'CG-12520',
91
+ 'Product Name': 'Canon ImageCLASS 2200 Advanced Copier',
92
+ Category: 'Office Supplies',
93
+ Quantity: 2,
94
+ Sales: 2399.99,
95
+ Profit: 400.0,
96
+ },
97
+ {
98
+ id: 'CA-2017-152157',
99
+ 'Order ID': 'CA-2017-152157',
100
+ 'Customer ID': 'DV-13045',
101
+ 'Product Name': 'Logitech Wireless Mouse',
102
+ Category: 'Technology',
103
+ Quantity: 3,
104
+ Sales: 89.97,
105
+ Profit: 25.5,
106
+ },
107
+ {
108
+ id: 'US-2017-108966',
109
+ 'Order ID': 'US-2017-108966',
110
+ 'Customer ID': 'SO-20335',
111
+ 'Product Name': 'HON Mesh Task Chair',
112
+ Category: 'Furniture',
113
+ Quantity: 4,
114
+ Sales: 799.96,
115
+ Profit: 120.0,
116
+ },
117
+ {
118
+ id: 'US-2016-108967',
119
+ 'Order ID': 'US-2016-108967',
120
+ 'Customer ID': 'AB-10015',
121
+ 'Product Name': 'Avery Binder Labels',
122
+ Category: 'Office Supplies',
123
+ Quantity: 10,
124
+ Sales: 15.9,
125
+ Profit: 5.2,
126
+ },
127
+ {
128
+ id: 'CA-2015-108968',
129
+ 'Order ID': 'CA-2015-108968',
130
+ 'Customer ID': 'ML-12515',
131
+ 'Product Name': 'Apple iPhone 7',
132
+ Category: 'Technology',
133
+ Quantity: 1,
134
+ Sales: 699.0,
135
+ Profit: 80.0,
136
+ },
137
+ {
138
+ id: 'CA-2016-108969',
139
+ 'Order ID': 'CA-2016-108969',
140
+ 'Customer ID': 'CG-12520',
141
+ 'Product Name': 'Staples Paper',
142
+ Category: 'Office Supplies',
143
+ Quantity: 20,
144
+ Sales: 40.0,
145
+ Profit: 12.0,
146
+ },
147
+ {
148
+ id: 'US-2016-108970',
149
+ 'Order ID': 'US-2016-108970',
150
+ 'Customer ID': 'DV-13045',
151
+ 'Product Name': 'Dell Monitor 24"',
152
+ Category: 'Technology',
153
+ Quantity: 2,
154
+ Sales: 320.0,
155
+ Profit: 60.0,
156
+ },
157
+ {
158
+ id: 'US-2017-108971',
159
+ 'Order ID': 'US-2017-108971',
160
+ 'Customer ID': 'SO-20335',
161
+ 'Product Name': 'Office Chair Ergonomic',
162
+ Category: 'Furniture',
163
+ Quantity: 1,
164
+ Sales: 199.0,
165
+ Profit: 35.0,
166
+ },
167
+ {
168
+ id: 'CA-2017-108972',
169
+ 'Order ID': 'CA-2017-108972',
170
+ 'Customer ID': 'AB-10015',
171
+ 'Product Name': 'Notebook Set',
172
+ Category: 'Office Supplies',
173
+ Quantity: 15,
174
+ Sales: 60.0,
175
+ Profit: 18.0,
176
+ },
177
+ {
178
+ id: 'US-2015-108973',
179
+ 'Order ID': 'US-2015-108973',
180
+ 'Customer ID': 'ML-12515',
181
+ 'Product Name': 'Bluetooth Headset',
182
+ Category: 'Technology',
183
+ Quantity: 2,
184
+ Sales: 150.0,
185
+ Profit: 30.0,
186
+ },
187
+ ])
188
+ </script>