@a2simcode/ui 0.0.46 → 0.0.48
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/.cursor/skills/ui-component-helper/README.md +43 -0
- package/.cursor/skills/ui-component-helper/SKILL.md +81 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/simcode-ui.es.js +222 -195
- package/dist/simcode-ui.umd.js +2 -2
- package/dist/stats.html +1 -1
- package/docs/components/autocomplete.md +89 -0
- package/docs/components/barcode.md +101 -0
- package/docs/components/button-select.md +24 -0
- package/docs/components/button.md +117 -0
- package/docs/components/buttons.md +119 -0
- package/docs/components/cascader-select.md +114 -0
- package/docs/components/checkbox.md +114 -0
- package/docs/components/code-mirror.md +85 -0
- package/docs/components/collapse.md +26 -0
- package/docs/components/comp.md +71 -0
- package/docs/components/count-up.md +24 -0
- package/docs/components/count.md +24 -0
- package/docs/components/data-panel.md +24 -0
- package/docs/components/dialog-full.md +112 -0
- package/docs/components/dialog.md +127 -0
- package/docs/components/divider.md +24 -0
- package/docs/components/drawer.md +127 -0
- package/docs/components/dynamic-layer.md +118 -0
- package/docs/components/echarts.md +72 -0
- package/docs/components/editor.md +24 -0
- package/docs/components/form.md +27 -0
- package/docs/components/guid.md +39 -0
- package/docs/components/hpanel.md +24 -0
- package/docs/components/icon.md +56 -0
- package/docs/components/input-button.md +24 -0
- package/docs/components/input-code.md +24 -0
- package/docs/components/input-color.md +114 -0
- package/docs/components/input-layer.md +26 -0
- package/docs/components/input-rows.md +370 -0
- package/docs/components/input-tag.md +50 -0
- package/docs/components/input.md +129 -0
- package/docs/components/layer-form.md +61 -0
- package/docs/components/layer.md +127 -0
- package/docs/components/layout.md +132 -0
- package/docs/components/map.md +24 -0
- package/docs/components/menu.md +121 -0
- package/docs/components/meta/autocomplete.ts +335 -0
- package/docs/components/meta/barcode.ts +216 -0
- package/docs/components/meta/button-select.ts +94 -0
- package/docs/components/meta/button.ts +123 -0
- package/docs/components/meta/buttons.ts +56 -0
- package/docs/components/meta/cascader-select.ts +328 -0
- package/docs/components/meta/checkbox.ts +194 -0
- package/docs/components/meta/code-mirror.ts +108 -0
- package/docs/components/meta/collapse.ts +52 -0
- package/docs/components/meta/comp.ts +224 -0
- package/docs/components/meta/count-up.ts +126 -0
- package/docs/components/meta/count.ts +113 -0
- package/docs/components/meta/data-panel.ts +34 -0
- package/docs/components/meta/dialog-full.ts +133 -0
- package/docs/components/meta/dialog.ts +175 -0
- package/docs/components/meta/divider.ts +66 -0
- package/docs/components/meta/drawer.ts +158 -0
- package/docs/components/meta/dynamic-layer.ts +99 -0
- package/docs/components/meta/echarts.ts +64 -0
- package/docs/components/meta/editor.ts +67 -0
- package/docs/components/meta/form-item.ts +50 -0
- package/docs/components/meta/form.ts +160 -0
- package/docs/components/meta/guid.ts +42 -0
- package/docs/components/meta/hpanel.ts +20 -0
- package/docs/components/meta/icon.ts +68 -0
- package/docs/components/meta/input-button.ts +165 -0
- package/docs/components/meta/input-code.ts +151 -0
- package/docs/components/meta/input-color.ts +243 -0
- package/docs/components/meta/input-layer.ts +336 -0
- package/docs/components/meta/input-rows.ts +113 -0
- package/docs/components/meta/input-tag.ts +112 -0
- package/docs/components/meta/input.ts +411 -0
- package/docs/components/meta/layer-form.ts +56 -0
- package/docs/components/meta/layer.ts +122 -0
- package/docs/components/meta/layout.ts +101 -0
- package/docs/components/meta/map.ts +68 -0
- package/docs/components/meta/menu.ts +43 -0
- package/docs/components/meta/number.ts +296 -0
- package/docs/components/meta/page.ts +67 -0
- package/docs/components/meta/radio.ts +55 -0
- package/docs/components/meta/rate.ts +124 -0
- package/docs/components/meta/select.ts +279 -0
- package/docs/components/meta/slider-captcha.ts +70 -0
- package/docs/components/meta/slider.ts +270 -0
- package/docs/components/meta/switch.ts +272 -0
- package/docs/components/meta/table-panel.ts +154 -0
- package/docs/components/meta/table.ts +328 -0
- package/docs/components/meta/tabs.ts +136 -0
- package/docs/components/meta/title.ts +80 -0
- package/docs/components/meta/tree.ts +242 -0
- package/docs/components/meta/upload.ts +186 -0
- package/docs/components/meta/workflow-viewer.ts +55 -0
- package/docs/components/meta/workflow.ts +113 -0
- package/docs/components/number.md +124 -0
- package/docs/components/page.md +42 -0
- package/docs/components/radio.md +87 -0
- package/docs/components/rate.md +71 -0
- package/docs/components/select.md +133 -0
- package/docs/components/slider-captcha.md +41 -0
- package/docs/components/slider.md +101 -0
- package/docs/components/switch.md +90 -0
- package/docs/components/table-panel.md +199 -0
- package/docs/components/table.md +202 -0
- package/docs/components/tabs.md +26 -0
- package/docs/components/title.md +24 -0
- package/docs/components/tree.md +207 -0
- package/docs/components/upload.md +117 -0
- package/docs/components/workflow-viewer.md +21 -0
- package/docs/components/workflow.md +21 -0
- package/docs/examples/autocomplete/advanced.vue +35 -0
- package/docs/examples/autocomplete/basic.vue +32 -0
- package/docs/examples/autocomplete/clearable.vue +33 -0
- package/docs/examples/autocomplete/custom-template.vue +49 -0
- package/docs/examples/autocomplete/disabled.vue +33 -0
- package/docs/examples/autocomplete/icon.vue +37 -0
- package/docs/examples/barcode/all-types.vue +380 -0
- package/docs/examples/barcode/basic.vue +14 -0
- package/docs/examples/barcode/props-appearance.vue +243 -0
- package/docs/examples/barcode/props-geometry.vue +143 -0
- package/docs/examples/barcode/props-logic.vue +216 -0
- package/docs/examples/barcode/props-symbology.vue +199 -0
- package/docs/examples/barcode/props-text.vue +268 -0
- package/docs/examples/button/basic.vue +7 -0
- package/docs/examples/button/danger-ghost.vue +17 -0
- package/docs/examples/button/disabled.vue +10 -0
- package/docs/examples/button/loading.vue +6 -0
- package/docs/examples/button/shape.vue +7 -0
- package/docs/examples/button/size.vue +14 -0
- package/docs/examples/button/type.vue +9 -0
- package/docs/examples/button-select/basic.vue +19 -0
- package/docs/examples/buttons/basic.vue +45 -0
- package/docs/examples/buttons/disabled.vue +36 -0
- package/docs/examples/buttons/dropdown.vue +63 -0
- package/docs/examples/buttons/group.vue +52 -0
- package/docs/examples/buttons/link.vue +47 -0
- package/docs/examples/buttons/popup.vue +39 -0
- package/docs/examples/buttons/size.vue +45 -0
- package/docs/examples/cascader-select/basic.vue +28 -0
- package/docs/examples/cascader-select/clearable.vue +34 -0
- package/docs/examples/cascader-select/disabled.vue +43 -0
- package/docs/examples/cascader-select/filterable.vue +37 -0
- package/docs/examples/cascader-select/methods.vue +84 -0
- package/docs/examples/cascader-select/multiple.vue +38 -0
- package/docs/examples/cascader-select/slot.vue +45 -0
- package/docs/examples/checkbox/basic.vue +18 -0
- package/docs/examples/checkbox/button.vue +19 -0
- package/docs/examples/checkbox/color.vue +25 -0
- package/docs/examples/checkbox/disabled.vue +17 -0
- package/docs/examples/checkbox/min-max.vue +20 -0
- package/docs/examples/checkbox/mixed.vue +56 -0
- package/docs/examples/checkbox/size.vue +28 -0
- package/docs/examples/code-mirror/basic.vue +11 -0
- package/docs/examples/code-mirror/events.vue +42 -0
- package/docs/examples/code-mirror/height.vue +25 -0
- package/docs/examples/code-mirror/mode.vue +33 -0
- package/docs/examples/code-mirror/readonly.vue +14 -0
- package/docs/examples/collapse/basic.vue +82 -0
- package/docs/examples/comp/basic.vue +7 -0
- package/docs/examples/comp/collapse.vue +38 -0
- package/docs/examples/comp/tabs.vue +38 -0
- package/docs/examples/count/basic.vue +54 -0
- package/docs/examples/count-up/basic.vue +89 -0
- package/docs/examples/data-panel/basic.vue +110 -0
- package/docs/examples/dialog/basic.vue +36 -0
- package/docs/examples/dialog/custom-buttons.vue +44 -0
- package/docs/examples/dialog/fullscreen.vue +23 -0
- package/docs/examples/dialog/no-mask.vue +17 -0
- package/docs/examples/dialog/size.vue +44 -0
- package/docs/examples/dialog/steps.vue +57 -0
- package/docs/examples/dialog-full/basic.vue +29 -0
- package/docs/examples/dialog-full/custom-buttons.vue +45 -0
- package/docs/examples/dialog-full/no-buttons.vue +18 -0
- package/docs/examples/dialog-full/no-header.vue +27 -0
- package/docs/examples/dialog-full/steps.vue +71 -0
- package/docs/examples/divider/basic.vue +52 -0
- package/docs/examples/drawer/basic.vue +35 -0
- package/docs/examples/drawer/custom-buttons.vue +34 -0
- package/docs/examples/drawer/direction.vue +47 -0
- package/docs/examples/drawer/mask.vue +36 -0
- package/docs/examples/drawer/no-buttons.vue +20 -0
- package/docs/examples/drawer/size.vue +28 -0
- package/docs/examples/dynamic-layer/basic.vue +33 -0
- package/docs/examples/dynamic-layer/custom-buttons.vue +43 -0
- package/docs/examples/dynamic-layer/form.vue +73 -0
- package/docs/examples/dynamic-layer/steps.vue +52 -0
- package/docs/examples/dynamic-layer/types.vue +40 -0
- package/docs/examples/echarts/basic.vue +31 -0
- package/docs/examples/echarts/dynamic.vue +43 -0
- package/docs/examples/echarts/line.vue +46 -0
- package/docs/examples/echarts/pie.vue +44 -0
- package/docs/examples/editor/basic.vue +15 -0
- package/docs/examples/form/basic.vue +224 -0
- package/docs/examples/guid/basic.vue +10 -0
- package/docs/examples/guid/size.vue +13 -0
- package/docs/examples/hpanel/basic.vue +79 -0
- package/docs/examples/icon/basic.vue +9 -0
- package/docs/examples/icon/rotate-flip.vue +9 -0
- package/docs/examples/icon/size.vue +7 -0
- package/docs/examples/input/basic.vue +10 -0
- package/docs/examples/input/clearable.vue +12 -0
- package/docs/examples/input/disabled.vue +6 -0
- package/docs/examples/input/icon.vue +23 -0
- package/docs/examples/input/password.vue +18 -0
- package/docs/examples/input/size.vue +13 -0
- package/docs/examples/input/textarea.vue +25 -0
- package/docs/examples/input/word-limit.vue +28 -0
- package/docs/examples/input-button/basic.vue +33 -0
- package/docs/examples/input-code/basic.vue +29 -0
- package/docs/examples/input-color/basic.vue +10 -0
- package/docs/examples/input-color/disabled.vue +13 -0
- package/docs/examples/input-color/format.vue +17 -0
- package/docs/examples/input-color/no-alpha.vue +13 -0
- package/docs/examples/input-color/only-button.vue +15 -0
- package/docs/examples/input-color/predefine.vue +31 -0
- package/docs/examples/input-color/size.vue +15 -0
- package/docs/examples/input-layer/basic.vue +69 -0
- package/docs/examples/input-rows/basic.vue +73 -0
- package/docs/examples/input-rows/drag.vue +48 -0
- package/docs/examples/input-rows/layer-form.vue +85 -0
- package/docs/examples/input-rows/nested.vue +91 -0
- package/docs/examples/input-tag/basic.vue +27 -0
- package/docs/examples/input-tag/colors.vue +23 -0
- package/docs/examples/input-tag/readonly.vue +17 -0
- package/docs/examples/layer/basic.vue +43 -0
- package/docs/examples/layer/custom-buttons.vue +61 -0
- package/docs/examples/layer/drawer.vue +37 -0
- package/docs/examples/layer/full.vue +38 -0
- package/docs/examples/layer/modal.vue +34 -0
- package/docs/examples/layer/steps.vue +46 -0
- package/docs/examples/layer-form/basic.vue +76 -0
- package/docs/examples/layer-form/config.vue +82 -0
- package/docs/examples/layer-form/size.vue +72 -0
- package/docs/examples/layout/basic.vue +36 -0
- package/docs/examples/layout/custom-size.vue +50 -0
- package/docs/examples/layout/disable-move.vue +37 -0
- package/docs/examples/layout/hide-mid-when-narrow.vue +96 -0
- package/docs/examples/layout/min-size.vue +73 -0
- package/docs/examples/layout/percent-size.vue +80 -0
- package/docs/examples/layout/simple.vue +22 -0
- package/docs/examples/layout/top-side.vue +34 -0
- package/docs/examples/map/basic.vue +22 -0
- package/docs/examples/menu/basic.vue +58 -0
- package/docs/examples/menu/collapsed.vue +49 -0
- package/docs/examples/menu/horizontal.vue +44 -0
- package/docs/examples/menu/selection-test.vue +104 -0
- package/docs/examples/menu/theme.vue +46 -0
- package/docs/examples/menu/vertical.vue +46 -0
- package/docs/examples/number/advanced.vue +143 -0
- package/docs/examples/number/basic.vue +63 -0
- package/docs/examples/number/disabled.vue +49 -0
- package/docs/examples/number/size.vue +42 -0
- package/docs/examples/number/slots.vue +123 -0
- package/docs/examples/number/step-strictly.vue +41 -0
- package/docs/examples/number/step.vue +47 -0
- package/docs/examples/page/basic.vue +41 -0
- package/docs/examples/page/init.vue +87 -0
- package/docs/examples/radio/basic.vue +17 -0
- package/docs/examples/radio/button.vue +17 -0
- package/docs/examples/radio/color.vue +18 -0
- package/docs/examples/radio/disabled.vue +17 -0
- package/docs/examples/radio/size.vue +29 -0
- package/docs/examples/rate/basic.vue +24 -0
- package/docs/examples/rate/half.vue +24 -0
- package/docs/examples/rate/readonly.vue +11 -0
- package/docs/examples/rate/text.vue +32 -0
- package/docs/examples/select/basic.vue +16 -0
- package/docs/examples/select/clearable.vue +22 -0
- package/docs/examples/select/disabled.vue +31 -0
- package/docs/examples/select/filterable.vue +24 -0
- package/docs/examples/select/group.vue +23 -0
- package/docs/examples/select/icon.vue +16 -0
- package/docs/examples/select/multiple.vue +18 -0
- package/docs/examples/select/size.vue +39 -0
- package/docs/examples/slider/basic.vue +42 -0
- package/docs/examples/slider/disabled.vue +17 -0
- package/docs/examples/slider/marks.vue +30 -0
- package/docs/examples/slider/size.vue +37 -0
- package/docs/examples/slider/tooltip.vue +36 -0
- package/docs/examples/slider/vertical.vue +26 -0
- package/docs/examples/slider-captcha/basic.vue +44 -0
- package/docs/examples/slider-captcha/custom.vue +48 -0
- package/docs/examples/switch/basic.vue +16 -0
- package/docs/examples/switch/disabled.vue +13 -0
- package/docs/examples/switch/loading.vue +13 -0
- package/docs/examples/switch/size.vue +15 -0
- package/docs/examples/switch/text.vue +13 -0
- package/docs/examples/table/actions.vue +116 -0
- package/docs/examples/table/add-row.vue +103 -0
- package/docs/examples/table/basic.vue +168 -0
- package/docs/examples/table/editable.vue +261 -0
- package/docs/examples/table/field-selection.vue +87 -0
- package/docs/examples/table/frozen-column.vue +140 -0
- package/docs/examples/table/height-mode.vue +99 -0
- package/docs/examples/table/multiple.vue +178 -0
- package/docs/examples/table/pagination.vue +151 -0
- package/docs/examples/table/single-selection.vue +64 -0
- package/docs/examples/table/tree-column.vue +119 -0
- package/docs/examples/table/tree-data.vue +141 -0
- package/docs/examples/table-panel/basic.vue +228 -0
- package/docs/examples/table-panel/batch-operations.vue +285 -0
- package/docs/examples/table-panel/filter.vue +209 -0
- package/docs/examples/table-panel/multiple-selection.vue +243 -0
- package/docs/examples/table-panel/pagination.vue +133 -0
- package/docs/examples/tabs/basic.vue +98 -0
- package/docs/examples/title/basic.vue +80 -0
- package/docs/examples/tree/accordion.vue +46 -0
- package/docs/examples/tree/basic.vue +50 -0
- package/docs/examples/tree/buttons.vue +53 -0
- package/docs/examples/tree/checkable.vue +52 -0
- package/docs/examples/tree/custom-keys.vue +39 -0
- package/docs/examples/tree/default-expanded.vue +52 -0
- package/docs/examples/tree/draggable.vue +29 -0
- package/docs/examples/tree/expand-on-click.vue +39 -0
- package/docs/examples/tree/flat-data.vue +20 -0
- package/docs/examples/tree/icon.vue +40 -0
- package/docs/examples/tree/load-data.vue +37 -0
- package/docs/examples/tree/methods.vue +74 -0
- package/docs/examples/tree/theme.vue +33 -0
- package/docs/examples/upload/accept.vue +31 -0
- package/docs/examples/upload/basic.vue +12 -0
- package/docs/examples/upload/drag.vue +11 -0
- package/docs/examples/upload/image.vue +17 -0
- package/docs/examples/upload/limit.vue +20 -0
- package/docs/examples/upload/multiple.vue +17 -0
- package/docs/examples/upload/readonly.vue +17 -0
- package/docs/examples/utils/cipher.vue +160 -0
- package/docs/examples/utils/common.vue +153 -0
- package/docs/examples/utils/date.vue +56 -0
- package/docs/examples/utils/dom.vue +52 -0
- package/docs/examples/utils/is.vue +70 -0
- package/docs/examples/workflow/basic.vue +265 -0
- package/docs/examples/workflow-viewer/basic.vue +248 -0
- package/package.json +6 -2
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# DynamicLayer 动态层
|
|
2
|
+
|
|
3
|
+
动态加载组件的弹层,基于 Layer 组件封装,支持动态渲染任意组件并提供统一的弹层交互。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
通过 `open` 方法打开弹层,动态加载指定组件。
|
|
8
|
+
|
|
9
|
+
<Demo :source-code="dynamicLayerBasicCode">
|
|
10
|
+
<template #source>
|
|
11
|
+
<dynamic-layer-basic />
|
|
12
|
+
</template>
|
|
13
|
+
<template #description>
|
|
14
|
+
使用 `ref` 调用 `open` 方法打开弹层,通过 `name` 属性指定要加载的组件。
|
|
15
|
+
</template>
|
|
16
|
+
</Demo>
|
|
17
|
+
|
|
18
|
+
## 表单场景
|
|
19
|
+
|
|
20
|
+
适用于动态表单的场景,组件内可以定义 `open` 和 `ok` 方法与弹层交互。
|
|
21
|
+
|
|
22
|
+
<Demo :source-code="dynamicLayerFormCode">
|
|
23
|
+
<template #source>
|
|
24
|
+
<dynamic-layer-form />
|
|
25
|
+
</template>
|
|
26
|
+
<template #description>
|
|
27
|
+
动态组件可以通过 `expose` 暴露 `open` 和 `ok` 方法。`open` 方法接收传入的参数,`ok` 方法在点击确定时调用,返回 `true` 时弹层关闭。
|
|
28
|
+
</template>
|
|
29
|
+
</Demo>
|
|
30
|
+
|
|
31
|
+
## 不同类型
|
|
32
|
+
|
|
33
|
+
支持 modal、drawer、full 三种弹层类型。
|
|
34
|
+
|
|
35
|
+
<Demo :source-code="dynamicLayerTypesCode">
|
|
36
|
+
<template #source>
|
|
37
|
+
<dynamic-layer-types />
|
|
38
|
+
</template>
|
|
39
|
+
<template #description>
|
|
40
|
+
通过 `type` 参数指定弹层类型,支持弹窗(modal)、抽屉(drawer)、全屏(full)三种形式。
|
|
41
|
+
</template>
|
|
42
|
+
</Demo>
|
|
43
|
+
|
|
44
|
+
## 自定义按钮
|
|
45
|
+
|
|
46
|
+
组件内可以通过 `getConfig` 方法返回自定义按钮配置。
|
|
47
|
+
|
|
48
|
+
<Demo :source-code="dynamicLayerCustomButtonsCode">
|
|
49
|
+
<template #source>
|
|
50
|
+
<dynamic-layer-custom-buttons />
|
|
51
|
+
</template>
|
|
52
|
+
<template #description>
|
|
53
|
+
动态组件通过 `getConfig` 方法返回 `buttons` 数组,可以添加自定义按钮。设置 `hasSaveBtn` 为 `false` 可隐藏默认保存按钮。
|
|
54
|
+
</template>
|
|
55
|
+
</Demo>
|
|
56
|
+
|
|
57
|
+
## 步骤弹窗
|
|
58
|
+
|
|
59
|
+
支持步骤条模式的弹层。
|
|
60
|
+
|
|
61
|
+
<Demo :source-code="dynamicLayerStepsCode">
|
|
62
|
+
<template #source>
|
|
63
|
+
<dynamic-layer-steps />
|
|
64
|
+
</template>
|
|
65
|
+
<template #description>
|
|
66
|
+
动态组件通过 `getConfig` 返回 `isStep` 和 `steps` 配置步骤条,通过 `validateSteps` 方法进行步骤校验。
|
|
67
|
+
</template>
|
|
68
|
+
</Demo>
|
|
69
|
+
|
|
70
|
+
## API
|
|
71
|
+
|
|
72
|
+
### 方法
|
|
73
|
+
|
|
74
|
+
| 方法名 | 说明 | 参数 |
|
|
75
|
+
| ------ | -------- | -------------------------------- |
|
|
76
|
+
| open | 打开弹层 | `(data: LayerParamType) => void` |
|
|
77
|
+
|
|
78
|
+
### LayerParamType 参数
|
|
79
|
+
|
|
80
|
+
<ApiTable :data="dynamicLayerApi" componentName="dynamic-layer" />
|
|
81
|
+
|
|
82
|
+
### 动态组件约定
|
|
83
|
+
|
|
84
|
+
动态加载的组件可以通过 `expose` 暴露以下方法与弹层交互:
|
|
85
|
+
|
|
86
|
+
| 方法名 | 说明 | 参数 | 返回值 |
|
|
87
|
+
| ------------- | ------------------ | ------------------------------------------------ | --------------------------------------------------------- |
|
|
88
|
+
| open | 弹层打开时调用 | `(param: any, layerRef: any, afterOk: Function)` | `Promise<{ buttons?: any[] }>` |
|
|
89
|
+
| ok | 点击确定按钮时调用 | - | `Promise<boolean \| any>` |
|
|
90
|
+
| closed | 弹层关闭后调用 | - | `void` |
|
|
91
|
+
| beforeClose | 弹层关闭前调用 | - | `boolean \| Promise<boolean>` |
|
|
92
|
+
| getConfig | 获取弹层配置 | - | `{ isStep?: boolean, steps?: string[], buttons?: any[] }` |
|
|
93
|
+
| validateSteps | 步骤校验 | `(stepActive: number)` | `Promise<boolean>` |
|
|
94
|
+
|
|
95
|
+
### 回调函数
|
|
96
|
+
|
|
97
|
+
可以通过 `open` 方法的参数传入以下回调函数:
|
|
98
|
+
|
|
99
|
+
| 回调名 | 说明 | 参数 |
|
|
100
|
+
| ----------- | ---------- | --------------------- |
|
|
101
|
+
| afterOk | 确定后回调 | `(data: any) => void` |
|
|
102
|
+
| afterClose | 关闭后回调 | `() => void` |
|
|
103
|
+
| afterCancel | 取消后回调 | `() => void` |
|
|
104
|
+
|
|
105
|
+
<script setup>
|
|
106
|
+
import DynamicLayerBasic from '../examples/dynamic-layer/basic.vue'
|
|
107
|
+
import DynamicLayerForm from '../examples/dynamic-layer/form.vue'
|
|
108
|
+
import DynamicLayerTypes from '../examples/dynamic-layer/types.vue'
|
|
109
|
+
import DynamicLayerCustomButtons from '../examples/dynamic-layer/custom-buttons.vue'
|
|
110
|
+
import DynamicLayerSteps from '../examples/dynamic-layer/steps.vue'
|
|
111
|
+
import dynamicLayerApi from './meta/dynamic-layer'
|
|
112
|
+
|
|
113
|
+
import dynamicLayerBasicCode from '../examples/dynamic-layer/basic.vue?raw'
|
|
114
|
+
import dynamicLayerFormCode from '../examples/dynamic-layer/form.vue?raw'
|
|
115
|
+
import dynamicLayerTypesCode from '../examples/dynamic-layer/types.vue?raw'
|
|
116
|
+
import dynamicLayerCustomButtonsCode from '../examples/dynamic-layer/custom-buttons.vue?raw'
|
|
117
|
+
import dynamicLayerStepsCode from '../examples/dynamic-layer/steps.vue?raw'
|
|
118
|
+
</script>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Echarts 图表
|
|
2
|
+
|
|
3
|
+
基于 ECharts 的 Vue 3 图表组件封装。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
通过 `option` 属性传入 ECharts 配置。
|
|
8
|
+
|
|
9
|
+
<Demo :source-code="echartsBasicCode">
|
|
10
|
+
<template #source>
|
|
11
|
+
<echarts-basic />
|
|
12
|
+
</template>
|
|
13
|
+
<template #description>
|
|
14
|
+
最基础的柱状图示例,通过点击事件可以获取图表数据。
|
|
15
|
+
</template>
|
|
16
|
+
</Demo>
|
|
17
|
+
|
|
18
|
+
## 折线图
|
|
19
|
+
|
|
20
|
+
使用折线图展示趋势数据。
|
|
21
|
+
|
|
22
|
+
<Demo :source-code="echartsLineCode">
|
|
23
|
+
<template #source>
|
|
24
|
+
<echarts-line />
|
|
25
|
+
</template>
|
|
26
|
+
<template #description>
|
|
27
|
+
多系列折线图,适合展示趋势对比。
|
|
28
|
+
</template>
|
|
29
|
+
</Demo>
|
|
30
|
+
|
|
31
|
+
## 饼图
|
|
32
|
+
|
|
33
|
+
使用饼图展示占比数据。
|
|
34
|
+
|
|
35
|
+
<Demo :source-code="echartsPieCode">
|
|
36
|
+
<template #source>
|
|
37
|
+
<echarts-pie />
|
|
38
|
+
</template>
|
|
39
|
+
<template #description>
|
|
40
|
+
饼图适合展示各部分在整体中的占比。
|
|
41
|
+
</template>
|
|
42
|
+
</Demo>
|
|
43
|
+
|
|
44
|
+
## 动态数据
|
|
45
|
+
|
|
46
|
+
图表数据可以动态更新。
|
|
47
|
+
|
|
48
|
+
<Demo :source-code="echartsDynamicCode">
|
|
49
|
+
<template #source>
|
|
50
|
+
<echarts-dynamic />
|
|
51
|
+
</template>
|
|
52
|
+
<template #description>
|
|
53
|
+
通过修改 `option` 数据,图表会自动更新。
|
|
54
|
+
</template>
|
|
55
|
+
</Demo>
|
|
56
|
+
|
|
57
|
+
## API
|
|
58
|
+
|
|
59
|
+
<ApiTable :data="echartsApi" componentName="echarts" />
|
|
60
|
+
|
|
61
|
+
<script setup>
|
|
62
|
+
import EchartsBasic from '../examples/echarts/basic.vue'
|
|
63
|
+
import EchartsLine from '../examples/echarts/line.vue'
|
|
64
|
+
import EchartsPie from '../examples/echarts/pie.vue'
|
|
65
|
+
import EchartsDynamic from '../examples/echarts/dynamic.vue'
|
|
66
|
+
import echartsApi from './meta/echarts'
|
|
67
|
+
|
|
68
|
+
import echartsBasicCode from '../examples/echarts/basic.vue?raw'
|
|
69
|
+
import echartsLineCode from '../examples/echarts/line.vue?raw'
|
|
70
|
+
import echartsPieCode from '../examples/echarts/pie.vue?raw'
|
|
71
|
+
import echartsDynamicCode from '../examples/echarts/dynamic.vue?raw'
|
|
72
|
+
</script>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Editor 富文本编辑器
|
|
2
|
+
|
|
3
|
+
基于 wangeditor 的富文本编辑器组件。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
<Demo :source-code="editorBasicCode">
|
|
8
|
+
<template #source>
|
|
9
|
+
<editor-basic />
|
|
10
|
+
</template>
|
|
11
|
+
<template #description>
|
|
12
|
+
基础用法,支持 `v-model:value` 双向绑定。
|
|
13
|
+
</template>
|
|
14
|
+
</Demo>
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
<ApiTable :data="editorApi" componentName="editor" />
|
|
19
|
+
|
|
20
|
+
<script setup>
|
|
21
|
+
import EditorBasic from '../examples/editor/basic.vue'
|
|
22
|
+
import editorApi from './meta/editor'
|
|
23
|
+
import editorBasicCode from '../examples/editor/basic.vue?raw'
|
|
24
|
+
</script>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Form 表单
|
|
2
|
+
|
|
3
|
+
`j-form` 是一个强大的动态表单组件,支持通过 Schema 配置来生成表单,提供了完整的表单验证、数据管理和事件处理能力。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
通过 `schema` 属性定义表单结构,`config` 属性配置表单样式。
|
|
8
|
+
|
|
9
|
+
<Demo :source-code="basicCode">
|
|
10
|
+
<template #source>
|
|
11
|
+
<basic />
|
|
12
|
+
</template>
|
|
13
|
+
<template #description>
|
|
14
|
+
使用 `j-form` 快速创建一个包含多个输入项的表单。通过 `validate` 方法进行表单验证,通过 `getFormData` 方法获取表单数据。
|
|
15
|
+
</template>
|
|
16
|
+
</Demo>
|
|
17
|
+
|
|
18
|
+
## API
|
|
19
|
+
|
|
20
|
+
<ApiTable :data="formApi" componentName="form" />
|
|
21
|
+
|
|
22
|
+
<script setup>
|
|
23
|
+
import Basic from '../examples/form/basic.vue'
|
|
24
|
+
import formApi from './meta/form'
|
|
25
|
+
|
|
26
|
+
import basicCode from '../examples/form/basic.vue?raw'
|
|
27
|
+
</script>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# GUID 全局唯一标识符
|
|
2
|
+
|
|
3
|
+
用于生成和展示全局唯一标识符(GUID/UUID)。当不指定值时,组件会自动生成一个UUID,这在创建新记录或需要唯一标识时非常有用。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
<Demo :source-code="guidBasicCode">
|
|
8
|
+
<template #source>
|
|
9
|
+
<guid-basic />
|
|
10
|
+
</template>
|
|
11
|
+
<template #description>
|
|
12
|
+
自动生成UUID,如果需要指定特定的GUID值,可以通过 v-model 绑定。
|
|
13
|
+
</template>
|
|
14
|
+
</Demo>
|
|
15
|
+
|
|
16
|
+
## 不同尺寸
|
|
17
|
+
|
|
18
|
+
Guid 组件提供三种尺寸。
|
|
19
|
+
|
|
20
|
+
<Demo :source-code="guidSizeCode">
|
|
21
|
+
<template #source>
|
|
22
|
+
<guid-size />
|
|
23
|
+
</template>
|
|
24
|
+
<template #description>
|
|
25
|
+
使用 size 属性改变组件大小。除了默认大小外,还有另外两个选项:large, small。
|
|
26
|
+
</template>
|
|
27
|
+
</Demo>
|
|
28
|
+
|
|
29
|
+
## API
|
|
30
|
+
|
|
31
|
+
<ApiTable :data="guidApi" componentName="guid" />
|
|
32
|
+
|
|
33
|
+
<script setup>
|
|
34
|
+
import GuidBasic from '../examples/guid/basic.vue'
|
|
35
|
+
import GuidSize from '../examples/guid/size.vue'
|
|
36
|
+
import guidApi from './meta/guid'
|
|
37
|
+
import guidBasicCode from '../examples/guid/basic.vue?raw'
|
|
38
|
+
import guidSizeCode from '../examples/guid/size.vue?raw'
|
|
39
|
+
</script>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Hpanel 水平布局
|
|
2
|
+
|
|
3
|
+
用于水平排列内容的面板,支持左、中(主内容)、右三个区域。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
<Demo :source-code="hpanelBasicCode">
|
|
8
|
+
<template #source>
|
|
9
|
+
<hpanel-basic />
|
|
10
|
+
</template>
|
|
11
|
+
<template #description>
|
|
12
|
+
使用 `left`、`default` 和 `right` 插槽来定义面板的不同部分。
|
|
13
|
+
</template>
|
|
14
|
+
</Demo>
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
<ApiTable :data="hpanelApi" componentName="hpanel" />
|
|
19
|
+
|
|
20
|
+
<script setup>
|
|
21
|
+
import HpanelBasic from '../examples/hpanel/basic.vue'
|
|
22
|
+
import hpanelApi from './meta/hpanel'
|
|
23
|
+
import hpanelBasicCode from '../examples/hpanel/basic.vue?raw'
|
|
24
|
+
</script>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Icon 图标
|
|
2
|
+
|
|
3
|
+
语义化的矢量图形。使用了 [@iconify/vue](https://iconify.design/docs/icon-components/vue/)。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
通过 `icon` 属性来指定图标名称。你可以从 [Iconify](https://icon-sets.iconify.design/) 搜索成千上万个图标。
|
|
8
|
+
|
|
9
|
+
<Demo :source-code="iconBasicCode">
|
|
10
|
+
<template #source>
|
|
11
|
+
<icon-basic />
|
|
12
|
+
</template>
|
|
13
|
+
<template #description>
|
|
14
|
+
使用 icon、color 来定义图标和颜色。
|
|
15
|
+
</template>
|
|
16
|
+
</Demo>
|
|
17
|
+
|
|
18
|
+
## 不同尺寸
|
|
19
|
+
|
|
20
|
+
使用 `size` 属性来配置图标尺寸。
|
|
21
|
+
|
|
22
|
+
<Demo :source-code="iconSizeCode">
|
|
23
|
+
<template #source>
|
|
24
|
+
<icon-size />
|
|
25
|
+
</template>
|
|
26
|
+
<template #description>
|
|
27
|
+
size 接受数字(单位为px)。
|
|
28
|
+
</template>
|
|
29
|
+
</Demo>
|
|
30
|
+
|
|
31
|
+
## 旋转与翻转
|
|
32
|
+
|
|
33
|
+
使用 `rotate` 和 `flip` 属性来调整图标方向。
|
|
34
|
+
|
|
35
|
+
<Demo :source-code="iconRotateFlipCode">
|
|
36
|
+
<template #source>
|
|
37
|
+
<icon-rotate-flip />
|
|
38
|
+
</template>
|
|
39
|
+
<template #description>
|
|
40
|
+
使用 rotate 定义角度,使用 flip 定义翻转方向。
|
|
41
|
+
</template>
|
|
42
|
+
</Demo>
|
|
43
|
+
|
|
44
|
+
## API
|
|
45
|
+
|
|
46
|
+
<ApiTable :data="iconApi" componentName="icon" />
|
|
47
|
+
|
|
48
|
+
<script setup>
|
|
49
|
+
import IconBasic from '../examples/icon/basic.vue'
|
|
50
|
+
import IconSize from '../examples/icon/size.vue'
|
|
51
|
+
import IconRotateFlip from '../examples/icon/rotate-flip.vue'
|
|
52
|
+
import iconApi from './meta/icon'
|
|
53
|
+
import iconBasicCode from '../examples/icon/basic.vue?raw'
|
|
54
|
+
import iconSizeCode from '../examples/icon/size.vue?raw'
|
|
55
|
+
import iconRotateFlipCode from '../examples/icon/rotate-flip.vue?raw'
|
|
56
|
+
</script>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# InputButton 输入按钮
|
|
2
|
+
|
|
3
|
+
通过点击按钮打开一个弹窗层,用于输入或选择复杂的数据。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
<Demo :source-code="inputButtonBasicCode">
|
|
8
|
+
<template #source>
|
|
9
|
+
<input-button-basic />
|
|
10
|
+
</template>
|
|
11
|
+
<template #description>
|
|
12
|
+
点击按钮打开弹窗,在弹窗中完成输入后点击确定。
|
|
13
|
+
</template>
|
|
14
|
+
</Demo>
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
<ApiTable :data="inputButtonApi" componentName="input-button" />
|
|
19
|
+
|
|
20
|
+
<script setup>
|
|
21
|
+
import InputButtonBasic from '../examples/input-button/basic.vue'
|
|
22
|
+
import inputButtonApi from './meta/input-button'
|
|
23
|
+
import inputButtonBasicCode from '../examples/input-button/basic.vue?raw'
|
|
24
|
+
</script>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# InputCode 脚本输入框
|
|
2
|
+
|
|
3
|
+
通过点击按钮打开一个集成了脚本编辑器的弹窗,用于编写代码或脚本内容。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
<Demo :source-code="inputCodeBasicCode">
|
|
8
|
+
<template #source>
|
|
9
|
+
<input-code-basic />
|
|
10
|
+
</template>
|
|
11
|
+
<template #description>
|
|
12
|
+
点击按钮打开代码编辑器,支持多种语言模式和示例代码对比。
|
|
13
|
+
</template>
|
|
14
|
+
</Demo>
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
|
|
18
|
+
<ApiTable :data="inputCodeApi" componentName="input-code" />
|
|
19
|
+
|
|
20
|
+
<script setup>
|
|
21
|
+
import InputCodeBasic from '../examples/input-code/basic.vue'
|
|
22
|
+
import inputCodeApi from './meta/input-code'
|
|
23
|
+
import inputCodeBasicCode from '../examples/input-code/basic.vue?raw'
|
|
24
|
+
</script>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# InputColor 颜色选择器
|
|
2
|
+
|
|
3
|
+
用于颜色选择,支持多种颜色格式。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
<Demo :source-code="inputColorBasicCode">
|
|
8
|
+
<template #source>
|
|
9
|
+
<input-color-basic />
|
|
10
|
+
</template>
|
|
11
|
+
<template #description>
|
|
12
|
+
使用 v-model 实现双向数据绑定。
|
|
13
|
+
</template>
|
|
14
|
+
</Demo>
|
|
15
|
+
|
|
16
|
+
## 不同尺寸
|
|
17
|
+
|
|
18
|
+
InputColor 组件提供三种尺寸。
|
|
19
|
+
|
|
20
|
+
<Demo :source-code="inputColorSizeCode">
|
|
21
|
+
<template #source>
|
|
22
|
+
<input-color-size />
|
|
23
|
+
</template>
|
|
24
|
+
<template #description>
|
|
25
|
+
使用 size 属性改变输入框大小。除了默认大小外,还有另外两个选项: large, small。
|
|
26
|
+
</template>
|
|
27
|
+
</Demo>
|
|
28
|
+
|
|
29
|
+
## 禁用和只读
|
|
30
|
+
|
|
31
|
+
通过 `disabled` 和 `readonly` 属性指定输入框的状态。
|
|
32
|
+
|
|
33
|
+
<Demo :source-code="inputColorDisabledCode">
|
|
34
|
+
<template #source>
|
|
35
|
+
<input-color-disabled />
|
|
36
|
+
</template>
|
|
37
|
+
<template #description>
|
|
38
|
+
通过 disabled 属性指定是否禁用 input-color 组件,通过 readonly 属性指定是否只读。
|
|
39
|
+
</template>
|
|
40
|
+
</Demo>
|
|
41
|
+
|
|
42
|
+
## 仅显示按钮
|
|
43
|
+
|
|
44
|
+
使用 `only-button` 属性可以只显示颜色选择器按钮,隐藏输入框。
|
|
45
|
+
|
|
46
|
+
<Demo :source-code="inputColorOnlyButtonCode">
|
|
47
|
+
<template #source>
|
|
48
|
+
<input-color-only-button />
|
|
49
|
+
</template>
|
|
50
|
+
<template #description>
|
|
51
|
+
设置 `only-button` 属性为 `true` 即可只显示颜色选择器按钮。
|
|
52
|
+
</template>
|
|
53
|
+
</Demo>
|
|
54
|
+
|
|
55
|
+
## 预定义颜色
|
|
56
|
+
|
|
57
|
+
使用 `predefine-colors` 属性可以设置预定义的颜色选项。
|
|
58
|
+
|
|
59
|
+
<Demo :source-code="inputColorPredefineCode">
|
|
60
|
+
<template #source>
|
|
61
|
+
<input-color-predefine />
|
|
62
|
+
</template>
|
|
63
|
+
<template #description>
|
|
64
|
+
通过 `predefine-colors` 属性设置预定义的颜色数组,支持多种颜色格式。
|
|
65
|
+
</template>
|
|
66
|
+
</Demo>
|
|
67
|
+
|
|
68
|
+
## 透明度支持
|
|
69
|
+
|
|
70
|
+
使用 `show-alpha` 属性控制是否支持透明度选择。
|
|
71
|
+
|
|
72
|
+
<Demo :source-code="inputColorNoAlphaCode">
|
|
73
|
+
<template #source>
|
|
74
|
+
<input-color-no-alpha />
|
|
75
|
+
</template>
|
|
76
|
+
<template #description>
|
|
77
|
+
设置 `show-alpha` 属性为 `true` 或 `false` 来控制是否支持透明度选择。
|
|
78
|
+
</template>
|
|
79
|
+
</Demo>
|
|
80
|
+
|
|
81
|
+
## 颜色格式
|
|
82
|
+
|
|
83
|
+
使用 `color-format` 属性可以设置写入 v-model 的颜色的格式。
|
|
84
|
+
|
|
85
|
+
<Demo :source-code="inputColorFormatCode">
|
|
86
|
+
<template #source>
|
|
87
|
+
<input-color-format />
|
|
88
|
+
</template>
|
|
89
|
+
<template #description>
|
|
90
|
+
通过 `color-format` 属性设置颜色格式,支持 hex、rgb、hsl、hsv 四种格式。
|
|
91
|
+
</template>
|
|
92
|
+
</Demo>
|
|
93
|
+
|
|
94
|
+
## API
|
|
95
|
+
|
|
96
|
+
<ApiTable :data="inputColorApi" componentName="input-color" />
|
|
97
|
+
|
|
98
|
+
<script setup>
|
|
99
|
+
import InputColorBasic from '../examples/input-color/basic.vue'
|
|
100
|
+
import InputColorSize from '../examples/input-color/size.vue'
|
|
101
|
+
import InputColorDisabled from '../examples/input-color/disabled.vue'
|
|
102
|
+
import InputColorOnlyButton from '../examples/input-color/only-button.vue'
|
|
103
|
+
import InputColorPredefine from '../examples/input-color/predefine.vue'
|
|
104
|
+
import InputColorNoAlpha from '../examples/input-color/no-alpha.vue'
|
|
105
|
+
import InputColorFormat from '../examples/input-color/format.vue'
|
|
106
|
+
import inputColorApi from './meta/input-color'
|
|
107
|
+
import inputColorBasicCode from '../examples/input-color/basic.vue?raw'
|
|
108
|
+
import inputColorSizeCode from '../examples/input-color/size.vue?raw'
|
|
109
|
+
import inputColorDisabledCode from '../examples/input-color/disabled.vue?raw'
|
|
110
|
+
import inputColorOnlyButtonCode from '../examples/input-color/only-button.vue?raw'
|
|
111
|
+
import inputColorPredefineCode from '../examples/input-color/predefine.vue?raw'
|
|
112
|
+
import inputColorNoAlphaCode from '../examples/input-color/no-alpha.vue?raw'
|
|
113
|
+
import inputColorFormatCode from '../examples/input-color/format.vue?raw'
|
|
114
|
+
</script>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# InputLayer 弹窗选择
|
|
2
|
+
|
|
3
|
+
带有弹窗选择功能的输入框组件。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
基础的弹窗选择用法。
|
|
8
|
+
|
|
9
|
+
<Demo :source-code="inputLayerBasicCode">
|
|
10
|
+
<template #source>
|
|
11
|
+
<input-layer-basic />
|
|
12
|
+
</template>
|
|
13
|
+
<template #description>
|
|
14
|
+
使用 `load-layer-data` 属性配置数据加载方法,`columns` 配置表格列。
|
|
15
|
+
</template>
|
|
16
|
+
</Demo>
|
|
17
|
+
|
|
18
|
+
## API
|
|
19
|
+
|
|
20
|
+
<ApiTable :data="inputLayerApi" componentName="input-layer" />
|
|
21
|
+
|
|
22
|
+
<script setup>
|
|
23
|
+
import InputLayerBasic from '../examples/input-layer/basic.vue'
|
|
24
|
+
import inputLayerBasicCode from '../examples/input-layer/basic.vue?raw'
|
|
25
|
+
import inputLayerApi from './meta/input-layer'
|
|
26
|
+
</script>
|