We’ve migrated our documentation to a new site, which means some URLs have changed.
Subscriptions

How to update the My Account Profile widget template (profile.html)

1. Updating the profile widget template (profile.html)

2. Updating the profile widget styles (profile.css)

We recommend that you either keep a single "Save" button for the whole widget or provide each block with its individual "Save" button.

Updating the profile widget template (profile.html)

Each block must contain the following base components:

  • Notification of successful update (format: flashProfile[*name of block*]Updated);

  • Error Notification (format: profile-[*name of block*]-errors-list;

  • Control fields;

  • Button for saving changes (format: actionUpdateProfile[*name of block*]);

  • Button for canceling changes (format: actionRestoreProfile[*name of block*]);

The email block also contains additional components:

      • notification of sending a confirmation code (email and phone number);

      • phone number confirmation window.

To avoid duplicating the display of error and successful profile updates messages, the following code should be removed from the template:

HTML
<errors-list></errors-list>
<div class="complete-msg" flashProfileUpdated>
  <t>Profile updated</t>
</div>

Full code of new profile.html template

HTML
<div class="content-padding-tb">
  <div class="tp-data-block">
    <div class="tp-data-block-header">
      <t>General</t>
    </div>
    <profile-name-errors-list></profile-name-errors-list>
    <div flashProfileNameUpdated>
      <div class="complete-msg" data-e2e="name-updated-msg">
        <i class="complete-msg-icon"></i>
        <t>General has been changed.</t>
      </div>
    </div>
    <div class="tp-form form-horizontal">
      <div class="control-group">
        <label class="control-label" for="first_name">
          <t>First name</t>
        </label>
        <div class="controls">
          <input fieldProfileFirstName id="first_name" placeholder="{{ 'First name' | t }}" type="text" />
          <span class="error-message" showIfFirstNameInvalid><t>First name is required</t></span>
        </div>
      </div>
    </div>
    <div class="tp-form form-horizontal">
      <div class="control-group">
        <label class="control-label" for="last_name">
          <t>Last name</t>
        </label>
        <div class="controls">
          <input fieldProfileLastName id="last_name" placeholder="{{ 'Last name' | t }}" type="text" />
          <span class="error-message" showIfForLastNameInvalid><t>Last name is required</t></span>
        </div>
      </div>
    </div>
    <div class="tp-data-block-actions">
      <button actionUpdateProfileName class="btn btn-small btn-green">
        <t>Save</t>
      </button>
      <button actionRestoreProfileName class="btn btn-small">
        <t>Cancel</t>
      </button>
    </div>
  </div>
  <div class="tp-data-block">
    <div class="tp-data-block-header">
      <t>Email</t>
    </div>
    <profile-email-errors-list></profile-email-errors-list>
    <div flashProfileEmailUpdated>
      <div class="complete-msg" data-e2e="email-updated-msg">
        <i class="complete-msg-icon"></i>
        <t>Email has been changed.</t>
      </div>
    </div>
    <div flashProfileEmailConfirmSent>
      <div class="complete-msg" data-e2e="email-resend-msg">
        <i class="complete-msg-icon"></i>
        <t>A new verification email has been sent. Please confirm your email address.</t>
      </div>
    </div>
    <div class="tp-form form-horizontal">
      <div class="control-group">
        <label class="control-label" for="email">
          <t>Email</t>
        </label>
        <div class="controls">
          <input fieldProfileEmail id="email" placeholder="{{ 'Email' | t }}" type="text" />
          <span class="error-message" showIfEmailInvalidBy="EMAIL_REQUIRED"><t>Email is required</t></span>
          <span class="error-message" showIfEmailInvalidBy="EMAIL_OR_PHONE_REQUIRED"><t>Email or phone is required</t></span>
        </div>
      </div>
      <div class="control-group" *showIfEmailChanged>
        <label class="control-label" for="email-current_password">
          <t>Current Password</t>
        </label>
        <div class="controls">
          <input
            fieldProfileEmailCurrentPassword=""
            id="email-current_password"
            placeholder="{{ 'Current password' | t }}"
            type="password"
          />
          <span class="error-message" showIfPasswordInvalid><t>Password is required</t></span>
        </div>
      </div>
      <div class="control-group">
        <div *showIfResendConfirmationEmailNeeded class="controls help">
          <span class="title" data-e2e="resendTitle"><t>This email address is not confirmed.</t></span>
          <div>
            <a actionResendConfirmationEmail class="btn btn-link" data-e2e="resendLink">
              <t>Resend validation email</t>
            </a>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-data-block-actions">
      <button actionUpdateProfileEmail class="btn btn-small btn-green">
        <t>Save</t>
      </button>
      <button actionRestoreProfileEmail class="btn btn-small">
        <t>Cancel</t>
      </button>
    </div>
  </div>
  <div class="tp-data-block">
    <div *showIfPasswordless>
      <div class="tp-form form-horizontal">
        <div class="control-label">
          <a *onChangePassword class="btn btn-link" data-e2e="onChangePassword">
            <t>Add a password</t>
          </a>
        </div>
      </div>
    </div>
    <div *showIfCanAddPassword>
      <div class="tp-data-block-header">
        <t>Password</t>
      </div>
      <profile-password-errors-list></profile-password-errors-list>
      <div flashProfilePasswordUpdated>
        <div class="complete-msg" data-e2e="password-updated-msg">
          <i class="complete-msg-icon"></i>
          <t>Password has been changed.</t>
        </div>
      </div>
      <div>
        <div *hideIfChangePassword class="tp-form form-horizontal">
          <div class="control-group">
            <label class="control-label" for="password">
              <t>Password</t>
            </label>
            <div class="controls">
              <input
                disabled
                id="password"
                placeholder="{{ 'Password' | t }}"
                readonly
                type="password"
                value="********"
              />
            </div>
          </div>
          <div class="control-group">
            <div class="controls help">
              <div>
                <a *onChangePassword class="btn btn-link" data-e2e="onChangePassword">
                  <t>Change password</t>
                </a>
              </div>
            </div>
          </div>
        </div>
        <div *showIfChangePasswordPasswordless class="tp-form form-horizontal">
          <div class="control-group">
            <label class="control-label" for="current_password">
              <t>Password</t>
            </label>
            <div class="controls">
              <input
                fieldProfileCurrentPassword
                id="current_password"
                placeholder="{{ 'Password' | t }}"
                type="password"
              />
              <span class="error-message" showIfPasswordInvalid><t>Password is required</t></span>
              <div class="control-divider"></div>
            </div>
          </div>
        </div>
        <div *showIfChangePassword class="tp-form form-horizontal">
          <div class="control-group">
            <label class="control-label" for="new_password">
              <t>New password</t>
            </label>
            <div class="controls">
              <input fieldProfileNewPassword id="new_password" placeholder="{{ 'New password' | t }}" type="password" />
              <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_REQUIRED"><t>Password is required</t></span>
              <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_MIXED_CASE"><t>Password must contain lowercase and uppercase letters</t></span>
              <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_ALPHANUMERIC"><t>Password must contain both letters and numbers</t></span>
              <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_SPECIAL_CHARACTERS"><t>Password must contain any characters</t></span>
              <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_CANT_CONTAIN_EMAIL"><t>Password can not contain the user's email address</t></span>
              <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_MIN_LENGTH"><t>Minimum number of characters required for user password.</t></span>
            </div>
          </div>
        </div>
        <div *showIfChangePasswordPasswordless class="tp-form form-horizontal">
          <div class="control-group">
            <label class="control-label" for="repeat_password">
              <t>Confirm new password</t>
            </label>
            <div class="controls">
              <input
                fieldProfileRepeatNewPassword
                id="repeat_password"
                placeholder="{{ 'Confirm new password' | t }}"
                type="password"
              />
              <span class="error-message" showIfConfirmPasswordInvalid><t>New and confirmation password do not match</t></span>
            </div>
          </div>
        </div>
      </div>
      <div class="tp-data-block-actions">
        <button actionUpdateProfilePassword class="btn btn-small btn-green">
          <t>Save</t>
        </button>
        <button actionRestoreProfilePassword class="btn btn-small">
          <t>Cancel</t>
        </button>
      </div>
    </div>
  </div>
  <div class="tp-data-block">
    <div class="tp-data-block-header">
      <t>Profile information</t>
    </div>
    <profile-custom-fields-errors-list></profile-custom-fields-errors-list>
    <div flashProfileCustomFieldsUpdated>
      <div class="complete-msg" data-e2e="custom-fields-updated-msg">
        <i class="complete-msg-icon"></i>
        <t>Profile information has been changed.</t>
      </div>
    </div>
    <custom-fields class="tp-form form-horizontal">
      <ng-template let-field>
        <div class="control-group">
          <label [fieldName]="field.field_name" class="control-label" customFieldLabel mouseOverTooltip></label>
          <div [fieldName]="field.field_name" class="control-label-icon" showForTooltipType="InfoIcon">
            <i [fieldName]="field.field_name" class="pn-icon pn-icon-tooltip" infoIconTooltip></i>
          </div>
          <div class="controls">
            <custom-field-input [fieldName]="field.field_name"></custom-field-input>
          </div>
        </div>
      </ng-template>
    </custom-fields>
    <div class="tp-data-block-actions">
      <button actionUpdateProfileCustomFields class="btn btn-small btn-green">
        <t>Save</t>
      </button>
      <button actionRestoreProfileCustomFields class="btn btn-small">
        <t>Cancel</t>
      </button>
    </div>
  </div>
  <div class="tp-data-block" showIfSocialAuthAvailable>
    <div class="tp-data-block-header">
      <t>Social accounts</t>
    </div>
    <div class="tp-form form-horizontal" showIfAppleAvailable>
      <div class="control-group">
        <div class="control-label social-caption">
          <i class="social-icon apple"></i>
          Apple
        </div>
        <div class="controls">
          <span class="social-linked" showIfAppleLinked><t>Connected</t></span>
          <div class="social-buttons">
            <apple-unlink>
              <t>Disconnect</t>
            </apple-unlink>
            <apple-link>
              <t>Connect account</t>
            </apple-link>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-form form-horizontal" showIfFacebookAvailable>
      <div class="control-group">
        <div class="control-label social-caption">
          <i class="social-icon facebook"></i>
          Facebook
        </div>
        <div class="controls">
          <span class="social-linked" showIfFacebookLinked><t>Connected</t></span>
          <div class="social-buttons">
            <facebook-unlink>
              <t>Disconnect</t>
            </facebook-unlink>
            <facebook-link>
              <t>Connect account</t>
            </facebook-link>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-form form-horizontal" showIfGoogleAvailable>
      <div class="control-group">
        <div class="control-label social-caption">
          <i class="social-icon google"></i>
          Google
        </div>
        <div class="controls">
          <span class="social-linked" showIfGoogleLinked><t>Connected</t></span>
          <div class="social-buttons">
            <google-unlink>
              <t>Disconnect</t>
            </google-unlink>
            <google-link>
              <t>Connect account</t>
            </google-link>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-form form-horizontal" showIfTwitterAvailable>
      <div class="control-group">
        <div class="control-label social-caption">
          <i class="social-icon twitter"></i>
          Twitter
        </div>
        <div class="controls">
          <span class="social-linked" showIfTwitterLinked><t>Connected</t></span>
          <div class="social-buttons">
            <twitter-unlink>
              <t>Disconnect</t>
            </twitter-unlink>
            <twitter-link>
              <t>Connect account</t>
            </twitter-link>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-form form-horizontal" showIfLinkedinAvailable>
      <div class="control-group">
        <div class="control-label social-caption">
          <i class="social-icon linkedin"></i>
          LinkedIn
        </div>
        <div class="controls">
          <span class="social-linked" showIfLinkedinLinked><t>Connected</t></span>
          <div class="social-buttons">
            <linkedin-unlink>
              <t>Disconnect</t>
            </linkedin-unlink>
            <linkedin-link>
              <t>Connect account</t>
            </linkedin-link>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-form form-horizontal" showIfMicrosoftAvailable>
      <div class="control-group">
        <div class="control-label social-caption">
          <i class="social-icon microsoft"></i>
          Microsoft
        </div>
        <div class="controls">
          <span class="social-linked" showIfMicrosoftLinked><t>Connected</t></span>
          <div class="social-buttons">
            <microsoft-unlink>
              <t>Disconnect</t>
            </microsoft-unlink>
            <microsoft-link>
              <t>Connect account</t>
            </microsoft-link>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-form form-horizontal">
      <open-id-list showIfOpenIdAvailable>
        <ng-template>
          <div class="control-group">
            <div class="control-label social-caption">
              <i class="social-icon openid" openIdIcon></i>
              <span openIdTitle></span>
            </div>
            <div class="controls clearfix">
              <span class="social-linked" showIfOpenIdLinked><t>Connected</t></span>
              <div class="social-buttons">
                <openid-unlink>
                  <t>Disconnect</t>
                </openid-unlink>
                <openid-link>
                  <t>Connect account</t>
                </openid-link>
              </div>
            </div>
          </div>
        </ng-template>
      </open-id-list>
    </div>
  </div>
  <div *showIfDeleteAccountEnabled class="delete-account">
    <div *hideIfDeleteAccountInitiated>
      <a actionDeleteAccountInitiated class="delete-account-button" role="button">
        <t>Delete account</t>
      </a>
    </div>
    <div *showIfDeleteAccountInitiated class="delete-account-container">
      <div class="delete-account-confirmation-close">
        <button class="delete-account-confirmation-close-btn" actionCloseDeleteAccount></button>
      </div>
      <div class="delete-account-content">
        <div>
          <div *hideIfDeleteAccountFailed>
            <p *showIfDeleteAccountInitiated class="delete-account-hint">
              <t>Enter the password to confirm your decision to delete your account.</t>
            </p>
          </div>
          <p *showIfDeleteAccountFailed class="delete-account-failed">
            <t>Account deletion failed. Please, make sure that password is valid.</t>
          </p>
        </div>
        <div class="delete-account-controls">
          <div class="delete-account-password-icon-wrapper">
            <i class="delete-account-password-icon"></i>
          </div>
          <input fieldProfileConfirmDeleteAccountPassword id="confirm_delete_account_password"
                 placeholder="{{ 'Password' | t }}" type="password">
          <button actionDeleteAccount class="btn">
            <t>Confirm</t>
          </button>
        </div>
      </div>
    </div>
  </div>
</div>

Changes of "First name" and "Last name" fields ("General" block)

Old code

HTML
<div class="tp-form form-horizontal">
  <div class="control-group">
    <label class="control-label" for="first_name">
      <t>First name</t>
    </label>
    <div class="controls">
      <input fieldProfileFirstName id="first_name" placeholder="{{ 'First name' | t }}" type="text">
      <span class="error-message" showIfFirstNameInvalid><t>First name is required</t></span>
    </div>
  </div>
</div>
<div class="tp-form form-horizontal">
  <div class="control-group">
    <label class="control-label" for="last_name">
      <t>Last name</t>
    </label>
    <div class="controls">
      <input fieldProfileLastName id="last_name" placeholder="{{ 'Last name' | t }}" type="text">
      <span class="error-message" showIfForLastNameInvalid><t>Last name is required</t></span>
    </div>
  </div>
</div>

New code

HTML
<div class="tp-data-block">
  <div class="tp-data-block-header">
    <t>General</t>
  </div>
  <profile-name-errors-list></profile-name-errors-list>
  <div flashProfileNameUpdated>
    <div class="complete-msg" data-e2e="name-updated-msg">
      <i class="complete-msg-icon"></i>
      <t>General has been changed.</t>
    </div>
  </div>
  <div class="tp-form form-horizontal">
    <div class="control-group">
      <label class="control-label" for="first_name">
        <t>First name</t>
      </label>
      <div class="controls">
        <input fieldProfileFirstName id="first_name" placeholder="{{ 'First name' | t }}" type="text" />
        <span class="error-message" showIfFirstNameInvalid><t>First name is required</t></span>
      </div>
    </div>
  </div>
  <div class="tp-form form-horizontal">
    <div class="control-group">
      <label class="control-label" for="last_name">
        <t>Last name</t>
      </label>
      <div class="controls">
        <input fieldProfileLastName id="last_name" placeholder="{{ 'Last name' | t }}" type="text" />
        <span class="error-message" showIfForLastNameInvalid><t>Last name is required</t></span>
      </div>
    </div>
  </div>
  <div class="tp-data-block-actions">
    <button actionUpdateProfileName class="btn btn-small btn-green">
      <t>Save</t>
    </button>
    <button actionRestoreProfileName class="btn btn-small">
      <t>Cancel</t>
    </button>
  </div>
</div>

Email field changes ("Email" block)

Old code

HTML
<div class="tp-form form-horizontal">
  <div class="control-group">
    <label class="control-label" for="email">
      <t>Email</t>
    </label>
    <div class="controls">
      <input fieldProfileEmail id="email" placeholder="{{ 'Email' | t }}" type="text">
      <span class="error-message" showIfEmailInvalidBy="EMAIL_REQUIRED"><t>Email is required</t></span>
      <span class="error-message" showIfEmailInvalidBy="EMAIL_OR_PHONE_REQUIRED"><t>Email or phone is required</t></span>
      <div *showIfResendConfirmationEmailNeeded class="help">
        <span class="title" data-e2e="resendTitle"><t>This email address is not confirmed.</t></span>
        <div>
          <a actionResendConfirmationEmail class="btn btn-link" data-e2e="resendLink">
            <t>Resend validation email</t>
          </a>
        </div>
      </div>
    </div>
  </div>
</div>

New code

HTML
<div class="tp-data-block">
  <div class="tp-data-block-header">
    <t>Email</t>
  </div>
  <profile-email-errors-list></profile-email-errors-list>
  <div flashProfileEmailUpdated>
    <div class="complete-msg" data-e2e="email-updated-msg">
      <i class="complete-msg-icon"></i>
      <t>Email has been changed.</t>
    </div>
  </div>
  <div flashProfileEmailConfirmSent>
    <div class="complete-msg" data-e2e="email-resend-msg">
      <i class="complete-msg-icon"></i>
      <t>A new verification email has been sent. Please confirm your email address.</t>
    </div>
  </div>
  <div class="tp-form form-horizontal">
    <div class="control-group">
      <label class="control-label" for="email">
        <t>Email</t>
      </label>
      <div class="controls">
        <input fieldProfileEmail id="email" placeholder="{{ 'Email' | t }}" type="text" />
        <span class="error-message" showIfEmailInvalidBy="EMAIL_REQUIRED"><t>Email is required</t></span>
        <span class="error-message" showIfEmailInvalidBy="EMAIL_OR_PHONE_REQUIRED"><t>Email or phone is required</t></span>
      </div>
    </div>
    <div class="control-group" *showIfEmailChanged>
      <label class="control-label" for="email-current_password">
        <t>Current Password</t>
      </label>
      <div class="controls">
        <input
          fieldProfileEmailCurrentPassword=""
          id="email-current_password"
          placeholder="{{ 'Current password' | t }}"
          type="password"
        />
        <span class="error-message" showIfPasswordInvalid><t>Password is required</t></span>
      </div>
    </div>
    <div class="control-group">
      <div *showIfResendConfirmationEmailNeeded class="controls help">
        <span class="title" data-e2e="resendTitle"><t>This email address is not confirmed.</t></span>
        <div>
          <a actionResendConfirmationEmail class="btn btn-link" data-e2e="resendLink">
            <t>Resend validation email</t>
          </a>
        </div>
      </div>
    </div>
  </div>
  <div class="tp-data-block-actions">
    <button actionUpdateProfileEmail class="btn btn-small btn-green">
      <t>Save</t>
    </button>
    <button actionRestoreProfileEmail class="btn btn-small">
      <t>Cancel</t>
    </button>
  </div>
</div>

Password fields changes ("Password" block)

Old code

HTML
<div *hideChangePassword class="tp-form form-horizontal">
    <div class="control-group">
      <label *hideIfPasswordless class="control-label" for="password">
        <t>Password</t>
      </label>
      <div class="controls">
        <input *hideIfPasswordless disabled id="password" placeholder="{{ 'Password' | t }}" readonly
               type="password" value="********">
        <div class="help">
          <div>
            <a *onChangePassword class="btn btn-link" data-e2e="onChangePassword">
              <t *hideIfPasswordless>Change password</t>
              <t *showIfPasswordless>Click here to add a password</t>
            </a>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div *showChangePasswordPasswordless class="tp-form form-horizontal">
    <div class="control-group">
      <label class="control-label" for="current_password">
        <t>Current Password</t>
      </label>
      <div class="controls">
        <input fieldProfileCurrentPassword="" id="current_password" placeholder="{{ 'Current password' | t }}"
               type="password">
        <span class="error-message" showIfPasswordInvalid><t>Password is required</t></span>
      </div>
    </div>
  </div>
  <div *showChangePassword class="tp-form form-horizontal">
    <div class="control-group">
      <label class="control-label" for="new_password">
        <t>New password</t>
      </label>
      <div class="controls">
        <input fieldProfileNewPassword id="new_password" placeholder="{{ 'New password' | t }}" type="password">
        <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_REQUIRED"><t>Password is required</t></span>
        <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_MIXED_CASE"><t>Password must contain lowercase and uppercase letters</t></span>
        <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_ALPHANUMERIC"><t>Password must contain both letters and numbers</t></span>
        <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_SPECIAL_CHARACTERS"><t>Password must contain any characters</t></span>
        <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_CANT_CONTAIN_EMAIL"><t>Password can not contain the user's email address</t></span>
        <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_MIN_LENGTH"><t>Minimum number of characters required for user password.</t></span>
      </div>
    </div>
  </div>
  <div *showChangePassword class="tp-form form-horizontal">
    <div class="control-group">
      <label class="control-label" for="repeat_password">
        <t>Confirm new password</t>
      </label>
      <div class="controls">
        <input fieldProfileRepeatNewPassword id="repeat_password" placeholder="{{ 'Confirm new password' | t }}"
               type="password">
        <span class="error-message" showIfConfirmPasswordInvalid><t>New and confirmation password do not match</t></span>
        <div class="help">
          <div>
            <a *offChangePassword class="btn btn-link">
              <t>Set a password later</t>
            </a>
          </div>
        </div>
      </div>
    </div>
  </div>

New code

HTML
<div class="tp-data-block">
  <div *showIfPasswordless>
    <div class="tp-form form-horizontal">
      <div class="control-label">
        <a *onChangePassword class="btn btn-link" data-e2e="onChangePassword">
          <t>Add a password</t>
        </a>
      </div>
    </div>
  </div>
  <div *showIfCanAddPassword>
    <div class="tp-data-block-header">
      <t>Password</t>
    </div>
    <profile-password-errors-list></profile-password-errors-list>
    <div flashProfilePasswordUpdated>
      <div class="complete-msg" data-e2e="password-updated-msg">
        <i class="complete-msg-icon"></i>
        <t>Password has been changed.</t>
      </div>
    </div>
    <div>
      <div *hideIfChangePassword class="tp-form form-horizontal">
        <div class="control-group">
          <label class="control-label" for="password">
            <t>Password</t>
          </label>
          <div class="controls">
            <input
              disabled
              id="password"
              placeholder="{{ 'Password' | t }}"
              readonly
              type="password"
              value="********"
            />
          </div>
        </div>
        <div class="control-group">
          <div class="controls help">
            <div>
              <a *onChangePassword class="btn btn-link" data-e2e="onChangePassword">
                <t>Change password</t>
              </a>
            </div>
          </div>
        </div>
      </div>
      <div *showIfChangePasswordPasswordless class="tp-form form-horizontal">
        <div class="control-group">
          <label class="control-label" for="current_password">
            <t>Password</t>
          </label>
          <div class="controls">
            <input
              fieldProfileCurrentPassword
              id="current_password"
              placeholder="{{ 'Password' | t }}"
              type="password"
            />
            <span class="error-message" showIfPasswordInvalid><t>Password is required</t></span>
            <div class="control-divider"></div>
          </div>
        </div>
      </div>
      <div *showIfChangePassword class="tp-form form-horizontal">
        <div class="control-group">
          <label class="control-label" for="new_password">
            <t>New password</t>
          </label>
          <div class="controls">
            <input fieldProfileNewPassword id="new_password" placeholder="{{ 'New password' | t }}" type="password" />
            <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_REQUIRED"><t>Password is required</t></span>
            <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_MIXED_CASE"><t>Password must contain lowercase and uppercase letters</t></span>
            <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_ALPHANUMERIC"><t>Password must contain both letters and numbers</t></span>
            <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_SPECIAL_CHARACTERS"><t>Password must contain any characters</t></span>
            <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_CANT_CONTAIN_EMAIL"><t>Password can not contain the user's email address</t></span>
            <span class="error-message" showIfNewPasswordInvalidBy="PASSWORD_MIN_LENGTH"><t>Minimum number of characters required for user password.</t></span>
          </div>
        </div>
      </div>
      <div *showIfChangePasswordPasswordless class="tp-form form-horizontal">
        <div class="control-group">
          <label class="control-label" for="repeat_password">
            <t>Confirm new password</t>
          </label>
          <div class="controls">
            <input
              fieldProfileRepeatNewPassword
              id="repeat_password"
              placeholder="{{ 'Confirm new password' | t }}"
              type="password"
            />
            <span class="error-message" showIfConfirmPasswordInvalid><t>New and confirmation password do not match</t></span>
          </div>
        </div>
      </div>
    </div>
    <div class="tp-data-block-actions">
      <button actionUpdateProfilePassword class="btn btn-small btn-green">
        <t>Save</t>
      </button>
      <button actionRestoreProfilePassword class="btn btn-small">
        <t>Cancel</t>
      </button>
    </div>
  </div>
</div>

Custom fields changes ("Profile information" block)

Old code

HTML
<custom-fields class="tp-form form-horizontal">
  <ng-template let-field>
    <div class="control-group">
      <label [fieldName]="field.field_name"
             class="control-label"
             customFieldLabel
             mouseOverTooltip
      ></label>
      <div [fieldName]="field.field_name" class="control-label-icon" showForTooltipType="InfoIcon">
        <i [fieldName]="field.field_name" class="pn-icon pn-icon-tooltip" infoIconTooltip></i>
      </div>
      <div class="controls">
        <custom-field-input [fieldName]="field.field_name"></custom-field-input>
      </div>
    </div>
  </ng-template>
</custom-fields>

New code

HTML
<div class="tp-data-block">
  <div class="tp-data-block-header">
    <t>Profile information</t>
  </div>
  <profile-custom-fields-errors-list></profile-custom-fields-errors-list>
  <div flashProfileCustomFieldsUpdated>
    <div class="complete-msg" data-e2e="custom-fields-updated-msg">
      <i class="complete-msg-icon"></i>
      <t>Profile information has been changed.</t>
    </div>
  </div>
  <custom-fields class="tp-form form-horizontal">
    <ng-template let-field>
      <div class="control-group">
        <label [fieldName]="field.field_name" class="control-label" customFieldLabel mouseOverTooltip></label>
        <div [fieldName]="field.field_name" class="control-label-icon" showForTooltipType="InfoIcon">
          <i [fieldName]="field.field_name" class="pn-icon pn-icon-tooltip" infoIconTooltip></i>
        </div>
        <div class="controls">
          <custom-field-input [fieldName]="field.field_name"></custom-field-input>
        </div>
      </div>
    </ng-template>
  </custom-fields>
  <div class="tp-data-block-actions">
    <button actionUpdateProfileCustomFields class="btn btn-small btn-green">
      <t>Save</t>
    </button>
    <button actionRestoreProfileCustomFields class="btn btn-small">
      <t>Cancel</t>
    </button>
  </div>
</div>

"Social accounts" block changes

Old code

HTML
<div class="tp-form form-horizontal" showIfSocialAuthAvailable>
  <div class="control-group">
    <h2 class="control-label social-accounts-title">
      <t>Social accounts</t>
    </h2>
    <div class="controls">
      <div class="social-group clearfix" showIfAppleAvailable>
        <div class="social-caption">
          <i class="social-icon apple"></i>
          Apple
        </div>
        <span class="social-linked" showIfAppleLinked><t>Account connected</t></span>
        <div class="social-buttons">
          <apple-unlink>
            <t>Disconnect</t>
          </apple-unlink>
          <apple-link>
            <t>Connect account</t>
          </apple-link>
        </div>
      </div>
      <div class="social-group clearfix" showIfFacebookAvailable>
        <div class="social-caption">
          <i class="social-icon facebook"></i>
          Facebook
        </div>
        <span class="social-linked" showIfFacebookLinked><t>Account connected</t></span>
        <div class="social-buttons">
          <facebook-unlink>
            <t>Disconnect</t>
          </facebook-unlink>
          <facebook-link>
            <t>Connect account</t>
          </facebook-link>
        </div>
      </div>
      <div class="social-group clearfix" showIfGoogleAvailable>
        <div class="social-caption">
          <i class="social-icon google"></i>
          Google
        </div>
        <span class="social-linked" showIfGoogleLinked><t>Account connected</t></span>
        <div class="social-buttons">
          <google-unlink>
            <t>Disconnect</t>
          </google-unlink>
          <google-link>
            <t>Connect account</t>
          </google-link>
        </div>
      </div>
      <div class="social-group clearfix" showIfTwitterAvailable>
        <div class="social-caption">
          <i class="social-icon twitter"></i>
          Twitter
        </div>
        <span class="social-linked" showIfTwitterLinked><t>Account connected</t></span>
        <div class="social-buttons">
          <twitter-unlink>
            <t>Disconnect</t>
          </twitter-unlink>
          <twitter-link>
            <t>Connect account</t>
          </twitter-link>
        </div>
      </div>
      <div class="social-group clearfix" showIfLinkedinAvailable>
        <div class="social-caption">
          <i class="social-icon linkedin"></i>
          LinkedIn
        </div>
        <span class="social-linked" showIfLinkedinLinked><t>Account connected</t></span>
        <div class="social-buttons">
          <linkedin-unlink>
            <t>Disconnect</t>
          </linkedin-unlink>
          <linkedin-link>
            <t>Connect account</t>
          </linkedin-link>
        </div>
      </div>
      <div class="social-group clearfix" showIfMicrosoftAvailable>
        <div class="social-caption">
          <i class="social-icon microsoft"></i>
          Microsoft
        </div>
        <span class="social-linked" showIfMicrosoftLinked><t>Account connected</t></span>
        <div class="social-buttons">
          <microsoft-unlink>
            <t>Disconnect</t>
          </microsoft-unlink>
          <microsoft-link>
            <t>Connect account</t>
          </microsoft-link>
        </div>
      </div>
      <open-id-list showIfOpenIdAvailable>
        <ng-template>
          <div class="social-group clearfix">
            <div class="social-caption">
              <i class="social-icon openid" openIdIcon></i>
              <span openIdTitle></span>
            </div>
            <span class="social-linked" showIfOpenIdLinked><t>Account connected</t></span>
            <div class="social-buttons">
              <openid-unlink>
                <t>Disconnect</t>
              </openid-unlink>
              <openid-link>
                <t>Connect account</t>
              </openid-link>
            </div>
          </div>
        </ng-template>
      </open-id-list>
    </div>
  </div>
</div>

New code

HTML
<div class="tp-data-block" showIfSocialAuthAvailable>
  <div class="tp-data-block-header">
    <t>Social accounts</t>
  </div>
  <div class="tp-form form-horizontal" showIfAppleAvailable>
    <div class="control-group">
      <div class="control-label social-caption">
        <i class="social-icon apple"></i>
        Apple
      </div>
      <div class="controls">
        <span class="social-linked" showIfAppleLinked><t>Connected</t></span>
        <div class="social-buttons">
          <apple-unlink>
            <t>Disconnect</t>
          </apple-unlink>
          <apple-link>
            <t>Connect account</t>
          </apple-link>
        </div>
      </div>
    </div>
  </div>
  <div class="tp-form form-horizontal" showIfFacebookAvailable>
    <div class="control-group">
      <div class="control-label social-caption">
        <i class="social-icon facebook"></i>
        Facebook
      </div>
      <div class="controls">
        <span class="social-linked" showIfFacebookLinked><t>Connected</t></span>
        <div class="social-buttons">
          <facebook-unlink>
            <t>Disconnect</t>
          </facebook-unlink>
          <facebook-link>
            <t>Connect account</t>
          </facebook-link>
        </div>
      </div>
    </div>
  </div>
  <div class="tp-form form-horizontal" showIfGoogleAvailable>
    <div class="control-group">
      <div class="control-label social-caption">
        <i class="social-icon google"></i>
        Google
      </div>
      <div class="controls">
        <span class="social-linked" showIfGoogleLinked><t>Connected</t></span>
        <div class="social-buttons">
          <google-unlink>
            <t>Disconnect</t>
          </google-unlink>
          <google-link>
            <t>Connect account</t>
          </google-link>
        </div>
      </div>
    </div>
  </div>
  <div class="tp-form form-horizontal" showIfTwitterAvailable>
    <div class="control-group">
      <div class="control-label social-caption">
        <i class="social-icon twitter"></i>
        Twitter
      </div>
      <div class="controls">
        <span class="social-linked" showIfTwitterLinked><t>Connected</t></span>
        <div class="social-buttons">
          <twitter-unlink>
            <t>Disconnect</t>
          </twitter-unlink>
          <twitter-link>
            <t>Connect account</t>
          </twitter-link>
        </div>
      </div>
    </div>
  </div>
  <div class="tp-form form-horizontal" showIfLinkedinAvailable>
    <div class="control-group">
      <div class="control-label social-caption">
        <i class="social-icon linkedin"></i>
        LinkedIn
      </div>
      <div class="controls">
        <span class="social-linked" showIfLinkedinLinked><t>Connected</t></span>
        <div class="social-buttons">
          <linkedin-unlink>
            <t>Disconnect</t>
          </linkedin-unlink>
          <linkedin-link>
            <t>Connect account</t>
          </linkedin-link>
        </div>
      </div>
    </div>
  </div>
  <div class="tp-form form-horizontal" showIfMicrosoftAvailable>
    <div class="control-group">
      <div class="control-label social-caption">
        <i class="social-icon microsoft"></i>
        Microsoft
      </div>
      <div class="controls">
        <span class="social-linked" showIfMicrosoftLinked><t>Connected</t></span>
        <div class="social-buttons">
          <microsoft-unlink>
            <t>Disconnect</t>
          </microsoft-unlink>
          <microsoft-link>
            <t>Connect account</t>
          </microsoft-link>
        </div>
      </div>
    </div>
  </div>
  <div class="tp-form form-horizontal">
    <open-id-list showIfOpenIdAvailable>
      <ng-template>
        <div class="control-group">
          <div class="control-label social-caption">
            <i class="social-icon openid" openIdIcon></i>
            <span openIdTitle></span>
          </div>
          <div class="controls clearfix">
            <span class="social-linked" showIfOpenIdLinked><t>Connected</t></span>
            <div class="social-buttons">
              <openid-unlink>
                <t>Disconnect</t>
              </openid-unlink>
              <openid-link>
                <t>Connect account</t>
              </openid-link>
            </div>
          </div>
        </div>
      </ng-template>
    </open-id-list>
  </div>
</div>

"Delete account" block changes

Old code

HTML
<div *showIfDeleteAccountEnabled class="delete-account">
  <a actionDeleteAccountInitiated class="delete-account-button" role="button">
    <t>Delete account</t>
  </a>
  <p *hideIfDeleteAccountInitiated class="delete-account-hint">
    <t>You will enter the password to confirm your decision.</t>
  </p>
  <div *showIfDeleteAccountInitiated class="delete-account-container">
    <div>
      <input fieldProfileConfirmDeleteAccountPassword id="confirm_delete_account_password"
             placeholder="{{ 'Password' | t }}"
             type="password">
      <div *hideIfDeleteAccountFailed>
        <p *showIfDeleteAccountInitiated class="delete-account-hint">
          <t>Enter the password to confirm your decision.</t>
        </p>
      </div>
      <p *showIfDeleteAccountFailed class="delete-account-failed">
        <t>Account deletion failed. Please, make sure that password is valid.</t>
      </p>
    </div>
    <button actionDeleteAccount class="btn">
      <t>Confirm</t>
    </button>
  </div>
</div>
<div>
  <div class="actions">
    <button actionUpdateProfile class="btn btn-green">
      <t>Save changes</t>
    </button>
  </div>
</div>

New code

HTML
<div *showIfDeleteAccountEnabled class="delete-account">
  <div *hideIfDeleteAccountInitiated>
    <a actionDeleteAccountInitiated class="delete-account-button" role="button">
      <t>Delete account</t>
    </a>
  </div>
  <div *showIfDeleteAccountInitiated class="delete-account-container">
    <div class="delete-account-confirmation-close">
      <button class="delete-account-confirmation-close-btn" actionCloseDeleteAccount></button>
    </div>
    <div class="delete-account-content">
      <div>
        <div *hideIfDeleteAccountFailed>
          <p *showIfDeleteAccountInitiated class="delete-account-hint">
            <t>Enter the password to confirm your decision to delete your account.</t>
          </p>
        </div>
        <p *showIfDeleteAccountFailed class="delete-account-failed">
          <t>Account deletion failed. Please, make sure that password is valid.</t>
        </p>
      </div>
      <div class="delete-account-controls">
        <div class="delete-account-password-icon-wrapper">
          <i class="delete-account-password-icon"></i>
        </div>
        <input fieldProfileConfirmDeleteAccountPassword id="confirm_delete_account_password"
               placeholder="{{ 'Password' | t }}" type="password">
        <button actionDeleteAccount class="btn">
          <t>Confirm</t>
        </button>
      </div>
    </div>
  </div>
</div>

Updating the profile widget styles (profile.css)

The new profile template uses grid layout. Each block with controls must be wrapped with a class

(exclusion delete user block).


Changes in error notification styles

Old code

.error-list {
  margin-bottom: 10px;
}

New code

.error-list {
  margin-bottom: 10px;
  background-color: #F86A6A;
  border-radius: 4px;
  padding: 15px 20px;
}
.error-list ul {
  list-style: inside;
  margin-top: 15px;
  margin-left: 35px;
}
.error-list ul li{
  margin-top: 5px;
}
.error-content {
  align-items: center;
  display: grid;
  grid-template-columns: auto 1fr auto;
  grid-template-areas: "icon error action";
  grid-gap: 15px;
}
.error-list .error {
  padding: 0;
  grid-area: error;
}
.error-icon {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxNkMxMy4zMTM3IDE2IDE2IDEzLjMxMzcgMTYgMTBDMTYgNi42ODYyOSAxMy4zMTM3IDQgMTAgNEM2LjY4NjI5IDQgNCA2LjY4NjI5IDQgMTBDNCAxMy4zMTM3IDYuNjg2MjkgMTYgMTAgMTZaTTEwIDE4QzE0LjQxODMgMTggMTggMTQuNDE4MyAxOCAxMEMxOCA1LjU4MTcyIDE0LjQxODMgMiAxMCAyQzUuNTgxNzIgMiAyIDUuNTgxNzIgMiAxMEMyIDE0LjQxODMgNS41ODE3MiAxOCAxMCAxOFpNMTEgMTFWNkg5VjExSDExWk0xMCAxNEMxMC41NTIzIDE0IDExIDEzLjU1MjMgMTEgMTNDMTEgMTIuNDQ3NyAxMC41NTIzIDEyIDEwIDEyQzkuNDQ3NzIgMTIgOSAxMi40NDc3IDkgMTNDOSAxMy41NTIzIDkuNDQ3NzIgMTQgMTAgMTRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K");
  display: block;
  grid-area: icon;
  min-width: 20px;
  min-height: 20px;
  background-repeat: no-repeat;
  background-size: contain;
  vertical-align: middle;
  opacity: .6;
}
.error-close-icon {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjU4NTg2IDEwTDMuNzkyOTcgNS4yMDcxMkw1LjIwNzE4IDMuNzkyOTFMMTAuMDAwMSA4LjU4NThMMTQuNzkzIDMuNzkyOTFMMTYuMjA3MiA1LjIwNzEyTDExLjQxNDMgMTBMMTYuMjA3MiAxNC43OTI5TDE0Ljc5MyAxNi4yMDcxTDEwLjAwMDEgMTEuNDE0Mkw1LjIwNzE4IDE2LjIwNzFMMy43OTI5NyAxNC43OTI5TDguNTg1ODYgMTBaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K");
  display: block;
  grid-area: action;
  min-width: 20px;
  min-height: 20px;
  background-repeat: no-repeat;
  opacity: .6;
  cursor: pointer;
}
.error-close-icon:hover {
  opacity: 1;
}

Changes in information notification styles

Old code

.complete-msg {
  padding: 10px;
  margin-bottom: 10px;
  background: #dff0d8;
}

New code

.complete-msg {
  padding: 10px;
  margin-bottom: 10px;
  background: #428BCA;
  border-radius: 4px;
  color: white;
  font-weight: 400;
  display: flex;
  align-items: center;
}
.complete-msg .complete-msg-icon {
  min-width: 20px;
  min-height: 20px;
  display: block;
  margin-right: 15px;
  background-repeat: no-repeat;
  background-size: contain;
  vertical-align: middle;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMuNSAxMS41TDcgMTVMMTYuNSA1LjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS1vcGFjaXR5PSIwLjYiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4K");
}

Changes in button styles

1. Change properties in '.btn'

Old code

padding: 0 18px;
color: #a1aab6;
border: 1px solid #d8dadd;
font-family: 'Graphik Web Regular', Helvetica, Arial, sans-serif;

New code

padding: 0 15px;
color: rgba(135, 135, 135, 1);
background-color: #EDEDED;
border: none;
font-family: Arial, 'Graphik Web Regular', Helvetica, sans-serif;

2. Change properties in '.btn-group.btn-small .btn'

Old code

padding: 0 8px;

New code

padding: 0 15px;

3. Delete the 'opacity' property in this code

.btn.disabled,
.btn[disabled],
.btn.disabled:hover,
.btn[disabled]:hover,
.btn.disabled:active,
.btn[disabled]:active

New code

.btn.disabled,
.btn[disabled],
.btn.disabled:hover,
.btn[disabled]:hover,
.btn.disabled:active,
.btn[disabled]:active {
  cursor: default;
  pointer-events: none;
  box-shadow: none;
}

New code

.btn-link,
.btn-link:active,
.btn-link[disabled] {
  background-color: transparent;
  background-image: none;
  box-shadow: none;
  font-size: 13px;
}

5. Change properties in '.btn-link'

Old code

color: #0088cc;

New code

color: #428BCA;

6. Change properties in '.btn-link:hover' and '.btn-link:focus'

Old code

color: #005580;
text-decoration: underline;

New code

color: #428BCA;
text-decoration: none;

7. Change selectors

Old code

label,
select,
button,
input[type='button'],
input[type='reset'],
input[type='submit'],
input[type='radio'],
input[type='checkbox'] {
  cursor: pointer;
}

New code

label[mouseovertooltip],
select,
button,
input[type='button'],
input[type='reset'],
input[type='submit'],
input[type='radio'],
input[type='checkbox'] {
  cursor: pointer;
}

8. Change properties in '.btn.social:focus', '.btn-green:focus', '.btn.social:hover', and '.btn-green:hover'

Old code

background-color: #88d47b;

New code

background-color: #74B46A;

9. Change properties in '.btn.social:active' and '.btn-green:active'

Old code

background-color: #73bb67;

New code

background-color: #74B46A;

10. Сhange properties in '.btn.social:disabled', '.btn-green [disabled]', and '.btn-green:disabled'

Old code

background-color: #81c875;

New code

background-color: #CDE9C8;

11. Сhange properties in '.btn.social:disabled:hover', '.btn-green[disabled]:hover', and '.btn-green:disabled:hover'

Old code

background-color: #81c875;

New code

background-color: #CDE9C8;

12. Add code

New code

.btn[disabled] {
  color: rgba(135, 135, 135, 0.4);
}
.btn-green[disabled] {
  color: rgba(255, 255, 255, 1);
}
.btn:hover,
.btn:active {
  background-color: #E1E1E1;
}
.tp-form .btn.btn-link {
  padding: 0;
}

13. Change properties in 'a.primary'

New code

font-family: Arial, 'Graphik Web Medium', Helvetica, sans-serif;

14. Change properties in 'a.button'

New code

font-family: Arial, 'Graphik Web Regular', Helvetica, sans-serif;

15. Change properties in '.btn'

New code

border-radius: 4px;

16. Change properties in '.delete-account-button'

Old code

.delete-account-button {
  color: #f86a6a;
}

New code

.delete-account-button {
  color: #f86a6a;
  padding: 0;
}

Changes in input styles

1. Сhange properties in 'input[type='text']', 'input[type='password']', 'input[type='number']', and 'input[type='tel']'

New code

font-family: Arial, 'Graphik Web Regular', Helvetica, sans-serif;
font-size: 13px;
height: 40px;

2. Add code

New code

HTML
</h3>
<pre>.input[tabindex='0'].has-errors,
input[type='text'].has-errors,
input[type='password'].has-errors,
input[type='number'].has-errors,
input[type='tel'].has-errors {
  border: 1px solid #F86A6A;
}
input[disabled],
.input[disabled],
input[disabled]:hover,
.input[disabled]:hover {
  background-color: #EDEDED;
  border: 1px solid #EDEDED;
}</pre>
<h3 data-puniqid="79fda1f45c3de57">

3. Add selectors and change properties

Old code

.input[tabindex='0']:focus,
input[type='text']:focus,
input[type='password']:focus,
input[type='number']:focus,
input[type='tel']:focus {
  border: 1px solid #cccccc;
  box-shadow: 0 0 3px rgba(204, 204, 204, 0.5);
  outline: 0;
}

New code

.input[tabindex='0']:focus,
input[type='text']:focus,
input[type='password']:focus,
input[type='number']:focus,
input[type='tel']:focus,
.input[tabindex='0']:hover,
input[type='text']:hover,
input[type='password']:hover,
input[type='number']:hover,
input[type='tel']:hover{
  border: 1px solid #428BCA;
  box-shadow: none;
  outline: 0;
}

4. Change properties in 'textarea:focus'

Old code

HTML
</h3>
<pre>border: 1px solid #e5e5e5;</pre>
<h3 data-renderer-start-pos="57013" data-puniqid="bc9e2d74fbba7f0">

New code

border: 1px solid #428BCA;

5. Change properties in '.input'

Old code

.input {
  display: block;
  width: 100%;
  background: #ffffff;
  font-size: 16px;
  padding: 5px 8px;
  box-sizing: border-box;
  border: 1px solid #e4e7eb;
  border-radius: 5px;
  color: #333333;
  text-align: left;
  cursor: pointer;
  white-space: nowrap;
  overflow-x: hidden;
  text-overflow: ellipsis;
}

New code

.input {
  display: block;
  width: 100%;
  background: #ffffff;
  font-size: 13px;
  padding: 5px 8px;
  height: 40px;
  line-height: 30px;
  box-sizing: border-box;
  border: 1px solid #e4e7eb;
  border-radius: 5px;
  color: #333333;
  text-align: left;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

6. Change properties in '.input.with-placeholder'

Old code

font-size: 15px;

New code

font-size: 13px;

7. Change properties in '.custom-field-has-errors .input', '.custom-field-has-errors .pn-button-group .pn-button-group__item', and '.custom-field-has-errors input'

Old code

border-color: #ef9193;

New code

border-color: #F86A6A;

8. Change properties in '.validation-error'

Old code

color: #eb6465;

New code

color: #F86A6A;

9. Change properties in '.error-message'

Old code

color: #eb6465;

New code

color: #F86A6A;

10. Change properties in '.custom-field-type-number .arrow-increment'

New code

top: 12px;

11. Change properties in '.custom-field-type-number .arrow-decrement'

New code

top: 20px;

12. Add code

New code

.custom-field-type-boolean .field-checkbox-label {
  height: 40px;
  line-height: 40px;
}

13. Change properties in '.delete-account-container input'

Old code

.delete-account-container input {
  height: 42px;
  min-width: 307px;
}

New code

.delete-account-container input {
  height: 40px;
  min-width: 307px;
  padding: 0 40px;
}

Changes in common styles

1. Change properties in 'span.title'

Old code

span.title {
  color: #a1aab6;
  padding: 10px 0 0 18px;
  display: block;
}

New code

span.title {
  color: #a1aab6;
  display: block;
}

2. If you have a duplicate of this code, delete it

label,
select,
button,
input[type='button'],
input[type='reset'],
input[type='submit'],
input[type='radio'],
input[type='checkbox'] {
  cursor: pointer;
}

3. Change properties in 'body'

Old code

body {
  font-size: 13px;
}

New code

body {
  font-size: 15px;
}

4. Change properties in '.tp-form .control-group'

Old code

.tp-form .control-group {
  margin-bottom: 10px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  align-items: center;
}

New code

.tp-form .control-group {
  display: grid;
  grid-template-columns: 1fr auto 400px;
  grid-gap: 10px;
  grid-template-areas: "label tooltip control";
  align-items: start;
}

5. Change properties in '.tp-form .controls'

Old code

.tp-form .controls {
  padding-left: 30px;
  width: 100%;
}

New code

.tp-form .controls {
  grid-area: control;
  width: 100%;
  min-height: 40px;
}

6. Add code

New code

.controls .control-divider {
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  margin-top: 20px;
  margin-bottom: 10px;
}

7. Change properties in '.tp-form .control-label'

Old code

.tp-form .control-label {
  width: 170px;
}

New code

.tp-form .control-label {
  grid-area: label;
  font-size: 13px;
  margin-top: 12px;
}

8. Change properties in '.tp-form .control-label-icon'

Old code

margin-left: 5px;
margin-right: -25px;

New code

margin-top: 12px;
grid-area: tooltip;

9. Change properties in '.pn-phone-confirmation'

Old code

.pn-phone-confirmation {
  padding: 24px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  margin-bottom: 10px;
}

New code

.pn-phone-confirmation {
  padding: 20px;
  border: 1px solid rgba(0, 0, 0, .1);
  margin-top: 20px;
  height: 230px;
}

10. Change properties in '.pn-phone-confirmation .pn-phone-confirmation-text p'

Old code

max-width: 370px;

New code

max-width: 400px;

11. Change code

Old code

.pn-phone-confirmation .pn-phone-confirmation-close {
  position: absolute;
  right: 20px;
}

New code

.pn-phone-confirmation .pn-phone-confirmation-close,
.delete-account-confirmation-close{
  position: relative;
}

12. Change code

Old code

HTML
</h3>
<pre>.pn-phone-confirmation .pn-phone-confirmation-close .pn-phone-confirmation-close-btn {
  width: 20px;
  height: 20px;
  box-shadow: none;
  outline: none;
  border: none;
  opacity: .6;
  background: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg %3E%3Cpath d='M3 3L13 13M13 3L3 13' stroke='%230F0F15' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E%0A") center center no-repeat;
}</pre>
<h3 data-puniqid="7708c1e00fa4379">

New code

.pn-phone-confirmation .pn-phone-confirmation-close .pn-phone-confirmation-close-btn,
.delete-account-confirmation-close .delete-account-confirmation-close-btn{
  position: absolute;
  right: 0;
  width: 20px;
  height: 20px;
  box-shadow: none;
  outline: none;
  border: none;
  opacity: .4;
  background: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg %3E%3Cpath d='M3 3L13 13M13 3L3 13' stroke='%230F0F15' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E%0A") center center no-repeat;
}

13. Add code

New code

.pn-phone-confirmation .pn-phone-confirmation-close .pn-phone-confirmation-close-btn:hover,
.delete-account-confirmation-close .delete-account-confirmation-close-btn:hover {
  opacity: 1;
}

14. Add code

New code

.content-padding-tb .actions {
  margin-top: 20px;
}
.tp-data-block {
  padding: 20px 0px;
  border-bottom: 1px solid #e4e7eb;
}
.tp-data-block-header {
  line-height: 24px;
  font-weight: 400;
  font-size: 16px;
  margin-bottom: 20px;
}
.tp-data-block-actions {
  margin-top: 10px;
  display: flex;
  align-items: center;
}

15. Change code

Old code

.content-padding-tb {
  clear: both;
  padding: 24px 0;
}

New code

.content-padding-tb {
  clear: both;
  padding: 24px 0;
  max-width: 580px;
}

16. Change code

Old code

.social-linked,
.social-caption {
  height: 40px;
  line-height: 40px;
}

New code

.social-linked {
  height: 40px;
  line-height: 40px;
}

17. Change properties in '.social-linked::before'

Old code

background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAASwSURBVFiFxZltbFNlFMd/5952AtvoJEqUDyQawSyL8SV7A2PChEgIGIgxQ42gX00MtnUOE+d83BaJoawLRqIoJpoIhpgYeVEIBCTibKcJEt/iC2CMCUQRGLAXu557/LC1abfRt7Xj/6n33POc8+u5zz3P06dCkWRO+KuGr84QgBkVw2ru7blUjLhSyKCWky3lFUPOw8CDCPXAHQrl4wIPAL+rEFXkyOAN1r7Q3aGBkgK2RTYssC27RZTHFSrzzHVZ0F1x27u5q3bzqaICmq9a5uJxXgOeVrDzBBuf0FFhh1jWS6Z2y/kpA7ZH/SsF+QCYMxWwSXRehHWmPnwgk5OV6aaJ+ltB9lJ8OICbVNlvosFgJqdrAppIsEOR16XAFylHWYpuMdGguZbDpMlNxN+iIptLhjWJFIIdDeHwePsEwPZIYDXCJyWu3AQpqOXKGrOoe0+qPQ3C9AbmqM3PwNzphEvROSnT6tQmnz4Hbe3i+sEB3ELM6kg1JCtoosGFoD9Ntc9NVQJOXJ3qrsatv0FaBV3/9YYDULA9lue5xLUABHoDM302ZxV8Jc5/Grg9B79LMui71TSZYQvA59EV0wB3ROyBu0R4OQffKndm/3IYe8TqytJSkgnslQrfClO7fdDUh7sUMq4eACIsA/CMRagvGZ1yuN9lbbjGxBImCz0D4mSc8zrKZKGIQHVJ4ET3SKVvZXhxeChhMn3BJ0E+zvZCilCNIrLx242+GU4s592voKcUuRmYnTmBHuqPy+p0OP8jqHyk4M0l19CId7blicUqcofj5H9eZ5FryRKBfzP4fUp51apUuPaIfx0qu3OFA5gFlZbXiue05orwPXH7oU33vfFPZ133CVRWCfRPhJODDPoeMylzzkT8j1oiOwrps9aQZ9aVXBxVmTkiTvLbm8buiOO6y1MhR+FmrzFNZjgVDpGd+VQuoUG4IgCvRAP9ZJlTY/rTwV7S1RA6kwTo89+jKodAjp+1rzZvr90+krwXDa4Hfa+QyglcNA3hOYml7tccx8334Bw0x1vnJSHqe74Ty2m67OgTaXB9gWZFC3qsAKqkrMVKb84DYYF6R75ui7bcloSp2/qDz+dzzFHjAWiPBp5SZReJPluILO1NAoqlx/IcPt/GOZBWyRoTM0uM094XXCvwLll+72STuvJFEpCBqs8ELuYZYyHekd7USrb3BdaL6k6mUrlRnbcqfZ9D2n7Qv02RZ/KNJPBLzNamMlceUOXDIsAhIm+a+u5nIfUxWBIC4vkGU7jT60ikaHAwguOGkliJD6YufFrQdwqMO78YcKOSt8yinj8SV+kT2ZE24O/iJCpI5yhz21MNaYBmcfiCKzQLONPLBUDchebxx3YTWkFnffgYqi9OH9eoFFo7G8JfjrdP2qtMY09IVDpLjzUqQV6d7FRh9F4Gmai/VZFNTLHpZpAryAumobv7Wg5Zt1rmm8AyVX0flXnZfPPUX6qyvqOx+2gmp6yVMXXhw+KlRtC3i/HyCDgo20TjNdngxvxzV1tkwwKPWM+DNCvcmCfbBWC3Y3tCRT8CHi/zoylzBy8tFUdWiXA/GQ7RETkOuo9y35HUXXZJASeFLtHfEP8DO1a8xdokWtoAAAAASUVORK5CYII=');

New code

background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iMTAiIGZpbGw9IiM0MjhCQ0EiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDE0TDUgMTFMNiAxMEw4IDEyTDE0IDZMMTUgN0w4IDE0WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==");

18. Remove code

Old code

.btn.social {
  min-width: 164px;
}

19. Change properties in '.delete-account-container'

Old code

.delete-account-container {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 16px;
}

New code

.delete-account-container {
  margin-top: 20px;
  border: 1px solid rgba(0,0,0,.1);
  padding: 20px;
  min-height: 170px;
}

20. Add code

New code

.delete-account-content {
  min-height: 130px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.delete-account-controls {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
}
.delete-account-password-icon-wrapper {
  position: absolute;
}
.delete-account-password-icon {
  position: relative;
  width: 20px;
  height: 20px;
  top: 10px;
  left: 10px;
  display: block;
  background-repeat: no-repeat;
  background-size: contain;
  vertical-align: middle;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA2VjdIOFY2QzggNC44OTU0MyA4Ljg5NTQzIDQgMTAgNEMxMS4xMDQ2IDQgMTIgNC44OTU0MyAxMiA2Wk02IDZDNiAzLjc5MDg2IDcuNzkwODYgMiAxMCAyQzEyLjIwOTEgMiAxNCAzLjc5MDg2IDE0IDZWN1Y3LjAwMDI1TDE2IDcuMDAwM1YxOEg0VjdMNiA3LjAwMDA1VjdWNlpNMTQgOUgxMkg4SDZWMTZIMTRWOVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo=");
}

Last updated: