Skip to content

Commit 7c4dfdc

Browse files
authored
feat: form support reverse action buttons (#5108)
* feat: form support reverse action buttons * fix: submit button class
1 parent 991ada3 commit 7c4dfdc

File tree

4 files changed

+53
-13
lines changed

4 files changed

+53
-13
lines changed

docs/src/components/common-ui/vben-form.md

+1
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ useVbenForm 返回的第二个参数,是一个对象,包含了一些表单
307307
| handleReset | 表单重置回调 | `(values: Record<string, any>,) => Promise<void> \| void` | - |
308308
| handleSubmit | 表单提交回调 | `(values: Record<string, any>,) => Promise<void> \| void` | - |
309309
| handleValuesChange | 表单值变化回调 | `(values: Record<string, any>,) => void` | - |
310+
| actionButtonsReverse | 调换操作按钮位置 | `boolean` | `false` |
310311
| resetButtonOptions | 重置按钮组件参数 | `ActionButtonOptions` | - |
311312
| submitButtonOptions | 提交按钮组件参数 | `ActionButtonOptions` | - |
312313
| showDefaultActions | 是否显示默认操作按钮 | `boolean` | `true` |

packages/@core/ui-kit/form-ui/src/components/form-actions.vue

+32-13
Original file line numberDiff line numberDiff line change
@@ -142,32 +142,51 @@ defineExpose({
142142
"
143143
:style="queryFormStyle"
144144
>
145+
<template v-if="rootProps.actionButtonsReverse">
146+
<!-- 提交按钮前 -->
147+
<slot name="submit-before"></slot>
148+
149+
<component
150+
:is="COMPONENT_MAP.PrimaryButton"
151+
v-if="submitButtonOptions.show"
152+
class="ml-3"
153+
type="button"
154+
@click="handleSubmit"
155+
v-bind="submitButtonOptions"
156+
>
157+
{{ submitButtonOptions.content }}
158+
</component>
159+
</template>
160+
145161
<!-- 重置按钮前 -->
146162
<slot name="reset-before"></slot>
147163

148164
<component
149165
:is="COMPONENT_MAP.DefaultButton"
150166
v-if="resetButtonOptions.show"
151-
class="mr-3"
167+
class="ml-3"
152168
type="button"
153169
@click="handleReset"
154170
v-bind="resetButtonOptions"
155171
>
156172
{{ resetButtonOptions.content }}
157173
</component>
158174

159-
<!-- 提交按钮前 -->
160-
<slot name="submit-before"></slot>
161-
162-
<component
163-
:is="COMPONENT_MAP.PrimaryButton"
164-
v-if="submitButtonOptions.show"
165-
type="button"
166-
@click="handleSubmit"
167-
v-bind="submitButtonOptions"
168-
>
169-
{{ submitButtonOptions.content }}
170-
</component>
175+
<template v-if="!rootProps.actionButtonsReverse">
176+
<!-- 提交按钮前 -->
177+
<slot name="submit-before"></slot>
178+
179+
<component
180+
:is="COMPONENT_MAP.PrimaryButton"
181+
v-if="submitButtonOptions.show"
182+
class="ml-3"
183+
type="button"
184+
@click="handleSubmit"
185+
v-bind="submitButtonOptions"
186+
>
187+
{{ submitButtonOptions.content }}
188+
</component>
189+
</template>
171190

172191
<!-- 展开按钮前 -->
173192
<slot name="expand-before"></slot>

packages/@core/ui-kit/form-ui/src/types.ts

+4
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,10 @@ export interface VbenFormProps<
307307
FormRenderProps<T>,
308308
'componentBindEventMap' | 'componentMap' | 'form'
309309
> {
310+
/**
311+
* 操作按钮是否反转(提交按钮前置)
312+
*/
313+
actionButtonsReverse?: boolean;
310314
/**
311315
* 表单操作区域class
312316
*/

playground/src/views/examples/form/api.vue

+16
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
<script lang="ts" setup>
2+
import { ref } from 'vue';
3+
24
import { Page } from '@vben/common-ui';
35
46
import { Button, Card, message, Space } from 'ant-design-vue';
57
68
import { useVbenForm } from '#/adapter/form';
79
10+
const isReverseActionButtons = ref(false);
11+
812
const [BaseForm, formApi] = useVbenForm({
13+
// 翻转操作按钮的位置
14+
actionButtonsReverse: isReverseActionButtons.value,
915
// 所有表单项共用,可单独在表单内覆盖
1016
commonConfig: {
1117
// 所有表单项
@@ -83,6 +89,7 @@ function handleClick(
8389
| 'labelWidth'
8490
| 'resetDisabled'
8591
| 'resetLabelWidth'
92+
| 'reverseActionButtons'
8693
| 'showAction'
8794
| 'showResetButton'
8895
| 'showSubmitButton'
@@ -158,6 +165,11 @@ function handleClick(
158165
});
159166
break;
160167
}
168+
case 'reverseActionButtons': {
169+
isReverseActionButtons.value = !isReverseActionButtons.value;
170+
formApi.setState({ actionButtonsReverse: isReverseActionButtons.value });
171+
break;
172+
}
161173
case 'showAction': {
162174
formApi.setState({ showDefaultActions: true });
163175
break;
@@ -177,6 +189,7 @@ function handleClick(
177189
});
178190
break;
179191
}
192+
180193
case 'updateResetButton': {
181194
formApi.setState({
182195
resetButtonOptions: { disabled: true },
@@ -226,6 +239,9 @@ function handleClick(
226239
<Button @click="handleClick('resetLabelWidth')">还原labelWidth</Button>
227240
<Button @click="handleClick('disabled')">禁用表单</Button>
228241
<Button @click="handleClick('resetDisabled')">解除禁用</Button>
242+
<Button @click="handleClick('reverseActionButtons')">
243+
翻转操作按钮位置
244+
</Button>
229245
<Button @click="handleClick('hiddenAction')">隐藏操作按钮</Button>
230246
<Button @click="handleClick('showAction')">显示操作按钮</Button>
231247
<Button @click="handleClick('hiddenResetButton')">隐藏重置按钮</Button>

0 commit comments

Comments
 (0)