@a2simcode/ui 0.0.54 → 0.0.56

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 (315) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +43 -43
  2. package/.cursor/skills/ui-component-helper/SKILL.md +81 -81
  3. package/LICENSE +53 -53
  4. package/README.md +156 -156
  5. package/dist/components/index.d.ts +2 -1
  6. package/dist/components/input-cards/index.d.ts +189 -0
  7. package/dist/components/input-cards/src/input-cards.vue.d.ts +142 -0
  8. package/dist/components/input-cards/src/interface.d.ts +29 -0
  9. package/dist/components/table/src/interface.d.ts +4 -0
  10. package/dist/simcode-ui.es.js +3524 -3305
  11. package/dist/simcode-ui.umd.js +2 -2
  12. package/dist/stats.html +1 -1
  13. package/dist/ui.css +1 -1
  14. package/docs/components/autocomplete.md +89 -89
  15. package/docs/components/barcode.md +101 -101
  16. package/docs/components/button-select.md +24 -24
  17. package/docs/components/button.md +117 -117
  18. package/docs/components/buttons.md +119 -119
  19. package/docs/components/cascader-select.md +114 -114
  20. package/docs/components/checkbox.md +114 -114
  21. package/docs/components/code-mirror.md +85 -85
  22. package/docs/components/collapse.md +26 -26
  23. package/docs/components/comp.md +71 -71
  24. package/docs/components/count-up.md +24 -24
  25. package/docs/components/count.md +24 -24
  26. package/docs/components/data-panel.md +24 -24
  27. package/docs/components/dialog-full.md +112 -112
  28. package/docs/components/dialog.md +127 -127
  29. package/docs/components/divider.md +24 -24
  30. package/docs/components/drawer.md +127 -127
  31. package/docs/components/dynamic-layer.md +118 -118
  32. package/docs/components/echarts.md +72 -72
  33. package/docs/components/editor.md +24 -24
  34. package/docs/components/form.md +27 -27
  35. package/docs/components/guid.md +39 -39
  36. package/docs/components/hpanel.md +24 -24
  37. package/docs/components/icon.md +56 -56
  38. package/docs/components/input-button.md +24 -24
  39. package/docs/components/input-cards.md +27 -0
  40. package/docs/components/input-code.md +24 -24
  41. package/docs/components/input-color.md +114 -114
  42. package/docs/components/input-layer.md +26 -26
  43. package/docs/components/input-rows.md +370 -370
  44. package/docs/components/input-tag.md +50 -50
  45. package/docs/components/input.md +129 -129
  46. package/docs/components/layer-form.md +61 -61
  47. package/docs/components/layer.md +127 -127
  48. package/docs/components/layout.md +132 -132
  49. package/docs/components/map.md +24 -24
  50. package/docs/components/menu.md +121 -121
  51. package/docs/components/meta/buttons.ts +56 -56
  52. package/docs/components/meta/comp.ts +224 -224
  53. package/docs/components/meta/dynamic-layer.ts +99 -99
  54. package/docs/components/meta/echarts.ts +64 -64
  55. package/docs/components/meta/form-item.ts +50 -50
  56. package/docs/components/meta/form.ts +160 -160
  57. package/docs/components/meta/guid.ts +42 -42
  58. package/docs/components/meta/input-cards.ts +112 -0
  59. package/docs/components/meta/input-color.ts +243 -243
  60. package/docs/components/meta/input-rows.ts +113 -113
  61. package/docs/components/meta/layer-form.ts +56 -56
  62. package/docs/components/meta/map.ts +68 -68
  63. package/docs/components/meta/number.ts +296 -296
  64. package/docs/components/meta/page.ts +67 -67
  65. package/docs/components/meta/panel.ts +83 -83
  66. package/docs/components/meta/radio.ts +55 -55
  67. package/docs/components/meta/slider.ts +270 -270
  68. package/docs/components/meta/table-panel.ts +154 -154
  69. package/docs/components/meta/table.ts +328 -328
  70. package/docs/components/meta/tabs.ts +136 -136
  71. package/docs/components/meta/tree-select.ts +199 -112
  72. package/docs/components/meta/workflow-viewer.ts +55 -55
  73. package/docs/components/meta/workflow.ts +113 -113
  74. package/docs/components/number.md +124 -124
  75. package/docs/components/page.md +42 -42
  76. package/docs/components/radio.md +87 -87
  77. package/docs/components/rate.md +71 -71
  78. package/docs/components/select.md +133 -133
  79. package/docs/components/slider-captcha.md +41 -41
  80. package/docs/components/slider.md +101 -101
  81. package/docs/components/switch.md +90 -90
  82. package/docs/components/table-panel.md +199 -199
  83. package/docs/components/table.md +202 -202
  84. package/docs/components/tabs.md +26 -26
  85. package/docs/components/title.md +24 -24
  86. package/docs/components/tree.md +207 -207
  87. package/docs/components/upload.md +117 -117
  88. package/docs/components/workflow-viewer.md +21 -21
  89. package/docs/components/workflow.md +21 -21
  90. package/docs/examples/autocomplete/advanced.vue +35 -35
  91. package/docs/examples/autocomplete/basic.vue +32 -32
  92. package/docs/examples/autocomplete/clearable.vue +33 -33
  93. package/docs/examples/autocomplete/custom-template.vue +49 -49
  94. package/docs/examples/autocomplete/disabled.vue +33 -33
  95. package/docs/examples/autocomplete/icon.vue +37 -37
  96. package/docs/examples/barcode/all-types.vue +380 -380
  97. package/docs/examples/barcode/basic.vue +14 -14
  98. package/docs/examples/barcode/props-appearance.vue +243 -243
  99. package/docs/examples/barcode/props-geometry.vue +143 -143
  100. package/docs/examples/barcode/props-logic.vue +216 -216
  101. package/docs/examples/barcode/props-symbology.vue +199 -199
  102. package/docs/examples/barcode/props-text.vue +268 -268
  103. package/docs/examples/button/basic.vue +7 -7
  104. package/docs/examples/button/danger-ghost.vue +17 -17
  105. package/docs/examples/button/disabled.vue +10 -10
  106. package/docs/examples/button/loading.vue +6 -6
  107. package/docs/examples/button/shape.vue +7 -7
  108. package/docs/examples/button/size.vue +14 -14
  109. package/docs/examples/button/type.vue +9 -9
  110. package/docs/examples/button-select/basic.vue +19 -19
  111. package/docs/examples/buttons/basic.vue +45 -45
  112. package/docs/examples/buttons/disabled.vue +36 -36
  113. package/docs/examples/buttons/dropdown.vue +63 -63
  114. package/docs/examples/buttons/group.vue +52 -52
  115. package/docs/examples/buttons/link.vue +47 -47
  116. package/docs/examples/buttons/popup.vue +39 -39
  117. package/docs/examples/buttons/size.vue +45 -45
  118. package/docs/examples/cascader-select/basic.vue +28 -28
  119. package/docs/examples/cascader-select/clearable.vue +34 -34
  120. package/docs/examples/cascader-select/disabled.vue +43 -43
  121. package/docs/examples/cascader-select/filterable.vue +37 -37
  122. package/docs/examples/cascader-select/methods.vue +84 -84
  123. package/docs/examples/cascader-select/multiple.vue +38 -38
  124. package/docs/examples/cascader-select/slot.vue +45 -45
  125. package/docs/examples/checkbox/basic.vue +18 -18
  126. package/docs/examples/checkbox/button.vue +19 -19
  127. package/docs/examples/checkbox/color.vue +25 -25
  128. package/docs/examples/checkbox/disabled.vue +17 -17
  129. package/docs/examples/checkbox/min-max.vue +20 -20
  130. package/docs/examples/checkbox/mixed.vue +56 -56
  131. package/docs/examples/checkbox/size.vue +28 -28
  132. package/docs/examples/code-mirror/basic.vue +11 -11
  133. package/docs/examples/code-mirror/events.vue +42 -42
  134. package/docs/examples/code-mirror/height.vue +25 -25
  135. package/docs/examples/code-mirror/mode.vue +33 -33
  136. package/docs/examples/code-mirror/readonly.vue +14 -14
  137. package/docs/examples/collapse/basic.vue +82 -82
  138. package/docs/examples/comp/basic.vue +7 -7
  139. package/docs/examples/comp/collapse.vue +38 -38
  140. package/docs/examples/comp/tabs.vue +38 -38
  141. package/docs/examples/count/basic.vue +54 -54
  142. package/docs/examples/count-up/basic.vue +89 -89
  143. package/docs/examples/data-panel/basic.vue +110 -110
  144. package/docs/examples/dialog/basic.vue +36 -36
  145. package/docs/examples/dialog/custom-buttons.vue +44 -44
  146. package/docs/examples/dialog/fullscreen.vue +23 -23
  147. package/docs/examples/dialog/no-mask.vue +17 -17
  148. package/docs/examples/dialog/size.vue +44 -44
  149. package/docs/examples/dialog/steps.vue +57 -57
  150. package/docs/examples/dialog-full/basic.vue +29 -29
  151. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  152. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  153. package/docs/examples/dialog-full/no-header.vue +27 -27
  154. package/docs/examples/dialog-full/steps.vue +71 -71
  155. package/docs/examples/divider/basic.vue +52 -52
  156. package/docs/examples/drawer/basic.vue +35 -35
  157. package/docs/examples/drawer/custom-buttons.vue +34 -34
  158. package/docs/examples/drawer/direction.vue +47 -47
  159. package/docs/examples/drawer/mask.vue +36 -36
  160. package/docs/examples/drawer/no-buttons.vue +20 -20
  161. package/docs/examples/drawer/size.vue +28 -28
  162. package/docs/examples/dynamic-layer/basic.vue +33 -33
  163. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  164. package/docs/examples/dynamic-layer/form.vue +73 -73
  165. package/docs/examples/dynamic-layer/steps.vue +52 -52
  166. package/docs/examples/dynamic-layer/types.vue +40 -40
  167. package/docs/examples/echarts/basic.vue +31 -31
  168. package/docs/examples/echarts/dynamic.vue +43 -43
  169. package/docs/examples/echarts/line.vue +46 -46
  170. package/docs/examples/echarts/pie.vue +44 -44
  171. package/docs/examples/editor/basic.vue +15 -15
  172. package/docs/examples/form/basic.vue +242 -242
  173. package/docs/examples/guid/basic.vue +10 -10
  174. package/docs/examples/guid/size.vue +13 -13
  175. package/docs/examples/hpanel/basic.vue +79 -79
  176. package/docs/examples/icon/basic.vue +9 -9
  177. package/docs/examples/icon/rotate-flip.vue +9 -9
  178. package/docs/examples/icon/size.vue +7 -7
  179. package/docs/examples/input/basic.vue +10 -10
  180. package/docs/examples/input/clearable.vue +12 -12
  181. package/docs/examples/input/disabled.vue +6 -6
  182. package/docs/examples/input/icon.vue +23 -23
  183. package/docs/examples/input/password.vue +18 -18
  184. package/docs/examples/input/size.vue +13 -13
  185. package/docs/examples/input/textarea.vue +25 -25
  186. package/docs/examples/input/word-limit.vue +28 -28
  187. package/docs/examples/input-button/basic.vue +33 -33
  188. package/docs/examples/input-cards/basic.vue +82 -0
  189. package/docs/examples/input-code/basic.vue +29 -29
  190. package/docs/examples/input-color/basic.vue +10 -10
  191. package/docs/examples/input-color/disabled.vue +13 -13
  192. package/docs/examples/input-color/format.vue +17 -17
  193. package/docs/examples/input-color/no-alpha.vue +13 -13
  194. package/docs/examples/input-color/only-button.vue +15 -15
  195. package/docs/examples/input-color/predefine.vue +31 -31
  196. package/docs/examples/input-color/size.vue +15 -15
  197. package/docs/examples/input-layer/basic.vue +69 -69
  198. package/docs/examples/input-rows/basic.vue +73 -73
  199. package/docs/examples/input-rows/drag.vue +48 -48
  200. package/docs/examples/input-rows/layer-form.vue +85 -85
  201. package/docs/examples/input-rows/nested.vue +91 -91
  202. package/docs/examples/input-tag/basic.vue +27 -27
  203. package/docs/examples/input-tag/colors.vue +23 -23
  204. package/docs/examples/input-tag/readonly.vue +17 -17
  205. package/docs/examples/layer/basic.vue +43 -43
  206. package/docs/examples/layer/custom-buttons.vue +61 -61
  207. package/docs/examples/layer/drawer.vue +37 -37
  208. package/docs/examples/layer/full.vue +38 -38
  209. package/docs/examples/layer/modal.vue +34 -34
  210. package/docs/examples/layer/steps.vue +46 -46
  211. package/docs/examples/layer-form/basic.vue +76 -76
  212. package/docs/examples/layer-form/config.vue +82 -82
  213. package/docs/examples/layer-form/size.vue +72 -72
  214. package/docs/examples/layout/basic.vue +36 -36
  215. package/docs/examples/layout/custom-size.vue +50 -50
  216. package/docs/examples/layout/disable-move.vue +37 -37
  217. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  218. package/docs/examples/layout/min-size.vue +73 -73
  219. package/docs/examples/layout/percent-size.vue +80 -80
  220. package/docs/examples/layout/simple.vue +22 -22
  221. package/docs/examples/layout/top-side.vue +34 -34
  222. package/docs/examples/map/basic.vue +22 -22
  223. package/docs/examples/menu/basic.vue +58 -58
  224. package/docs/examples/menu/collapsed.vue +49 -49
  225. package/docs/examples/menu/horizontal.vue +44 -44
  226. package/docs/examples/menu/selection-test.vue +104 -104
  227. package/docs/examples/menu/theme.vue +46 -46
  228. package/docs/examples/menu/vertical.vue +46 -46
  229. package/docs/examples/number/advanced.vue +143 -143
  230. package/docs/examples/number/basic.vue +63 -63
  231. package/docs/examples/number/disabled.vue +49 -49
  232. package/docs/examples/number/size.vue +42 -42
  233. package/docs/examples/number/slots.vue +123 -123
  234. package/docs/examples/number/step-strictly.vue +41 -41
  235. package/docs/examples/number/step.vue +47 -47
  236. package/docs/examples/page/basic.vue +41 -41
  237. package/docs/examples/page/init.vue +87 -87
  238. package/docs/examples/panel/tool-buttons.vue +18 -18
  239. package/docs/examples/radio/basic.vue +17 -17
  240. package/docs/examples/radio/button.vue +17 -17
  241. package/docs/examples/radio/color.vue +18 -18
  242. package/docs/examples/radio/disabled.vue +17 -17
  243. package/docs/examples/radio/size.vue +29 -29
  244. package/docs/examples/rate/basic.vue +24 -24
  245. package/docs/examples/rate/half.vue +24 -24
  246. package/docs/examples/rate/readonly.vue +11 -11
  247. package/docs/examples/rate/text.vue +32 -32
  248. package/docs/examples/select/basic.vue +16 -16
  249. package/docs/examples/select/clearable.vue +22 -22
  250. package/docs/examples/select/disabled.vue +31 -31
  251. package/docs/examples/select/filterable.vue +24 -24
  252. package/docs/examples/select/group.vue +23 -23
  253. package/docs/examples/select/icon.vue +16 -16
  254. package/docs/examples/select/multiple.vue +18 -18
  255. package/docs/examples/select/size.vue +39 -39
  256. package/docs/examples/slider/basic.vue +42 -42
  257. package/docs/examples/slider/disabled.vue +17 -17
  258. package/docs/examples/slider/marks.vue +30 -30
  259. package/docs/examples/slider/size.vue +37 -37
  260. package/docs/examples/slider/tooltip.vue +36 -36
  261. package/docs/examples/slider/vertical.vue +26 -26
  262. package/docs/examples/slider-captcha/basic.vue +44 -44
  263. package/docs/examples/slider-captcha/custom.vue +48 -48
  264. package/docs/examples/switch/basic.vue +16 -16
  265. package/docs/examples/switch/disabled.vue +13 -13
  266. package/docs/examples/switch/loading.vue +13 -13
  267. package/docs/examples/switch/size.vue +15 -15
  268. package/docs/examples/switch/text.vue +13 -13
  269. package/docs/examples/table/actions.vue +116 -116
  270. package/docs/examples/table/add-row.vue +103 -103
  271. package/docs/examples/table/basic.vue +168 -168
  272. package/docs/examples/table/editable.vue +261 -261
  273. package/docs/examples/table/field-selection.vue +87 -87
  274. package/docs/examples/table/frozen-column.vue +140 -140
  275. package/docs/examples/table/height-mode.vue +99 -99
  276. package/docs/examples/table/multiple.vue +178 -178
  277. package/docs/examples/table/pagination.vue +151 -151
  278. package/docs/examples/table/single-selection.vue +64 -64
  279. package/docs/examples/table/tree-column.vue +119 -119
  280. package/docs/examples/table/tree-data.vue +141 -141
  281. package/docs/examples/table-panel/basic.vue +228 -228
  282. package/docs/examples/table-panel/batch-operations.vue +285 -285
  283. package/docs/examples/table-panel/filter.vue +209 -209
  284. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  285. package/docs/examples/table-panel/pagination.vue +133 -133
  286. package/docs/examples/tabs/basic.vue +98 -98
  287. package/docs/examples/title/basic.vue +80 -80
  288. package/docs/examples/tree/accordion.vue +46 -46
  289. package/docs/examples/tree/basic.vue +50 -50
  290. package/docs/examples/tree/buttons.vue +53 -53
  291. package/docs/examples/tree/checkable.vue +52 -52
  292. package/docs/examples/tree/custom-keys.vue +39 -39
  293. package/docs/examples/tree/default-expanded.vue +52 -52
  294. package/docs/examples/tree/draggable.vue +29 -29
  295. package/docs/examples/tree/expand-on-click.vue +39 -39
  296. package/docs/examples/tree/flat-data.vue +20 -20
  297. package/docs/examples/tree/icon.vue +40 -40
  298. package/docs/examples/tree/load-data.vue +37 -37
  299. package/docs/examples/tree/methods.vue +74 -74
  300. package/docs/examples/tree/theme.vue +33 -33
  301. package/docs/examples/upload/accept.vue +31 -31
  302. package/docs/examples/upload/basic.vue +12 -12
  303. package/docs/examples/upload/drag.vue +11 -11
  304. package/docs/examples/upload/image.vue +17 -17
  305. package/docs/examples/upload/limit.vue +20 -20
  306. package/docs/examples/upload/multiple.vue +17 -17
  307. package/docs/examples/upload/readonly.vue +17 -17
  308. package/docs/examples/utils/cipher.vue +160 -160
  309. package/docs/examples/utils/common.vue +153 -153
  310. package/docs/examples/utils/date.vue +56 -56
  311. package/docs/examples/utils/dom.vue +52 -52
  312. package/docs/examples/utils/is.vue +70 -70
  313. package/docs/examples/workflow/basic.vue +265 -265
  314. package/docs/examples/workflow-viewer/basic.vue +248 -248
  315. package/package.json +23 -23
