king-design-analyzer 2.2.0 → 2.2.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 (154) hide show
  1. package/components/actions.json +8 -0
  2. package/components/advancedset.json +1 -0
  3. package/components/affix.json +1 -0
  4. package/components/anchor.json +220 -0
  5. package/components/anchorlink.json +111 -0
  6. package/components/badge.json +1 -0
  7. package/components/breadcrumb.json +2 -1
  8. package/components/button.json +1 -0
  9. package/components/buttonlink.json +1 -0
  10. package/components/card.json +6 -3
  11. package/components/cardcontent.json +5 -0
  12. package/components/cascader.json +56 -0
  13. package/components/collapse.json +335 -348
  14. package/components/configprovider.json +96 -0
  15. package/components/copyrow.json +1 -0
  16. package/components/descriptions.json +10 -3
  17. package/components/diagram.json +295 -0
  18. package/components/dialog.json +4 -0
  19. package/components/divider.json +1 -0
  20. package/components/drawer.json +32 -0
  21. package/components/dropdown.json +13 -4
  22. package/components/flex.json +1 -0
  23. package/components/form.json +12 -3
  24. package/components/header.json +4 -0
  25. package/components/input.json +8 -4
  26. package/components/layoutcontent.json +9 -0
  27. package/components/layoutlistcontent.json +9 -0
  28. package/components/layoutpermissioncontent.json +1 -0
  29. package/components/layoutstandardlist.json +1 -0
  30. package/components/lazymount.json +1 -0
  31. package/components/lazyteleport.json +1 -0
  32. package/components/menu.json +4 -3
  33. package/components/notification.json +351 -0
  34. package/components/popover.json +23 -0
  35. package/components/protable.json +2 -0
  36. package/components/rate.json +1 -0
  37. package/components/scrollselect.json +140 -0
  38. package/components/select.json +72 -0
  39. package/components/skeleton.json +1 -0
  40. package/components/slider.json +12 -2
  41. package/components/spin.json +2 -1
  42. package/components/spinner.json +422 -428
  43. package/components/split.json +3 -0
  44. package/components/switch.json +4 -2
  45. package/components/table.json +6 -1
  46. package/components/tabs.json +2 -2
  47. package/components/tag.json +8 -5
  48. package/components/timeline.json +3 -1
  49. package/components/tip.json +20 -0
  50. package/components/tooltip.json +8 -0
  51. package/components/tour.json +16 -0
  52. package/components/transfer.json +52 -5
  53. package/components/tree.json +22 -1
  54. package/components/treeselect.json +56 -0
  55. package/components/upload.json +16 -0
  56. package/components/vdialog.json +1 -0
  57. package/components/vdrawer.json +4 -0
  58. package/components/virtuallist.json +9 -0
  59. package/dist/ast/index.d.mts +30 -1
  60. package/dist/ast/index.d.ts +30 -1
  61. package/dist/ast/index.js +3 -3
  62. package/dist/ast/index.mjs +1 -1
  63. package/dist/{chunk-BI5TIQID.mjs → chunk-4OTQAQ6J.mjs} +13 -2
  64. package/dist/chunk-6HOIRUQB.mjs +409 -0
  65. package/dist/{chunk-XGPHQHLR.mjs → chunk-BSCASJTV.mjs} +27 -4
  66. package/dist/{chunk-CR3GC4H3.js → chunk-DHLWNT53.js} +13 -2
  67. package/dist/{chunk-CJGGFVQJ.js → chunk-HARQRI4F.js} +31 -8
  68. package/dist/{chunk-TA3SV4SP.js → chunk-JJ6AB4ZH.js} +2 -2
  69. package/dist/{chunk-3LYQ5XFM.mjs → chunk-NZL6T22V.mjs} +1 -1
  70. package/dist/chunk-V5N65MRP.js +411 -0
  71. package/dist/{chunk-SZYVGYKK.js → chunk-XPHDD6XR.js} +113 -35
  72. package/dist/{chunk-KMIDURUR.mjs → chunk-YRGYDK2I.mjs} +113 -35
  73. package/dist/full/index.d.mts +2 -0
  74. package/dist/full/index.d.ts +2 -0
  75. package/dist/full/index.js +6 -6
  76. package/dist/full/index.mjs +4 -4
  77. package/dist/index.js +13 -13
  78. package/dist/index.mjs +5 -5
  79. package/dist/metadata/index.d.mts +17 -2
  80. package/dist/metadata/index.d.ts +17 -2
  81. package/dist/runtime/index.d.mts +2 -0
  82. package/dist/runtime/index.d.ts +2 -0
  83. package/dist/runtime/index.js +4 -4
  84. package/dist/runtime/index.mjs +2 -2
  85. package/dist/static/index.js +5 -5
  86. package/dist/static/index.mjs +2 -2
  87. package/docs_for_llm/actions.doc.md +11 -1
  88. package/docs_for_llm/advancedset.doc.md +10 -1
  89. package/docs_for_llm/affix.doc.md +5 -0
  90. package/docs_for_llm/anchor.doc.md +155 -0
  91. package/docs_for_llm/anchorlink.doc.md +75 -0
  92. package/docs_for_llm/badge.doc.md +5 -0
  93. package/docs_for_llm/breadcrumb.doc.md +74 -1
  94. package/docs_for_llm/button.doc.md +57 -0
  95. package/docs_for_llm/buttonlink.doc.md +10 -1
  96. package/docs_for_llm/card.doc.md +50 -3
  97. package/docs_for_llm/cardcontent.doc.md +21 -0
  98. package/docs_for_llm/carousel.doc.md +71 -0
  99. package/docs_for_llm/cascader.doc.md +62 -0
  100. package/docs_for_llm/collapse.doc.md +138 -8
  101. package/docs_for_llm/configprovider.doc.md +77 -0
  102. package/docs_for_llm/copyrow.doc.md +10 -1
  103. package/docs_for_llm/datepicker.doc.md +19 -0
  104. package/docs_for_llm/descriptions.doc.md +113 -4
  105. package/docs_for_llm/diagram.doc.md +343 -0
  106. package/docs_for_llm/dialog.doc.md +49 -0
  107. package/docs_for_llm/divider.doc.md +5 -0
  108. package/docs_for_llm/drawer.doc.md +86 -0
  109. package/docs_for_llm/dropdown.doc.md +257 -3
  110. package/docs_for_llm/flex.doc.md +10 -1
  111. package/docs_for_llm/form.doc.md +163 -4
  112. package/docs_for_llm/formitemspinner.doc.md +1 -1
  113. package/docs_for_llm/grid.doc.md +71 -0
  114. package/docs_for_llm/header.doc.md +33 -4
  115. package/docs_for_llm/input.doc.md +109 -2
  116. package/docs_for_llm/layoutcontent.doc.md +37 -0
  117. package/docs_for_llm/layoutlistcontent.doc.md +82 -9
  118. package/docs_for_llm/layoutpermissioncontent.doc.md +10 -1
  119. package/docs_for_llm/layoutstandardlist.doc.md +10 -1
  120. package/docs_for_llm/lazymount.doc.md +10 -1
  121. package/docs_for_llm/lazyteleport.doc.md +10 -1
  122. package/docs_for_llm/menu.doc.md +125 -3
  123. package/docs_for_llm/message.doc.md +45 -0
  124. package/docs_for_llm/notification.doc.md +214 -0
  125. package/docs_for_llm/popover.doc.md +34 -0
  126. package/docs_for_llm/protable.doc.md +9 -0
  127. package/docs_for_llm/rate.doc.md +5 -0
  128. package/docs_for_llm/scrollselect.doc.md +90 -0
  129. package/docs_for_llm/select.doc.md +189 -0
  130. package/docs_for_llm/skeleton.doc.md +35 -0
  131. package/docs_for_llm/slider.doc.md +11 -1
  132. package/docs_for_llm/spin.doc.md +10 -1
  133. package/docs_for_llm/spinner.doc.md +1 -1
  134. package/docs_for_llm/split.doc.md +13 -0
  135. package/docs_for_llm/steps.doc.md +71 -0
  136. package/docs_for_llm/switch.doc.md +15 -2
  137. package/docs_for_llm/table.doc.md +199 -4
  138. package/docs_for_llm/tabs.doc.md +98 -2
  139. package/docs_for_llm/tag.doc.md +148 -5
  140. package/docs_for_llm/timeline.doc.md +80 -2
  141. package/docs_for_llm/timepicker.doc.md +19 -0
  142. package/docs_for_llm/tip.doc.md +30 -0
  143. package/docs_for_llm/tooltip.doc.md +46 -0
  144. package/docs_for_llm/tour.doc.md +102 -0
  145. package/docs_for_llm/transfer.doc.md +59 -4
  146. package/docs_for_llm/tree.doc.md +64 -1
  147. package/docs_for_llm/treeselect.doc.md +68 -0
  148. package/docs_for_llm/upload.doc.md +28 -0
  149. package/docs_for_llm/vdialog.doc.md +26 -1
  150. package/docs_for_llm/vdrawer.doc.md +33 -4
  151. package/docs_for_llm/virtuallist.doc.md +165 -0
  152. package/package.json +3 -3
  153. package/dist/chunk-D2SXGGTX.mjs +0 -162
  154. package/dist/chunk-EYKZY2F3.js +0 -164
