king-design-analyzer 2.1.7 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/actions.json +101 -0
- package/components/advancedset.json +127 -0
- package/components/affix.json +7 -0
- package/components/aksk.json +172 -0
- package/components/az.json +15 -2
- package/components/badge.json +7 -0
- package/components/billtypes.json +14 -2
- package/components/breadcrumb.json +7 -0
- package/components/button.json +191 -0
- package/components/buttonlink.json +73 -0
- package/components/card.json +8 -1
- package/components/cardcol.json +142 -0
- package/components/cardcols.json +121 -0
- package/components/cardcontent.json +15 -3
- package/components/cardtabs.json +172 -0
- package/components/carousel.json +7 -0
- package/components/cascader.json +520 -368
- package/components/checkbox.json +51 -4
- package/components/cidrinput.json +140 -0
- package/components/code.json +8 -1
- package/components/collapse.json +7 -0
- package/components/colorpicker.json +217 -0
- package/components/copy.json +7 -0
- package/components/copyhover.json +111 -0
- package/components/copyrow.json +124 -0
- package/components/datepicker.json +656 -524
- package/components/description.json +98 -0
- package/components/dialog.json +522 -455
- package/components/divider.json +8 -1
- package/components/drawer.json +571 -558
- package/components/dropdown.json +464 -384
- package/components/duration.json +125 -0
- package/components/editable.json +66 -0
- package/components/ellipsis.json +34 -1
- package/components/filtertablefieldsdialog.json +128 -0
- package/components/flex.json +151 -0
- package/components/form.json +131 -0
- package/components/formiteminput.json +214 -0
- package/components/formitemspinner.json +213 -0
- package/components/formitemswitch.json +185 -0
- package/components/formitemtableconfigs.json +210 -0
- package/components/grid.json +7 -0
- package/components/header.json +161 -0
- package/components/icon.json +13 -1
- package/components/icontooltip.json +19 -1
- package/components/input.json +188 -4
- package/components/instancelist.json +194 -0
- package/components/instancenum.json +196 -0
- package/components/ipinput.json +117 -0
- package/components/kspstatus.json +205 -0
- package/components/kvcode.json +120 -0
- package/components/layoutcontent.json +15 -3
- package/components/layoutlistcontent.json +148 -0
- package/components/layoutpermissioncontent.json +155 -0
- package/components/layoutstandardlist.json +275 -0
- package/components/layouttabs.json +168 -0
- package/components/lazymount.json +86 -0
- package/components/lazyteleport.json +118 -0
- package/components/menu.json +7 -0
- package/components/pagination.json +12 -0
- package/components/paginationplus.json +30 -3
- package/components/password.json +121 -0
- package/components/popover.json +457 -437
- package/components/projects.json +129 -0
- package/components/protable.json +97 -8
- package/components/queuevisualrange.json +110 -0
- package/components/radio.json +82 -2
- package/components/rate.json +199 -0
- package/components/region.json +14 -2
- package/components/search.json +221 -0
- package/components/searchinput.json +132 -0
- package/components/searchitems.json +215 -0
- package/components/searchselect.json +195 -0
- package/components/select.json +686 -666
- package/components/sidebar.json +198 -0
- package/components/skeleton.json +233 -0
- package/components/spin.json +8 -1
- package/components/split.json +260 -0
- package/components/sshkeys.json +138 -0
- package/components/status.json +60 -3
- package/components/steps.json +7 -0
- package/components/switch.json +8 -1
- package/components/table.json +18 -1
- package/components/tablecolumnid.json +14 -2
- package/components/tabs.json +12 -0
- package/components/timeline.json +213 -0
- package/components/timepicker.json +147 -3
- package/components/timerange.json +262 -0
- package/components/tip.json +7 -0
- package/components/tooltip.json +484 -395
- package/components/tour.json +418 -372
- package/components/transfer.json +27 -3
- package/components/tree.json +6 -4
- package/components/treeselect.json +556 -475
- package/components/upload.json +474 -473
- package/components/vdialog.json +308 -0
- package/components/vdrawer.json +331 -0
- package/components/virtuallist.json +7 -0
- package/dist/ast/index.d.mts +35 -1
- package/dist/ast/index.d.ts +35 -1
- package/dist/ast/index.js +5 -3
- package/dist/ast/index.mjs +3 -1
- package/dist/{chunk-DSWKLUIX.mjs → chunk-3LYQ5XFM.mjs} +1 -1
- package/dist/chunk-BI5TIQID.mjs +330 -0
- package/dist/{chunk-6QS5IGS6.js → chunk-CJGGFVQJ.js} +8 -8
- package/dist/chunk-CR3GC4H3.js +353 -0
- package/dist/{chunk-NZ6TLWMD.mjs → chunk-D2SXGGTX.mjs} +28 -17
- package/dist/{chunk-D3Y6FGWA.js → chunk-EYKZY2F3.js} +29 -18
- package/dist/chunk-JSBRDJBE.js +30 -0
- package/dist/chunk-KF5YBEM5.js +143 -0
- package/dist/chunk-KMIDURUR.mjs +33324 -0
- package/dist/chunk-QC6VTSA3.mjs +117 -0
- package/dist/chunk-SZYVGYKK.js +33350 -0
- package/dist/{chunk-WYSRJVX4.js → chunk-TA3SV4SP.js} +2 -2
- package/dist/chunk-UJCSKKID.mjs +27 -0
- package/dist/{chunk-FVSQ6BU6.mjs → chunk-XGPHQHLR.mjs} +4 -4
- package/dist/docs/index.js +1 -1
- package/dist/docs/index.mjs +1 -1
- package/dist/full/index.js +8 -6
- package/dist/full/index.mjs +6 -4
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -13
- package/dist/index.mjs +7 -5
- package/dist/metadata/index.d.mts +22 -2
- package/dist/metadata/index.d.ts +22 -2
- package/dist/metadata/index.js +27 -17
- package/dist/metadata/index.mjs +27 -16
- package/dist/resolve-BsLBxlBi.d.mts +24 -0
- package/dist/resolve-BsLBxlBi.d.ts +24 -0
- package/dist/runtime/index.js +5 -4
- package/dist/runtime/index.mjs +3 -2
- package/dist/shared/index.d.mts +10 -0
- package/dist/shared/index.d.ts +10 -0
- package/dist/shared/index.js +23 -0
- package/dist/shared/index.mjs +2 -0
- package/dist/static/index.js +6 -5
- package/dist/static/index.mjs +3 -2
- package/docs_for_llm/actions.doc.md +77 -0
- package/docs_for_llm/advancedset.doc.md +89 -0
- package/docs_for_llm/affix.doc.md +15 -7
- package/docs_for_llm/aksk.doc.md +111 -0
- package/docs_for_llm/az.doc.md +17 -11
- package/docs_for_llm/badge.doc.md +6 -5
- package/docs_for_llm/billtypes.doc.md +17 -11
- package/docs_for_llm/breadcrumb.doc.md +6 -3
- package/docs_for_llm/button.doc.md +34 -18
- package/docs_for_llm/buttonlink.doc.md +55 -0
- package/docs_for_llm/card.doc.md +8 -5
- package/docs_for_llm/cardcol.doc.md +78 -0
- package/docs_for_llm/cardcols.doc.md +84 -0
- package/docs_for_llm/cardcontent.doc.md +10 -10
- package/docs_for_llm/cardtabs.doc.md +106 -0
- package/docs_for_llm/carousel.doc.md +8 -7
- package/docs_for_llm/cascader.doc.md +46 -25
- package/docs_for_llm/checkbox.doc.md +25 -13
- package/docs_for_llm/cidrinput.doc.md +83 -0
- package/docs_for_llm/code.doc.md +22 -11
- package/docs_for_llm/collapse.doc.md +9 -6
- package/docs_for_llm/colorpicker.doc.md +104 -0
- package/docs_for_llm/copy.doc.md +15 -13
- package/docs_for_llm/copyhover.doc.md +59 -0
- package/docs_for_llm/copyrow.doc.md +71 -0
- package/docs_for_llm/datepicker.doc.md +51 -39
- package/docs_for_llm/description.doc.md +75 -0
- package/docs_for_llm/descriptions.doc.md +9 -6
- package/docs_for_llm/dialog.doc.md +48 -77
- package/docs_for_llm/divider.doc.md +9 -7
- package/docs_for_llm/drawer.doc.md +43 -84
- package/docs_for_llm/dropdown.doc.md +52 -21
- package/docs_for_llm/duration.doc.md +76 -0
- package/docs_for_llm/editable.doc.md +36 -14
- package/docs_for_llm/ellipsis.doc.md +10 -5
- package/docs_for_llm/filtertablefieldsdialog.doc.md +99 -0
- package/docs_for_llm/flex.doc.md +74 -0
- package/docs_for_llm/form.doc.md +33 -14
- package/docs_for_llm/formiteminput.doc.md +128 -0
- package/docs_for_llm/formitemspinner.doc.md +105 -0
- package/docs_for_llm/formitemswitch.doc.md +113 -0
- package/docs_for_llm/formitemtableconfigs.doc.md +95 -0
- package/docs_for_llm/grid.doc.md +7 -5
- package/docs_for_llm/header.doc.md +85 -0
- package/docs_for_llm/icon.doc.md +12 -8
- package/docs_for_llm/icontooltip.doc.md +121 -0
- package/docs_for_llm/input.doc.md +90 -39
- package/docs_for_llm/instancelist.doc.md +113 -0
- package/docs_for_llm/instancenum.doc.md +95 -0
- package/docs_for_llm/ipinput.doc.md +77 -0
- package/docs_for_llm/kspstatus.doc.md +82 -0
- package/docs_for_llm/kvcode.doc.md +76 -0
- package/docs_for_llm/layoutcontent.doc.md +17 -17
- package/docs_for_llm/layoutlistcontent.doc.md +95 -0
- package/docs_for_llm/layoutpermissioncontent.doc.md +84 -0
- package/docs_for_llm/layoutstandardlist.doc.md +120 -0
- package/docs_for_llm/layouttabs.doc.md +101 -0
- package/docs_for_llm/lazymount.doc.md +73 -0
- package/docs_for_llm/lazyteleport.doc.md +76 -0
- package/docs_for_llm/menu.doc.md +14 -11
- package/docs_for_llm/message.doc.md +48 -10
- package/docs_for_llm/pagination.doc.md +30 -17
- package/docs_for_llm/paginationplus.doc.md +31 -10
- package/docs_for_llm/password.doc.md +86 -0
- package/docs_for_llm/popover.doc.md +24 -55
- package/docs_for_llm/progress.doc.md +13 -10
- package/docs_for_llm/projects.doc.md +91 -0
- package/docs_for_llm/protable.doc.md +89 -15
- package/docs_for_llm/queuevisualrange.doc.md +78 -0
- package/docs_for_llm/radio.doc.md +23 -8
- package/docs_for_llm/rate.doc.md +122 -0
- package/docs_for_llm/region.doc.md +25 -13
- package/docs_for_llm/search.doc.md +120 -0
- package/docs_for_llm/searchinput.doc.md +111 -0
- package/docs_for_llm/searchitems.doc.md +116 -0
- package/docs_for_llm/searchselect.doc.md +126 -0
- package/docs_for_llm/select.doc.md +40 -55
- package/docs_for_llm/sidebar.doc.md +133 -0
- package/docs_for_llm/skeleton.doc.md +117 -0
- package/docs_for_llm/slider.doc.md +31 -21
- package/docs_for_llm/spin.doc.md +8 -5
- package/docs_for_llm/spinner.doc.md +28 -18
- package/docs_for_llm/split.doc.md +157 -0
- package/docs_for_llm/sshkeys.doc.md +88 -0
- package/docs_for_llm/status.doc.md +14 -9
- package/docs_for_llm/steps.doc.md +10 -7
- package/docs_for_llm/switch.doc.md +17 -14
- package/docs_for_llm/table.doc.md +118 -51
- package/docs_for_llm/tablecolumnid.doc.md +36 -16
- package/docs_for_llm/tabs.doc.md +19 -10
- package/docs_for_llm/tag.doc.md +19 -10
- package/docs_for_llm/timeline.doc.md +109 -0
- package/docs_for_llm/timepicker.doc.md +57 -38
- package/docs_for_llm/timerange.doc.md +157 -0
- package/docs_for_llm/tip.doc.md +20 -11
- package/docs_for_llm/tooltip.doc.md +55 -29
- package/docs_for_llm/tour.doc.md +48 -29
- package/docs_for_llm/transfer.doc.md +40 -29
- package/docs_for_llm/tree.doc.md +65 -23
- package/docs_for_llm/treeselect.doc.md +37 -48
- package/docs_for_llm/upload.doc.md +56 -32
- package/docs_for_llm/useCRUD.doc.md +49 -0
- package/docs_for_llm/useCountdown.doc.md +43 -0
- package/docs_for_llm/useDetail.doc.md +48 -0
- package/docs_for_llm/useDialog.doc.md +46 -0
- package/docs_for_llm/useEntity.doc.md +45 -0
- package/docs_for_llm/useEventListener.doc.md +44 -0
- package/docs_for_llm/useFalseUntilTruthy.doc.md +41 -0
- package/docs_for_llm/useGetCopyAuthText.doc.md +35 -0
- package/docs_for_llm/useGetUserPermission.doc.md +43 -0
- package/docs_for_llm/useGroup.doc.md +48 -0
- package/docs_for_llm/useIdEntities.doc.md +48 -0
- package/docs_for_llm/useIdEntity.doc.md +103 -0
- package/docs_for_llm/useInterval.doc.md +43 -0
- package/docs_for_llm/useLayoutStandardList.doc.md +38 -0
- package/docs_for_llm/useMessage.doc.md +46 -0
- package/docs_for_llm/useModifyCache.doc.md +37 -0
- package/docs_for_llm/useOpenDialog.doc.md +41 -0
- package/docs_for_llm/usePagination.doc.md +60 -0
- package/docs_for_llm/usePersist.doc.md +54 -0
- package/docs_for_llm/usePoll.doc.md +41 -0
- package/docs_for_llm/useRoutePlus.doc.md +34 -0
- package/docs_for_llm/useRouterPlus.doc.md +34 -0
- package/docs_for_llm/useSearch.doc.md +68 -0
- package/docs_for_llm/useShell.doc.md +43 -0
- package/docs_for_llm/useSkip.doc.md +41 -0
- package/docs_for_llm/useStorageIdEntity.doc.md +46 -0
- package/docs_for_llm/useStore.doc.md +34 -0
- package/docs_for_llm/useTable.doc.md +57 -0
- package/docs_for_llm/useTableGroup.doc.md +47 -0
- package/docs_for_llm/useTableSort.doc.md +40 -0
- package/docs_for_llm/useToState.doc.md +112 -0
- package/docs_for_llm/useUser.doc.md +38 -0
- package/docs_for_llm/useValidForm.doc.md +41 -0
- package/docs_for_llm/vdialog.doc.md +129 -0
- package/docs_for_llm/vdrawer.doc.md +119 -0
- package/docs_for_llm/virtuallist.doc.md +6 -3
- package/hooks/useCRUD.json +61 -0
- package/hooks/useCountdown.json +49 -0
- package/hooks/useDetail.json +67 -0
- package/hooks/useDialog.json +49 -0
- package/hooks/useEntity.json +61 -0
- package/hooks/useEventListener.json +61 -0
- package/hooks/useFalseUntilTruthy.json +43 -0
- package/hooks/useGetCopyAuthText.json +36 -0
- package/hooks/useGetUserPermission.json +55 -0
- package/hooks/useGroup.json +49 -0
- package/hooks/useIdEntities.json +61 -0
- package/hooks/useInterval.json +55 -0
- package/hooks/useLayoutStandardList.json +36 -0
- package/hooks/useMessage.json +73 -0
- package/hooks/useModifyCache.json +36 -0
- package/hooks/useOpenDialog.json +43 -0
- package/hooks/usePagination.json +49 -0
- package/hooks/usePersist.json +61 -0
- package/hooks/usePoll.json +43 -0
- package/hooks/useRoutePlus.json +36 -0
- package/hooks/useRouterPlus.json +36 -0
- package/hooks/useSearch.json +56 -0
- package/hooks/useShell.json +49 -0
- package/hooks/useSkip.json +43 -0
- package/hooks/useStorageIdEntity.json +67 -0
- package/hooks/useStore.json +36 -0
- package/hooks/useTable.json +49 -0
- package/hooks/useTableGroup.json +43 -0
- package/hooks/useTableSort.json +43 -0
- package/hooks/useUser.json +36 -0
- package/hooks/useValidForm.json +43 -0
- package/package.json +12 -6
- package/dist/chunk-HDV7ETXE.mjs +0 -1055
- package/dist/chunk-HPAUCD5I.js +0 -156
- package/dist/chunk-L4DS3EXI.mjs +0 -133
- package/dist/chunk-YWY3D4J7.js +0 -1082
|
@@ -12,42 +12,43 @@ import { Transfer } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| data | `TransferDataItem[]` | `undefined` | 是 | 需要展示的列表数据,包含 label、key、disabled 属性 | `<Transfer :data="data"></Transfer>` |
|
|
18
|
-
| value | `string[]` | `[]` | 否 | 已选择的 key 数组,可用 v-model 双向绑定 | `<Transfer v-model="selectedKeys"></Transfer>` |
|
|
19
|
-
| keyName | `string` | `"key"` | 否 | 指定数据的 key 属性名 | `<Transfer keyName="id"></Transfer>` |
|
|
20
|
-
| labelName | `string` | `"label"` | 否 | 指定数据的 label 属性名 | `<Transfer labelName="name"></Transfer>` |
|
|
21
|
-
| leftCheckedKeys | `string[]` | `[]` | 否 | 左侧勾选的节点 key 数组,可用 v-model:leftCheckedKeys | `<Transfer v-model:leftCheckedKeys="leftChecked"></Transfer>` |
|
|
22
|
-
| rightCheckedKeys | `string[]` | `[]` | 否 | 右侧勾选的节点 key 数组,可用 v-model:rightCheckedKeys | `<Transfer v-model:rightCheckedKeys="rightChecked"></Transfer>` |
|
|
23
|
-
| filterable | `boolean` | `false` | 否 | 是否启用过滤功能 | `<Transfer filterable></Transfer>` |
|
|
24
|
-
| filter | `(data: TransferDataItem, keywords: string) => boolean` | `(data, keywords) => data.label.includes(keywords)` | 否 | 自定义过滤函数 | `<Transfer :filter="customFilter"></Transfer>` |
|
|
25
|
-
| placeholder | `string` | `"请输入"` | 否 | 过滤输入框的占位文案 | `<Transfer placeholder="搜索..."></Transfer>` |
|
|
26
|
-
| leftKeywords | `string` | `undefined` | 否 | 左侧筛选关键字 | `<Transfer v-model:leftKeywords="leftSearch"></Transfer>` |
|
|
27
|
-
| rightKeywords | `string` | `undefined` | 否 | 右侧筛选关键字 | `<Transfer v-model:rightKeywords="rightSearch"></Transfer>` |
|
|
28
|
-
| leftTitle | `string | VNode` | `"请选择"` | 否 | 左侧标题 | `<Transfer leftTitle="待选列表"></Transfer>` |
|
|
29
|
-
| rightTitle | `string | VNode` | `"已选择"` | 否 | 右侧标题 | `<Transfer rightTitle="已选列表"></Transfer>` |
|
|
30
|
-
| enableAdd | `() => boolean` | `undefined` | 否 | 控制右箭头按钮的可用状态 | `<Transfer :enableAdd="canAdd"></Transfer>` |
|
|
31
|
-
| enableRemove | `() => boolean` | `undefined` | 否 | 控制左箭头按钮的可用状态 | `<Transfer :enableRemove="canRemove"></Transfer>` |
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| data | `TransferDataItem[]` | `undefined` | 是 | 需要展示的列表数据,包含 label、key、disabled 属性 | - | `<Transfer :data="data"></Transfer>` |
|
|
18
|
+
| value | `string[]` | `[]` | 否 | 已选择的 key 数组,可用 v-model 双向绑定 | - | `<Transfer v-model="selectedKeys"></Transfer>` |
|
|
19
|
+
| keyName | `string` | `"key"` | 否 | 指定数据的 key 属性名 | - | `<Transfer keyName="id"></Transfer>` |
|
|
20
|
+
| labelName | `string` | `"label"` | 否 | 指定数据的 label 属性名 | - | `<Transfer labelName="name"></Transfer>` |
|
|
21
|
+
| leftCheckedKeys | `string[]` | `[]` | 否 | 左侧勾选的节点 key 数组,可用 v-model:leftCheckedKeys | - | `<Transfer v-model:leftCheckedKeys="leftChecked"></Transfer>` |
|
|
22
|
+
| rightCheckedKeys | `string[]` | `[]` | 否 | 右侧勾选的节点 key 数组,可用 v-model:rightCheckedKeys | - | `<Transfer v-model:rightCheckedKeys="rightChecked"></Transfer>` |
|
|
23
|
+
| filterable | `boolean` | `false` | 否 | 是否启用过滤功能 | - | `<Transfer filterable></Transfer>` |
|
|
24
|
+
| filter | `(data: TransferDataItem, keywords: string) => boolean` | `(data, keywords) => data.label.includes(keywords)` | 否 | 自定义过滤函数 | - | `<Transfer :filter="customFilter"></Transfer>` |
|
|
25
|
+
| placeholder | `string` | `"请输入"` | 否 | 过滤输入框的占位文案 | - | `<Transfer placeholder="搜索..."></Transfer>` |
|
|
26
|
+
| leftKeywords | `string` | `undefined` | 否 | 左侧筛选关键字 | - | `<Transfer v-model:leftKeywords="leftSearch"></Transfer>` |
|
|
27
|
+
| rightKeywords | `string` | `undefined` | 否 | 右侧筛选关键字 | - | `<Transfer v-model:rightKeywords="rightSearch"></Transfer>` |
|
|
28
|
+
| leftTitle | `string | VNode` | `"请选择"` | 否 | 左侧标题 | - | `<Transfer leftTitle="待选列表"></Transfer>` |
|
|
29
|
+
| rightTitle | `string | VNode` | `"已选择"` | 否 | 右侧标题 | - | `<Transfer rightTitle="已选列表"></Transfer>` |
|
|
30
|
+
| enableAdd | `() => boolean` | `undefined` | 否 | 控制右箭头按钮的可用状态 | - | `<Transfer :enableAdd="canAdd"></Transfer>` |
|
|
31
|
+
| enableRemove | `() => boolean` | `undefined` | 否 | 控制左箭头按钮的可用状态 | - | `<Transfer :enableRemove="canRemove"></Transfer>` |
|
|
32
32
|
|
|
33
33
|
## 事件 (Events)
|
|
34
34
|
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
35
35
|
| --- | --- | --- | --- | --- |
|
|
36
36
|
| add | `@add` | 点击右箭头按钮时触发 | `-` | `<Transfer @add="handleAdd"></Transfer>` |
|
|
37
37
|
| remove | `@remove` | 点击左箭头按钮时触发 | `-` | `<Transfer @remove="handleRemove"></Transfer>` |
|
|
38
|
+
| page | `@page` | 启用分页时,左右面板任一侧翻页后触发。 | `model: 'left' | 'right', data: PaginationChangeData` | `<Transfer :pagination="true" @page="handlePage"></Transfer>` |
|
|
38
39
|
|
|
39
|
-
###
|
|
40
|
-
**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
### 事件参数说明
|
|
41
|
+
**page**
|
|
42
|
+
|
|
43
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| model | `'left' | 'right'` | 是 | - | 触发翻页的面板标识,`left` 表示候选列表,`right` 表示已选列表。 |
|
|
46
|
+
| data | `PaginationChangeData` | 是 | - | 当前分页变更数据,通常包含页码和每页数量。 |
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
事件处理示例:
|
|
48
49
|
```typescript
|
|
49
|
-
const
|
|
50
|
-
console.log(
|
|
50
|
+
const handlePage = (model: 'left' | 'right', data: { value: number; limit: number }) => {
|
|
51
|
+
console.log(model, data.value, data.limit);
|
|
51
52
|
};
|
|
52
53
|
```
|
|
53
54
|
|
|
@@ -63,17 +64,27 @@ const handleRemove = () => {
|
|
|
63
64
|
| 方法名 | 说明 | 参数 | 返回值 |
|
|
64
65
|
| --- | --- | --- | --- |
|
|
65
66
|
| getData | 获取右侧已选择的节点数据 | `-` | `TransferDataItem[]` |
|
|
66
|
-
| getCheckedData | 获取勾选的节点数据 |
|
|
67
|
+
| getCheckedData | 获取勾选的节点数据 | `model: 'left' | 'right'` | `TransferDataItem[]` |
|
|
68
|
+
|
|
69
|
+
### 方法参数说明
|
|
70
|
+
**getCheckedData**
|
|
71
|
+
|
|
72
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
73
|
+
| --- | --- | --- | --- | --- |
|
|
74
|
+
| model | `'left' | 'right'` | 是 | - | 指定读取左侧候选列表或右侧已选列表中的勾选数据。 |
|
|
67
75
|
|
|
68
76
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
77
|
+
### data 中缺少 key 属性
|
|
69
78
|
> **错误用法**: `const data = [{ label: '选项1' }]; // 缺少 key`
|
|
70
79
|
> **正确写法**: `const data = [{ label: '选项1', key: 1 }];`
|
|
71
80
|
> **说明**: 每个数据项必须有 key 属性(或通过 keyName 指定的属性)
|
|
72
81
|
|
|
82
|
+
### value 类型错误
|
|
73
83
|
> **错误用法**: `const value = ref(0); // 应该是数组`
|
|
74
84
|
> **正确写法**: `const value = ref<number[]>([]);`
|
|
75
85
|
> **说明**: value 必须是数组类型
|
|
76
86
|
|
|
87
|
+
### keyName 与实际属性名不匹配
|
|
77
88
|
> **错误用法**: `const data = [{ id: 1, name: '张三' }];
|
|
78
89
|
<Transfer :data="data" /> <!-- 默认使用 key,但数据中是 id -->`
|
|
79
90
|
> **正确写法**: `const data = [{ id: 1, name: '张三' }];
|
|
@@ -222,7 +233,7 @@ const value = ref<string[]>([]);
|
|
|
222
233
|
|
|
223
234
|
使用方法获取穿梭框数据
|
|
224
235
|
|
|
225
|
-
**使用的 API**: 属性: data, value
|
|
236
|
+
**使用的 API**: 属性: data, value | 方法: getData
|
|
226
237
|
|
|
227
238
|
```vue
|
|
228
239
|
<script setup lang="ts">
|
package/docs_for_llm/tree.doc.md
CHANGED
|
@@ -12,23 +12,23 @@ import { Tree } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| data | `TreeDataItem[]` | `undefined` | 是 | 要渲染的树形数据 | `<Tree :data="treeData"></Tree>` |
|
|
18
|
-
| expandedKeys | `K[]` | `undefined` | 否 | 指定展开的节点 key 数组,可用 v-model:expandedKeys | `<Tree v-model:expandedKeys="expandedKeys"></Tree>` |
|
|
19
|
-
| defaultExpandAll | `boolean` | `false` | 否 | 是否默认展开所有节点 | `<Tree defaultExpandAll></Tree>` |
|
|
20
|
-
| checkbox | `boolean` | `false` | 否 | 是否展示复选框 | `<Tree checkbox></Tree>` |
|
|
21
|
-
| checkedKeys | `K[]` | `undefined` | 否 | 指定勾选的节点 key 数组,可用 v-model:checkedKeys | `<Tree checkbox v-model:checkedKeys="checkedKeys"></Tree>` |
|
|
22
|
-
| uncorrelated | `boolean` | `false` | 否 | 父子 checkbox 选中状态是否互不关联 | `<Tree checkbox uncorrelated></Tree>` |
|
|
23
|
-
| selectable | `boolean` | `true` | 否 | 节点是否可选中 | `<Tree :selectable="false"></Tree>` |
|
|
24
|
-
| selectedKeys | `K[]` | `undefined` | 否 | 指定选中的节点 key 数组,可用 v-model:selectedKeys | `<Tree v-model:selectedKeys="selectedKeys"></Tree>` |
|
|
25
|
-
| multiple | `boolean` | `false` | 否 | selectedKeys 是否支持多选 | `<Tree multiple></Tree>` |
|
|
26
|
-
| filter | `(data: TreeDataItem, node: TreeNode) => boolean` | `undefined` | 否 | 节点过滤函数,返回 true 则展示,否则过滤掉 | `<Tree :filter="filterFn"></Tree>` |
|
|
27
|
-
| load | `(node: TreeNode) => Promise<void> | void` | `undefined` | 否 | 异步加载节点数据的函数 | `<Tree :load="loadData"></Tree>` |
|
|
28
|
-
| showLine | `boolean` | `true` | 否 | 是否展示左侧对齐线 | `<Tree :showLine="false"></Tree>` |
|
|
29
|
-
| draggable | `boolean` | `false` | 否 | 是否支持拖拽 | `<Tree draggable></Tree>` |
|
|
30
|
-
| allowDrag | `(node: TreeNode) => boolean` | `undefined` | 否 | 指定哪些节点可拖拽 | `<Tree draggable :allowDrag="allowDragFn"></Tree>` |
|
|
31
|
-
| allowDrop | `(node: TreeNode, srcNode: TreeNode) => boolean` | `undefined` | 否 | 指定哪些节点可以插入子节点 | `<Tree draggable :allowDrop="allowDropFn"></Tree>` |
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| data | `TreeDataItem[]` | `undefined` | 是 | 要渲染的树形数据 | - | `<Tree :data="treeData"></Tree>` |
|
|
18
|
+
| expandedKeys | `K[]` | `undefined` | 否 | 指定展开的节点 key 数组,可用 v-model:expandedKeys | - | `<Tree v-model:expandedKeys="expandedKeys"></Tree>` |
|
|
19
|
+
| defaultExpandAll | `boolean` | `false` | 否 | 是否默认展开所有节点 | - | `<Tree defaultExpandAll></Tree>` |
|
|
20
|
+
| checkbox | `boolean` | `false` | 否 | 是否展示复选框 | - | `<Tree checkbox></Tree>` |
|
|
21
|
+
| checkedKeys | `K[]` | `undefined` | 否 | 指定勾选的节点 key 数组,可用 v-model:checkedKeys | - | `<Tree checkbox v-model:checkedKeys="checkedKeys"></Tree>` |
|
|
22
|
+
| uncorrelated | `boolean` | `false` | 否 | 父子 checkbox 选中状态是否互不关联 | - | `<Tree checkbox uncorrelated></Tree>` |
|
|
23
|
+
| selectable | `boolean` | `true` | 否 | 节点是否可选中 | - | `<Tree :selectable="false"></Tree>` |
|
|
24
|
+
| selectedKeys | `K[]` | `undefined` | 否 | 指定选中的节点 key 数组,可用 v-model:selectedKeys | - | `<Tree v-model:selectedKeys="selectedKeys"></Tree>` |
|
|
25
|
+
| multiple | `boolean` | `false` | 否 | selectedKeys 是否支持多选 | - | `<Tree multiple></Tree>` |
|
|
26
|
+
| filter | `(data: TreeDataItem, node: TreeNode) => boolean` | `undefined` | 否 | 节点过滤函数,返回 true 则展示,否则过滤掉 | - | `<Tree :filter="filterFn"></Tree>` |
|
|
27
|
+
| load | `(node: TreeNode) => Promise<void> | void` | `undefined` | 否 | 异步加载节点数据的函数 | - | `<Tree :load="loadData"></Tree>` |
|
|
28
|
+
| showLine | `boolean` | `true` | 否 | 是否展示左侧对齐线 | - | `<Tree :showLine="false"></Tree>` |
|
|
29
|
+
| draggable | `boolean` | `false` | 否 | 是否支持拖拽 | - | `<Tree draggable></Tree>` |
|
|
30
|
+
| allowDrag | `(node: TreeNode) => boolean` | `undefined` | 否 | 指定哪些节点可拖拽 | - | `<Tree draggable :allowDrag="allowDragFn"></Tree>` |
|
|
31
|
+
| allowDrop | `(node: TreeNode, srcNode: TreeNode) => boolean` | `undefined` | 否 | 指定哪些节点可以插入子节点 | - | `<Tree draggable :allowDrop="allowDropFn"></Tree>` |
|
|
32
32
|
|
|
33
33
|
## 事件 (Events)
|
|
34
34
|
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
@@ -37,14 +37,34 @@ import { Tree } from '@king-design/vue';
|
|
|
37
37
|
| denydrag | `@denydrag` | 拖拽不允许拖拽的节点时触发 | `node: TreeNode` | `<Tree @denydrag="handleDenyDrag"></Tree>` |
|
|
38
38
|
| denydrop | `@denydrop` | 插入到不允许插入的节点时触发 | `node: TreeNode, srcNode: TreeNode, mode: TreeMode` | `<Tree @denydrop="handleDenyDrop"></Tree>` |
|
|
39
39
|
|
|
40
|
-
###
|
|
41
|
-
**dragend
|
|
40
|
+
### 事件参数说明
|
|
41
|
+
**dragend**
|
|
42
|
+
|
|
43
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| data | `DragEndData` | 是 | - | 拖拽数据,包含 srcNode、toNode、mode |
|
|
46
|
+
|
|
47
|
+
事件处理示例:
|
|
42
48
|
```typescript
|
|
43
49
|
const handleDragEnd = (data) => {
|
|
44
50
|
console.log(`${data.srcNode.data.label} -> ${data.toNode.data.label}`);
|
|
45
51
|
};
|
|
46
52
|
```
|
|
47
53
|
|
|
54
|
+
**denydrag**
|
|
55
|
+
|
|
56
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
57
|
+
| --- | --- | --- | --- | --- |
|
|
58
|
+
| node | `TreeNode` | 是 | - | 被拒绝拖拽的节点 |
|
|
59
|
+
|
|
60
|
+
**denydrop**
|
|
61
|
+
|
|
62
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
63
|
+
| --- | --- | --- | --- | --- |
|
|
64
|
+
| node | `TreeNode` | 是 | - | 目标节点 |
|
|
65
|
+
| srcNode | `TreeNode` | 是 | - | 源节点 |
|
|
66
|
+
| mode | `TreeMode` | 是 | - | 插入模式 |
|
|
67
|
+
|
|
48
68
|
## 插槽 (Slots)
|
|
49
69
|
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
50
70
|
| --- | --- | --- | --- |
|
|
@@ -53,22 +73,44 @@ const handleDragEnd = (data) => {
|
|
|
53
73
|
## 方法 (Methods)
|
|
54
74
|
| 方法名 | 说明 | 参数 | 返回值 |
|
|
55
75
|
| --- | --- | --- | --- |
|
|
56
|
-
| getCheckedData | 获取勾选的节点数据 |
|
|
76
|
+
| getCheckedData | 获取勾选的节点数据 | `leafOnly?: boolean` | `TreeDataItem[]` |
|
|
57
77
|
| getSelectedData | 获取选中的节点数据 | `-` | `TreeDataItem[]` |
|
|
58
|
-
| expand | 展开指定节点 |
|
|
59
|
-
| shrink | 收起指定节点 |
|
|
78
|
+
| expand | 展开指定节点 | `key: K` | `void` |
|
|
79
|
+
| shrink | 收起指定节点 | `key: K` | `void` |
|
|
60
80
|
| expandAll | 展开所有节点 | `-` | `void` |
|
|
61
81
|
| getNodes | 返回一级节点数组 | `-` | `TreeNode[]` |
|
|
62
82
|
|
|
83
|
+
### 方法参数说明
|
|
84
|
+
**getCheckedData**
|
|
85
|
+
|
|
86
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
87
|
+
| --- | --- | --- | --- | --- |
|
|
88
|
+
| leafOnly | `boolean` | 否 | `false` | 是否只返回叶子节点;传 `true` 时会过滤掉父级节点。 |
|
|
89
|
+
|
|
90
|
+
**expand**
|
|
91
|
+
|
|
92
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
93
|
+
| --- | --- | --- | --- | --- |
|
|
94
|
+
| key | `K` | 是 | - | 要展开的节点 key |
|
|
95
|
+
|
|
96
|
+
**shrink**
|
|
97
|
+
|
|
98
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
99
|
+
| --- | --- | --- | --- | --- |
|
|
100
|
+
| key | `K` | 是 | - | 要收起的节点 key |
|
|
101
|
+
|
|
63
102
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
103
|
+
### data 中缺少 key 属性
|
|
64
104
|
> **错误用法**: `const data = [{ label: '节点1' }]; // 缺少 key`
|
|
65
105
|
> **正确写法**: `const data = [{ label: '节点1', key: 'node1' }];`
|
|
66
106
|
> **说明**: 每个节点必须有唯一的 key 属性
|
|
67
107
|
|
|
108
|
+
### 异步加载时未设置 children 为空数组
|
|
68
109
|
> **错误用法**: `const data = [{ label: '父节点', key: 'parent' }]; // 无 children,不会显示展开箭头`
|
|
69
110
|
> **正确写法**: `const data = [{ label: '父节点', key: 'parent', children: [] }];`
|
|
70
111
|
> **说明**: 异步加载节点需要设置 children 为空数组,才会显示展开箭头
|
|
71
112
|
|
|
113
|
+
### checkbox 模式下 checkedKeys 类型错误
|
|
72
114
|
> **错误用法**: `const checkedKeys = ref('node1'); // 应该是数组`
|
|
73
115
|
> **正确写法**: `const checkedKeys = ref<string[]>(['node1']);`
|
|
74
116
|
> **说明**: checkedKeys 必须是数组类型
|
|
@@ -118,7 +160,7 @@ const data = reactive([
|
|
|
118
160
|
|
|
119
161
|
带复选框的树形控件
|
|
120
162
|
|
|
121
|
-
**使用的 API**: 属性: data, checkbox, checkedKeys, expandedKeys
|
|
163
|
+
**使用的 API**: 属性: data, checkbox, checkedKeys, expandedKeys | 方法: getCheckedData
|
|
122
164
|
|
|
123
165
|
```vue
|
|
124
166
|
<script setup lang="ts">
|
|
@@ -12,75 +12,64 @@ import { TreeSelect } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| value | `any` | `""` | 否 | 当前选择的值,可用 v-model 双向绑定 | `<TreeSelect v-model="value"
|
|
18
|
-
| data | `TreeDataItem[]` | `undefined` | 是 | 要渲染的树形数据 | `<TreeSelect :data="treeData"
|
|
19
|
-
| multiple | `boolean` | `false` | 否 | 是否支持多选 | `<TreeSelect multiple
|
|
20
|
-
| checkbox | `boolean` | `false` | 否 | 是否展示复选框 | `<TreeSelect checkbox
|
|
21
|
-
| uncorrelated | `boolean` | `false` | 否 | 父子 checkbox 选中状态是否互不关联 | `<TreeSelect checkbox uncorrelated
|
|
22
|
-
| filterable | `boolean` | `false` | 否 | 是否支持筛选 | `<TreeSelect filterable
|
|
23
|
-
| filter | `(keywords: string, data: TreeDataItem) => boolean` | `undefined` | 否 | 自定义筛选规则函数 | `<TreeSelect filterable :filter="customFilter"
|
|
24
|
-
| load | `(node: TreeNode) => Promise<void> | void` | `undefined` | 否 | 异步加载节点数据的函数 | `<TreeSelect :load="loadData"
|
|
25
|
-
| defaultExpandAll | `boolean` | `false` | 否 | 是否默认展开所有节点 | `<TreeSelect defaultExpandAll
|
|
26
|
-
| showLine | `boolean` | `true` | 否 | 是否展示 Tree 的对齐线 | `<TreeSelect :showLine="false"
|
|
27
|
-
| disabled | `boolean` | `false` | 否 | 是否禁用 | `<TreeSelect disabled
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| value | `any` | `""` | 否 | 当前选择的值,可用 v-model 双向绑定 | - | `<TreeSelect v-model="value">` |
|
|
18
|
+
| data | `TreeDataItem[]` | `undefined` | 是 | 要渲染的树形数据 | - | `<TreeSelect :data="treeData">` |
|
|
19
|
+
| multiple | `boolean` | `false` | 否 | 是否支持多选 | - | `<TreeSelect multiple>` |
|
|
20
|
+
| checkbox | `boolean` | `false` | 否 | 是否展示复选框 | - | `<TreeSelect checkbox>` |
|
|
21
|
+
| uncorrelated | `boolean` | `false` | 否 | 父子 checkbox 选中状态是否互不关联 | - | `<TreeSelect checkbox uncorrelated>` |
|
|
22
|
+
| filterable | `boolean` | `false` | 否 | 是否支持筛选 | - | `<TreeSelect filterable>` |
|
|
23
|
+
| filter | `(keywords: string, data: TreeDataItem) => boolean` | `undefined` | 否 | 自定义筛选规则函数 | - | `<TreeSelect filterable :filter="customFilter">` |
|
|
24
|
+
| load | `(node: TreeNode) => Promise<void> | void` | `undefined` | 否 | 异步加载节点数据的函数 | - | `<TreeSelect :load="loadData">` |
|
|
25
|
+
| defaultExpandAll | `boolean` | `false` | 否 | 是否默认展开所有节点 | - | `<TreeSelect defaultExpandAll>` |
|
|
26
|
+
| showLine | `boolean` | `true` | 否 | 是否展示 Tree 的对齐线 | - | `<TreeSelect :showLine="false">` |
|
|
27
|
+
| disabled | `boolean` | `false` | 否 | 是否禁用 | - | `<TreeSelect disabled>` |
|
|
28
|
+
| name | `string` | `undefined` | 否 | 表单元素的 name 属性 | - | `<TreeSelect name="node">` |
|
|
29
|
+
| clearable | `boolean` | `false` | 否 | 是否可清空 | - | `<TreeSelect clearable>` |
|
|
30
|
+
| loading | `boolean` | `false` | 否 | 数据加载状态 | - | `<TreeSelect :loading="isLoading">` |
|
|
31
|
+
| size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 尺寸 | - | `<TreeSelect size="small">` |
|
|
32
|
+
| placeholder | `string` | `"请选择"` | 否 | 占位文案 | - | `<TreeSelect placeholder="请选择节点">` |
|
|
33
|
+
| fluid | `boolean` | `false` | 否 | 是否宽度 100% | - | `<TreeSelect fluid>` |
|
|
34
|
+
| width | `number | string` | `undefined` | 否 | 指定宽度,自动添加单位 px | - | `<TreeSelect :width="300">` |
|
|
35
|
+
| container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置,默认 Dialog 组件会追加到 Dialog 中,其他追加到 body | - | `<TreeSelect :container="() => document.body">` |
|
|
36
|
+
| hideIcon | `boolean` | `false` | 否 | 是否隐藏后面的图标 | - | `<TreeSelect hideIcon>` |
|
|
37
|
+
| inline | `boolean` | `false` | 否 | 是否展示内联模式 | - | `<TreeSelect inline>` |
|
|
38
|
+
| flat | `boolean` | `false` | 否 | 是否展示扁平样式 | - | `<TreeSelect flat>` |
|
|
39
|
+
| show | `boolean` | `false` | 否 | 是否展示菜单项(受控模式) | - | `<TreeSelect :show="visible">` |
|
|
40
|
+
| position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | - | `<TreeSelect position="top">` |
|
|
41
|
+
| nowrap | `boolean` | `false` | 否 | 选中值区域是否不换行展示,适合单行紧凑布局 | - | `<TreeSelect nowrap>` |
|
|
42
|
+
| draggable | `boolean` | `false` | 否 | 多选值是否支持拖动排序 | - | `<TreeSelect multiple draggable>` |
|
|
43
|
+
| virtual | `boolean` | `false` | 否 | 是否开启虚拟列表,用于大数据量场景 | - | `<TreeSelect virtual>` |
|
|
37
44
|
|
|
38
45
|
## 事件 (Events)
|
|
39
46
|
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
40
47
|
| --- | --- | --- | --- | --- |
|
|
41
|
-
| show | `@show` | 菜单弹出时触发 | `-` | `<TreeSelect @show="handleShow"
|
|
42
|
-
| hide | `@hide` | 菜单隐藏时触发 | `-` | `<TreeSelect @hide="handleHide"
|
|
43
|
-
|
|
44
|
-
### 事件处理函数示例
|
|
45
|
-
**show**:
|
|
46
|
-
```typescript
|
|
47
|
-
const handleShow = () => {
|
|
48
|
-
console.log('下拉菜单已打开');
|
|
49
|
-
};
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**hide**:
|
|
53
|
-
```typescript
|
|
54
|
-
const handleHide = () => {
|
|
55
|
-
console.log('下拉菜单已关闭');
|
|
56
|
-
};
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## 插槽 (Slots)
|
|
60
|
-
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
61
|
-
| --- | --- | --- | --- |
|
|
62
|
-
| value | 自定义选择结果的展示 | `undefined` | - |
|
|
63
|
-
| values | 自定义多选的选择结果的展示 | `undefined` | - |
|
|
64
|
-
| prefix | 自定义输入框前面展示的内容 | `undefined` | - |
|
|
65
|
-
| suffix | 自定义输入框后面展示的内容 | `undefined` | - |
|
|
66
|
-
| menu | 自定义整个菜单的内容 | `undefined` | - |
|
|
48
|
+
| show | `@show` | 菜单弹出时触发 | `-` | `<TreeSelect @show="handleShow">` |
|
|
49
|
+
| hide | `@hide` | 菜单隐藏时触发 | `-` | `<TreeSelect @hide="handleHide">` |
|
|
67
50
|
|
|
68
51
|
## 方法 (Methods)
|
|
69
52
|
| 方法名 | 说明 | 参数 | 返回值 |
|
|
70
53
|
| --- | --- | --- | --- |
|
|
54
|
+
| show | 主动展开下拉树面板。 | `-` | `void` |
|
|
55
|
+
| hide | 主动关闭下拉树面板。 | `-` | `void` |
|
|
56
|
+
| position | 重新计算下拉树面板的位置。 | `-` | `void` |
|
|
71
57
|
| expandAll | 展开所有节点 | `-` | `void` |
|
|
72
58
|
|
|
73
59
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
60
|
+
### data 中缺少 key 属性
|
|
74
61
|
> **错误用法**: `const data = [{ label: '节点1' }]; // 缺少 key`
|
|
75
62
|
> **正确写法**: `const data = [{ label: '节点1', key: 'node1' }];`
|
|
76
63
|
> **说明**: 每个节点必须有唯一的 key 属性,key 同时也是选中时的取值
|
|
77
64
|
|
|
65
|
+
### 多选时 value 类型错误
|
|
78
66
|
> **错误用法**: `const value = ref('');
|
|
79
67
|
<TreeSelect v-model="value" multiple />`
|
|
80
68
|
> **正确写法**: `const values = ref<string[]>([]);
|
|
81
69
|
<TreeSelect v-model="values" multiple />`
|
|
82
70
|
> **说明**: multiple 模式下 value 必须是数组类型
|
|
83
71
|
|
|
72
|
+
### 混淆 checkbox 和 multiple
|
|
84
73
|
> **错误用法**: `<TreeSelect checkbox multiple /> <!-- 通常不需要同时使用 -->`
|
|
85
74
|
> **正确写法**: `<TreeSelect checkbox /> <!-- checkbox 已隐含多选 -->`
|
|
86
75
|
> **说明**: checkbox 模式已经支持多选,通常不需要同时设置 multiple
|
|
@@ -12,74 +12,98 @@ import { Upload } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| action | `string` | `undefined` | 是 | 上传地址 | `<Upload action="/api/upload" />` |
|
|
18
|
-
| files | `UploadFile[]` | `[]` | 否 | 已上传和待上传的文件列表,可用 v-model:files 双向绑定 | `<Upload v-model:files="fileList" />` |
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| action | `string` | `undefined` | 是 | 上传地址 | - | `<Upload action="/api/upload" />` |
|
|
18
|
+
| files | `UploadFile[]` | `[]` | 否 | 已上传和待上传的文件列表,可用 v-model:files 双向绑定 | - | `<Upload v-model:files="fileList" />` |
|
|
19
|
+
| defaultFiles | `(Partial<UploadFile> & Pick<UploadFile, 'name' | 'url'>)[]` | `[]` | 否 | 默认文件列表,用于初始化已上传文件,不与 files 双向绑定 | - | `<Upload :defaultFiles="[{ name: 'demo.png', url: 'https://example.com/demo.png' }]" />` |
|
|
20
|
+
| type | `"select" | "drag" | "gallery"` | `"select"` | 否 | 组件风格 | - | `<Upload type="drag" />` |
|
|
21
|
+
| accept | `string` | `undefined` | 否 | 支持上传的文件类型 | - | `<Upload accept=".jpg, .png, .gif" />` |
|
|
22
|
+
| multiple | `boolean` | `false` | 否 | 是否支持多选文件 | - | `<Upload multiple />` |
|
|
23
|
+
| maxSize | `number` | `undefined` | 否 | 最大上传文件大小限制(kb) | - | `<Upload :maxSize="500" />` |
|
|
24
|
+
| limit | `number` | `undefined` | 否 | 最大上传文件数量限制 | - | `<Upload :limit="5" />` |
|
|
25
|
+
| autoUpload | `boolean` | `true` | 否 | 是否选择文件后自动上传 | - | `<Upload :autoUpload="false" />` |
|
|
26
|
+
| beforeUpload | `(file: UploadFile, files: UploadFile[]) => boolean | Promise<boolean>` | `undefined` | 否 | 上传前的回调函数,返回 false 取消上传,支持异步 | - | `<Upload :beforeUpload="handleBeforeUpload" />` |
|
|
27
|
+
| beforeRemove | `(file: UploadFile, files: UploadFile[]) => boolean | Promise<boolean>` | `undefined` | 否 | 删除前的回调函数,返回 false 取消删除,支持异步 | - | `<Upload :beforeRemove="handleBeforeRemove" />` |
|
|
28
|
+
| data | `object | ((file: UploadFile) => object)` | `undefined` | 否 | 上传附加的请求数据,可以是对象或函数 | - | `<Upload :data="{userId: '123'}" />` |
|
|
29
|
+
| headers | `Record<string, string>` | `undefined` | 否 | 上传的请求头 | - | `<Upload :headers="{Authorization: 'Bearer token'}" />` |
|
|
30
|
+
| name | `string` | `undefined` | 否 | 上传文件字段名 | - | `<Upload name="file" />` |
|
|
31
|
+
| withCredentials | `boolean` | `false` | 否 | 跨域请求是否允许传送 cookie | - | `<Upload withCredentials />` |
|
|
32
|
+
| directory | `boolean` | `false` | 否 | 是否支持上传文件夹 | - | `<Upload directory />` |
|
|
33
|
+
| disabled | `boolean` | `false` | 否 | 是否禁用上传 | - | `<Upload disabled />` |
|
|
33
34
|
|
|
34
35
|
## 事件 (Events)
|
|
35
36
|
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
36
37
|
| --- | --- | --- | --- | --- |
|
|
37
|
-
| progress | `@progress` | 文件上传过程中触发 | `event: ProgressEvent, xhr: XMLHttpRequest, file: UploadFile, files: UploadFile[]` | `<Upload @progress="handleProgress"
|
|
38
|
-
| success | `@success` | 文件上传成功时触发 | `res: any, xhr: XMLHttpRequest, file: UploadFile, files: UploadFile[]` | `<Upload @success="handleSuccess"
|
|
39
|
-
| error | `@error` | 文件超出限制或上传失败时触发 | `err: Error | RequestError, file: File | File[] | UploadFile, files: UploadFile[]` | `<Upload @error="handleError"
|
|
38
|
+
| progress | `@progress` | 文件上传过程中触发 | `event: ProgressEvent, xhr: XMLHttpRequest, file: UploadFile, files: UploadFile[]` | `<Upload @progress="handleProgress">` |
|
|
39
|
+
| success | `@success` | 文件上传成功时触发 | `res: any, xhr: XMLHttpRequest, file: UploadFile, files: UploadFile[]` | `<Upload @success="handleSuccess">` |
|
|
40
|
+
| error | `@error` | 文件超出限制或上传失败时触发 | `err: Error | RequestError, file: File | File[] | UploadFile, files: UploadFile[]` | `<Upload @error="handleError">` |
|
|
40
41
|
|
|
41
|
-
###
|
|
42
|
-
**progress
|
|
42
|
+
### 事件参数说明
|
|
43
|
+
**progress**
|
|
44
|
+
|
|
45
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
46
|
+
| --- | --- | --- | --- | --- |
|
|
47
|
+
| event | `ProgressEvent` | 是 | - | 进度事件 |
|
|
48
|
+
| xhr | `XMLHttpRequest` | 是 | - | 请求对象 |
|
|
49
|
+
| file | `UploadFile` | 是 | - | 当前文件 |
|
|
50
|
+
| files | `UploadFile[]` | 是 | - | 所有文件列表 |
|
|
51
|
+
|
|
52
|
+
事件处理示例:
|
|
43
53
|
```typescript
|
|
44
54
|
const handleProgress = (e, xhr, file, files) => {
|
|
45
55
|
console.log('进度:', file.percent);
|
|
46
56
|
};
|
|
47
57
|
```
|
|
48
58
|
|
|
49
|
-
**success
|
|
59
|
+
**success**
|
|
60
|
+
|
|
61
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
62
|
+
| --- | --- | --- | --- | --- |
|
|
63
|
+
| res | `any` | 是 | - | 服务器响应 |
|
|
64
|
+
| xhr | `XMLHttpRequest` | 是 | - | 请求对象 |
|
|
65
|
+
| file | `UploadFile` | 是 | - | 当前文件 |
|
|
66
|
+
| files | `UploadFile[]` | 是 | - | 所有文件列表 |
|
|
67
|
+
|
|
68
|
+
事件处理示例:
|
|
50
69
|
```typescript
|
|
51
70
|
const handleSuccess = (res, xhr, file, files) => {
|
|
52
71
|
console.log('上传成功:', res);
|
|
53
72
|
};
|
|
54
73
|
```
|
|
55
74
|
|
|
56
|
-
**error
|
|
75
|
+
**error**
|
|
76
|
+
|
|
77
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
78
|
+
| --- | --- | --- | --- | --- |
|
|
79
|
+
| err | `Error | RequestError` | 是 | - | 错误信息 |
|
|
80
|
+
| file | `File | File[] | UploadFile` | 是 | - | 相关文件 |
|
|
81
|
+
| files | `UploadFile[]` | 是 | - | 所有文件列表 |
|
|
82
|
+
|
|
83
|
+
事件处理示例:
|
|
57
84
|
```typescript
|
|
58
85
|
const handleError = (err, file, files) => {
|
|
59
86
|
Message.error(err.message);
|
|
60
87
|
};
|
|
61
88
|
```
|
|
62
89
|
|
|
63
|
-
## 插槽 (Slots)
|
|
64
|
-
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
65
|
-
| --- | --- | --- | --- |
|
|
66
|
-
| content | 组件展示的内容,当没有子元素时,默认会根据type展示不同的内容 | `undefined` | - |
|
|
67
|
-
| tip | 组件展示的提示信息 | `undefined` | - |
|
|
68
|
-
|
|
69
90
|
## 方法 (Methods)
|
|
70
91
|
| 方法名 | 说明 | 参数 | 返回值 |
|
|
71
92
|
| --- | --- | --- | --- |
|
|
72
93
|
| submit | 手动上传时,调用该方法开始上传 | `-` | `void` |
|
|
73
94
|
|
|
74
95
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
96
|
+
### 未设置 action 属性
|
|
75
97
|
> **错误用法**: `<Upload /> <!-- 缺少上传地址 -->`
|
|
76
98
|
> **正确写法**: `<Upload action="/api/upload" />`
|
|
77
99
|
> **说明**: 必须设置 action 属性指定上传地址
|
|
78
100
|
|
|
101
|
+
### maxSize 单位理解错误
|
|
79
102
|
> **错误用法**: `<Upload :maxSize="1024 * 1024" /> <!-- 期望 1MB,实际是 1GB -->`
|
|
80
103
|
> **正确写法**: `<Upload :maxSize="1024" /> <!-- 1MB = 1024KB -->`
|
|
81
104
|
> **说明**: maxSize 单位是 KB,1MB = 1024KB
|
|
82
105
|
|
|
106
|
+
### 设置 autoUpload 为 false 但忘记调用 submit
|
|
83
107
|
> **错误用法**: `<Upload :autoUpload="false" /> <!-- 文件不会自动上传 -->`
|
|
84
108
|
> **正确写法**: `<Upload ref="upload" :autoUpload="false" />
|
|
85
109
|
// 需要手动调用 upload.value?.submit()`
|
|
@@ -195,7 +219,7 @@ const handleError = (err: any) => {
|
|
|
195
219
|
|
|
196
220
|
手动控制上传时机
|
|
197
221
|
|
|
198
|
-
**使用的 API**: 属性: action, autoUpload, multiple
|
|
222
|
+
**使用的 API**: 属性: action, autoUpload, multiple | 方法: submit
|
|
199
223
|
|
|
200
224
|
```vue
|
|
201
225
|
<script setup lang="ts">
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 增删行状态管理 (useCRUD)
|
|
2
|
+
|
|
3
|
+
管理数组型表单项的新增与删除能力,并根据最大最小数量约束生成可直接用于按钮禁用态的结果。
|
|
4
|
+
|
|
5
|
+
**关键词**: useCRUD, 动态表单, 新增 删除, 数组项, canAdd, canDelete
|
|
6
|
+
|
|
7
|
+
## 导入语句
|
|
8
|
+
```typescript
|
|
9
|
+
import { useCRUD } from '@ksyun-internal/versatile';
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 参数 (Params)
|
|
13
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
14
|
+
| --- | --- | --- | --- |
|
|
15
|
+
| models | `Ref<T[]>` | 是 | 当前表单项数组 |
|
|
16
|
+
| initItem | `() => T` | 是 | 新增项的初始化工厂函数 |
|
|
17
|
+
| maxInstanceNum | `number` | 否 | 最大可新增数量 |
|
|
18
|
+
| minInstanceNum | `number` | 否 | 最小保留数量 |
|
|
19
|
+
|
|
20
|
+
## 返回值
|
|
21
|
+
```typescript
|
|
22
|
+
{ canAdd: ComputedRef<{ disabled: boolean; msg: string }>; canDelete: ComputedRef<{ disabled: boolean; msg: string }>; addItem: () => void; deleteItem: (index: number) => void; }
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 常见错误与正确用法 (Anti-Hallucination)
|
|
26
|
+
### 直接复用同一个默认对象,导致新增项互相串值
|
|
27
|
+
> **错误用法**: `const defaultItem = { name: '', value: '' }; useCRUD(models, () => defaultItem);`
|
|
28
|
+
> **正确写法**: `useCRUD(models, () => ({ name: '', value: '' }));`
|
|
29
|
+
> **说明**: initItem 应返回新的对象实例,避免多个表单项共享引用。
|
|
30
|
+
|
|
31
|
+
## 使用示例
|
|
32
|
+
### 动态表单行增删
|
|
33
|
+
控制实例配置行的新增与删除
|
|
34
|
+
|
|
35
|
+
```vue
|
|
36
|
+
<script setup lang="ts">
|
|
37
|
+
import { ref } from 'vue';
|
|
38
|
+
import { useCRUD } from '@ksyun-internal/versatile';
|
|
39
|
+
|
|
40
|
+
const models = ref([{ name: '', value: '' }]);
|
|
41
|
+
const { canAdd, canDelete, addItem, deleteItem } = useCRUD(
|
|
42
|
+
models,
|
|
43
|
+
() => ({ name: '', value: '' }),
|
|
44
|
+
5,
|
|
45
|
+
1
|
|
46
|
+
);
|
|
47
|
+
</script>
|
|
48
|
+
```
|
|
49
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 倒计时 (useCountdown)
|
|
2
|
+
|
|
3
|
+
管理秒级或自定义间隔的倒计时流程,提供 start、reset、stop 和 pause/resume 等控制能力。
|
|
4
|
+
|
|
5
|
+
**关键词**: useCountdown, 倒计时, remaining, 短信验证码, start stop, pause resume
|
|
6
|
+
|
|
7
|
+
## 导入语句
|
|
8
|
+
```typescript
|
|
9
|
+
import { useCountdown } from '@ksyun-internal/versatile';
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 参数 (Params)
|
|
13
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
14
|
+
| --- | --- | --- | --- |
|
|
15
|
+
| initialCountdown | `MaybeRefOrGetter<number>` | 是 | 初始倒计时值 |
|
|
16
|
+
| options | `UseCountdownOptions` | 否 | 倒计时配置,可设置 interval、immediate、onTick 和 onComplete |
|
|
17
|
+
|
|
18
|
+
## 返回值
|
|
19
|
+
```typescript
|
|
20
|
+
{ remaining: ShallowRef<number>; isActive: Readonly<ShallowRef<boolean>>; pause: () => void; resume: () => void; reset: (countdown?: MaybeRefOrGetter<number>) => void; stop: () => void; start: (countdown?: MaybeRefOrGetter<number>) => void; }
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 常见错误与正确用法 (Anti-Hallucination)
|
|
24
|
+
### 把 resume 当作重新开始倒计时使用
|
|
25
|
+
> **错误用法**: `resume();`
|
|
26
|
+
> **正确写法**: `start(); // 或 reset(60) 后再 start()`
|
|
27
|
+
> **说明**: resume 只用于恢复暂停中的倒计时,不会重置剩余时间。
|
|
28
|
+
|
|
29
|
+
## 使用示例
|
|
30
|
+
### 短信验证码倒计时
|
|
31
|
+
点击发送验证码后开始倒计时
|
|
32
|
+
|
|
33
|
+
```vue
|
|
34
|
+
<script setup lang="ts">
|
|
35
|
+
import { useCountdown } from '@ksyun-internal/versatile';
|
|
36
|
+
|
|
37
|
+
const { remaining, start, stop } = useCountdown(60, {
|
|
38
|
+
immediate: false,
|
|
39
|
+
onComplete: () => console.log('倒计时结束'),
|
|
40
|
+
});
|
|
41
|
+
</script>
|
|
42
|
+
```
|
|
43
|
+
|