king-design-analyzer 2.1.9 → 2.2.1
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 +109 -0
- package/components/advancedset.json +128 -0
- package/components/affix.json +8 -0
- package/components/aksk.json +172 -0
- package/components/anchor.json +220 -0
- package/components/anchorlink.json +111 -0
- package/components/az.json +15 -2
- package/components/badge.json +8 -0
- package/components/billtypes.json +14 -2
- package/components/breadcrumb.json +9 -1
- package/components/button.json +192 -0
- package/components/buttonlink.json +74 -0
- package/components/card.json +14 -4
- package/components/cardcol.json +142 -0
- package/components/cardcols.json +121 -0
- package/components/cardcontent.json +20 -3
- package/components/cardtabs.json +172 -0
- package/components/carousel.json +7 -0
- package/components/cascader.json +576 -368
- package/components/checkbox.json +51 -4
- package/components/cidrinput.json +140 -0
- package/components/code.json +8 -1
- package/components/collapse.json +335 -341
- package/components/colorpicker.json +217 -0
- package/components/configprovider.json +96 -0
- package/components/copy.json +7 -0
- package/components/copyhover.json +111 -0
- package/components/copyrow.json +125 -0
- package/components/datepicker.json +656 -524
- package/components/description.json +98 -0
- package/components/descriptions.json +10 -3
- package/components/diagram.json +295 -0
- package/components/dialog.json +526 -455
- package/components/divider.json +9 -1
- package/components/drawer.json +603 -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 +152 -0
- package/components/form.json +143 -3
- 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 +165 -0
- package/components/icon.json +13 -1
- package/components/icontooltip.json +19 -1
- package/components/input.json +196 -8
- 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 +24 -3
- package/components/layoutlistcontent.json +157 -0
- package/components/layoutpermissioncontent.json +156 -0
- package/components/layoutstandardlist.json +276 -0
- package/components/layouttabs.json +168 -0
- package/components/lazymount.json +87 -0
- package/components/lazyteleport.json +119 -0
- package/components/menu.json +11 -3
- package/components/notification.json +351 -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 +99 -8
- package/components/queuevisualrange.json +110 -0
- package/components/radio.json +82 -2
- package/components/rate.json +200 -0
- package/components/region.json +14 -2
- package/components/scrollselect.json +140 -0
- 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 +749 -666
- package/components/sidebar.json +198 -0
- package/components/skeleton.json +234 -0
- package/components/slider.json +12 -2
- package/components/spin.json +10 -2
- package/components/spinner.json +419 -429
- package/components/split.json +263 -0
- package/components/sshkeys.json +138 -0
- package/components/status.json +60 -3
- package/components/steps.json +7 -0
- package/components/switch.json +12 -3
- package/components/table.json +24 -2
- package/components/tablecolumnid.json +14 -2
- package/components/tabs.json +14 -2
- package/components/tag.json +8 -5
- package/components/timeline.json +215 -0
- package/components/timepicker.json +147 -3
- package/components/timerange.json +262 -0
- package/components/tip.json +27 -0
- package/components/tooltip.json +492 -395
- package/components/tour.json +418 -372
- package/components/transfer.json +79 -8
- package/components/tree.json +28 -5
- package/components/treeselect.json +612 -475
- package/components/upload.json +474 -473
- package/components/vdialog.json +309 -0
- package/components/vdrawer.json +335 -0
- package/components/virtuallist.json +7 -0
- package/dist/ast/index.d.mts +65 -2
- package/dist/ast/index.d.ts +65 -2
- package/dist/ast/index.js +4 -3
- package/dist/ast/index.mjs +2 -1
- package/dist/chunk-4OTQAQ6J.mjs +341 -0
- package/dist/{chunk-F26GUCGG.js → chunk-4WXOYU2N.js} +32 -9
- package/dist/chunk-6HOIRUQB.mjs +409 -0
- package/dist/chunk-DHLWNT53.js +364 -0
- package/dist/{chunk-H2ET6MMM.mjs → chunk-IPJJMPOO.mjs} +155 -66
- package/dist/{chunk-WYSRJVX4.js → chunk-JJ6AB4ZH.js} +2 -2
- package/dist/{chunk-2W6OCG2S.js → chunk-JNRGUR3O.js} +155 -67
- package/dist/chunk-KF5YBEM5.js +143 -0
- package/dist/{chunk-OJOHB64C.mjs → chunk-LRTDTFFQ.mjs} +28 -5
- package/dist/{chunk-DSWKLUIX.mjs → chunk-NZL6T22V.mjs} +1 -1
- package/dist/chunk-QC6VTSA3.mjs +117 -0
- package/dist/chunk-V5N65MRP.js +411 -0
- package/dist/full/index.d.mts +2 -0
- package/dist/full/index.d.ts +2 -0
- package/dist/full/index.js +7 -6
- package/dist/full/index.mjs +5 -4
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +14 -13
- package/dist/index.mjs +6 -5
- package/dist/metadata/index.d.mts +38 -3
- package/dist/metadata/index.d.ts +38 -3
- package/dist/metadata/index.js +26 -16
- package/dist/metadata/index.mjs +26 -15
- package/dist/resolve-BsLBxlBi.d.mts +24 -0
- package/dist/resolve-BsLBxlBi.d.ts +24 -0
- package/dist/runtime/index.d.mts +2 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.js +4 -4
- package/dist/runtime/index.mjs +2 -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 +5 -5
- package/dist/static/index.mjs +2 -2
- package/docs_for_llm/actions.doc.md +87 -0
- package/docs_for_llm/advancedset.doc.md +98 -0
- package/docs_for_llm/affix.doc.md +20 -7
- package/docs_for_llm/aksk.doc.md +111 -0
- package/docs_for_llm/anchor.doc.md +155 -0
- package/docs_for_llm/anchorlink.doc.md +75 -0
- package/docs_for_llm/az.doc.md +17 -11
- package/docs_for_llm/badge.doc.md +11 -5
- package/docs_for_llm/billtypes.doc.md +17 -11
- package/docs_for_llm/breadcrumb.doc.md +80 -4
- package/docs_for_llm/button.doc.md +91 -18
- package/docs_for_llm/buttonlink.doc.md +64 -0
- package/docs_for_llm/card.doc.md +58 -8
- 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 +31 -10
- package/docs_for_llm/cardtabs.doc.md +106 -0
- package/docs_for_llm/carousel.doc.md +79 -7
- package/docs_for_llm/cascader.doc.md +106 -23
- 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 +147 -14
- package/docs_for_llm/colorpicker.doc.md +104 -0
- package/docs_for_llm/configprovider.doc.md +77 -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 +80 -0
- package/docs_for_llm/datepicker.doc.md +66 -35
- package/docs_for_llm/description.doc.md +75 -0
- package/docs_for_llm/descriptions.doc.md +122 -10
- package/docs_for_llm/diagram.doc.md +343 -0
- package/docs_for_llm/dialog.doc.md +97 -77
- package/docs_for_llm/divider.doc.md +14 -7
- package/docs_for_llm/drawer.doc.md +114 -69
- package/docs_for_llm/dropdown.doc.md +290 -22
- 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 +83 -0
- package/docs_for_llm/form.doc.md +196 -18
- 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 +78 -5
- package/docs_for_llm/header.doc.md +114 -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 +199 -41
- 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 +54 -17
- package/docs_for_llm/layoutlistcontent.doc.md +168 -0
- package/docs_for_llm/layoutpermissioncontent.doc.md +93 -0
- package/docs_for_llm/layoutstandardlist.doc.md +129 -0
- package/docs_for_llm/layouttabs.doc.md +101 -0
- package/docs_for_llm/lazymount.doc.md +82 -0
- package/docs_for_llm/lazyteleport.doc.md +85 -0
- package/docs_for_llm/menu.doc.md +139 -14
- package/docs_for_llm/message.doc.md +93 -10
- package/docs_for_llm/notification.doc.md +214 -0
- 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 +98 -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 +127 -0
- package/docs_for_llm/region.doc.md +25 -13
- package/docs_for_llm/scrollselect.doc.md +90 -0
- 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 +208 -49
- package/docs_for_llm/sidebar.doc.md +133 -0
- package/docs_for_llm/skeleton.doc.md +152 -0
- package/docs_for_llm/slider.doc.md +42 -22
- package/docs_for_llm/spin.doc.md +18 -6
- package/docs_for_llm/spinner.doc.md +28 -18
- package/docs_for_llm/split.doc.md +170 -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 +81 -7
- package/docs_for_llm/switch.doc.md +32 -16
- package/docs_for_llm/table.doc.md +317 -55
- package/docs_for_llm/tablecolumnid.doc.md +36 -16
- package/docs_for_llm/tabs.doc.md +117 -12
- package/docs_for_llm/tag.doc.md +167 -15
- package/docs_for_llm/timeline.doc.md +187 -0
- package/docs_for_llm/timepicker.doc.md +74 -36
- package/docs_for_llm/timerange.doc.md +157 -0
- package/docs_for_llm/tip.doc.md +50 -11
- package/docs_for_llm/tooltip.doc.md +99 -27
- package/docs_for_llm/tour.doc.md +125 -28
- package/docs_for_llm/transfer.doc.md +99 -33
- package/docs_for_llm/tree.doc.md +129 -24
- package/docs_for_llm/treeselect.doc.md +101 -44
- package/docs_for_llm/upload.doc.md +63 -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 +154 -0
- package/docs_for_llm/vdrawer.doc.md +148 -0
- package/docs_for_llm/virtuallist.doc.md +157 -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 +14 -8
- package/dist/chunk-D3Y6FGWA.js +0 -153
- package/dist/chunk-HPAUCD5I.js +0 -156
- package/dist/chunk-L4DS3EXI.mjs +0 -133
- package/dist/chunk-NZ6TLWMD.mjs +0 -151
|
@@ -12,108 +12,153 @@ 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
|
-
|
|
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">` |
|
|
46
|
+
|
|
47
|
+
## 插槽 (Slots)
|
|
48
|
+
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
49
|
+
| --- | --- | --- | --- |
|
|
50
|
+
| content | 定义整个弹窗体,包括header,body,footer | `#content` | `<Drawer>
|
|
51
|
+
<template #content>自定义内容</template>
|
|
52
|
+
</Drawer>` |
|
|
53
|
+
| header | 扩展弹窗头部 | `#header` | `<Drawer>
|
|
54
|
+
<template #header>头部内容</template>
|
|
55
|
+
</Drawer>` |
|
|
56
|
+
| body | 扩展弹窗主体部分 | `#body` | `<Drawer>
|
|
57
|
+
<template #body>
|
|
58
|
+
自定义body内容
|
|
59
|
+
</template>
|
|
60
|
+
</Drawer>` |
|
|
61
|
+
| footer | 扩展弹窗底部 | `#footer` | `<Drawer>
|
|
62
|
+
<template #footer>底部内容</template>
|
|
63
|
+
</Drawer>` |
|
|
64
|
+
| footer-wrapper | 扩展弹窗整个底部,上述footer是它下面一个子扩展点 | `#footer-wrapper` | `<Drawer>
|
|
65
|
+
<template #footer-wrapper>
|
|
66
|
+
自定义footer-wrapper内容
|
|
67
|
+
</template>
|
|
68
|
+
</Drawer>` |
|
|
69
|
+
|
|
70
|
+
### 插槽参数说明
|
|
71
|
+
**content**
|
|
72
|
+
|
|
73
|
+
- 参数结构: 无参数
|
|
74
|
+
|
|
75
|
+
**header**
|
|
76
|
+
|
|
77
|
+
- 参数结构: 无参数
|
|
78
|
+
|
|
79
|
+
**body**
|
|
80
|
+
|
|
81
|
+
- 参数结构: 无参数
|
|
82
|
+
|
|
83
|
+
**footer**
|
|
84
|
+
|
|
85
|
+
- 参数结构: 无参数
|
|
86
|
+
|
|
87
|
+
**footer-wrapper**
|
|
88
|
+
|
|
89
|
+
- 参数结构: 无参数
|
|
90
|
+
|
|
91
|
+
## 方法 (Methods)
|
|
92
|
+
| 方法名 | 说明 | 参数 | 返回值 |
|
|
93
|
+
| --- | --- | --- | --- |
|
|
94
|
+
| show | 弹出抽屉 | `props?: DrawerProps` | `Promise` |
|
|
95
|
+
| close | 关闭抽屉 | `-` | `void` |
|
|
96
|
+
| showLoading | "确定"按钮变为加载状态 | `-` | `void` |
|
|
97
|
+
| hideLoading | "确定"按钮变为正常状态 | `-` | `void` |
|
|
98
|
+
| disableOk | "确定"按钮变为禁用状态 | `-` | `void` |
|
|
99
|
+
| enableOk | "确定"按钮变为正常状态 | `-` | `void` |
|
|
100
|
+
|
|
101
|
+
### 方法参数说明
|
|
102
|
+
**show**
|
|
103
|
+
|
|
104
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
105
|
+
| --- | --- | --- | --- | --- |
|
|
106
|
+
| props | `DrawerProps` | 否 | - | 可选的临时抽屉配置,会在本次显示时覆盖标题、方向、宽度或按钮状态。 |
|
|
107
|
+
|
|
108
|
+
调用示例:
|
|
48
109
|
```typescript
|
|
49
|
-
|
|
50
|
-
console.log('抽屉已打开');
|
|
51
|
-
};
|
|
110
|
+
drawerRef.value?.show();
|
|
52
111
|
```
|
|
53
112
|
|
|
54
|
-
|
|
113
|
+
### 方法调用示例
|
|
114
|
+
**show**
|
|
115
|
+
|
|
55
116
|
```typescript
|
|
56
|
-
|
|
57
|
-
console.log('抽屉已关闭');
|
|
58
|
-
};
|
|
117
|
+
drawerRef.value?.show();
|
|
59
118
|
```
|
|
60
119
|
|
|
61
|
-
**
|
|
120
|
+
**close**
|
|
121
|
+
|
|
62
122
|
```typescript
|
|
63
|
-
|
|
64
|
-
console.log('点击了确定');
|
|
65
|
-
};
|
|
123
|
+
drawerRef.value?.close();
|
|
66
124
|
```
|
|
67
125
|
|
|
68
|
-
**
|
|
126
|
+
**showLoading**
|
|
127
|
+
|
|
69
128
|
```typescript
|
|
70
|
-
|
|
71
|
-
console.log('点击了取消');
|
|
72
|
-
};
|
|
129
|
+
drawerRef.value?.showLoading();
|
|
73
130
|
```
|
|
74
131
|
|
|
75
|
-
**
|
|
132
|
+
**hideLoading**
|
|
133
|
+
|
|
76
134
|
```typescript
|
|
77
|
-
|
|
78
|
-
console.log('用户强行关闭');
|
|
79
|
-
};
|
|
135
|
+
drawerRef.value?.hideLoading();
|
|
80
136
|
```
|
|
81
137
|
|
|
82
|
-
**
|
|
138
|
+
**disableOk**
|
|
139
|
+
|
|
83
140
|
```typescript
|
|
84
|
-
|
|
85
|
-
console.log('动画完成');
|
|
86
|
-
};
|
|
141
|
+
drawerRef.value?.disableOk();
|
|
87
142
|
```
|
|
88
143
|
|
|
89
|
-
|
|
90
|
-
| 插槽名 | 说明 | 模板写法 | 示例 |
|
|
91
|
-
| --- | --- | --- | --- |
|
|
92
|
-
| content | 定义整个弹窗体,包括header,body,footer | `undefined` | - |
|
|
93
|
-
| header | 扩展弹窗头部 | `undefined` | - |
|
|
94
|
-
| body | 扩展弹窗主体部分 | `undefined` | - |
|
|
95
|
-
| footer | 扩展弹窗底部 | `undefined` | - |
|
|
96
|
-
| footer-wrapper | 扩展弹窗整个底部,上述footer是它下面一个子扩展点 | `undefined` | - |
|
|
144
|
+
**enableOk**
|
|
97
145
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
| show | 弹出抽屉 | `` | `Promise` |
|
|
102
|
-
| close | 关闭抽屉 | `` | `void` |
|
|
103
|
-
| showLoading | "确定"按钮变为加载状态 | `` | `void` |
|
|
104
|
-
| hideLoading | "确定"按钮变为正常状态 | `` | `void` |
|
|
105
|
-
| disableOk | "确定"按钮变为禁用状态 | `` | `void` |
|
|
106
|
-
| enableOk | "确定"按钮变为正常状态 | `` | `void` |
|
|
146
|
+
```typescript
|
|
147
|
+
drawerRef.value?.enableOk();
|
|
148
|
+
```
|
|
107
149
|
|
|
108
150
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
151
|
+
### placement 值拼写错误
|
|
109
152
|
> **错误用法**: `<Drawer placement="center">`
|
|
110
153
|
> **正确写法**: `<Drawer placement="right">`
|
|
111
154
|
> **说明**: placement 只支持 top, bottom, left, right,不存在 center 值
|
|
112
155
|
|
|
156
|
+
### 使用错误的 v-model 属性名
|
|
113
157
|
> **错误用法**: `<Drawer v-model:visible="visible">`
|
|
114
158
|
> **正确写法**: `<Drawer v-model="visible">`
|
|
115
159
|
> **说明**: Drawer 使用 v-model 控制显示状态,不是 v-model:visible
|
|
116
160
|
|
|
161
|
+
### 混淆 closable 和 hideClose
|
|
117
162
|
> **错误用法**: `<Drawer :closable="true"> <!-- 想隐藏关闭按钮 -->`
|
|
118
163
|
> **正确写法**: `<Drawer hideClose> <!-- 隐藏关闭按钮 -->
|
|
119
164
|
<Drawer :closable="false"> <!-- 禁止点击遮罩关闭 -->`
|
|
@@ -12,54 +12,320 @@ 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
|
+
**positioned**
|
|
35
|
+
|
|
36
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
37
|
+
| --- | --- | --- | --- | --- |
|
|
38
|
+
| feedback | `Feedback` | 是 | - | 定位反馈对象,描述当前菜单的最终 placement 和坐标信息。 |
|
|
39
|
+
|
|
40
|
+
事件处理示例:
|
|
33
41
|
```typescript
|
|
34
|
-
const
|
|
35
|
-
console.log('
|
|
42
|
+
const handlePositioned = (feedback: Feedback) => {
|
|
43
|
+
console.log('最终位置', feedback.placement);
|
|
36
44
|
};
|
|
37
45
|
```
|
|
38
46
|
|
|
39
|
-
|
|
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
|
+
调用示例:
|
|
40
63
|
```typescript
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
64
|
+
dropdownRef.value?.show(true);
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**hide**
|
|
68
|
+
|
|
69
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
70
|
+
| --- | --- | --- | --- | --- |
|
|
71
|
+
| immediately | `boolean` | 否 | - | 是否立即隐藏并跳过延迟关闭逻辑。 |
|
|
72
|
+
|
|
73
|
+
调用示例:
|
|
74
|
+
```typescript
|
|
75
|
+
dropdownRef.value?.hide(true);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**position**
|
|
79
|
+
|
|
80
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
81
|
+
| --- | --- | --- | --- | --- |
|
|
82
|
+
| callback | `(feedback: Feedback) => void` | 否 | - | 定位完成后的回调,可读取最终 placement 和坐标。 |
|
|
83
|
+
|
|
84
|
+
调用示例:
|
|
85
|
+
```typescript
|
|
86
|
+
dropdownRef.value?.position((feedback) => console.log(feedback.placement));
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 方法调用示例
|
|
90
|
+
**show**
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
dropdownRef.value?.show(true);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**hide**
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
dropdownRef.value?.hide(true);
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**focusFirst**
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
dropdownRef.value?.focusFirst();
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**position**
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
dropdownRef.value?.position((feedback) => console.log(feedback.placement));
|
|
44
112
|
```
|
|
45
113
|
|
|
46
114
|
## 子组件 (Sub-Components)
|
|
47
115
|
### DropdownMenu
|
|
48
116
|
下拉菜单容器,用于包裹菜单项
|
|
49
117
|
|
|
118
|
+
#### 组合示例
|
|
119
|
+
##### 嵌套菜单
|
|
120
|
+
**场景**: 创建多级嵌套的下拉菜单
|
|
121
|
+
|
|
122
|
+
多级嵌套的下拉菜单
|
|
123
|
+
|
|
124
|
+
```vue
|
|
125
|
+
<script setup lang="ts">
|
|
126
|
+
import { Dropdown, DropdownMenu, DropdownItem, Button } from '@king-design/vue';
|
|
127
|
+
</script>
|
|
128
|
+
<template>
|
|
129
|
+
<Dropdown>
|
|
130
|
+
<Button>嵌套菜单</Button>
|
|
131
|
+
<template #menu>
|
|
132
|
+
<DropdownMenu>
|
|
133
|
+
<DropdownItem>菜单项1</DropdownItem>
|
|
134
|
+
<Dropdown position="right">
|
|
135
|
+
<DropdownItem>更多 ></DropdownItem>
|
|
136
|
+
<template #menu>
|
|
137
|
+
<DropdownMenu>
|
|
138
|
+
<DropdownItem>子菜单1</DropdownItem>
|
|
139
|
+
<DropdownItem>子菜单2</DropdownItem>
|
|
140
|
+
</DropdownMenu>
|
|
141
|
+
</template>
|
|
142
|
+
</Dropdown>
|
|
143
|
+
</DropdownMenu>
|
|
144
|
+
</template>
|
|
145
|
+
</Dropdown>
|
|
146
|
+
</template>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
##### 基础用法
|
|
150
|
+
**场景**: 创建一个悬停触发的下拉菜单
|
|
151
|
+
|
|
152
|
+
基本的下拉菜单,悬停触发
|
|
153
|
+
|
|
154
|
+
```vue
|
|
155
|
+
<script setup lang="ts">
|
|
156
|
+
import { Dropdown, DropdownMenu, DropdownItem, Button } from '@king-design/vue';
|
|
157
|
+
</script>
|
|
158
|
+
<template>
|
|
159
|
+
<Dropdown>
|
|
160
|
+
<Button>下拉菜单</Button>
|
|
161
|
+
<template #menu>
|
|
162
|
+
<DropdownMenu>
|
|
163
|
+
<DropdownItem>菜单项1</DropdownItem>
|
|
164
|
+
<DropdownItem>菜单项2</DropdownItem>
|
|
165
|
+
<DropdownItem>菜单项3</DropdownItem>
|
|
166
|
+
</DropdownMenu>
|
|
167
|
+
</template>
|
|
168
|
+
</Dropdown>
|
|
169
|
+
</template>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
##### 点击触发
|
|
173
|
+
**场景**: 创建点击触发的下拉菜单
|
|
174
|
+
|
|
175
|
+
点击触发的下拉菜单
|
|
176
|
+
|
|
177
|
+
```vue
|
|
178
|
+
<script setup lang="ts">
|
|
179
|
+
import { Dropdown, DropdownMenu, DropdownItem, Button } from '@king-design/vue';
|
|
180
|
+
</script>
|
|
181
|
+
<template>
|
|
182
|
+
<Dropdown trigger="click">
|
|
183
|
+
<Button>点击展开</Button>
|
|
184
|
+
<template #menu>
|
|
185
|
+
<DropdownMenu>
|
|
186
|
+
<DropdownItem>菜单项1</DropdownItem>
|
|
187
|
+
<DropdownItem>菜单项2</DropdownItem>
|
|
188
|
+
</DropdownMenu>
|
|
189
|
+
</template>
|
|
190
|
+
</Dropdown>
|
|
191
|
+
</template>
|
|
192
|
+
```
|
|
193
|
+
|
|
50
194
|
### DropdownItem
|
|
51
195
|
下拉菜单项组件
|
|
52
196
|
|
|
197
|
+
#### 属性 (Props)
|
|
53
198
|
| 属性名 | 类型 | 说明 | 示例 |
|
|
54
199
|
| --- | --- | --- | --- |
|
|
55
200
|
| disabled | `boolean` | 是否禁用该菜单项 | `<DropdownItem disabled>禁用项</DropdownItem>` |
|
|
56
201
|
| hideOnSelect | `boolean` | 选中该菜单后是否隐藏整个菜单 | `<DropdownItem :hideOnSelect="false">选中不关闭</DropdownItem>` |
|
|
57
202
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
203
|
+
#### 事件 (Events)
|
|
204
|
+
| 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
|
|
205
|
+
| --- | --- | --- | --- | --- |
|
|
206
|
+
| select | `@select` | 菜单项被选中时触发(点击或键盘操作) | `item: DropdownItem` | `<DropdownItem @select="handleActionSelect">查看详情</DropdownItem>` |
|
|
207
|
+
| click | `@click` | 菜单项被点击时触发 | `e: MouseEvent` | `<DropdownItem @click="recordMenuClick">下载日志</DropdownItem>` |
|
|
208
|
+
|
|
209
|
+
##### DropdownItem 事件参数说明
|
|
210
|
+
**select**
|
|
211
|
+
|
|
212
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
213
|
+
| --- | --- | --- | --- | --- |
|
|
214
|
+
| item | `DropdownItem` | 是 | - | 被选中的菜单项实例 |
|
|
215
|
+
|
|
216
|
+
事件处理示例:
|
|
217
|
+
```typescript
|
|
218
|
+
const selectedAction = ref('');
|
|
219
|
+
const selectedItem = ref(null);
|
|
220
|
+
|
|
221
|
+
const handleActionSelect = (item) => {
|
|
222
|
+
selectedAction.value = 'detail';
|
|
223
|
+
selectedItem.value = item;
|
|
224
|
+
};
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**click**
|
|
228
|
+
|
|
229
|
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
230
|
+
| --- | --- | --- | --- | --- |
|
|
231
|
+
| e | `MouseEvent` | 是 | - | 原生鼠标事件 |
|
|
232
|
+
|
|
233
|
+
事件处理示例:
|
|
234
|
+
```typescript
|
|
235
|
+
const lastPointer = ref({ x: 0, y: 0 });
|
|
236
|
+
|
|
237
|
+
const recordMenuClick = (e: MouseEvent) => {
|
|
238
|
+
lastPointer.value = { x: e.clientX, y: e.clientY };
|
|
239
|
+
};
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
#### 组合示例
|
|
243
|
+
##### 禁用菜单项
|
|
244
|
+
**场景**: 禁用特定的菜单项
|
|
245
|
+
|
|
246
|
+
禁用特定的菜单项
|
|
247
|
+
|
|
248
|
+
**命中的子组件 API**: 属性: disabled
|
|
249
|
+
|
|
250
|
+
```vue
|
|
251
|
+
<script setup lang="ts">
|
|
252
|
+
import { Dropdown, DropdownMenu, DropdownItem, Button } from '@king-design/vue';
|
|
253
|
+
</script>
|
|
254
|
+
<template>
|
|
255
|
+
<Dropdown>
|
|
256
|
+
<Button>下拉菜单</Button>
|
|
257
|
+
<template #menu>
|
|
258
|
+
<DropdownMenu>
|
|
259
|
+
<DropdownItem>可用项</DropdownItem>
|
|
260
|
+
<DropdownItem disabled>禁用项</DropdownItem>
|
|
261
|
+
<DropdownItem>可用项</DropdownItem>
|
|
262
|
+
</DropdownMenu>
|
|
263
|
+
</template>
|
|
264
|
+
</Dropdown>
|
|
265
|
+
</template>
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
##### 监听选择事件
|
|
269
|
+
**场景**: 监听菜单项点击并执行操作
|
|
270
|
+
|
|
271
|
+
监听菜单项的选择
|
|
272
|
+
|
|
273
|
+
**命中的子组件 API**: 事件: click
|
|
274
|
+
|
|
275
|
+
```vue
|
|
276
|
+
<script setup lang="ts">
|
|
277
|
+
import { Dropdown, DropdownMenu, DropdownItem, Button, Message } from '@king-design/vue';
|
|
278
|
+
|
|
279
|
+
const handleClick = (action: string) => {
|
|
280
|
+
Message.info(`选择了: ${action}`);
|
|
281
|
+
};
|
|
282
|
+
</script>
|
|
283
|
+
<template>
|
|
284
|
+
<Dropdown>
|
|
285
|
+
<Button>操作</Button>
|
|
286
|
+
<template #menu>
|
|
287
|
+
<DropdownMenu>
|
|
288
|
+
<DropdownItem @click="handleClick('编辑')">编辑</DropdownItem>
|
|
289
|
+
<DropdownItem @click="handleClick('复制')">复制</DropdownItem>
|
|
290
|
+
<DropdownItem @click="handleClick('删除')">删除</DropdownItem>
|
|
291
|
+
</DropdownMenu>
|
|
292
|
+
</template>
|
|
293
|
+
</Dropdown>
|
|
294
|
+
</template>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
##### 表格操作列
|
|
298
|
+
**场景**: 在表格操作列中使用下拉菜单
|
|
299
|
+
|
|
300
|
+
在表格中使用下拉菜单作为操作列
|
|
301
|
+
|
|
302
|
+
**命中的子组件 API**: 事件: click
|
|
303
|
+
|
|
304
|
+
```vue
|
|
305
|
+
<script setup lang="ts">
|
|
306
|
+
import { Dropdown, DropdownMenu, DropdownItem, Button, Message } from '@king-design/vue';
|
|
307
|
+
|
|
308
|
+
const handleAction = (action: string, id: number) => {
|
|
309
|
+
Message.info(`对 ID=${id} 执行 ${action}`);
|
|
310
|
+
};
|
|
311
|
+
</script>
|
|
312
|
+
<template>
|
|
313
|
+
<!-- 假设在表格的操作列中 -->
|
|
314
|
+
<Dropdown trigger="click">
|
|
315
|
+
<Button type="link" size="small">操作</Button>
|
|
316
|
+
<template #menu>
|
|
317
|
+
<DropdownMenu>
|
|
318
|
+
<DropdownItem @click="handleAction('查看', 1)">查看</DropdownItem>
|
|
319
|
+
<DropdownItem @click="handleAction('编辑', 1)">编辑</DropdownItem>
|
|
320
|
+
<DropdownItem @click="handleAction('删除', 1)">删除</DropdownItem>
|
|
321
|
+
</DropdownMenu>
|
|
322
|
+
</template>
|
|
323
|
+
</Dropdown>
|
|
324
|
+
</template>
|
|
325
|
+
```
|
|
61
326
|
|
|
62
327
|
## 常见错误与正确用法 (Anti-Hallucination)
|
|
328
|
+
### 未使用 #menu 插槽
|
|
63
329
|
> **错误用法**: `<Dropdown>
|
|
64
330
|
<Button>菜单</Button>
|
|
65
331
|
<DropdownMenu>
|
|
@@ -76,10 +342,12 @@ const handleHide = () => {
|
|
|
76
342
|
</Dropdown>`
|
|
77
343
|
> **说明**: DropdownMenu 必须放在 #menu 插槽中
|
|
78
344
|
|
|
345
|
+
### trigger 值拼写错误
|
|
79
346
|
> **错误用法**: `<Dropdown trigger="rightclick">`
|
|
80
347
|
> **正确写法**: `<Dropdown trigger="contextmenu">`
|
|
81
348
|
> **说明**: 右键触发应使用 contextmenu,不是 rightclick
|
|
82
349
|
|
|
350
|
+
### DropdownItem 未放在 DropdownMenu 中
|
|
83
351
|
> **错误用法**: `<Dropdown>
|
|
84
352
|
<Button>菜单</Button>
|
|
85
353
|
<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
|
+
|