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,114 +12,84 @@ import { Dialog, Button } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| value | `boolean` | `false` | 否 | 弹窗是否展示,可用v-model双向绑定 | `<Dialog v-model="visible"
|
|
18
|
-
| title | `string` | `"提示"` | 否 | 弹窗标题 | `<Dialog v-model="visible" title="确认操作"
|
|
19
|
-
| size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 弹窗尺寸 | `<Dialog v-model="visible" size="small"
|
|
20
|
-
| width | `number | string` | `undefined` | 否 | 指定弹窗宽度,number类型时单位为px,string类型需要指定单位 | `<Dialog v-model="visible" :width="800"
|
|
21
|
-
| loading | `boolean` | `false` | 否 | "确定"按钮是否为加载状态 | `<Dialog v-model="visible" :loading="isSubmitting"
|
|
22
|
-
| disabledOk | `boolean` | `false` | 否 | "确定"按钮是否为禁用状态 | `<Dialog v-model="visible" :disabledOk="!isValid"
|
|
23
|
-
| okText | `string` | `"确定"` | 否 | "确定"按钮文案 | `<Dialog v-model="visible" okText="保存"
|
|
24
|
-
| cancelText | `string` | `"取消"` | 否 | "取消"按钮文案 | `<Dialog v-model="visible" cancelText="放弃"
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| value | `boolean` | `false` | 否 | 弹窗是否展示,可用v-model双向绑定 | - | `<Dialog v-model="visible">` |
|
|
18
|
+
| title | `string` | `"提示"` | 否 | 弹窗标题 | - | `<Dialog v-model="visible" title="确认操作">` |
|
|
19
|
+
| size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 弹窗尺寸 | - | `<Dialog v-model="visible" size="small">` |
|
|
20
|
+
| width | `number | string` | `undefined` | 否 | 指定弹窗宽度,number类型时单位为px,string类型需要指定单位 | - | `<Dialog v-model="visible" :width="800">` |
|
|
21
|
+
| loading | `boolean` | `false` | 否 | "确定"按钮是否为加载状态 | - | `<Dialog v-model="visible" :loading="isSubmitting">` |
|
|
22
|
+
| disabledOk | `boolean` | `false` | 否 | "确定"按钮是否为禁用状态 | - | `<Dialog v-model="visible" :disabledOk="!isValid">` |
|
|
23
|
+
| okText | `string` | `"确定"` | 否 | "确定"按钮文案 | - | `<Dialog v-model="visible" okText="保存">` |
|
|
24
|
+
| cancelText | `string` | `"取消"` | 否 | "取消"按钮文案 | - | `<Dialog v-model="visible" cancelText="放弃">` |
|
|
25
|
+
| ok | `() => void` | `undefined` | 否 | "确定"按钮点击后自定义回调函数 | - | `<Dialog v-model="visible" :ok="handleOk">` |
|
|
26
|
+
| cancel | `() => void` | `undefined` | 否 | "取消"按钮点击后自定义回调函数 | - | `<Dialog v-model="visible" :cancel="handleCancel">` |
|
|
27
|
+
| container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹窗插入的位置,默认追加到 body | - | `<Dialog v-model="visible" :container="() => document.body">` |
|
|
28
|
+
| overlay | `boolean` | `true` | 否 | 是否展示遮罩层 | - | `<Dialog v-model="visible" :overlay="false">` |
|
|
29
|
+
| closable | `boolean` | `true` | 否 | 点击遮罩层是否可以关闭弹窗 | - | `<Dialog v-model="visible" :closable="false">` |
|
|
30
|
+
| terminate | `() => void` | `undefined` | 否 | 用户点击关闭按钮、遮罩层或按 ESC 键时的回调函数 | - | `<Dialog v-model="visible" :terminate="handleTerminate">` |
|
|
31
|
+
| escClosable | `boolean` | `true` | 否 | 是否按ESC键关闭弹窗 | - | `<Dialog v-model="visible" :escClosable="false">` |
|
|
32
|
+
| hideClose | `boolean` | `false` | 否 | 是否隐藏右上角关闭按钮 | - | `<Dialog v-model="visible" hideClose>` |
|
|
33
|
+
| draggable | `boolean` | `true` | 否 | 弹窗是否可拖拽 | - | `<Dialog v-model="visible" :draggable="false">` |
|
|
34
|
+
| mode | `"destroy" | "hide"` | `"hide"` | 否 | 指定主体元素在关闭状态下的渲染方式 | - | `<Dialog v-model="visible" mode="destroy">` |
|
|
31
35
|
|
|
32
36
|
## 事件 (Events)
|
|
33
37
|
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
34
38
|
| --- | --- | --- | --- | --- |
|
|
35
|
-
| open | `@open` | 弹窗打开后触发 | `-` | `<Dialog v-model="visible" @open="handleOpen"
|
|
36
|
-
| close | `@close` | 弹窗关闭后触发,不管是什么原因导致的关闭 | `-` | `<Dialog v-model="visible" @close="handleClose"
|
|
37
|
-
| ok | `@ok` | 点击确定按钮时触发 | `-` | `<Dialog v-model="visible" @ok="handleOk"
|
|
38
|
-
| cancel | `@cancel` | 点击取消按钮时触发 | `-` | `<Dialog v-model="visible" @cancel="handleCancel"
|
|
39
|
-
| terminate | `@terminate` | 用户强行关闭弹窗时触发:点击关闭按钮、点击遮罩层、按ESC键 | `-` | `<Dialog v-model="visible" @terminate="handleTerminate"
|
|
40
|
-
| afterClose | `@after-close` | 弹窗退出动画执行完成后触发 | `-` | `<Dialog v-model="visible" @after-close="handleAfterClose"
|
|
41
|
-
|
|
42
|
-
### 事件处理函数示例
|
|
43
|
-
**open**:
|
|
44
|
-
```typescript
|
|
45
|
-
const handleOpen = () => {
|
|
46
|
-
console.log('弹窗已打开');
|
|
47
|
-
};
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**close**:
|
|
51
|
-
```typescript
|
|
52
|
-
const handleClose = () => {
|
|
53
|
-
console.log('弹窗已关闭');
|
|
54
|
-
};
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**ok**:
|
|
58
|
-
```typescript
|
|
59
|
-
const handleOk = () => {
|
|
60
|
-
// 处理确定逻辑
|
|
61
|
-
visible.value = false;
|
|
62
|
-
};
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**cancel**:
|
|
66
|
-
```typescript
|
|
67
|
-
const handleCancel = () => {
|
|
68
|
-
visible.value = false;
|
|
69
|
-
};
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**terminate**:
|
|
73
|
-
```typescript
|
|
74
|
-
const handleTerminate = () => {
|
|
75
|
-
console.log('用户强行关闭了弹窗');
|
|
76
|
-
};
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**afterClose**:
|
|
80
|
-
```typescript
|
|
81
|
-
const handleAfterClose = () => {
|
|
82
|
-
// 动画完成后清理
|
|
83
|
-
};
|
|
84
|
-
```
|
|
39
|
+
| open | `@open` | 弹窗打开后触发 | `-` | `<Dialog v-model="visible" @open="handleOpen">` |
|
|
40
|
+
| close | `@close` | 弹窗关闭后触发,不管是什么原因导致的关闭 | `-` | `<Dialog v-model="visible" @close="handleClose">` |
|
|
41
|
+
| ok | `@ok` | 点击确定按钮时触发 | `-` | `<Dialog v-model="visible" @ok="handleOk">` |
|
|
42
|
+
| cancel | `@cancel` | 点击取消按钮时触发 | `-` | `<Dialog v-model="visible" @cancel="handleCancel">` |
|
|
43
|
+
| terminate | `@terminate` | 用户强行关闭弹窗时触发:点击关闭按钮、点击遮罩层、按ESC键 | `-` | `<Dialog v-model="visible" @terminate="handleTerminate">` |
|
|
44
|
+
| afterClose | `@after-close` | 弹窗退出动画执行完成后触发 | `-` | `<Dialog v-model="visible" @after-close="handleAfterClose">` |
|
|
85
45
|
|
|
86
46
|
## 插槽 (Slots)
|
|
87
47
|
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
88
48
|
| --- | --- | --- | --- |
|
|
89
|
-
|
|
|
90
|
-
<
|
|
91
|
-
<!-- 完全自定义弹窗结构 -->
|
|
92
|
-
</template>
|
|
49
|
+
| default | 弹窗主体内容(body区域) | `默认插槽` | `<Dialog v-model="visible">
|
|
50
|
+
<p>弹窗内容</p>
|
|
93
51
|
</Dialog>` |
|
|
94
52
|
| header | 扩展弹窗头部 | `#header` | `<Dialog v-model="visible">
|
|
95
53
|
<template #header>
|
|
96
54
|
<h2>自定义头部</h2>
|
|
97
55
|
</template>
|
|
98
56
|
</Dialog>` |
|
|
99
|
-
|
|
|
100
|
-
| footer | 扩展弹窗底部 | `#footer` | `<Dialog v-model="visible">
|
|
57
|
+
| footer | 扩展弹窗底部按钮区域 | `#footer` | `<Dialog v-model="visible">
|
|
101
58
|
<template #footer>
|
|
102
59
|
<Button @click="visible = false">关闭</Button>
|
|
103
60
|
<Button type="primary" @click="handleSubmit">提交</Button>
|
|
104
61
|
</template>
|
|
105
62
|
</Dialog>` |
|
|
106
|
-
|
|
|
63
|
+
| content | 定义整个弹窗体,包括header、body、footer | `#content` | `<Dialog v-model="visible">
|
|
64
|
+
<template #content>
|
|
65
|
+
<!-- 完全自定义弹窗结构 -->
|
|
66
|
+
</template>
|
|
67
|
+
</Dialog>` |
|
|
107
68
|
|
|
108
69
|
## 方法 (Methods)
|
|
109
70
|
| 方法名 | 说明 | 参数 | 返回值 |
|
|
110
71
|
| --- | --- | --- | --- |
|
|
111
|
-
| show | 弹出弹窗 |
|
|
112
|
-
| close | 关闭弹窗 |
|
|
113
|
-
| showLoading | "确定"按钮变为加载状态 |
|
|
114
|
-
| hideLoading | "确定"按钮变为正常状态 |
|
|
72
|
+
| show | 弹出弹窗 | `props?: DialogProps` | `Promise` |
|
|
73
|
+
| close | 关闭弹窗 | `-` | `void` |
|
|
74
|
+
| showLoading | "确定"按钮变为加载状态 | `-` | `void` |
|
|
75
|
+
| hideLoading | "确定"按钮变为正常状态 | `-` | `void` |
|
|
76
|
+
|
|
77
|
+
### 方法参数说明
|
|
78
|
+
**show**
|
|
79
|
+
|
|
80
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
81
|
+
| --- | --- | --- | --- | --- |
|
|
82
|
+
| props | `DialogProps` | 否 | - | 可选的临时弹窗配置,会在本次显示时覆盖标题、按钮文案或宽度等属性。 |
|
|
115
83
|
|
|
116
84
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
85
|
+
### 静态方法调用时未正确导入Dialog
|
|
117
86
|
> **错误用法**: `import { confirm } from '@king-design/vue';
|
|
118
87
|
confirm({ title: '确认' });`
|
|
119
88
|
> **正确写法**: `import { Dialog } from '@king-design/vue';
|
|
120
89
|
Dialog.confirm({ title: '确认' });`
|
|
121
90
|
> **说明**: confirm、success、warning、error是Dialog的静态方法,需要通过Dialog.xxx()调用
|
|
122
91
|
|
|
92
|
+
### @ok事件中未关闭弹窗
|
|
123
93
|
> **错误用法**: `const handleOk = () => {
|
|
124
94
|
// 只处理业务逻辑,忘记关闭弹窗
|
|
125
95
|
submitData();
|
|
@@ -130,6 +100,7 @@ Dialog.confirm({ title: '确认' });`
|
|
|
130
100
|
};`
|
|
131
101
|
> **说明**: 使用@ok事件时,弹窗不会自动关闭,需要在处理函数中手动设置visible为false
|
|
132
102
|
|
|
103
|
+
### v-model语法错误
|
|
133
104
|
> **错误用法**: `<Dialog :value="visible" @update:value="visible = $event">`
|
|
134
105
|
> **正确写法**: `<Dialog v-model="visible">`
|
|
135
106
|
> **说明**: Vue 3中应使用v-model语法糖,不需要手动拆分:value和@update:value
|
|
@@ -12,13 +12,13 @@ import { Divider } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| borderType | `"solid" | "dashed" | "dotted" | "double"` | `"solid"` | 否 | 定义线的类型 | `<Divider borderType="dashed">虚线</Divider>` |
|
|
18
|
-
| position | `"left" | "right" | "center"` | `"center"` | 否 | 定义文字位置 | `<Divider position="left">左侧文字</Divider>` |
|
|
19
|
-
| type | `"vertical" | "horizontal"` | `"vertical"` | 否 | 定义排列方式(水平或垂直)。注意:'horizontal' 用于创建垂直分割线(水平排列),'vertical' 用于创建水平分割线(垂直排列)。 | `<Divider type="horizontal" />` |
|
|
20
|
-
| theme | `"light" | "dark"` | `"light"` | 否 | 定义主题,适用于深/浅色背景 | `<Divider theme="dark" />` |
|
|
21
|
-
| margin | `"large" | "default" | "small" | "none" | number` | `"default"` | 否 | 定义Divider上下(或左右)外边距 | `<Divider margin="large" />` |
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| borderType | `"solid" | "dashed" | "dotted" | "double"` | `"solid"` | 否 | 定义线的类型 | - | `<Divider borderType="dashed">虚线</Divider>` |
|
|
18
|
+
| position | `"left" | "right" | "center"` | `"center"` | 否 | 定义文字位置 | - | `<Divider position="left">左侧文字</Divider>` |
|
|
19
|
+
| type | `"vertical" | "horizontal"` | `"vertical"` | 否 | 定义排列方式(水平或垂直)。注意:'horizontal' 用于创建垂直分割线(水平排列),'vertical' 用于创建水平分割线(垂直排列)。 | - | `<Divider type="horizontal" />` |
|
|
20
|
+
| theme | `"light" | "dark"` | `"light"` | 否 | 定义主题,适用于深/浅色背景 | - | `<Divider theme="dark" />` |
|
|
21
|
+
| margin | `"large" | "default" | "small" | "none" | number` | `"default"` | 否 | 定义Divider上下(或左右)外边距 | - | `<Divider margin="large" />` |
|
|
22
22
|
|
|
23
23
|
## 插槽 (Slots)
|
|
24
24
|
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
@@ -26,10 +26,12 @@ import { Divider } from '@king-design/vue';
|
|
|
26
26
|
| default | 分割线中间的文字内容 | `#default` | `<Divider>文字内容</Divider>` |
|
|
27
27
|
|
|
28
28
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
29
|
+
### 混淆 vertical 和 horizontal 的含义
|
|
29
30
|
> **错误用法**: `<Divider type="vertical" /> <!-- 想创建垂直分割线 -->`
|
|
30
31
|
> **正确写法**: `<Divider type="horizontal" /> <!-- vertical是默认值(水平线),horizontal才是垂直线 -->`
|
|
31
32
|
> **说明**: Divider 的 type 属性指的是排列方式。vertical 表示垂直排列(即上下分隔,产生水平线),horizontal 表示水平排列(即左右分隔,产生垂直线)。
|
|
32
33
|
|
|
34
|
+
### 自定义 margin 时未使用动态绑定
|
|
33
35
|
> **错误用法**: `<Divider margin="20" />`
|
|
34
36
|
> **正确写法**: `<Divider :margin="20" />`
|
|
35
37
|
> **说明**: 如果传入的是数字类型的 margin,需要使用 v-bind 语法 (:margin)。
|
|
@@ -12,108 +12,67 @@ import { Drawer } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| value | `boolean` | `false` | 否 | 抽屉是否展示,可用 v-model 双向绑定 | `<Drawer v-model="visible"
|
|
18
|
-
| title | `string` | `"提示"` | 否 | 抽屉标题 | `<Drawer title="抽屉标题"
|
|
19
|
-
| placement | `"top" | "bottom" | "left" | "right"` | `"right"` | 否 | 抽屉弹出的位置 | `<Drawer placement="left"
|
|
20
|
-
| size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 抽屉尺寸 | `<Drawer size="large"
|
|
21
|
-
| width | `number | string` | `undefined` | 否 | 指定抽屉宽度,number 类型时单位为 px,string 类型需指定单位 | `<Drawer :width="500"
|
|
22
|
-
| loading | `boolean` | `false` | 否 | "确定"按钮是否为加载状态 | `<Drawer :loading="isSubmitting"
|
|
23
|
-
| disabledOk | `boolean` | `false` | 否 | "确定"按钮是否为禁用状态 | `<Drawer :disabledOk="!isFormValid"
|
|
24
|
-
| okText | `string` | `"确定"` | 否 | "确定"按钮文案 | `<Drawer okText="保存"
|
|
25
|
-
| cancelText | `string` | `"取消"` | 否 | "取消"按钮文案 | `<Drawer cancelText="关闭"
|
|
26
|
-
| ok | `() => void` | `undefined` | 否 | "确定"按钮点击后自定义回调函数 | `<Drawer :ok="handleOk"
|
|
27
|
-
| cancel | `() => void` | `undefined` | 否 | "取消"按钮点击后自定义回调函数 | `<Drawer :cancel="handleCancel"
|
|
28
|
-
| hideClose | `boolean` | `false` | 否 | 是否隐藏右上角关闭按钮 | `<Drawer hideClose
|
|
29
|
-
| overlay | `boolean` | `true` | 否 | 是否展示遮罩层 | `<Drawer :overlay="false"
|
|
30
|
-
| closable | `boolean` | `true` | 否 | 点击遮罩层是否可以关闭抽屉 | `<Drawer :closable="false"
|
|
31
|
-
| escClosable | `boolean` | `true` | 否 | 是否按 ESC 键时关闭抽屉 | `<Drawer :escClosable="false"
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| value | `boolean` | `false` | 否 | 抽屉是否展示,可用 v-model 双向绑定 | - | `<Drawer v-model="visible">` |
|
|
18
|
+
| title | `string` | `"提示"` | 否 | 抽屉标题 | - | `<Drawer title="抽屉标题">` |
|
|
19
|
+
| placement | `"top" | "bottom" | "left" | "right"` | `"right"` | 否 | 抽屉弹出的位置 | - | `<Drawer placement="left">` |
|
|
20
|
+
| size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 抽屉尺寸 | - | `<Drawer size="large">` |
|
|
21
|
+
| width | `number | string` | `undefined` | 否 | 指定抽屉宽度,number 类型时单位为 px,string 类型需指定单位 | - | `<Drawer :width="500">` |
|
|
22
|
+
| loading | `boolean` | `false` | 否 | "确定"按钮是否为加载状态 | - | `<Drawer :loading="isSubmitting">` |
|
|
23
|
+
| disabledOk | `boolean` | `false` | 否 | "确定"按钮是否为禁用状态 | - | `<Drawer :disabledOk="!isFormValid">` |
|
|
24
|
+
| okText | `string` | `"确定"` | 否 | "确定"按钮文案 | - | `<Drawer okText="保存">` |
|
|
25
|
+
| cancelText | `string` | `"取消"` | 否 | "取消"按钮文案 | - | `<Drawer cancelText="关闭">` |
|
|
26
|
+
| ok | `() => void` | `undefined` | 否 | "确定"按钮点击后自定义回调函数 | - | `<Drawer :ok="handleOk">` |
|
|
27
|
+
| cancel | `() => void` | `undefined` | 否 | "取消"按钮点击后自定义回调函数 | - | `<Drawer :cancel="handleCancel">` |
|
|
28
|
+
| hideClose | `boolean` | `false` | 否 | 是否隐藏右上角关闭按钮 | - | `<Drawer hideClose>` |
|
|
29
|
+
| overlay | `boolean` | `true` | 否 | 是否展示遮罩层 | - | `<Drawer :overlay="false">` |
|
|
30
|
+
| closable | `boolean` | `true` | 否 | 点击遮罩层是否可以关闭抽屉 | - | `<Drawer :closable="false">` |
|
|
31
|
+
| escClosable | `boolean` | `true` | 否 | 是否按 ESC 键时关闭抽屉 | - | `<Drawer :escClosable="false">` |
|
|
32
|
+
| draggable | `boolean` | `true` | 否 | 抽屉是否可拖拽 | - | `<Drawer :draggable="false">` |
|
|
33
|
+
| terminate | `() => void` | `undefined` | 否 | 用户点击关闭按钮、遮罩层或按 ESC 键时的回调函数 | - | `<Drawer :terminate="handleTerminate">` |
|
|
34
|
+
| container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定抽屉插入的位置,默认追加到 body | - | `<Drawer :container="() => document.body">` |
|
|
35
|
+
| mode | `"destroy" | "hide"` | `"hide"` | 否 | 指定关闭状态下的渲染方式 | - | `<Drawer mode="destroy">` |
|
|
35
36
|
|
|
36
37
|
## 事件 (Events)
|
|
37
38
|
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
38
39
|
| --- | --- | --- | --- | --- |
|
|
39
|
-
| open | `@open` | 抽屉打开后触发 | `-` | `<Drawer @open="handleOpen"
|
|
40
|
-
| close | `@close` | 抽屉关闭后触发,不管是什么原因导致的关闭 | `-` | `<Drawer @close="handleClose"
|
|
41
|
-
| ok | `@ok` | 点击确定按钮时触发 | `-` | `<Drawer @ok="handleOk"
|
|
42
|
-
| cancel | `@cancel` | 点击取消按钮时触发 | `-` | `<Drawer @cancel="handleCancel"
|
|
43
|
-
| terminate | `@terminate` | 用户强行关闭抽屉时触发(点击关闭按钮、遮罩层或按 ESC) | `-` | `<Drawer @terminate="handleTerminate"
|
|
44
|
-
| afterClose | `@afterClose` | 抽屉退出动画执行完成后触发 | `-` | `<Drawer @afterClose="handleAfterClose"
|
|
45
|
-
|
|
46
|
-
### 事件处理函数示例
|
|
47
|
-
**open**:
|
|
48
|
-
```typescript
|
|
49
|
-
const handleOpen = () => {
|
|
50
|
-
console.log('抽屉已打开');
|
|
51
|
-
};
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**close**:
|
|
55
|
-
```typescript
|
|
56
|
-
const handleClose = () => {
|
|
57
|
-
console.log('抽屉已关闭');
|
|
58
|
-
};
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**ok**:
|
|
62
|
-
```typescript
|
|
63
|
-
const handleOk = () => {
|
|
64
|
-
console.log('点击了确定');
|
|
65
|
-
};
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
**cancel**:
|
|
69
|
-
```typescript
|
|
70
|
-
const handleCancel = () => {
|
|
71
|
-
console.log('点击了取消');
|
|
72
|
-
};
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**terminate**:
|
|
76
|
-
```typescript
|
|
77
|
-
const handleTerminate = () => {
|
|
78
|
-
console.log('用户强行关闭');
|
|
79
|
-
};
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**afterClose**:
|
|
83
|
-
```typescript
|
|
84
|
-
const handleAfterClose = () => {
|
|
85
|
-
console.log('动画完成');
|
|
86
|
-
};
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 插槽 (Slots)
|
|
90
|
-
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
91
|
-
| --- | --- | --- | --- |
|
|
92
|
-
| content | 定义整个弹窗体,包括header,body,footer | `undefined` | - |
|
|
93
|
-
| header | 扩展弹窗头部 | `undefined` | - |
|
|
94
|
-
| body | 扩展弹窗主体部分 | `undefined` | - |
|
|
95
|
-
| footer | 扩展弹窗底部 | `undefined` | - |
|
|
96
|
-
| footer-wrapper | 扩展弹窗整个底部,上述footer是它下面一个子扩展点 | `undefined` | - |
|
|
40
|
+
| open | `@open` | 抽屉打开后触发 | `-` | `<Drawer @open="handleOpen">` |
|
|
41
|
+
| close | `@close` | 抽屉关闭后触发,不管是什么原因导致的关闭 | `-` | `<Drawer @close="handleClose">` |
|
|
42
|
+
| ok | `@ok` | 点击确定按钮时触发 | `-` | `<Drawer @ok="handleOk">` |
|
|
43
|
+
| cancel | `@cancel` | 点击取消按钮时触发 | `-` | `<Drawer @cancel="handleCancel">` |
|
|
44
|
+
| terminate | `@terminate` | 用户强行关闭抽屉时触发(点击关闭按钮、遮罩层或按 ESC) | `-` | `<Drawer @terminate="handleTerminate">` |
|
|
45
|
+
| afterClose | `@afterClose` | 抽屉退出动画执行完成后触发 | `-` | `<Drawer @afterClose="handleAfterClose">` |
|
|
97
46
|
|
|
98
47
|
## 方法 (Methods)
|
|
99
48
|
| 方法名 | 说明 | 参数 | 返回值 |
|
|
100
49
|
| --- | --- | --- | --- |
|
|
101
|
-
| show | 弹出抽屉 |
|
|
102
|
-
| close | 关闭抽屉 |
|
|
103
|
-
| showLoading | "确定"按钮变为加载状态 |
|
|
104
|
-
| hideLoading | "确定"按钮变为正常状态 |
|
|
105
|
-
| disableOk | "确定"按钮变为禁用状态 |
|
|
106
|
-
| enableOk | "确定"按钮变为正常状态 |
|
|
50
|
+
| show | 弹出抽屉 | `props?: DrawerProps` | `Promise` |
|
|
51
|
+
| close | 关闭抽屉 | `-` | `void` |
|
|
52
|
+
| showLoading | "确定"按钮变为加载状态 | `-` | `void` |
|
|
53
|
+
| hideLoading | "确定"按钮变为正常状态 | `-` | `void` |
|
|
54
|
+
| disableOk | "确定"按钮变为禁用状态 | `-` | `void` |
|
|
55
|
+
| enableOk | "确定"按钮变为正常状态 | `-` | `void` |
|
|
56
|
+
|
|
57
|
+
### 方法参数说明
|
|
58
|
+
**show**
|
|
59
|
+
|
|
60
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
61
|
+
| --- | --- | --- | --- | --- |
|
|
62
|
+
| props | `DrawerProps` | 否 | - | 可选的临时抽屉配置,会在本次显示时覆盖标题、方向、宽度或按钮状态。 |
|
|
107
63
|
|
|
108
64
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
65
|
+
### placement 值拼写错误
|
|
109
66
|
> **错误用法**: `<Drawer placement="center">`
|
|
110
67
|
> **正确写法**: `<Drawer placement="right">`
|
|
111
68
|
> **说明**: placement 只支持 top, bottom, left, right,不存在 center 值
|
|
112
69
|
|
|
70
|
+
### 使用错误的 v-model 属性名
|
|
113
71
|
> **错误用法**: `<Drawer v-model:visible="visible">`
|
|
114
72
|
> **正确写法**: `<Drawer v-model="visible">`
|
|
115
73
|
> **说明**: Drawer 使用 v-model 控制显示状态,不是 v-model:visible
|
|
116
74
|
|
|
75
|
+
### 混淆 closable 和 hideClose
|
|
117
76
|
> **错误用法**: `<Drawer :closable="true"> <!-- 想隐藏关闭按钮 -->`
|
|
118
77
|
> **正确写法**: `<Drawer hideClose> <!-- 隐藏关闭按钮 -->
|
|
119
78
|
<Drawer :closable="false"> <!-- 禁止点击遮罩关闭 -->`
|
|
@@ -12,37 +12,65 @@ import { Dropdown, DropdownMenu, DropdownItem } from '@king-design/vue';
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
## 属性 (Props)
|
|
15
|
-
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| trigger | `"hover" | "click" | "contextmenu" | "focus"` | `"hover"` | 否 | 触发方式 | `<Dropdown trigger="click"
|
|
18
|
-
| value | `boolean` | `false` | 否 | 是否展示菜单,可用 v-model 双向绑定 | `<Dropdown v-model="visible"
|
|
19
|
-
| disabled | `boolean` | `false` | 否 | 是否禁用整个菜单 | `<Dropdown disabled
|
|
20
|
-
| position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | `<Dropdown position="right"
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| trigger | `"hover" | "click" | "contextmenu" | "focus"` | `"hover"` | 否 | 触发方式 | - | `<Dropdown trigger="click">` |
|
|
18
|
+
| value | `boolean` | `false` | 否 | 是否展示菜单,可用 v-model 双向绑定 | - | `<Dropdown v-model="visible">` |
|
|
19
|
+
| disabled | `boolean` | `false` | 否 | 是否禁用整个菜单 | - | `<Dropdown disabled>` |
|
|
20
|
+
| position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | - | `<Dropdown position="right">` |
|
|
21
|
+
| collison | `Collision | [Collision, Collision]` | `undefined` | 否 | 碰撞检测策略,控制弹层超出边界时的处理方式。注意源码字段名拼写为 collison。 | - | `<Dropdown :collison="'flipfit'">` |
|
|
22
|
+
| of | `"self" | "parent" | Event` | `"self"` | 否 | 弹出菜单的位置是相对当前触发元素还是触发元素所在的菜单元素 | - | `<Dropdown of="parent">` |
|
|
23
|
+
| container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置,默认追加到 body | - | `<Dropdown :container="() => document.body">` |
|
|
24
|
+
| alwaysShowOnClick | `boolean` | `false` | 否 | 不管什么触发方式,重复点击触发器都不隐藏弹层 | - | `<Dropdown alwaysShowOnClick>` |
|
|
24
25
|
|
|
25
26
|
## 事件 (Events)
|
|
26
27
|
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
27
28
|
| --- | --- | --- | --- | --- |
|
|
28
|
-
| show | `@show` | 菜单展示时触发 | `-` | `<Dropdown @show="handleShow"
|
|
29
|
-
| hide | `@hide` | 菜单隐藏时触发 | `-` | `<Dropdown @hide="handleHide"
|
|
29
|
+
| show | `@show` | 菜单展示时触发 | `-` | `<Dropdown @show="handleShow">` |
|
|
30
|
+
| hide | `@hide` | 菜单隐藏时触发 | `-` | `<Dropdown @hide="handleHide">` |
|
|
31
|
+
| positioned | `@positioned` | 下拉菜单完成定位计算后触发,可用于读取最终落位方向和坐标。 | `feedback: Feedback` | `<Dropdown @positioned="handlePositioned">` |
|
|
30
32
|
|
|
31
|
-
###
|
|
32
|
-
**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
```
|
|
33
|
+
### 事件参数说明
|
|
34
|
+
**positioned**
|
|
35
|
+
|
|
36
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
37
|
+
| --- | --- | --- | --- | --- |
|
|
38
|
+
| feedback | `Feedback` | 是 | - | 定位反馈对象,描述当前菜单的最终 placement 和坐标信息。 |
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
事件处理示例:
|
|
40
41
|
```typescript
|
|
41
|
-
const
|
|
42
|
-
console.log('
|
|
42
|
+
const handlePositioned = (feedback: Feedback) => {
|
|
43
|
+
console.log('最终位置', feedback.placement);
|
|
43
44
|
};
|
|
44
45
|
```
|
|
45
46
|
|
|
47
|
+
## 方法 (Methods)
|
|
48
|
+
| 方法名 | 说明 | 参数 | 返回值 |
|
|
49
|
+
| --- | --- | --- | --- |
|
|
50
|
+
| show | 主动展开下拉菜单。 | `shouldFocus?: boolean` | `void` |
|
|
51
|
+
| hide | 主动隐藏下拉菜单。 | `immediately?: boolean` | `void` |
|
|
52
|
+
| focusFirst | 把焦点移动到菜单中的第一个可聚焦项。 | `-` | `void` |
|
|
53
|
+
| position | 重新计算当前下拉菜单的位置。 | `callback?: (feedback: Feedback) => void` | `void` |
|
|
54
|
+
|
|
55
|
+
### 方法参数说明
|
|
56
|
+
**show**
|
|
57
|
+
|
|
58
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
59
|
+
| --- | --- | --- | --- | --- |
|
|
60
|
+
| shouldFocus | `boolean` | 否 | - | 展开后是否尝试把焦点移动到菜单内容,用于键盘可访问性场景。 |
|
|
61
|
+
|
|
62
|
+
**hide**
|
|
63
|
+
|
|
64
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
65
|
+
| --- | --- | --- | --- | --- |
|
|
66
|
+
| immediately | `boolean` | 否 | - | 是否立即隐藏并跳过延迟关闭逻辑。 |
|
|
67
|
+
|
|
68
|
+
**position**
|
|
69
|
+
|
|
70
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
71
|
+
| --- | --- | --- | --- | --- |
|
|
72
|
+
| callback | `(feedback: Feedback) => void` | 否 | - | 定位完成后的回调,可读取最终 placement 和坐标。 |
|
|
73
|
+
|
|
46
74
|
## 子组件 (Sub-Components)
|
|
47
75
|
### DropdownMenu
|
|
48
76
|
下拉菜单容器,用于包裹菜单项
|
|
@@ -60,6 +88,7 @@ const handleHide = () => {
|
|
|
60
88
|
- `@click`: 菜单项被点击时触发
|
|
61
89
|
|
|
62
90
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
91
|
+
### 未使用 #menu 插槽
|
|
63
92
|
> **错误用法**: `<Dropdown>
|
|
64
93
|
<Button>菜单</Button>
|
|
65
94
|
<DropdownMenu>
|
|
@@ -76,10 +105,12 @@ const handleHide = () => {
|
|
|
76
105
|
</Dropdown>`
|
|
77
106
|
> **说明**: DropdownMenu 必须放在 #menu 插槽中
|
|
78
107
|
|
|
108
|
+
### trigger 值拼写错误
|
|
79
109
|
> **错误用法**: `<Dropdown trigger="rightclick">`
|
|
80
110
|
> **正确写法**: `<Dropdown trigger="contextmenu">`
|
|
81
111
|
> **说明**: 右键触发应使用 contextmenu,不是 rightclick
|
|
82
112
|
|
|
113
|
+
### DropdownItem 未放在 DropdownMenu 中
|
|
83
114
|
> **错误用法**: `<Dropdown>
|
|
84
115
|
<Button>菜单</Button>
|
|
85
116
|
<template #menu>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# 时长选择 (Duration)
|
|
2
|
+
|
|
3
|
+
用于购买、续费和策略配置场景的时长选择器,支持按月或按小时切换,并可配合内置刻度快速选择常用周期。
|
|
4
|
+
|
|
5
|
+
**关键词**: duration, period, 时长选择, 购买时长, 按小时时长, 续费周期
|
|
6
|
+
|
|
7
|
+
**使用场景**: 购买链路时长选择、资源续费时长选择、按小时设置临时资源周期
|
|
8
|
+
|
|
9
|
+
## 导入语句
|
|
10
|
+
```typescript
|
|
11
|
+
import { Duration } from '@ksyun-internal/versatile';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## 属性 (Props)
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
|
|
16
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
+
| modelValue | `number` | `undefined` | 否 | 当前选中的时长值 | - | - |
|
|
18
|
+
| marksType | `string` | `"month"` | 否 | 刻度类型,控制内置 marks 的生成方式 | - | - |
|
|
19
|
+
| type | `string` | `"month"` | 否 | 时长类型,通常为 month 或 hour | - | - |
|
|
20
|
+
|
|
21
|
+
## 事件 (Events)
|
|
22
|
+
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
23
|
+
| --- | --- | --- | --- | --- |
|
|
24
|
+
| update:modelValue | `@update:modelValue` | 用户选择新的时长后触发,通常用于联动价格或到期时间计算。 | `value?: number` | - |
|
|
25
|
+
|
|
26
|
+
### 事件参数说明
|
|
27
|
+
**update:modelValue**
|
|
28
|
+
|
|
29
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
30
|
+
| --- | --- | --- | --- | --- |
|
|
31
|
+
| value | `number` | 否 | - | 当前选中的时长值。 |
|
|
32
|
+
|
|
33
|
+
## 使用示例
|
|
34
|
+
### 续费时长选择
|
|
35
|
+
**场景**: 在购买或续费流程中选择资源有效时长。
|
|
36
|
+
|
|
37
|
+
按月展示常用刻度,并把结果同步到续费表单。
|
|
38
|
+
|
|
39
|
+
**使用的 API**: 属性: modelValue, type, marksType | 事件: update:modelValue
|
|
40
|
+
|
|
41
|
+
```vue
|
|
42
|
+
<script setup lang="ts">
|
|
43
|
+
import { ref } from 'vue';
|
|
44
|
+
import { Duration } from '@ksyun-internal/versatile';
|
|
45
|
+
|
|
46
|
+
const duration = ref(3);
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<template>
|
|
50
|
+
<Duration v-model="duration" type="month" marks-type="month" />
|
|
51
|
+
</template>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 按小时选择时长
|
|
55
|
+
**场景**: 在临时测试机或弹性资源场景中按小时设置有效时长。
|
|
56
|
+
|
|
57
|
+
在临时资源场景中切换到按小时的时长选择。
|
|
58
|
+
|
|
59
|
+
**使用的 API**: 属性: modelValue, type, marksType | 事件: update:modelValue
|
|
60
|
+
|
|
61
|
+
```vue
|
|
62
|
+
<script setup lang="ts">
|
|
63
|
+
import { ref } from 'vue';
|
|
64
|
+
import { Duration } from '@ksyun-internal/versatile';
|
|
65
|
+
|
|
66
|
+
const duration = ref(12);
|
|
67
|
+
</script>
|
|
68
|
+
|
|
69
|
+
<template>
|
|
70
|
+
<Duration v-model="duration" type="hour" marks-type="hour" />
|
|
71
|
+
</template>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 相关组件
|
|
75
|
+
Slider, TimeRange
|
|
76
|
+
|