package/README.md CHANGED
@@ -1,156 +1,156 @@
1
- # SimCode UI
2
-
3
- <div align="center">
4
- <h1>SimCode UI</h1>
5
- <p>基于 Vue 3 + TypeScript 的现代化 UI 组件库</p>
6
- </div>
7
-
8
- ## ✨ 特性
9
-
10
- - 🚀 **现代化技术栈**: 基于 Vue 3 + TypeScript + Vite
11
- - 📦 **开箱即用**: 提供完善的类型定义和文档
12
- - 🎨 **精美设计**: 现代化的设计风格
13
- - 🔧 **易于定制**: 支持主题定制
14
- - ⚡️ **按需加载**: 支持 Tree Shaking
15
- - 🧪 **完善测试**: 单元测试覆盖
16
-
17
- ## 📦 安装
18
-
19
- 使用 pnpm:
20
-
21
- ```bash
22
- pnpm add @a2simcode/ui
23
- ```
24
-
25
- 使用 npm:
26
-
27
- ```bash
28
- npm install @a2simcode/ui
29
- ```
30
-
31
- 使用 yarn:
32
-
33
- ```bash
34
- yarn add @a2simcode/ui
35
- ```
36
-
37
- ### 安装 Peer Dependencies
38
-
39
- `@a2simcode/ui` 使用 peer dependencies 来避免重复打包依赖。**必须安装**以下依赖:
40
-
41
- ```bash
42
- pnpm add vue element-plus
43
- ```
44
-
45
- 根据你使用的组件,可能还需要安装以下**可选依赖**:
46
-
47
- ```bash
48
- # 如果使用表格组件
49
- pnpm add @visactor/vtable @visactor/vtable-editors
50
-
51
- # 如果使用图表组件
52
- pnpm add echarts
53
-
54
- # 如果使用代码编辑器组件
55
- pnpm add codemirror @codemirror/autocomplete @codemirror/commands @codemirror/lang-javascript @codemirror/lang-json @codemirror/lang-sql @codemirror/lang-python @codemirror/lang-java @codemirror/lang-css @codemirror/lang-html @codemirror/lang-xml @codemirror/lang-markdown @codemirror/language @codemirror/state @codemirror/view
56
-
57
- # 如果使用其他功能组件
58
- pnpm add @iconify/vue @vueuse/core dayjs async-validator crypto-js sortablejs sql-formatter countup.js @bwip-js/browser @wangeditor/editor diagram-js diagram-js-direct-editing min-dom inherits tiny-svg min-dash
59
- ```
60
-
61
- > **注意**: 由于 `@a2simcode/ui` 输出的是预打包的单文件,使用方的打包器可能无法自动识别 peer dependencies。请确保在使用相关组件前,已安装对应的 peer dependencies。
62
-
63
- ## 🔨 快速开始
64
-
65
- ### 完整引入
66
-
67
- ```typescript
68
- import { createApp } from 'vue'
69
- import App from './App.vue'
70
- import SimCodeUI from '@a2simcode/ui'
71
- import '@a2simcode/ui/dist/style.css'
72
-
73
- const app = createApp(App)
74
- app.use(SimCodeUI)
75
- app.mount('#app')
76
- ```
77
-
78
- ### 按需引入
79
-
80
- ```vue
81
- <template>
82
- <j-button type="primary">按钮</j-button>
83
- </template>
84
-
85
- <script setup lang="ts">
86
- import { JButton } from '@a2simcode/ui'
87
- import '@a2simcode/ui/dist/style.css'
88
- </script>
89
- ```
90
-
91
- ## 🎯 组件列表
92
-
93
- - ✅ Button 按钮
94
- - ✅ Input 输入框
95
- - ✅ Radio 单选框
96
- - 🚧 更多组件开发中...
97
-
98
- ## 💻 本地开发
99
-
100
- ```bash
101
- # 进入项目目录
102
- cd simcode-ui
103
-
104
- # 安装依赖
105
- pnpm install
106
-
107
- # 启动开发服务器
108
- pnpm dev
109
-
110
- # 构建组件库
111
- pnpm build
112
-
113
- # 运行测试
114
- pnpm test
115
-
116
- # 启动文档站点
117
- pnpm docs:dev
118
- ```
119
-
120
- ## 📁 项目结构
121
-
122
- ```
123
- simcode-ui/
124
- ├── packages/ # 组件源码
125
- │ ├── components/ # 组件
126
- │ │ ├── button/ # 按钮组件
127
- │ │ ├── input/ # 输入框组件
128
- │ │ └── index.ts # 组件入口
129
- │ └── theme/ # 主题样式
130
- │ └── src/ # 样式源码 (Less)
131
- ├── examples/ # 组件预览
132
- │ ├── App.vue # 预览应用
133
- │ └── main.ts # 入口文件
134
- ├── docs/ # 文档
135
- │ ├── .vitepress/ # VitePress 配置
136
- │ ├── guide/ # 指南
137
- │ └── components/ # 组件文档
138
- ├── __tests__/ # 测试文件
139
- ├── vite.config.ts # Vite 配置
140
- ├── vitest.config.ts # Vitest 配置
141
- └── package.json # 项目配置
142
- ```
143
-
144
- ## 🤝 贡献
145
-
146
- 欢迎提交 Issue 和 Pull Request!
147
-
148
- ## 📄 版权声明
149
-
150
- Copyright © 2024 苏州极简搭信息技术有限公司. All rights reserved.
151
-
152
- 本软件及其相关文档为专有软件,受版权法保护。未经版权所有者明确书面许可,不得以任何形式或方式(电子、机械、复印、录制或其他方式)复制、分发、传播或使用本软件的任何部分。
153
-
154
- ## 🙏 致谢
155
-
156
- 感谢所有为这个项目做出贡献的开发者!
1
+ # SimCode UI
2
+
3
+ <div align="center">
4
+ <h1>SimCode UI</h1>
5
+ <p>基于 Vue 3 + TypeScript 的现代化 UI 组件库</p>
6
+ </div>
7
+
8
+ ## ✨ 特性
9
+
10
+ - 🚀 **现代化技术栈**: 基于 Vue 3 + TypeScript + Vite
11
+ - 📦 **开箱即用**: 提供完善的类型定义和文档
12
+ - 🎨 **精美设计**: 现代化的设计风格
13
+ - 🔧 **易于定制**: 支持主题定制
14
+ - ⚡️ **按需加载**: 支持 Tree Shaking
15
+ - 🧪 **完善测试**: 单元测试覆盖
16
+
17
+ ## 📦 安装
18
+
19
+ 使用 pnpm:
20
+
21
+ ```bash
22
+ pnpm add @a2simcode/ui
23
+ ```
24
+
25
+ 使用 npm:
26
+
27
+ ```bash
28
+ npm install @a2simcode/ui
29
+ ```
30
+
31
+ 使用 yarn:
32
+
33
+ ```bash
34
+ yarn add @a2simcode/ui
35
+ ```
36
+
37
+ ### 安装 Peer Dependencies
38
+
39
+ `@a2simcode/ui` 使用 peer dependencies 来避免重复打包依赖。**必须安装**以下依赖:
40
+
41
+ ```bash
42
+ pnpm add vue element-plus
43
+ ```
44
+
45
+ 根据你使用的组件,可能还需要安装以下**可选依赖**:
46
+
47
+ ```bash
48
+ # 如果使用表格组件
49
+ pnpm add @visactor/vtable @visactor/vtable-editors
50
+
51
+ # 如果使用图表组件
52
+ pnpm add echarts
53
+
54
+ # 如果使用代码编辑器组件
55
+ pnpm add codemirror @codemirror/autocomplete @codemirror/commands @codemirror/lang-javascript @codemirror/lang-json @codemirror/lang-sql @codemirror/lang-python @codemirror/lang-java @codemirror/lang-css @codemirror/lang-html @codemirror/lang-xml @codemirror/lang-markdown @codemirror/language @codemirror/state @codemirror/view
56
+
57
+ # 如果使用其他功能组件
58
+ pnpm add @iconify/vue @vueuse/core dayjs async-validator crypto-js sortablejs sql-formatter countup.js @bwip-js/browser @wangeditor/editor diagram-js diagram-js-direct-editing min-dom inherits tiny-svg min-dash
59
+ ```
60
+
61
+ > **注意**: 由于 `@a2simcode/ui` 输出的是预打包的单文件,使用方的打包器可能无法自动识别 peer dependencies。请确保在使用相关组件前,已安装对应的 peer dependencies。
62
+
63
+ ## 🔨 快速开始
64
+
65
+ ### 完整引入
66
+
67
+ ```typescript
68
+ import { createApp } from 'vue'
69
+ import App from './App.vue'
70
+ import SimCodeUI from '@a2simcode/ui'
71
+ import '@a2simcode/ui/dist/style.css'
72
+
73
+ const app = createApp(App)
74
+ app.use(SimCodeUI)
75
+ app.mount('#app')
76
+ ```
77
+
78
+ ### 按需引入
79
+
80
+ ```vue
81
+ <template>
82
+ <j-button type="primary">按钮</j-button>
83
+ </template>
84
+
85
+ <script setup lang="ts">
86
+ import { JButton } from '@a2simcode/ui'
87
+ import '@a2simcode/ui/dist/style.css'
88
+ </script>
89
+ ```
90
+
91
+ ## 🎯 组件列表
92
+
93
+ - ✅ Button 按钮
94
+ - ✅ Input 输入框
95
+ - ✅ Radio 单选框
96
+ - 🚧 更多组件开发中...
97
+
98
+ ## 💻 本地开发
99
+
100
+ ```bash
101
+ # 进入项目目录
102
+ cd simcode-ui
103
+
104
+ # 安装依赖
105
+ pnpm install
106
+
107
+ # 启动开发服务器
108
+ pnpm dev
109
+
110
+ # 构建组件库
111
+ pnpm build
112
+
113
+ # 运行测试
114
+ pnpm test
115
+
116
+ # 启动文档站点
117
+ pnpm docs:dev
118
+ ```
119
+
120
+ ## 📁 项目结构
121
+
122
+ ```
123
+ simcode-ui/
124
+ ├── packages/ # 组件源码
125
+ │ ├── components/ # 组件
126
+ │ │ ├── button/ # 按钮组件
127
+ │ │ ├── input/ # 输入框组件
128
+ │ │ └── index.ts # 组件入口
129
+ │ └── theme/ # 主题样式
130
+ │ └── src/ # 样式源码 (Less)
131
+ ├── examples/ # 组件预览
132
+ │ ├── App.vue # 预览应用
133
+ │ └── main.ts # 入口文件
134
+ ├── docs/ # 文档
135
+ │ ├── .vitepress/ # VitePress 配置
136
+ │ ├── guide/ # 指南
137
+ │ └── components/ # 组件文档
138
+ ├── __tests__/ # 测试文件
139
+ ├── vite.config.ts # Vite 配置
140
+ ├── vitest.config.ts # Vitest 配置
141
+ └── package.json # 项目配置
142
+ ```
143
+
144
+ ## 🤝 贡献
145
+
146
+ 欢迎提交 Issue 和 Pull Request!
147
+
148
+ ## 📄 版权声明
149
+
150
+ Copyright © 2024 苏州极简搭信息技术有限公司. All rights reserved.
151
+
152
+ 本软件及其相关文档为专有软件,受版权法保护。未经版权所有者明确书面许可,不得以任何形式或方式(电子、机械、复印、录制或其他方式)复制、分发、传播或使用本软件的任何部分。
153
+
154
+ ## 🙏 致谢
155
+
156
+ 感谢所有为这个项目做出贡献的开发者!
@@ -52,7 +52,8 @@ import { default as JTabs } from './tabs';
52
52
  import { default as JCollapse } from './collapse';
