From 044de2d965e117c0fd9514ba47c120b52ca13820 Mon Sep 17 00:00:00 2001 From: Khafid Prayoga Date: Mon, 24 Nov 2025 12:36:54 +0700 Subject: [PATCH] refactor(form): migrate form components to use doc-entry pattern - Replace FieldGroup/Field/Label with DE.Cell/DE.Field/DE.Label components - Add ButtonAction component with preset styling for common form actions - Simplify form layouts using doc-entry grid system - Add support for disabled/readonly states in form fields --- .../app/person-relative/entry-form.vue | 160 +++++++---------- .../fields/select-relations.vue | 32 ++-- .../pub/my-ui/form/button-action.vue | 165 ++++++++++++++++++ app/components/pub/my-ui/form/input-base.vue | 66 ++++--- 4 files changed, 292 insertions(+), 131 deletions(-) create mode 100644 app/components/pub/my-ui/form/button-action.vue diff --git a/app/components/app/person-relative/entry-form.vue b/app/components/app/person-relative/entry-form.vue index a679dddc..ed7e726f 100644 --- a/app/components/app/person-relative/entry-form.vue +++ b/app/components/app/person-relative/entry-form.vue @@ -3,14 +3,16 @@ import { toTypedSchema } from '@vee-validate/zod' import { FieldArray } from 'vee-validate' // components +import * as DE from '~/components/pub/my-ui/doc-entry' import { Form } from '~/components/pub/ui/form' -import InputBase from '~/components/pub/my-ui/form/input-base.vue' -import Label from '~/components/pub/my-ui/form/label.vue' import { SelectRelations } from './fields' +import InputBase from '~/components/pub/my-ui/form/input-base.vue' +import ButtonAction from '~/components/pub/my-ui/form/button-action.vue' const props = defineProps<{ title: string schema: any + isReadonly?: boolean initialValues?: any }>() @@ -23,6 +25,8 @@ defineExpose({ setValues: (values: any, shouldValidate = true) => formRef.value?.setValues(values, shouldValidate), values: computed(() => formRef.value?.values), }) + +const { title = 'Kontak Pasien', isReadonly = false } = props