@@ -1,441 +1,435 @@
1
1
  {
2
- "id": "spinner",
3
- "name": "Spinner",
4
- "displayName": "数字输入框",
5
- "category": "form",
6
- "description": "用于输入数字的组件,支持设置范围、步长、精度,以及格式化展示。可通过加减按钮或直接输入来调整数值。",
7
- "importStatement": "import { Spinner } from '@king-design/vue';",
8
- "props": [
9
- {
10
- "name": "value",
11
- "description": "组件的值,可用 v-model 进行双向绑定",
12
- "type": {
13
- "raw": "number",
14
- "kind": "number"
15
- },
16
- "required": false,
17
- "default": "0",
18
- "usageExample": "<Spinner v-model=\"count\" />"
19
- },
20
- {
21
- "name": "disabled",
22
- "description": "是否禁用",
23
- "type": {
24
- "raw": "boolean",
25
- "kind": "boolean"
26
- },
27
- "required": false,
28
- "default": "false",
29
- "usageExample": "<Spinner disabled />"
30
- },
31
- {
32
- "name": "max",
33
- "description": "最大值",
34
- "type": {
35
- "raw": "number",
36
- "kind": "number"
37
- },
38
- "required": false,
39
- "default": "Number.POSITIVE_INFINITY",
40
- "usageExample": "<Spinner :max=\"100\" />"
41
- },
42
- {
43
- "name": "min",
44
- "description": "最小值",
45
- "type": {
46
- "raw": "number",
47
- "kind": "number"
48
- },
49
- "required": false,
50
- "default": "Number.NEGATIVE_INFINITY",
51
- "usageExample": "<Spinner :min=\"0\" />"
52
- },
53
- {
54
- "name": "step",
55
- "description": "步长,支持数字、对象或函数形式的动态步长",
56
- "type": {
57
- "raw": "number | StepObject | StepFunction",
58
- "kind": "union"
59
- },
60
- "required": false,
61
- "default": "1",
62
- "usageExample": "<Spinner :step=\"5\" />"
63
- },
64
- {
65
- "name": "size",
66
- "description": "尺寸",
67
- "type": {
68
- "raw": "\"default\" | \"small\" | \"mini\"",
69
- "kind": "union",
70
- "unionTypes": [
71
- "default",
72
- "small",
73
- "mini"
74
- ]
75
- },
76
- "required": false,
77
- "default": "\"default\"",
78
- "allowedValues": [
2
+ "id": "spinner",
3
+ "name": "Spinner",
4
+ "displayName": "数字输入框",
5
+ "category": "form",
6
+ "description": "用于输入数字的组件,支持设置范围、步长、精度,以及格式化展示。可通过加减按钮或直接输入来调整数值。",
7
+ "importStatement": "import { Spinner } from '@king-design/vue';",
8
+ "props": [{
9
+ "name": "value",
10
+ "description": "组件的值,可用 v-model 进行双向绑定",
11
+ "type": {
12
+ "raw": "number",
13
+ "kind": "number"
14
+ },
15
+ "required": false,
16
+ "default": "0",
17
+ "usageExample": "<Spinner v-model=\"count\" />"
18
+ },
19
+ {
20
+ "name": "disabled",
21
+ "description": "是否禁用",
22
+ "type": {
23
+ "raw": "boolean",
24
+ "kind": "boolean"
25
+ },
26
+ "required": false,
27
+ "default": "false",
28
+ "usageExample": "<Spinner disabled />"
29
+ },
30
+ {
31
+ "name": "max",
32
+ "description": "最大值",
33
+ "type": {
34
+ "raw": "number",
35
+ "kind": "number"
36
+ },
37
+ "required": false,
38
+ "default": "Number.POSITIVE_INFINITY",
39
+ "usageExample": "<Spinner :max=\"100\" />"
40
+ },
41
+ {
42
+ "name": "min",
43
+ "description": "最小值",
44
+ "type": {
45
+ "raw": "number",
46
+ "kind": "number"
47
+ },
48
+ "required": false,
49
+ "default": "Number.NEGATIVE_INFINITY",
50
+ "usageExample": "<Spinner :min=\"0\" />"
51
+ },
52
+ {
53
+ "name": "step",
54
+ "description": "步长,支持数字、对象或函数形式的动态步长",
55
+ "type": {
56
+ "raw": "number | StepObject | StepFunction",
57
+ "kind": "union"
58
+ },
59
+ "required": false,
60
+ "default": "1",
61
+ "usageExample": "<Spinner :step=\"5\" />"
62
+ },
79
63
  {
80
- "value": "default",
81
- "label": "默认尺寸",
82
- "isDefault": true
64
+ "name": "size",
65
+ "description": "尺寸",
66
+ "type": {
67
+ "raw": "\"large\" | \"default\" | \"small\" | \"mini\"",
68
+ "kind": "union",
69
+ "unionTypes": [
70
+ "default",
71
+ "large",
72
+ "small",
73
+ "mini"
74
+ ]
75
+ },
76
+ "required": false,
77
+ "default": "\"default\"",
78
+ "allowedValues": [{
79
+ "value": "large",
80
+ "label": "大尺寸"
81
+ },
82
+ {
83
+ "value": "default",
84
+ "label": "默认尺寸",
85
+ "isDefault": true
86
+ },
87
+ {
88
+ "value": "small",
89
+ "label": "小尺寸"
90
+ },
91
+ {
92
+ "value": "mini",
93
+ "label": "迷你尺寸"
94
+ }
95
+ ],
96
+ "usageExample": "<Spinner size=\"small\" />"
83
97
  },
84
98
  {
85
- "value": "small",
86
- "label": "小尺寸"
99
+ "name": "vertical",
100
+ "description": "控制按钮是否竖直排列",
101
+ "type": {
102
+ "raw": "boolean",
103
+ "kind": "boolean"
104
+ },
105
+ "required": false,
106
+ "default": "false",
107
+ "usageExample": "<Spinner vertical />"
87
108
  },
88
109
  {
89
- "value": "mini",
90
- "label": "迷你尺寸"
110
+ "name": "precision",
111
+ "description": "控制展示精度,该值必须为正整数或 0",
112
+ "type": {
113
+ "raw": "number",
114
+ "kind": "number"
115
+ },
116
+ "required": false,
117
+ "default": "undefined",
118
+ "valueConstraints": [{
119
+ "type": "min",
120
+ "value": 0,
121
+ "message": "precision 必须为正整数或 0"
122
+ }],
123
+ "usageExample": "<Spinner :precision=\"2\" :step=\"0.1\" />"
124
+ },
125
+ {
126
+ "name": "formatter",
127
+ "description": "定义格式化展示值的函数",
128
+ "type": {
129
+ "raw": "(value: number) => string",
130
+ "kind": "function",
131
+ "functionSignature": "(value: number) => string"
132
+ },
133
+ "required": false,
134
+ "default": "undefined",
135
+ "usageExample": "<Spinner :formatter=\"(val) => `${val}%`\" :parser=\"(val) => parseFloat(val)\" /></Spinner>"
136
+ },
137
+ {
138
+ "name": "parser",
139
+ "description": "与 formatter 结合使用,定义解析格式化的值的函数",
140
+ "type": {
141
+ "raw": "(value: string) => number",
142
+ "kind": "function",
143
+ "functionSignature": "(value: string) => number"
144
+ },
145
+ "required": false,
146
+ "default": "undefined",
147
+ "usageExample": "<Spinner :formatter=\"(val) => `${val}%`\" :parser=\"(val) => parseFloat(val)\" /></Spinner>"
148
+ },
149
+ {
150
+ "name": "prefix",
151
+ "description": "定义展示的值的前缀,优先级低于 formatter",
152
+ "type": {
153
+ "raw": "string",
154
+ "kind": "string"
155
+ },
156
+ "required": false,
157
+ "default": "undefined",
158
+ "usageExample": "<Spinner prefix=\"¥\" />"
159
+ },
160
+ {
161
+ "name": "suffix",
162
+ "description": "定义展示的值的后缀,优先级低于 formatter",
163
+ "type": {
164
+ "raw": "string",
165
+ "kind": "string"
166
+ },
167
+ "required": false,
168
+ "default": "undefined",
169
+ "usageExample": "<Spinner suffix=\"元\" />"
170
+ },
171
+ {
172
+ "name": "width",
173
+ "description": "指定 Input 输入框的宽度",
174
+ "type": {
175
+ "raw": "string | number",
176
+ "kind": "union"
177
+ },
178
+ "required": false,
179
+ "default": "undefined",
180
+ "usageExample": "<Spinner :width=\"150\" />"
181
+ },
182
+ {
183
+ "name": "forceStep",
184
+ "description": "value 值除了边界值,都必须满足 min + step * n(n 为整数)",
185
+ "type": {
186
+ "raw": "boolean",
187
+ "kind": "boolean"
188
+ },
189
+ "required": false,
190
+ "default": "false",
191
+ "usageExample": "<Spinner :min=\"0\" :step=\"5\" forceStep />"
91
192
  }
92
- ],
93
- "usageExample": "<Spinner size=\"small\" />"
94
- },
95
- {
96
- "name": "vertical",
97
- "description": "控制按钮是否竖直排列",
98
- "type": {
99
- "raw": "boolean",
100
- "kind": "boolean"
101
- },
102
- "required": false,
103
- "default": "false",
104
- "usageExample": "<Spinner vertical />"
105
- },
106
- {
107
- "name": "precision",
108
- "description": "控制展示精度,该值必须为正整数或 0",
109
- "type": {
110
- "raw": "number",
111
- "kind": "number"
112
- },
113
- "required": false,
114
- "default": "undefined",
115
- "valueConstraints": [
193
+ ],
194
+ "events": [{
195
+ "name": "change",
196
+ "vueEventName": "@change",
197
+ "description": "value 值变化时触发,仅在输入框 change 事件触发或点击加减按钮改变 value 时触发",
198
+ "payload": [{
199
+ "name": "value",
200
+ "type": "number",
201
+ "description": "当前的数值"
202
+ }],
203
+ "usageExample": "<Spinner @change=\"handleChange\" />",
204
+ "handlerExample": "const handleChange = (value: number) => {\n console.log('当前值:', value);\n};"
205
+ }],
206
+ "methods": [],
207
+ "typeDefinitions": [{
208
+ "name": "StepObject",
209
+ "definition": "type StepObject = {\n [key in number]: number\n} & {\n $?: number\n}",
210
+ "description": "动态步长对象,key 为阈值,value 为该阈值下的步长,$ 为默认步长"
211
+ },
116
212
  {
117
- "type": "min",
118
- "value": 0,
119
- "message": "precision 必须为正整数或 0"
213
+ "name": "StepFunction",
214
+ "definition": "type StepFunction = (value: number) => number",
215
+ "description": "动态步长函数,根据当前值返回步长"
120
216
  }
121
- ],
122
- "usageExample": "<Spinner :precision=\"2\" :step=\"0.1\" />"
123
- },
124
- {
125
- "name": "formatter",
126
- "description": "定义格式化展示值的函数",
127
- "type": {
128
- "raw": "(value: number) => string",
129
- "kind": "function",
130
- "functionSignature": "(value: number) => string"
131
- },
132
- "required": false,
133
- "default": "undefined",
134
- "usageExample": "<Spinner :formatter=\"(val) => `${val}%`\" :parser=\"(val) => parseFloat(val)\" /></Spinner>"
135
- },
136
- {
137
- "name": "parser",
138
- "description": "与 formatter 结合使用,定义解析格式化的值的函数",
139
- "type": {
140
- "raw": "(value: string) => number",
141
- "kind": "function",
142
- "functionSignature": "(value: string) => number"
143
- },
144
- "required": false,
145
- "default": "undefined",
146
- "usageExample": "<Spinner :formatter=\"(val) => `${val}%`\" :parser=\"(val) => parseFloat(val)\" /></Spinner>"
147
- },
148
- {
149
- "name": "prefix",
150
- "description": "定义展示的值的前缀,优先级低于 formatter",
151
- "type": {
152
- "raw": "string",
153
- "kind": "string"
154
- },
155
- "required": false,
156
- "default": "undefined",
157
- "usageExample": "<Spinner prefix=\"¥\" />"
158
- },
159
- {
160
- "name": "suffix",
161
- "description": "定义展示的值的后缀,优先级低于 formatter",
162
- "type": {
163
- "raw": "string",
164
- "kind": "string"
165
- },
166
- "required": false,
167
- "default": "undefined",
168
- "usageExample": "<Spinner suffix=\"元\" />"
169
- },
170
- {
171
- "name": "width",
172
- "description": "指定 Input 输入框的宽度",
173
- "type": {
174
- "raw": "string | number",
175
- "kind": "union"
176
- },
177
- "required": false,
178
- "default": "undefined",
179
- "usageExample": "<Spinner :width=\"150\" />"
180
- },
181
- {
182
- "name": "forceStep",
183
- "description": "value 值除了边界值,都必须满足 min + step * n(n 为整数)",
184
- "type": {
185
- "raw": "boolean",
186
- "kind": "boolean"
187
- },
188
- "required": false,
189
- "default": "false",
190
- "usageExample": "<Spinner :min=\"0\" :step=\"5\" forceStep />"
191
- }
192
- ],
193
- "events": [
194
- {
195
- "name": "change",
196
- "vueEventName": "@change",
197
- "description": "value 值变化时触发,仅在输入框 change 事件触发或点击加减按钮改变 value 时触发",
198
- "payload": [
217
+ ],
218
+ "examples": [{
219
+ "id": "spinner_basic",
220
+ "title": "基础用法",
221
+ "description": "基本的数字输入框",
222
+ "difficulty": "easy",
223
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" />\n</template>",
224
+ "tags": [
225
+ "basic"
226
+ ],
227
+ "usedProps": [
228
+ "value"
229
+ ],
230
+ "usedEvents": [],
231
+ "usedMethods": [],
232
+ "scenario": "创建一个基本的数字输入框"
233
+ },
199
234
  {
200
- "name": "value",
201
- "type": "number",
202
- "description": "当前的数值"
235
+ "id": "spinner_range",
236
+ "title": "设置范围",
237
+ "description": "限制数值的最小值和最大值",
238
+ "difficulty": "easy",
239
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(5);\n</script>\n<template>\n <Spinner v-model=\"value\" :min=\"0\" :max=\"10\" />\n</template>",
240
+ "tags": [
241
+ "min",
242
+ "max",
243
+ "range"
244
+ ],
245
+ "usedProps": [
246
+ "value",
247
+ "min",
248
+ "max"
249
+ ],
250
+ "usedEvents": [],
251
+ "usedMethods": [],
252
+ "scenario": "创建有范围限制的数字输入框"
253
+ },
254
+ {
255
+ "id": "spinner_step",
256
+ "title": "设置步长",
257
+ "description": "每次增减的数值大小",
258
+ "difficulty": "easy",
259
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" :step=\"5\" />\n</template>",
260
+ "tags": [
261
+ "step"
262
+ ],
263
+ "usedProps": [
264
+ "value",
265
+ "step"
266
+ ],
267
+ "usedEvents": [],
268
+ "usedMethods": [],
269
+ "scenario": "设置每次点击加减按钮增减的步长"
270
+ },
271
+ {
272
+ "id": "spinner_precision",
273
+ "title": "小数精度",
274
+ "description": "控制小数位数",
275
+ "difficulty": "easy",
276
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" :precision=\"2\" :step=\"0.1\" />\n</template>",
277
+ "tags": [
278
+ "precision",
279
+ "decimal"
280
+ ],
281
+ "usedProps": [
282
+ "value",
283
+ "precision",
284
+ "step"
285
+ ],
286
+ "usedEvents": [],
287
+ "usedMethods": [],
288
+ "scenario": "创建支持小数输入的数字输入框"
289
+ },
290
+ {
291
+ "id": "spinner_prefix_suffix",
292
+ "title": "前后缀",
293
+ "description": "添加前缀或后缀显示",
294
+ "difficulty": "easy",
295
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst price = ref(100);\nconst percent = ref(50);\n</script>\n<template>\n <Spinner v-model=\"price\" prefix=\"¥\" />\n <Spinner v-model=\"percent\" suffix=\"%\" />\n</template>",
296
+ "tags": [
297
+ "prefix",
298
+ "suffix",
299
+ "currency"
300
+ ],
301
+ "usedProps": [
302
+ "value",
303
+ "prefix",
304
+ "suffix"
305
+ ],
306
+ "usedEvents": [],
307
+ "usedMethods": [],
308
+ "scenario": "创建带货币符号或百分比符号的数字输入框"
309
+ },
310
+ {
311
+ "id": "spinner_vertical",
312
+ "title": "竖直排列",
313
+ "description": "加减按钮竖直排列",
314
+ "difficulty": "easy",
315
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" vertical />\n</template>",
316
+ "tags": [
317
+ "vertical",
318
+ "layout"
319
+ ],
320
+ "usedProps": [
321
+ "value",
322
+ "vertical"
323
+ ],
324
+ "usedEvents": [],
325
+ "usedMethods": [],
326
+ "scenario": "创建加减按钮竖直排列的数字输入框"
327
+ },
328
+ {
329
+ "id": "spinner_formatter",
330
+ "title": "格式化显示",
331
+ "description": "自定义数值的显示格式",
332
+ "difficulty": "medium",
333
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(1000);\n\nconst formatter = (val: number) => {\n return val.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n};\n\nconst parser = (val: string) => {\n return Number(val.replace(/,/g, ''));\n};\n</script>\n<template>\n <Spinner v-model=\"value\" :formatter=\"formatter\" :parser=\"parser\" />\n</template>",
334
+ "tags": [
335
+ "formatter",
336
+ "parser",
337
+ "format"
338
+ ],
339
+ "usedProps": [
340
+ "value",
341
+ "formatter",
342
+ "parser"
343
+ ],
344
+ "usedEvents": [],
345
+ "usedMethods": [],
346
+ "scenario": "创建带千分位分隔符格式化的数字输入框"
347
+ },
348
+ {
349
+ "id": "spinner_dynamic_step",
350
+ "title": "动态步长",
351
+ "description": "根据当前值动态调整步长",
352
+ "difficulty": "medium",
353
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n\n// 值 < 10 时步长为 1,>= 10 时步长为 10\nconst dynamicStep = (val: number) => {\n return val < 10 ? 1 : 10;\n};\n</script>\n<template>\n <Spinner v-model=\"value\" :step=\"dynamicStep\" />\n</template>",
354
+ "tags": [
355
+ "step",
356
+ "dynamic",
357
+ "function"
358
+ ],
359
+ "usedProps": [
360
+ "value",
361
+ "step"
362
+ ],
363
+ "usedEvents": [],
364
+ "usedMethods": [],
365
+ "scenario": "创建步长随当前值变化的数字输入框"
203
366
  }
204
- ],
205
- "usageExample": "<Spinner @change=\"handleChange\" />",
206
- "handlerExample": "const handleChange = (value: number) => {\n console.log('当前值:', value);\n};"
207
- }
208
- ],
209
- "methods": [],
210
- "typeDefinitions": [
211
- {
212
- "name": "StepObject",
213
- "definition": "type StepObject = {\n [key in number]: number\n} & {\n $?: number\n}",
214
- "description": "动态步长对象,key 为阈值,value 为该阈值下的步长,$ 为默认步长"
215
- },
216
- {
217
- "name": "StepFunction",
218
- "definition": "type StepFunction = (value: number) => number",
219
- "description": "动态步长函数,根据当前值返回步长"
220
- }
221
- ],
222
- "examples": [
223
- {
224
- "id": "spinner_basic",
225
- "title": "基础用法",
226
- "description": "基本的数字输入框",
227
- "difficulty": "easy",
228
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" />\n</template>",
229
- "tags": [
230
- "basic"
231
- ],
232
- "usedProps": [
233
- "value"
234
- ],
235
- "usedEvents": [],
236
- "usedMethods": [],
237
- "scenario": "创建一个基本的数字输入框"
238
- },
239
- {
240
- "id": "spinner_range",
241
- "title": "设置范围",
242
- "description": "限制数值的最小值和最大值",
243
- "difficulty": "easy",
244
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(5);\n</script>\n<template>\n <Spinner v-model=\"value\" :min=\"0\" :max=\"10\" />\n</template>",
245
- "tags": [
246
- "min",
247
- "max",
248
- "range"
249
- ],
250
- "usedProps": [
251
- "value",
252
- "min",
253
- "max"
254
- ],
255
- "usedEvents": [],
256
- "usedMethods": [],
257
- "scenario": "创建有范围限制的数字输入框"
258
- },
259
- {
260
- "id": "spinner_step",
261
- "title": "设置步长",
262
- "description": "每次增减的数值大小",
263
- "difficulty": "easy",
264
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" :step=\"5\" />\n</template>",
265
- "tags": [
266
- "step"
267
- ],
268
- "usedProps": [
269
- "value",
270
- "step"
271
- ],
272
- "usedEvents": [],
273
- "usedMethods": [],
274
- "scenario": "设置每次点击加减按钮增减的步长"
275
- },
276
- {
277
- "id": "spinner_precision",
278
- "title": "小数精度",
279
- "description": "控制小数位数",
280
- "difficulty": "easy",
281
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" :precision=\"2\" :step=\"0.1\" />\n</template>",
282
- "tags": [
283
- "precision",
284
- "decimal"
285
- ],
286
- "usedProps": [
287
- "value",
288
- "precision",
289
- "step"
290
- ],
291
- "usedEvents": [],
292
- "usedMethods": [],
293
- "scenario": "创建支持小数输入的数字输入框"
294
- },
295
- {
296
- "id": "spinner_prefix_suffix",
297
- "title": "前后缀",
298
- "description": "添加前缀或后缀显示",
299
- "difficulty": "easy",
300
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst price = ref(100);\nconst percent = ref(50);\n</script>\n<template>\n <Spinner v-model=\"price\" prefix=\"¥\" />\n <Spinner v-model=\"percent\" suffix=\"%\" />\n</template>",
301
- "tags": [
302
- "prefix",
303
- "suffix",
304
- "currency"
305
- ],
306
- "usedProps": [
307
- "value",
308
- "prefix",
309
- "suffix"
310
- ],
311
- "usedEvents": [],
312
- "usedMethods": [],
313
- "scenario": "创建带货币符号或百分比符号的数字输入框"
314
- },
315
- {
316
- "id": "spinner_vertical",
317
- "title": "竖直排列",
318
- "description": "加减按钮竖直排列",
319
- "difficulty": "easy",
320
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n</script>\n<template>\n <Spinner v-model=\"value\" vertical />\n</template>",
321
- "tags": [
322
- "vertical",
323
- "layout"
324
- ],
325
- "usedProps": [
326
- "value",
327
- "vertical"
328
- ],
329
- "usedEvents": [],
330
- "usedMethods": [],
331
- "scenario": "创建加减按钮竖直排列的数字输入框"
332
- },
333
- {
334
- "id": "spinner_formatter",
335
- "title": "格式化显示",
336
- "description": "自定义数值的显示格式",
337
- "difficulty": "medium",
338
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(1000);\n\nconst formatter = (val: number) => {\n return val.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n};\n\nconst parser = (val: string) => {\n return Number(val.replace(/,/g, ''));\n};\n</script>\n<template>\n <Spinner v-model=\"value\" :formatter=\"formatter\" :parser=\"parser\" />\n</template>",
339
- "tags": [
340
- "formatter",
341
- "parser",
342
- "format"
343
- ],
344
- "usedProps": [
345
- "value",
346
- "formatter",
347
- "parser"
348
- ],
349
- "usedEvents": [],
350
- "usedMethods": [],
351
- "scenario": "创建带千分位分隔符格式化的数字输入框"
352
- },
353
- {
354
- "id": "spinner_dynamic_step",
355
- "title": "动态步长",
356
- "description": "根据当前值动态调整步长",
357
- "difficulty": "medium",
358
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Spinner } from '@king-design/vue';\n\nconst value = ref(0);\n\n// 值 < 10 时步长为 1,>= 10 时步长为 10\nconst dynamicStep = (val: number) => {\n return val < 10 ? 1 : 10;\n};\n</script>\n<template>\n <Spinner v-model=\"value\" :step=\"dynamicStep\" />\n</template>",
359
- "tags": [
367
+ ],
368
+ "commonMistakes": [{
369
+ "id": "spinner_precision_negative",
370
+ "description": "precision 设置为负数",
371
+ "wrongCode": "<Spinner :precision=\"-1\" />",
372
+ "correctCode": "<Spinner :precision=\"2\" />",
373
+ "explanation": "precision 必须为正整数或 0,负数无效",
374
+ "relatedProps": [
375
+ "precision"
376
+ ]
377
+ },
378
+ {
379
+ "id": "spinner_size_typo",
380
+ "description": "使用不存在的 size 值 (Spinner)",
381
+ "wrongCode": "<Spinner size=\"large\" />",
382
+ "correctCode": "<Spinner size=\"default\" />",
383
+ "explanation": "Spinner 的 size 只支持 default, small, mini。Spinner 组件目前不支持 large 尺寸。",
384
+ "relatedProps": [
385
+ "size"
386
+ ]
387
+ },
388
+ {
389
+ "id": "spinner_formatter_without_parser",
390
+ "description": "使用 formatter 但未提供 parser",
391
+ "wrongCode": "<Spinner :formatter=\"(val) => `${val}%`\" />",
392
+ "correctCode": "<Spinner :formatter=\"(val) => `${val}%`\" :parser=\"(val) => parseFloat(val)\" />",
393
+ "explanation": "使用 formatter 格式化显示时,必须同时提供 parser 来解析用户输入",
394
+ "relatedProps": [
395
+ "formatter",
396
+ "parser"
397
+ ]
398
+ },
399
+ {
400
+ "id": "spinner_min_greater_than_max",
401
+ "description": "min 大于 max",
402
+ "wrongCode": "<Spinner :min=\"100\" :max=\"0\" />",
403
+ "correctCode": "<Spinner :min=\"0\" :max=\"100\" />",
404
+ "explanation": "min 值必须小于或等于 max 值",
405
+ "relatedProps": [
406
+ "min",
407
+ "max"
408
+ ]
409
+ }
410
+ ],
411
+ "searchKeywords": [
412
+ "数字输入框",
413
+ "spinner",
414
+ "数字",
415
+ "number",
416
+ "步长",
360
417
  "step",
361
- "dynamic",
362
- "function"
363
- ],
364
- "usedProps": [
365
- "value",
366
- "step"
367
- ],
368
- "usedEvents": [],
369
- "usedMethods": [],
370
- "scenario": "创建步长随当前值变化的数字输入框"
371
- }
372
- ],
373
- "commonMistakes": [
374
- {
375
- "id": "spinner_precision_negative",
376
- "description": "precision 设置为负数",
377
- "wrongCode": "<Spinner :precision=\"-1\" />",
378
- "correctCode": "<Spinner :precision=\"2\" />",
379
- "explanation": "precision 必须为正整数或 0,负数无效",
380
- "relatedProps": [
381
- "precision"
382
- ]
383
- },
384
- {
385
- "id": "spinner_size_typo",
386
- "description": "使用不存在的 size 值 (Spinner)",
387
- "wrongCode": "<Spinner size=\"large\" />",
388
- "correctCode": "<Spinner size=\"default\" />",
389
- "explanation": "Spinner 的 size 只支持 default, small, mini。Spinner 组件目前不支持 large 尺寸。",
390
- "relatedProps": [
391
- "size"
392
- ]
393
- },
394
- {
395
- "id": "spinner_formatter_without_parser",
396
- "description": "使用 formatter 但未提供 parser",
397
- "wrongCode": "<Spinner :formatter=\"(val) => `${val}%`\" />",
398
- "correctCode": "<Spinner :formatter=\"(val) => `${val}%`\" :parser=\"(val) => parseFloat(val)\" />",
399
- "explanation": "使用 formatter 格式化显示时,必须同时提供 parser 来解析用户输入",
400
- "relatedProps": [
401
- "formatter",
402
- "parser"
403
- ]
404
- },
405
- {
406
- "id": "spinner_min_greater_than_max",
407
- "description": "min 大于 max",
408
- "wrongCode": "<Spinner :min=\"100\" :max=\"0\" />",
409
- "correctCode": "<Spinner :min=\"0\" :max=\"100\" />",
410
- "explanation": "min 值必须小于或等于 max 值",
411
- "relatedProps": [
412
- "min",
413
- "max"
414
- ]
415
- }
416
- ],
417
- "searchKeywords": [
418
- "数字输入框",
419
- "spinner",
420
- "数字",
421
- "number",
422
- "步长",
423
- "step",
424
- "精度",
425
- "precision",
426
- "计数器",
427
- "counter"
428
- ],
429
- "useCases": [
430
- "数量选择器",
431
- "价格/金额输入",
432
- "百分比调节",
433
- "页码跳转输入",
434
- "年龄/年份输入",
435
- "配置参数设置"
436
- ],
437
- "relatedComponents": [
438
- "Input",
439
- "Slider"
440
- ]
418
+ "精度",
419
+ "precision",
420
+ "计数器",
421
+ "counter"
422
+ ],
423
+ "useCases": [
424
+ "数量选择器",
425
+ "价格/金额输入",
426
+ "百分比调节",
427
+ "页码跳转输入",
428
+ "年龄/年份输入",
429
+ "配置参数设置"
430
+ ],
431
+ "relatedComponents": [
432
+ "Input",
433
+ "Slider"
434
+ ]
441
435
  }