Billing Address Form¶
The <billing-address-form> webcomponent is used to render a form containing a billing address.
Attributes¶
| Attribute name | Type | Default | Description |
|---|---|---|---|
addressMode |
Address | null | The address of a user that should be used to fill the default values of a form inside the modal |
address |
boolean | false | If a user is logged in this prop should be set to true |
isLoggedIn |
boolean | false | If a user is logged in this prop should be set to true |
formErrors |
boolean | false | If a user is logged in this prop should be set to true |
API¶
API of a <billing-address-form>:
setBillingAddress(): Promise | undefined>¶
Validates a section and updates the billing address if there are no errors.
const billingAddressForm = document.querySelector('billing-address-form');
billingAddressForm.setBillingAddress();
getFormService(): IFormService¶
Retrieves a Form Service connected to this exact billing address form.
const billingAddressForm = document.querySelector('billing-address-form');
const formService = billingAddressForm.getFormService();
getFormValues(): Promise>¶
Validates a form and gets all the form values from it.
const billingAddressForm = document.querySelector('billing-address-form');
const values = await billingAddressForm.getFormValues();
getFormState(): TFormState¶
Gets a current state of a form of type TFormState.
const billingAddressForm = document.querySelector('billing-address-form');
if (billingAddressForm.getFormState() !== FORM_STATE.validationFailed) {
// do something if the form has no errors
}
focusFirstInput(): void¶
Sets focus on the first input in the billing address form.
const billingAddressForm = document.querySelector('billing-address-form');
billingAddressForm.focusFirstInput();
Example¶
<billing-address-form>
<reactive-form>
<form id="form-a42a8a7c-a82f-4ba5-b844-a1c2aae5093c" novalidate>
<control-connector requiredingroup class="control control_row">
<h-control-content class="control__content_auto control__content">
<h-control-element class="control__element">
<h-radio controlid="firstname1" controlname="isCompany" value="false" class="radio">
<h-radio-control class="radio__control">
<input type="radio" class="radio__input" id="firstname1" name="isCompany" value="false">
<label class="radio__label" for="firstname1"></label>
</h-radio-control>
<h-radio-content class="radio__content">
<label class="label" for="firstname1"><span>Konsument</span></label>
</h-radio-content>
</h-radio>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
<h-control-content class="control__content_auto control__content">
<h-control-element class="control__element">
<h-radio controlid="firstname2" controlname="isCompany" value="true" class="radio">
<h-radio-control class="radio__control">
<input type="radio" class="radio__input" id="firstname2" name="isCompany" value="true">
<label class="radio__label" for="firstname2"></label>
</h-radio-control>
<h-radio-content class="radio__content">
<label class="label" for="firstname2"><span>Firma</span></label>
</h-radio-content>
</h-radio>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</control-connector>
<control-connector min="3" email class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="email-67639d5b-c3cf-45cd-8465-8f20f8014439">Adres e-mail</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element">
<h-input controlname="email" controlid="email-67639d5b-c3cf-45cd-8465-8f20f8014439" class="input">
<h-input-control class="input__control">
<input id="email-67639d5b-c3cf-45cd-8465-8f20f8014439" name="email" type="text">
</h-input-control>
</h-input>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector required class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="first-name-e42b0e11-8380-40ab-a2c0-942c8b5335f7">Imię</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element">
<h-input controlname="firstname" controlid="first-name-e42b0e11-8380-40ab-a2c0-942c8b5335f7" class="input">
<h-input-control class="input__control">
<input id="first-name-e42b0e11-8380-40ab-a2c0-942c8b5335f7" name="firstname" type="text">
</h-input-control>
</h-input>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector required class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="last-name-12e6bfaf-360d-4c91-84ca-168d2d4c7def">Nazwisko</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element">
<h-input controlname="lastname" controlid="last-name-12e6bfaf-360d-4c91-84ca-168d2d4c7def" class="input">
<h-input-control class="input__control">
<input id="last-name-12e6bfaf-360d-4c91-84ca-168d2d4c7def" name="lastname" type="text">
</h-input-control>
</h-input>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector required class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="phone-cea72e38-955d-4fdf-a97e-11c3570c35d0">Numer telefonu</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element">
<h-input controlname="phone" controlid="phone-cea72e38-955d-4fdf-a97e-11c3570c35d0" class="input">
<h-input-control type="tel" class="input__control">
<input id="phone-cea72e38-955d-4fdf-a97e-11c3570c35d0" name="phone" type="text">
</h-input-control>
</h-input>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector required class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="country-70c16654-cbf7-4284-bc1d-95c3b2ad7aa3">Kraj</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element control__element_half">
<h-select class="select select_with-search" control-name="countryId" control-id="country-70c16654-cbf7-4284-bc1d-95c3b2ad7aa3">
<h-dropdown content-width="full" name="countryId" offset="2" direction="bottom-center">
<h-dropdown-toggler class="dropdown__toggler" name="countryId" tabindex="0" role="button" aria-expanded="false">
<h-select-toggler class="select-toggler select-toggler_selected" role="textbox" slot="toggler">
<ul class="select-toggler__values">
<li>Polska</li>
</ul>
<h-icon icon-name="icon-chevron-down">
<svg class="icon">
<use xlink:href="/assets/img/icons/symbol-defs.svg#icon-chevron-down"></use>
</svg>
</h-icon>
</h-select-toggler>
</h-dropdown-toggler>
<h-portal hidden disabled to="dropdown-portal">
<h-dropdown-content class="select__content dropdown__content" name="countryId" role="menu">
<h-select-close-btn class="select__close-mobile-btn" role="menuitem" aria-label="close select" tabindex="0">
<h-icon icon-name="icon-x" size="l">
<svg class="icon icon_l">
<use xlink:href="/assets/img/icons/symbol-defs.svg#icon-x"></use>
</svg>
</h-icon>
</h-select-close-btn>
<div class="select__label" role="menuitem">
<span class="select-toggler__placeholder">Wybierz</span>
</div>
<h-select-search class="select__search select-search" role="menuitem" value="">
<h-icon icon-name="icon-search" class="select-search__icon">
<svg class="icon">
<use xlink:href="/assets/img/icons/symbol-defs.svg#icon-search"></use>
</svg>
</h-icon>
<input type="text" role="search" aria-autocomplete="list" autocomplete="false" placeholder="Szukaj" class="select-search__input">
</h-select-search>
<h-options role="menuitem" tabindex="0" class="select__options">
<h-option value="1" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Andora</h-option-content>
</h-option>
<h-option value="2" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Zjednoczone Emiraty Arabskie</h-option-content>
</h-option>
<h-option value="3" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Afganistan</h-option-content>
</h-option>
<h-option value="4" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Antigua i Barbuda</h-option-content>
</h-option>
<h-option value="5" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Anguilla</h-option-content>
</h-option>
<h-option value="6" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Albania</h-option-content>
</h-option>
<h-option value="7" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Armenia</h-option-content>
</h-option>
<h-option value="8" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Angola</h-option-content>
</h-option>
<h-option value="249" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Zimbabwe</h-option-content>
</h-option>
<h-option value="250" tabindex="-1" role="option" class="select-option">
<h-option-content class="select-option__content">Northern Ireland</h-option-content>
</h-option>
</h-options>
<div role="menuitem"></div>
</h-dropdown-content>
</h-portal>
</h-dropdown>
<input type="hidden" name="countryId" value="179">
</h-select>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector required class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="street-2d5a469e-3d8c-4956-8dd4-c340b4cc6f5f">Ulica, numer budynku i lokalu</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element">
<h-input controlname="street" controlid="street-2d5a469e-3d8c-4956-8dd4-c340b4cc6f5f" class="input">
<h-input-control class="input__control">
<input id="street-2d5a469e-3d8c-4956-8dd4-c340b4cc6f5f" name="street" type="text">
</h-input-control>
</h-input>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector required class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="postal-code-582c581d-8366-4dfd-bc57-f88b7f374437">Kod pocztowy</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element control__element_quarter">
<h-input controlname="postalCode" controlid="postal-code-582c581d-8366-4dfd-bc57-f88b7f374437" class="input">
<h-input-control mask="__-___" pattern="^(\d{2})(-)(\d{3})$" valid-pattern="00-000" class="input__control">
<input id="postal-code-582c581d-8366-4dfd-bc57-f88b7f374437" name="postalCode" type="text">
</h-input-control>
</h-input>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector required class="control">
<h-control class="control">
<h-control-label class="control__label">
<label class="label label_required" for="city-33ab31c5-250d-45ba-a592-ba0f1001cef9">Miasto</label>
</h-control-label>
<h-control-content class="control control__content">
<h-control-element class="control__element">
<h-input controlname="city" controlid="city-33ab31c5-250d-45ba-a592-ba0f1001cef9" class="input">
<h-input-control class="input__control">
<input id="city-33ab31c5-250d-45ba-a592-ba0f1001cef9" name="city" type="text">
</h-input-control>
</h-input>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
<control-connector class="control">
<h-control class="control">
<h-control-content class="control control__content">
<h-control-element class="control__element">
<h-checkbox controlname="createUserAccount" value="1" controlid="create-user-account-6a4e58cf-fed4-4ac5-b58c-d3b7571dfcc0" class="checkbox">
<h-checkbox-control class="checkbox__control">
<input type="checkbox" class="checkbox__input" id="create-user-account-6a4e58cf-fed4-4ac5-b58c-d3b7571dfcc0" name="createUserAccount" value="1">
<label class="checkbox__label" for="create-user-account-6a4e58cf-fed4-4ac5-b58c-d3b7571dfcc0"></label>
</h-checkbox-control>
<h-checkbox-content class="checkbox__content">
<label class="label" for="create-user-account-6a4e58cf-fed4-4ac5-b58c-d3b7571dfcc0"><span>Chcę założyć konto w sklepie</span></label>
<div class="checkbox__description">
<p>
Opcjonalne<br>
Otrzymasz link do tworzenia hasła na e-mail. Zakładając konto, akceptujesz regulamin sklepu.
</p>
</div>
</h-checkbox-content>
</h-checkbox>
</h-control-element>
<control-errors></control-errors>
</h-control-content>
</h-control>
</control-connector>
</form>
</reactive-form>
</billing-address-form>