form-drawer-demo.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <script lang="ts" setup>
  2. import { useVbenDrawer } from '@vben/common-ui';
  3. import { useVbenForm } from '#/adapter/form';
  4. defineOptions({
  5. name: 'FormDrawerDemo',
  6. });
  7. const [Form, formApi] = useVbenForm({
  8. schema: [
  9. {
  10. component: 'Input',
  11. componentProps: {
  12. placeholder: '请输入',
  13. },
  14. fieldName: 'field1',
  15. label: '字段1',
  16. rules: 'required',
  17. },
  18. {
  19. component: 'Input',
  20. componentProps: {
  21. placeholder: '请输入',
  22. },
  23. fieldName: 'field2',
  24. label: '字段2',
  25. rules: 'required',
  26. },
  27. ],
  28. showDefaultActions: false,
  29. });
  30. const [Drawer, drawerApi] = useVbenDrawer({
  31. onCancel() {
  32. drawerApi.close();
  33. },
  34. onConfirm: async () => {
  35. await formApi.submitForm();
  36. drawerApi.close();
  37. },
  38. onOpenChange(isOpen: boolean) {
  39. if (isOpen) {
  40. const { values } = drawerApi.getData<Record<string, any>>();
  41. if (values) {
  42. formApi.setValues(values);
  43. }
  44. }
  45. },
  46. title: '内嵌表单示例',
  47. });
  48. </script>
  49. <template>
  50. <Drawer>
  51. <Form />
  52. </Drawer>
  53. </template>