<app-page-header
  title="Form Validations"
  title1="Form Validations"
  activeitem="Forms"
></app-page-header>

<!-- Start::row-1 -->
<div class="grid grid-cols-12 gap-6">
  <div class="col-span-12">
    <div class="box">
      <div class="box-header">
        <h5 class="box-title">Default Validation</h5>
      </div>
      <div class="box-body">
        <form
          class="ti-validation"
          [formGroup]="customForm"
          (ngSubmit)="Submit()"
          novalidate
        >
          <div class="grid lg:grid-cols-2 gap-6">
            <div class="space-y-2">
              <label class="ti-form-label mb-0">First Name</label>
              <input
                type="text"
                formControlName="firstname"
                class="my-auto ti-form-input form-control"
                placeholder="Firstname"
              />
              <div
                *ngIf="
                  customForm.controls['firstname'].invalid &&
                  (customForm.controls['firstname'].dirty ||
                    customForm.controls['firstname'].touched)
                "
                class="text-danger"
              >
                First Name is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Last Name</label>
              <input
                type="text"
                formControlName="lastname"
                class="my-auto ti-form-input form-control"
                placeholder="Lastname"
              />
              <div
                *ngIf="
                  customForm.controls['lastname'].invalid &&
                  (customForm.controls['lastname'].dirty ||
                    customForm.controls['lastname'].touched)
                "
                class="text-danger"
              >
                Last Name is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Phone Number</label>
              <input
                type="number"
                formControlName="phonenumber"
                class="my-auto ti-form-input form-control"
                placeholder="+91 123-456-789"
              />
              <div
                *ngIf="
                  customForm.controls['phonenumber'].invalid &&
                  (customForm.controls['phonenumber'].dirty ||
                    customForm.controls['phonenumber'].touched)
                "
                class="text-danger"
              >
                Phone Number is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Email Address</label>
              <input
                type="email"
                formControlName="email"
                class="my-auto ti-form-input form-control"
                placeholder="your@site.com"
              />
              <div
                *ngIf="
                  customForm.controls['email'].invalid &&
                  (customForm.controls['email'].dirty ||
                    customForm.controls['email'].touched)
                "
                class="text-danger"
              >
                Email is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Password</label>
              <input
                type="password"
                class="ti-form-input form-control"
                placeholder="password"
                required
              />
              <div
                *ngIf="
                  customForm.controls['password'].invalid &&
                  (customForm.controls['password'].dirty ||
                    customForm.controls['password'].touched)
                "
                class="text-danger"
              >
                password is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Confirm Password</label>
              <input
                type="password"
                class="ti-form-input"
                placeholder="password"
                required
              />
              <div
                *ngIf="
                  customForm.controls['password'].invalid &&
                  (customForm.controls['password'].dirty ||
                    customForm.controls['password'].touched)
                "
                class="text-danger"
              >
                password is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Date Of Birth</label>
              <dp-date-picker 
                      class="ti-form-input joining-date flatpickr-input date active"
                      placeholder="dd-mm-yyyy"
                      [config]="datePickerConfig"
                      required="true"
                    >
                    </dp-date-picker>
              <div  
                *ngIf="
                  customForm.controls['date'].invalid &&
                  (customForm.controls['date'].dirty ||
                    customForm.controls['date'].touched)
                "
                class="text-danger"
              >
                date is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Gender</label>
              <ul class="flex flex-col sm:flex-row">
                <li
                  class="ti-list-group w-full gap-x-2.5 bg-white border text-gray-800 ltr:sm:-ml-px rtl:sm:-mr-px sm:mt-0 ltr:sm:first:rounded-tr-none rtl:sm:first:rounded-tl-none ltr:sm:first:rounded-bl-lg rtl:sm:first:rounded-br-lg ltr:sm:last:rounded-bl-none rtl:sm:last:rounded-br-none ltr:sm:last:rounded-tr-lg rtl:sm:last:rounded-tl-lg dark:bg-bgdark dark:border-white/10 dark:text-white"
                >
                  <div class="relative flex items-start w-full">
                    <div class="flex items-center h-5">
                      <input
                        id="ti-radio-validation-1"
                        name="ti-radio-validation"
                        type="radio"
                        class="ti-form-radio"
                        checked
                        required
                      />
                    </div>
                    <label
                      for="ti-radio-validation-1"
                      class="ltr:ml-3 rtl:mr-3 block w-full text-sm text-gray-600 dark:text-white/70"
                    >
                      Female
                    </label>
                  </div>
                </li>
                <li
                  class="ti-list-group w-full gap-x-2.5 bg-white border text-gray-800 ltr:sm:-ml-px rtl:sm:-mr-px sm:mt-0 ltr:sm:first:rounded-tr-none rtl:sm:first:rounded-tl-none ltr:sm:first:rounded-bl-lg rtl:sm:first:rounded-br-lg ltr:sm:last:rounded-bl-none rtl:sm:last:rounded-br-none ltr:sm:last:rounded-tr-lg rtl:sm:last:rounded-tl-lg dark:bg-bgdark dark:border-white/10 dark:text-white"
                >
                  <div class="relative flex items-start w-full">
                    <div class="flex items-center h-5">
                      <input
                        id="ti-radio-validation-2"
                        name="ti-radio-validation"
                        type="radio"
                        class="ti-form-radio"
                        required
                      />
                    </div>
                    <label
                      for="ti-radio-validation-2"
                      class="ltr:ml-3 rtl:mr-3 block w-full text-sm text-gray-600 dark:text-white/70"
                    >
                      Male
                    </label>
                  </div>
                </li>

                <li
                  class="ti-list-group w-full gap-x-2.5 bg-white border text-gray-800 ltr:sm:-ml-px rtl:sm:-mr-px sm:mt-0 ltr:sm:first:rounded-tr-none rtl:sm:first:rounded-tl-none ltr:sm:first:rounded-bl-lg rtl:sm:first:rounded-br-lg ltr:sm:last:rounded-bl-none rtl:sm:last:rounded-br-none ltr:sm:last:rounded-tr-lg rtl:sm:last:rounded-tl-lg dark:bg-bgdark dark:border-white/10 dark:text-white"
                >
                  <div class="relative flex items-start w-full">
                    <div class="flex items-center h-5">
                      <input
                        id="ti-radio-validation-3"
                        name="ti-radio-validation"
                        type="radio"
                        class="ti-form-radio"
                        required
                      />
                    </div>
                    <label
                      for="ti-radio-validation-3"
                      class="ltr:ml-3 rtl:mr-3 block w-full text-sm text-gray-600 dark:text-white/70"
                    >
                      Others
                    </label>
                  </div>
                </li>
              </ul>
            </div>
          </div>
          <div class="my-5">
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Address</label>
              <input
                type="text"
                formControlName="address"
                class="my-auto ti-form-input form-control"
                placeholder="Address"
                required
              />
              <div
                *ngIf="
                  customForm.controls['address'].invalid &&
                  (customForm.controls['address'].dirty ||
                    customForm.controls['address'].touched)
                "
                class="text-danger"
              >
                address is required.
              </div>
            </div>
          </div>
          <div class="grid lg:grid-cols-2 gap-6">
            <div class="space-y-2">
              <label class="ti-form-label mb-0">City</label>
              <input
                type="text"
                formControlName="city"
                class="my-auto ti-form-input form-control"
                placeholder="city"
                required
              />
              <div
                *ngIf="
                  customForm.controls['city'].invalid &&
                  (customForm.controls['city'].dirty ||
                    customForm.controls['city'].touched)
                "
                class="text-danger"
              >
                city is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">State</label>
              <input
                type="text"
                formControlName="state"
                class="my-auto ti-form-input form-control"
                placeholder="state"
                required
              />
              <div
                *ngIf="
                  customForm.controls['state'].invalid &&
                  (customForm.controls['state'].dirty ||
                    customForm.controls['state'].touched)
                "
                class="text-danger"
              >
                state is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Pincode</label>
              <input
                type="number"
                formControlName="pincode"
                class="my-auto ti-form-input form-control"
                placeholder="pincode"
              />
              <div
                *ngIf="
                  customForm.controls['pincode'].invalid &&
                  (customForm.controls['pincode'].dirty ||
                    customForm.controls['pincode'].touched)
                "
                class="text-danger"
              >
                pincode is required.
              </div>
            </div>
          </div>
          <div class="my-5">
            <input
              type="checkbox"
              pincode
              class="ti-form-checkbox mt-0.5 form-check-input"
              id="hs-checkbox-group-1"
              required
            />
            <label
              for="hs-checkbox-group-1"
              class="text-sm text-gray-500 ltr:ml-3 rtl:mr-3 dark:text-white/70 form-check-label"
              >I agree with the
              <a href="javascript:void(0);" class="text-primary hover:underline"
                >terms and conditions</a
              ></label
            >
            <div
              *ngIf="
                customForm.controls['agreement'].invalid &&
                (customForm.controls['agreement'].dirty ||
                  customForm.controls['agreement'].touched)
              "
              class="text-danger"
            >
              You must agree to the terms and conditions.
            </div>
          </div>
          <button type="submit" class="ti-btn ti-btn-primary">Submit</button>
        </form>
      </div>
    </div>
  </div>
  <div class="col-span-12">
    <div class="box">
      <div class="box-header">
        <h5 class="box-title">Custom Validation</h5>
      </div>
      <div class="box-body">
       <form
          class="ti-validation"
          [formGroup]="customForm"
          (ngSubmit)="Submit()"
          novalidate
        >
          <div class="grid lg:grid-cols-2 gap-6">
            <div class="space-y-2">
              <label class="ti-form-label mb-0">First Name</label>
              <input
                type="text"
                formControlName="firstname"
                class="my-auto ti-form-input form-control"
                placeholder="Firstname"
              />
              <div
                *ngIf="
                  customForm.controls['firstname'].invalid &&
                  (customForm.controls['firstname'].dirty ||
                    customForm.controls['firstname'].touched)
                "
                class="text-danger"
              >
                First Name is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Last Name</label>
              <input
                type="text"
                formControlName="lastname"
                class="my-auto ti-form-input form-control"
                placeholder="Lastname"
              />
              <div
                *ngIf="
                  customForm.controls['lastname'].invalid &&
                  (customForm.controls['lastname'].dirty ||
                    customForm.controls['lastname'].touched)
                "
                class="text-danger"
              >
                Last Name is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Phone Number</label>
              <input
                type="number"
                formControlName="phonenumber"
                class="my-auto ti-form-input form-control"
                placeholder="+91 123-456-789"
              />
              <div
                *ngIf="
                  customForm.controls['phonenumber'].invalid &&
                  (customForm.controls['phonenumber'].dirty ||
                    customForm.controls['phonenumber'].touched)
                "
                class="text-danger"
              >
                Phone Number is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Email Address</label>
              <input
                type="email"
                formControlName="email"
                class="my-auto ti-form-input form-control"
                placeholder="your@site.com"
              />
              <div
                *ngIf="
                  customForm.controls['email'].invalid &&
                  (customForm.controls['email'].dirty ||
                    customForm.controls['email'].touched)
                "
                class="text-danger"
              >
                Email is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Password</label>
              <input
                type="password"
                class="ti-form-input form-control"
                placeholder="password"
                required
              />
              <div
                *ngIf="
                  customForm.controls['password'].invalid &&
                  (customForm.controls['password'].dirty ||
                    customForm.controls['password'].touched)
                "
                class="text-danger"
              >
                password is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Confirm Password</label>
              <input
                type="password"
                class="ti-form-input"
                placeholder="password"
                required
              />
              <div
                *ngIf="
                  customForm.controls['password'].invalid &&
                  (customForm.controls['password'].dirty ||
                    customForm.controls['password'].touched)
                "
                class="text-danger"
              >
                password is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Date Of Birth</label>
             <input type="date" class="ti-form-input joining-date  date active" id="date">
              <div  
                *ngIf="
                  customForm.controls['date'].invalid &&
                  (customForm.controls['date'].dirty ||
                    customForm.controls['date'].touched)
                "
                class="text-danger"
              >
                date is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Gender</label>
              <ul class="flex flex-col sm:flex-row">
                <li
                  class="ti-list-group w-full gap-x-2.5 bg-white border text-gray-800 ltr:sm:-ml-px rtl:sm:-mr-px sm:mt-0 ltr:sm:first:rounded-tr-none rtl:sm:first:rounded-tl-none ltr:sm:first:rounded-bl-lg rtl:sm:first:rounded-br-lg ltr:sm:last:rounded-bl-none rtl:sm:last:rounded-br-none ltr:sm:last:rounded-tr-lg rtl:sm:last:rounded-tl-lg dark:bg-bgdark dark:border-white/10 dark:text-white"
                >
                  <div class="relative flex items-start w-full">
                    <div class="flex items-center h-5">
                      <input
                        id="ti-radio-validation-6"
                        name="ti-radio-validation"
                        type="radio"
                        class="ti-form-radio"
                        checked
                        required
                      />
                    </div>
                    <label
                      for="ti-radio-validation-6"
                      class="ltr:ml-3 rtl:mr-3 block w-full text-sm text-gray-600 dark:text-white/70"
                    >
                      Female
                    </label>
                  </div>
                </li>
                <li
                  class="ti-list-group w-full gap-x-2.5 bg-white border text-gray-800 ltr:sm:-ml-px rtl:sm:-mr-px sm:mt-0 ltr:sm:first:rounded-tr-none rtl:sm:first:rounded-tl-none ltr:sm:first:rounded-bl-lg rtl:sm:first:rounded-br-lg ltr:sm:last:rounded-bl-none rtl:sm:last:rounded-br-none ltr:sm:last:rounded-tr-lg rtl:sm:last:rounded-tl-lg dark:bg-bgdark dark:border-white/10 dark:text-white"
                >
                  <div class="relative flex items-start w-full">
                    <div class="flex items-center h-5">
                      <input
                        id="ti-radio-validation-4"
                        name="ti-radio-validation"
                        type="radio"
                        class="ti-form-radio"
                        required
                      />
                    </div>
                    <label
                      for="ti-radio-validation-4"
                      class="ltr:ml-3 rtl:mr-3 block w-full text-sm text-gray-600 dark:text-white/70"
                    >
                      Male
                    </label>
                  </div>
                </li>

                <li
                  class="ti-list-group w-full gap-x-2.5 bg-white border text-gray-800 ltr:sm:-ml-px rtl:sm:-mr-px sm:mt-0 ltr:sm:first:rounded-tr-none rtl:sm:first:rounded-tl-none ltr:sm:first:rounded-bl-lg rtl:sm:first:rounded-br-lg ltr:sm:last:rounded-bl-none rtl:sm:last:rounded-br-none ltr:sm:last:rounded-tr-lg rtl:sm:last:rounded-tl-lg dark:bg-bgdark dark:border-white/10 dark:text-white"
                >
                  <div class="relative flex items-start w-full">
                    <div class="flex items-center h-5">
                      <input
                        id="ti-radio-validation-5"
                        name="ti-radio-validation"
                        type="radio"
                        class="ti-form-radio"
                        required
                      />
                    </div>
                    <label
                      for="ti-radio-validation-5"
                      class="ltr:ml-3 rtl:mr-3 block w-full text-sm text-gray-600 dark:text-white/70"
                    >
                      Others
                    </label>
                  </div>
                </li>
              </ul>
            </div>
          </div>
          <div class="my-5">
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Address</label>
              <input
                type="text"
                formControlName="address"
                class="my-auto ti-form-input form-control"
                placeholder="Address"
                required
              />
              <div
                *ngIf="
                  customForm.controls['address'].invalid &&
                  (customForm.controls['address'].dirty ||
                    customForm.controls['address'].touched)
                "
                class="text-danger"
              >
                address is required.
              </div>
            </div>
          </div>
          <div class="grid lg:grid-cols-2 gap-6">
            <div class="space-y-2">
              <label class="ti-form-label mb-0">City</label>
              <input
                type="text"
                formControlName="city"
                class="my-auto ti-form-input form-control"
                placeholder="city"
                required
              />
              <div
                *ngIf="
                  customForm.controls['city'].invalid &&
                  (customForm.controls['city'].dirty ||
                    customForm.controls['city'].touched)
                "
                class="text-danger"
              >
                city is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">State</label>
              <input
                type="text"
                formControlName="state"
                class="my-auto ti-form-input form-control"
                placeholder="state"
                required
              />
              <div
                *ngIf="
                  customForm.controls['state'].invalid &&
                  (customForm.controls['state'].dirty ||
                    customForm.controls['state'].touched)
                "
                class="text-danger"
              >
                state is required.
              </div>
            </div>
            <div class="space-y-2">
              <label class="ti-form-label mb-0">Pincode</label>
              <input
                type="number"
                formControlName="pincode"
                class="my-auto ti-form-input form-control"
                placeholder="pincode"
              />
              <div
                *ngIf="
                  customForm.controls['pincode'].invalid &&
                  (customForm.controls['pincode'].dirty ||
                    customForm.controls['pincode'].touched)
                "
                class="text-danger"
              >
                pincode is required.
              </div>
            </div>
          </div>
          <div class="my-5">
            <input
              type="checkbox"
              pincode
              class="ti-form-checkbox mt-0.5 form-check-input"
              id="hs-checkbox-group-2"
              required
            />
            <label
              for="hs-checkbox-group-2"
              class="text-sm text-gray-500 ltr:ml-3 rtl:mr-3 dark:text-white/70 form-check-label"
              >I agree with the
              <a href="javascript:void(0);" class="text-primary hover:underline"
                >terms and conditions</a
              ></label
            >
            <div
              *ngIf="
                customForm.controls['agreement'].invalid &&
                (customForm.controls['agreement'].dirty ||
                  customForm.controls['agreement'].touched)
              "
              class="text-danger"
            >
              You must agree to the terms and conditions.
            </div>
          </div>
          <button type="submit" class="ti-btn ti-btn-primary">Submit</button>
        </form>
      </div>
    </div>
  </div>
</div>
<!-- End::row-1 -->