53
53
  import { default as JEditor } from './editor';
54
54
  import { default as JWorkflowViewer, JWorkflow } from './workflow-viewer';
55
- export { JButton, JButtons, JInput, JIcon, JRadio, JSelect, JCascaderSelect, JCheckbox, JNumber, JAutoComplete, JLayout, JTable, JDialog, JDialogFull, JDrawer, JLayer, JDynamicLayer, JInputTag, JRate, JSlider, JUpload, JEcharts, JBarcode, JCodeMirror, JCount, JCountUp, JDataPanel, JDivider, JHpanel, JGuid, JInputButton, JInputCode, JInputColor, JTitle, JButtonSelect, JTree, JTreeSelect, JComp, JForm, JFormItem, JPage, JSliderCaptcha, JMenu, JTablePanel, JInputRows, JInputLayer, JLayerForm, JSwitch, JTabs, JCollapse, JEditor, JWorkflowViewer, JWorkflow, JPanel, };
55
+ import { default as JInputCards } from './input-cards';
56
+ export { JButton, JButtons, JInput, JIcon, JRadio, JSelect, JCascaderSelect, JCheckbox, JNumber, JAutoComplete, JLayout, JTable, JDialog, JDialogFull, JDrawer, JLayer, JDynamicLayer, JInputTag, JRate, JSlider, JUpload, JEcharts, JBarcode, JCodeMirror, JCount, JCountUp, JDataPanel, JDivider, JHpanel, JGuid, JInputButton, JInputCode, JInputColor, JTitle, JButtonSelect, JTree, JTreeSelect, JComp, JForm, JFormItem, JPage, JSliderCaptcha, JMenu, JTablePanel, JInputRows, JInputLayer, JLayerForm, JSwitch, JTabs, JCollapse, JEditor, JWorkflowViewer, JWorkflow, JPanel, JInputCards, };
56
57
  export * from '../core';
