<!-- <template>
  <Vueform :format-data="formatFormData">

    <CobaNamaUser />
    <CobaPassword />
    <ButtonElement name="submit" button-label="Simpan" :submits="true" />
  </Vueform>
</template>

<script setup>
const onChange = (el$) => {
  console.log(el$)
}
const formatFormData = ({ name, email, email2 }) => {
  console.log(`nama : ${name} || email : ${email} email2 : ${email2}`)
}

const formatName = (name, value) => {
  return { [name]: value.toUpperCase() } // must return an object
}

const formatEmail = (name, value) => {
  return { [name]: value.toLowerCase() } // must return an object
}
</script> -->
<script setup lang="ts">
import { FormLibAddress, FormLibContact, FormLibHumanName, FormLibTelecom } from '#components'
// import Identifier from '../Lib/Identifier.vue'

const data = ref('')
const handleResponse = (response, form$) => {
  console.log(response) // axios response
  console.log(response.status) // HTTP status code
  console.log(response.data) // response data

  console.log(form$) // <Vueform> instance
}
</script>
<template>
  <Vueform v-model="data" validate-on="change|step" endpoint="/api/patient/create" method="post"
    @response="handleResponse">
    <StaticElement name="identifierTitle" tag="h2" content="Nomor Identitas" />
    <FormLibIdentifier />
    <StaticElement name="divider" tag="hr" />
    <StaticElement name="personalInfoTitle" tag="h2" content="Personal Info" />
    <FormLibHumanName />
    <!-- <ListElement name="nestedList" :controls="{
      add: false,
      remove: false,
    }">
      <template #default="{ index }">
        <ObjectElement :name="index">
          <SelectElement name="humanNameUse" :items="[
            {
              value: 'official',
              label: '👨‍💼  Resmi',
            },
            {
              value: 'usual',
              label: '👨‍🦱  Biasa',
            },
            {
              value: 'temp',
              label: '🦲  Sementara',
            },
            // {
            //   value: 'nickname',
            //   label: '🙋‍♂️  Panggilan',
            // },
            // {
            //   value: 'anonymous',
            //   label: '👤  Anonim',
            // },
            // {
            //   value: 'old',
            //   label: '💇‍♂️  Nama Lama',
            // },
            // {
            //   value: 'maiden',
            //   label: '👧  Nama Gadis',
            // },
          ]" :columns="{
            default: {
              container: 5,
            },
            sm: {
              container: 3,
            },
            lg: {
              container: 2,
            },
          }" :rules="['required']" :native="false" :can-deselect="false" :can-clear="false" :close-on-select="false"
            :caret="false" default="official" />
          <TextElement name="text" :columns="{
            default: {
              container: 7,
            },
            sm: {
              container: 9,
            },
            lg: {
              container: 10,
            },
          }" placeholder="Nama Lengkap" />
        </ObjectElement>
      </template>
</ListElement> -->
    <GroupElement name="container2">
      <GroupElement name="column1" :columns="{
        container: 6,
      }">
        <FormLibGender />
        <!-- <RadiogroupElement name="gender" view="tabs" label="Jenis Kelamin" :items="[
          {
            value: 'male',
            label: 'Laki-laki',
          },
          {
            value: 'female',
            label: 'female',
          },
          // {
          //   value: 'other',
          //   label: 'Lainnya',
          // },
          // {
          //   value: 'unknown',
          //   label: ' ',
          // },
        ]" default="unknown" /> -->
      </GroupElement>
      <GroupElement name="column_2" :columns="{
        container: 6,
      }">
        <ListElement name="maritalStatus" :controls="{
          add: false,
          remove: false,
        }">
          <template #default="{ index }">
            <ObjectElement :name="index">
              <ListElement name="coding" :controls="{
                add: false,
                remove: false,
              }">
                <template #default="{ index }">
                  <ObjectElement :name="index">
                    <SelectElement name="select" :items="[
                      {
                        value: 'UNK',
                        label: 'Tidak Tahu',
                      },
                      {
                        value: 'U',
                        label: 'Belum Menikah',
                      },
                      {
                        value: 'M',
                        label: 'Menikah',
                      },
                      {
                        value: 'D',
                        label: 'Cerai Hidup',
                      },
                      {
                        value: 'W',
                        label: 'Cerai Mati',
                      },
                    ]" :search="true" :native="false" label="Status Perkawinan" input-type="search" autocomplete="off"
                      :can-deselect="false" :can-clear="false" default="UNK" />
                    <HiddenElement name="system" default="http://terminology.hl7.org/CodeSystem/v3-MaritalStatus" />
                  </ObjectElement>
                </template>
              </ListElement>
            </ObjectElement>
          </template>
        </ListElement>
      </GroupElement>
    </GroupElement>
    <SelectElement name="birthPlace" :search="true" :native="false" input-type="search" autocomplete="on" :items="[
      {
        value: 'malang',
        label: 'Malang',
      },
      {
        value: 'surabaya',
        label: 'Surabaya',
      },
    ]" placeholder="Tempat Lahir" :columns="{
      sm: {
        container: 6,
      },
      lg: {
        container: 6,
      },
    }" />
    <DateElement name="birthDate" placeholder="Tanggal Lahir" :columns="{
      sm: {
        container: 6,
      },
      lg: {
        container: 6,
      },
    }" />
    <StaticElement name="divider_1" tag="hr" />
    <StaticElement name="addressTitle" tag="h2" content="Alamat" />
    <FormLibAddress class="mt" />

    <StaticElement name="divider_2" tag="hr" />
    <StaticElement name="contactTitle" tag="h2" content="Kontak" />
    <FormLibTelecom class="mt" />
    <StaticElement name="divider_2" tag="hr" />
    <StaticElement name="contactTitle" tag="h2" content="Kontak Penanggung Jawab" />
    <FormLibContact class="mt" />

    <StaticElement name="divider_3" tag="hr" />
    <StaticElement name="communicationTitle" tag="h2" content="Komunikasi" />
    <FormLibCommunication class="mt" />
    <GroupElement name="container" :columns="{
      default: {
        container: 7,
      },
      sm: {
        container: 8,
      },
      lg: {
        container: 9,
      },
    }" />
    <GroupElement name="container2_3" :columns="{
      default: {
        container: 5,
      },
      sm: {
        container: 4,
      },
      lg: {
        container: 3,
      },
    }">
      <GroupElement name="column1" :columns="{
        container: 6,
      }">
        <ButtonElement name="secondaryButton" button-label="Batal" :secondary="true" align="center" size="lg" />
      </GroupElement>
      <GroupElement name="column2" :columns="{
        container: 6,
      }">
        <ButtonElement name="submit" button-label="Simpan" :submits="true" align="center" size="lg" />
      </GroupElement>
    </GroupElement>
  </Vueform>
  <pre>{{ data }}</pre>
</template>
<style>
.mt {
  margin-top: 20px;
}
</style>