<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * Copyright © Zhik. 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">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">dealerlocator_location_form.dealerlocator_location_form_data_source</item>
            <item name="component" xsi:type="string">Zhik_DealerLocator/js/form/dealer-location-form</item>
        </item>
        <item name="config" xsi:type="array">
            <item name="submit_url" xsi:type="url" path="dealerlocator/location/save"/>
        </item>
        <item name="label" xsi:type="string" translate="true">Location Information</item>
        <item name="template" xsi:type="string">templates/form/collapsible</item>
    </argument>
    <settings>
        <buttons>
            <button name="save" class="Zhik\DealerLocator\Block\Adminhtml\Location\Edit\SaveButton"/>
            <button name="delete" class="Zhik\DealerLocator\Block\Adminhtml\Location\Edit\DeleteButton"/>
            <button name="back" class="Zhik\DealerLocator\Block\Adminhtml\Location\Edit\BackButton"/>
            <button name="save_and_continue" class="Zhik\DealerLocator\Block\Adminhtml\Location\Edit\SaveAndContinueButton"/>
            <button name="reject" class="Zhik\DealerLocator\Block\Adminhtml\Location\Edit\RejectButton"/>
        </buttons>
        <namespace>dealerlocator_location_form</namespace>
        <dataScope>data</dataScope>
        <deps>
            <dep>dealerlocator_location_form.dealerlocator_location_form_data_source</dep>
        </deps>
    </settings>
    <dataSource name="dealerlocator_location_form_data_source">
        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_Ui/js/form/provider</item>
            </item>
        </argument>
        <settings>
            <submitUrl path="dealerlocator/location/save"/>
        </settings>
        <dataProvider class="Zhik\DealerLocator\Model\Location\DataProvider" name="dealerlocator_location_form_data_source">
            <settings>
                <requestFieldName>location_id</requestFieldName>
                <primaryFieldName>location_id</primaryFieldName>
            </settings>
        </dataProvider>
    </dataSource>
    <fieldset name="general">
        <settings>
            <label translate="true">General Information</label>
        </settings>
        <field name="location_id" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <visible>false</visible>
                <dataScope>location_id</dataScope>
            </settings>
        </field>
        <field name="is_active" formElement="checkbox">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                    <item name="default" xsi:type="number">1</item>
                </item>
            </argument>
            <settings>
                <dataType>boolean</dataType>
                <label translate="true">Enable Location</label>
                <dataScope>is_active</dataScope>
            </settings>
            <formElements>
                <checkbox>
                    <settings>
                        <valueMap>
                            <map name="false" xsi:type="number">0</map>
                            <map name="true" xsi:type="number">1</map>
                        </valueMap>
                        <prefer>toggle</prefer>
                    </settings>
                </checkbox>
            </formElements>
        </field>
        <field name="name" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Location Name</label>
                <dataScope>name</dataScope>
            </settings>
        </field>
        <field name="status" formElement="select">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Status</label>
                <dataScope>status</dataScope>
            </settings>
            <formElements>
                <select>
                    <settings>
                        <options class="Zhik\DealerLocator\Model\Location\Source\Status"/>
                    </settings>
                </select>
            </formElements>
        </field>
        <field name="rejection_reason" formElement="textarea">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">Rejection Reason</label>
                <dataScope>rejection_reason</dataScope>
                <notice translate="true">Required when status is rejected</notice>
            </settings>
        </field>
        <field name="customer_id" formElement="select">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">Customer</label>
                <dataScope>customer_id</dataScope>
            </settings>
            <formElements>
                <select>
                    <settings>
                        <options class="Zhik\DealerLocator\Model\Location\Source\Customer"/>
                    </settings>
                </select>
            </formElements>
        </field>
    </fieldset>
    <fieldset name="address">
        <settings>
            <label translate="true">Address Information</label>
        </settings>
        <field name="address" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                    <item name="component" xsi:type="string">Zhik_DealerLocator/js/form/element/address-autocomplete</item>
                    <item name="elementTmpl" xsi:type="string">Zhik_DealerLocator/form/element/address-autocomplete</item>
                    <item name="autocomplete" xsi:type="string">new-password</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Street Address</label>
                <dataScope>address</dataScope>
            </settings>
        </field>
        <field name="city" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">City</label>
                <dataScope>city</dataScope>
            </settings>
        </field>
        <field name="state" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">State/Province</label>
                <dataScope>state</dataScope>
            </settings>
        </field>
        <field name="postal_code" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Postal Code</label>
                <dataScope>postal_code</dataScope>
            </settings>
        </field>
        <field name="country" formElement="select">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Country</label>
                <dataScope>country</dataScope>
            </settings>
            <formElements>
                <select>
                    <settings>
                        <options class="Magento\Directory\Model\Config\Source\Country"/>
                    </settings>
                </select>
            </formElements>
        </field>
        <field name="latitude" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="validate-number" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Latitude</label>
                <dataScope>latitude</dataScope>
            </settings>
        </field>
        <field name="longitude" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="validate-number" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Longitude</label>
                <dataScope>longitude</dataScope>
            </settings>
        </field>
    </fieldset>
    <fieldset name="contact">
        <settings>
            <label translate="true">Contact Information</label>
        </settings>
        <field name="phone" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Phone</label>
                <dataScope>phone</dataScope>
            </settings>
        </field>
        <field name="email" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                    <rule name="validate-email" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Email</label>
                <dataScope>email</dataScope>
            </settings>
        </field>
        <field name="website" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="validate-url" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Website</label>
                <dataScope>website</dataScope>
            </settings>
        </field>
        <field name="hours" formElement="textarea">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">Business Hours</label>
                <dataScope>hours</dataScope>
            </settings>
        </field>
    </fieldset>
    <fieldset name="additional">
        <settings>
            <label translate="true">Additional Information</label>
        </settings>
        <field name="description" formElement="textarea">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">Description</label>
                <dataScope>description</dataScope>
            </settings>
        </field>
        <field name="tag_ids" formElement="multiselect">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">location</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">Tags</label>
                <dataScope>tag_ids</dataScope>
            </settings>
            <formElements>
                <multiselect>
                    <settings>
                        <options class="Zhik\DealerLocator\Model\Tag\Source\Options"/>
                    </settings>
                </multiselect>
            </formElements>
        </field>
    </fieldset>
</form>