57
58
  export type { InputProps } from './input/src/input.vue';
58
59
  export type { SelectOption, SelectProps } from './select/src/select.vue';
@@ -0,0 +1,189 @@
1
+ export declare const JInputCards: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('vue').ExtractPropTypes<{
3
+ id: {
4
+ type: StringConstructor;
5
+ default: string;
6
+ };
7
+ modelValue: {
8
+ type: import('vue').PropType<Record<string, any>[]>;
9
+ default: () => never[];
10
+ };
11
+ columns: {
12
+ type: import('vue').PropType<Record<string, any>[]>;
13
+ default: () => never[];
14
+ };
15
+ editConfig: {
16
+ type: import('vue').PropType<import('.').EditConfigType>;
17
+ default: () => {};
18
+ };
19
+ gutter: {
20
+ type: import('vue').PropType<number>;
21
+ default: number;
22
+ };
23
+ span: NumberConstructor;
24
+ labelWidth: (StringConstructor | NumberConstructor)[];
25
+ required: {
26
+ type: BooleanConstructor;
27
+ default: boolean;
28
+ };
29
+ }>> & Readonly<{
30
+ "onUpdate:modelValue"?: ((value: Record<string, any>[]) => any) | undefined;
31
+ onChange?: ((data: {
32
+ id: string;
33
+ value: any;
34
+ data: any;
35
+ formData: Record<string, any>;
36
+ tableData: Record<string, any>[];
37
+ type: "add" | "delete" | "update";
38
+ }) => any) | undefined;
39
+ onRowChange?: ((data: Record<string, any>) => any) | undefined;
40
+ }>, {
41
+ validate: () => {
42
+ isOk: boolean;
43
+ info: string;
44
+ };
45
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
46
+ "update:modelValue": (value: Record<string, any>[]) => any;
47
+ change: (data: {
48
+ id: string;
49
+ value: any;
50
+ data: any;
51
+ formData: Record<string, any>;
52
+ tableData: Record<string, any>[];
53
+ type: "add" | "delete" | "update";
54
+ }) => any;
55
+ rowChange: (data: Record<string, any>) => any;
56
+ }, import('vue').PublicProps, {
57
+ required: boolean;
58
+ id: string;
59
+ modelValue: Record<string, any>[];
60
+ gutter: number;
61
+ columns: Record<string, any>[];
62
+ editConfig: import('.').EditConfigType;
63
+ }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
64
+ P: {};
65
+ B: {};
66
+ D: {};
67
+ C: {};
68
+ M: {};
69
+ Defaults: {};
70
+ }, Readonly<import('vue').ExtractPropTypes<{
71
+ id: {
72
+ type: StringConstructor;
73
+ default: string;
74
+ };
75
+ modelValue: {
76
+ type: import('vue').PropType<Record<string, any>[]>;
77
+ default: () => never[];
78
+ };
79
+ columns: {
80
+ type: import('vue').PropType<Record<string, any>[]>;
81
+ default: () => never[];
82
+ };
83
+ editConfig: {
84
+ type: import('vue').PropType<import('.').EditConfigType>;
85
+ default: () => {};
86
+ };
87
+ gutter: {
88
+ type: import('vue').PropType<number>;
89
+ default: number;
90
+ };
91
+ span: NumberConstructor;
92
+ labelWidth: (StringConstructor | NumberConstructor)[];
93
+ required: {
94
+ type: BooleanConstructor;
95
+ default: boolean;
96
+ };
97
+ }>> & Readonly<{
98
+ "onUpdate:modelValue"?: ((value: Record<string, any>[]) => any) | undefined;
99
+ onChange?: ((data: {
100
+ id: string;
101
+ value: any;
102
+ data: any;
103
+ formData: Record<string, any>;
104
+ tableData: Record<string, any>[];
105
+ type: "add" | "delete" | "update";
106
+ }) => any) | undefined;
107
+ onRowChange?: ((data: Record<string, any>) => any) | undefined;
108
+ }>, {
109
+ validate: () => {
110
+ isOk: boolean;
111
+ info: string;
112
+ };
113
+ }, {}, {}, {}, {
114
+ required: boolean;
115
+ id: string;
116
+ modelValue: Record<string, any>[];
117
+ gutter: number;
118
+ columns: Record<string, any>[];
119
+ editConfig: import('.').EditConfigType;
120
+ }>;
121
+ __isFragment?: never;
122
+ __isTeleport?: never;
123
+ __isSuspense?: never;
124
+ } & import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
125
+ id: {
126
+ type: StringConstructor;
127
+ default: string;
128
+ };
129
+ modelValue: {
130
+ type: import('vue').PropType<Record<string, any>[]>;
131
+ default: () => never[];
132
+ };
133
+ columns: {
134
+ type: import('vue').PropType<Record<string, any>[]>;
135
+ default: () => never[];
136
+ };
137
+ editConfig: {
138
+ type: import('vue').PropType<import('.').EditConfigType>;
139
+ default: () => {};
140
+ };
141
+ gutter: {
142
+ type: import('vue').PropType<number>;
143
+ default: number;
144
+ };
145
+ span: NumberConstructor;
146
+ labelWidth: (StringConstructor | NumberConstructor)[];
147
+ required: {
148
+ type: BooleanConstructor;
149
+ default: boolean;
150
+ };
151
+ }>> & Readonly<{
152
+ "onUpdate:modelValue"?: ((value: Record<string, any>[]) => any) | undefined;
153
+ onChange?: ((data: {
154
+ id: string;
155
+ value: any;
156
+ data: any;
157
+ formData: Record<string, any>;
158
+ tableData: Record<string, any>[];
159
+ type: "add" | "delete" | "update";
160
+ }) => any) | undefined;
161
+ onRowChange?: ((data: Record<string, any>) => any) | undefined;
162
+ }>, {
163
+ validate: () => {
164
+ isOk: boolean;
165
+ info: string;
166
+ };
167
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
168
+ "update:modelValue": (value: Record<string, any>[]) => any;
169
+ change: (data: {
170
+ id: string;
171
+ value: any;
172
+ data: any;
173
+ formData: Record<string, any>;
174
+ tableData: Record<string, any>[];
175
+ type: "add" | "delete" | "update";
176
+ }) => any;
177
+ rowChange: (data: Record<string, any>) => any;
178
+ }, string, {
179
+ required: boolean;
180
+ id: string;
181
+ modelValue: Record<string, any>[];
182
+ gutter: number;
183
+ columns: Record<string, any>[];
184
+ editConfig: import('.').EditConfigType;
185
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
186
+ install: (app: import('vue').App) => void;
187
+ };
188
+ export default JInputCards;
189
+ export type { EditConfigType } from './src/interface';
@@ -0,0 +1,142 @@
1
+ import { EditConfigType } from './interface';
2
+ import { PropType } from 'vue';
3
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ /**
5
+ * @zh 组件Id
6
+ */
7
+ id: {
8
+ type: StringConstructor;
9
+ default: string;
10
+ };
11
+ /**
12
+ * @zh 输入值
13
+ * @vModel
14
+ */
15
+ modelValue: {
16
+ type: PropType<Record<string, any>[]>;
17
+ default: () => never[];
18
+ };
19
+ /**
20
+ * @zh 列信息
21
+ */
22
+ columns: {
23
+ type: PropType<Record<string, any>[]>;
24
+ default: () => never[];
25
+ };
26
+ /**
27
+ * @zh 编辑参数
28
+ */
29
+ editConfig: {
30
+ type: PropType<EditConfigType>;
31
+ default: () => {};
32
+ };
33
+ /**
34
+ * @zh 间隔
35
+ */
36
+ gutter: {
37
+ type: PropType<number>;
38
+ default: number;
39
+ };
40
+ /**
41
+ * @zh 行所占比例
42
+ */
43
+ span: NumberConstructor;
44
+ /**
45
+ * @zh 标签所占宽度
46
+ */
47
+ labelWidth: (StringConstructor | NumberConstructor)[];
48
+ /**
49
+ * @zh 是否必填
50
+ */
51
+ required: {
52
+ type: BooleanConstructor;
53
+ default: boolean;
54
+ };
55
+ }>, {
56
+ validate: () => {
57
+ isOk: boolean;
58
+ info: string;
59
+ };
60
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
61
+ "update:modelValue": (value: Record<string, any>[]) => any;
62
+ change: (data: {
63
+ id: string;
64
+ value: any;
65
+ data: any;
66
+ formData: Record<string, any>;
67
+ tableData: Record<string, any>[];
68
+ type: "add" | "delete" | "update";
69
+ }) => any;
70
+ rowChange: (data: Record<string, any>) => any;
71
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
72
+ /**
73
+ * @zh 组件Id
74
+ */
75
+ id: {
76
+ type: StringConstructor;
77
+ default: string;
78
+ };
79
+ /**
80
+ * @zh 输入值
81
+ * @vModel
82
+ */
83
+ modelValue: {
84
+ type: PropType<Record<string, any>[]>;
85
+ default: () => never[];
86
+ };
87
+ /**
88
+ * @zh 列信息
89
+ */
90
+ columns: {
91
+ type: PropType<Record<string, any>[]>;
92
+ default: () => never[];
93
+ };
94
+ /**
95
+ * @zh 编辑参数
96
+ */
97
+ editConfig: {
98
+ type: PropType<EditConfigType>;
99
+ default: () => {};
100
+ };
101
+ /**
102
+ * @zh 间隔
103
+ */
104
+ gutter: {
105
+ type: PropType<number>;
106
+ default: number;
107
+ };
108
+ /**
109
+ * @zh 行所占比例
110
+ */
111
+ span: NumberConstructor;
112
+ /**
113
+ * @zh 标签所占宽度
114
+ */
115
+ labelWidth: (StringConstructor | NumberConstructor)[];
116
+ /**
117
+ * @zh 是否必填
118
+ */
119
+ required: {
120
+ type: BooleanConstructor;
121
+ default: boolean;
122
+ };
123
+ }>> & Readonly<{
124
+ "onUpdate:modelValue"?: ((value: Record<string, any>[]) => any) | undefined;
125
+ onChange?: ((data: {
126
+ id: string;
127
+ value: any;
128
+ data: any;
129
+ formData: Record<string, any>;
130
+ tableData: Record<string, any>[];
131
+ type: "add" | "delete" | "update";
132
+ }) => any) | undefined;
133
+ onRowChange?: ((data: Record<string, any>) => any) | undefined;
134
+ }>, {
135
+ required: boolean;
136
+ id: string;
137
+ modelValue: Record<string, any>[];
138
+ gutter: number;
139
+ columns: Record<string, any>[];
140
+ editConfig: EditConfigType;
141
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
142
+ export default _default;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 编辑配置类型
3
+ */
4
+ export interface EditConfigType {
5
+ /**
6
+ * @zh 是否显示添加按钮
7
+ */
8
+ isAddBtn?: boolean;
9
+ /**
10
+ * @zh 添加按钮文本
11
+ */
12
+ addBtnText?: string;
13
+ /**
14
+ * @zh 按钮对齐方式【只支持input-rows组件】
15
+ */
16
+ buttonsAlign?: 'left' | 'center' | 'right';
17
+ /**
18
+ * @zh 是否显示删除按钮
19
+ */
20
+ isRemoveBtn?: boolean;
21
+ /**
22
+ * @zh 是否只读
23
+ */
24
+ readonly?: boolean;
25
+ /**
26
+ * @zh 是否为空值,默认true,为false时,不能为空值 【支持input-cards组件】
27
+ */
28
+ isNullValue?: boolean;
29
+ }