<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="source_address" class="Magento\Customer\Ui\Component\Form\AddressFieldset">
        <settings>
            <collapsible>false</collapsible>
            <label translate="true">Ship From Address Book</label>
            <componentType>fieldset</componentType>
            <additionalClasses>
                <class name="customer-address-form">true</class>
            </additionalClasses>
        </settings>
        <container name="customer_default_source_address_wrapper" template="Magento_Customer/default-address-wrapper">
            <component name="customer_default_source_address_content" template="Magento_Customer/default-address">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="defaultAddressClass" xsi:type="string">source-address</item>
                        <item name="defaultAddressId" xsi:type="string">source-address-caption</item>
                        <item name="title" xsi:type="string" translate="true">Default Ship From Address</item>
                        <item name="contentClass" xsi:type="string">customer-default-source-address-content</item>
                        <item name="notExistsMessage" xsi:type="string" translate="true">The customer does not have default source address</item>
                        <item name="tracks" xsi:type="array">
                            <item name="address" xsi:type="boolean">true</item>
                        </item>
                    </item>
                </argument>
                <settings>
                    <imports>
                        <link name="address">${ $.provider}:data.default_source_address</link>
                    </imports>
                </settings>
            </component>
            <button name="edit_shipping_address" component="Magento_Customer/js/address/default-address">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="buttonClasses" xsi:type="string">edit-default-shipping-address-button</item>
                        <item name="actions" xsi:type="array">
                            <item name="0" xsi:type="array">
                                <item name="targetName" xsi:type="string">customer_form.areas.source_address.source_address.customer_address_update_modal.update_customer_source_address_form_loader</item>
                                <item name="actionName" xsi:type="string">destroyInserted</item>
                            </item>
                            <item name="1" xsi:type="array">
                                <item name="targetName" xsi:type="string">customer_form.areas.source_address.source_address.customer_address_update_modal</item>
                                <item name="actionName" xsi:type="string">openModal</item>
                            </item>
                            <item name="2" xsi:type="array">
                                <item name="targetName" xsi:type="string">customer_form.areas.source_address.source_address.customer_address_update_modal.update_customer_source_address_form_loader</item>
                                <item name="actionName" xsi:type="string">render</item>
                            </item>
                        </item>
                    </item>
                </argument>
                <settings>
                    <componentType>button</componentType>
                    <title translate="true">Edit</title>
                    <displayAsLink>true</displayAsLink>
                    <imports>
                        <link name="entityId">${ $.provider}:data.default_source_address.entity_id</link>
                        <link name="entity">${ $.provider}:data.default_source_address</link>
                    </imports>
                </settings>
            </button>
        </container>
        <button name="add_address" component="Magento_Customer/js/address/default-address">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="formElement" xsi:type="string">container</item>
                    <item name="buttonClasses" xsi:type="string">add-new-address-button</item>
                    <item name="actions" xsi:type="array">
                        <item name="0" xsi:type="array">
                            <item name="targetName" xsi:type="string">${ $.parentName}.customer_address_update_modal.update_customer_source_address_form_loader</item>
                            <item name="actionName" xsi:type="string">destroyInserted</item>
                        </item>
                        <item name="1" xsi:type="array">
                            <item name="targetName" xsi:type="string">${ $.parentName}.customer_address_update_modal</item>
                            <item name="actionName" xsi:type="string">openModal</item>
                        </item>
                        <item name="2" xsi:type="array">
                            <item name="targetName" xsi:type="string">${ $.parentName}.customer_address_update_modal.update_customer_source_address_form_loader</item>
                            <item name="actionName" xsi:type="string">render</item>
                        </item>
                    </item>
                </item>
            </argument>
            <settings>
                <title translate="true">Add New Address</title>
                <imports>
                    <link name="parentId">${ $.provider}:data.customer_id</link>
                </imports>
            </settings>
        </button>
        <modal name="customer_address_update_modal">
            <settings>
                <options>
                    <option name="title" xsi:type="string">Add/Update Source Address</option>
                </options>
            </settings>
            <insertForm name="update_customer_source_address_form_loader" component="CTSG_Account/js/form/components/customer_form/insert-form">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="addressListingProvider" xsi:type="string">ns = customer_source_address_listing, index = customer_source_address_listing</item>
                        <item name="addressModalProvider" xsi:type="string">${ $.parentName }</item>
                    </item>
                </argument>
                <settings>
                    <formSubmitType>ajax</formSubmitType>
                    <renderUrl path="mui/index/render_handle">
                        <param name="handle">customer_source_address_edit</param>
                        <param name="buttons">1</param>
                    </renderUrl>
                    <loading>false</loading>
                    <toolbarContainer>${ $.parentName }</toolbarContainer>
                    <externalProvider>${ $.ns }.customer_source_address_form_data_source</externalProvider>
                    <ns>customer_source_address_form</ns>
                    <exports>
                        <link name="parentId">${ $.externalProvider }:data.parent_id</link>
                    </exports>
                    <imports>
                        <link name="parentId">${ $.provider}:data.customer_id</link>
                        <link name="onAddressDelete">${ $.ns }.${ $.ns }:deleteAddressAction</link>
                    </imports>
                </settings>
            </insertForm>
        </modal>
        <insertListing name="customer_source_address_listing" component="CTSG_Account/js/form/components/customer_form/insert-listing">
            <settings>
                <dataLinks>
                    <exports>false</exports>
                    <imports>true</imports>
                </dataLinks>
                <externalProvider>customer_source_address_listing.customer_source_address_listing_data_source</externalProvider>
                <selectionsProvider>customer_source_address_listing.customer_source_address_listing.customer_source_address_listing_columns.ids</selectionsProvider>
                <autoRender>true</autoRender>
                <dataScope>customer_source_address_listing</dataScope>
                <ns>customer_source_address_listing</ns>
                <exports>
                    <link name="parent_id">${ $.externalProvider }:params.parent_id</link>
                </exports>
                <imports>
                    <link name="parent_id">${ $.provider }:data.customer.entity_id</link>
                    <link name="onAction">ns = ${ $.ns }, index = actions:action</link>
                    <link name="onMassAction">ns = ${ $.ns }, index = listing_massaction:massaction</link>
                </imports>
            </settings>
        </insertListing>
    </fieldset>
</form>
