<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* @author Amasty Team
* @copyright Copyright (c) 2022 Amasty (https://www.amasty.com)
* @package Grouped Options for Magento 2
*/-->

<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">amgrouped_group_form.amgrouped_group_form_data_source</item>
            <item name="deps" xsi:type="string">amgrouped_group_form.amgrouped_group_form_data_source</item>
        </item>
        <item name="config" xsi:type="array">
            <item name="dataScope" xsi:type="string">data</item>
            <item name="namespace" xsi:type="string">amgrouped_group_form</item>
        </item>
        <item name="template" xsi:type="string">templates/form/collapsible</item>
        <item name="buttons" xsi:type="array">
            <item name="back" xsi:type="array">
                <item name="name" xsi:type="string">back</item>
                <item name="label" xsi:type="string" translate="true">Back</item>
                <item name="class" xsi:type="string">back</item>
                <item name="url" xsi:type="string">*/*/</item>
            </item>
            <item name="delete" xsi:type="string">Amasty\GroupedOptions\Ui\Button\Group\DeleteButton</item>
            <item name="reset" xsi:type="string">Amasty\GroupedOptions\Ui\Button\Group\ResetButton</item>
            <item name="save_and_continue" xsi:type="string">Amasty\GroupedOptions\Ui\Button\Group\SaveAndContinueButton</item>
            <item name="save" xsi:type="string">Amasty\GroupedOptions\Ui\Button\Group\SaveButton</item>
        </item>
    </argument>
    <dataSource name="amgrouped_group_form_data_source">
        <argument name="dataProvider" xsi:type="configurableObject">
            <argument name="class" xsi:type="string">Amasty\GroupedOptions\Ui\DataProvider\Group\Form\DataProvider</argument>
            <argument name="name" xsi:type="string">amgrouped_group_form_data_source</argument>
            <argument name="primaryFieldName" xsi:type="string">group_id</argument>
            <argument name="requestFieldName" xsi:type="string">group_id</argument>
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="submit_url" xsi:type="url" path="amgrouped_options/group/save" />
                </item>
            </argument>
        </argument>
        <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>
    </dataSource>
    <fieldset name="general">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string" translate="true">General</item>
                <item name="collapsible" xsi:type="boolean">true</item>
                <item name="opened" xsi:type="boolean">true</item>
            </item>
        </argument>

        <field name="enabled">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">boolean</item>
                    <item name="label" xsi:type="string" translate="true">Status</item>
                    <item name="formElement" xsi:type="string">checkbox</item>
                    <item name="prefer" xsi:type="string">toggle</item>
                    <item name="dataScope" xsi:type="string">enabled</item>
                    <item name="valueMap" xsi:type="array">
                        <item name="true" xsi:type="number">1</item>
                        <item name="false" xsi:type="number">0</item>
                    </item>
                    <item name="default" xsi:type="number">1</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                    <item name="toggleLabels" xsi:type="array">
                        <item name="on" xsi:type="string" translate="true">Active</item>
                        <item name="off" xsi:type="string" translate="true">Inactive</item>
                    </item>
                </item>
            </argument>
        </field>

        <field name="group_id">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="visible" xsi:type="boolean">false</item>
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement" xsi:type="string">input</item>
                </item>
            </argument>
        </field>

        <field name="name" class="Amasty\GroupedOptions\Ui\Component\Form\GroupName">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="string" translate="true">Group Title</item>
                    <item name="componentType" xsi:type="string">field</item>
                    <item name="component" xsi:type="string">Amasty_GroupedOptions/js/form/element/title-extend</item>
                    <item name="elementTmpl" xsi:type="string">Amasty_GroupedOptions/form/element/title</item>
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="validation" xsi:type="array">
                        <item name="required-entry" xsi:type="boolean">true</item>
                    </item>
                    <item name="sortOrder" xsi:type="number">15</item>
                </item>
            </argument>
        </field>

        <field name="group_code">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="string" translate="true">Group Code</item>
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="validation" xsi:type="array">
                        <item name="required-entry" xsi:type="boolean">true</item>
                    </item>
                    <item name="sortOrder" xsi:type="number">20</item>
                </item>
            </argument>
        </field>

        <field name="visual" class="Amasty\GroupedOptions\Ui\Component\Form\Visual">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="component" xsi:type="string">Amasty_GroupedOptions/js/form/element/swatch-extend</item>
                    <item name="elementTmpl" xsi:type="string">Amasty_GroupedOptions/swatch-visual</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="label" xsi:type="string" translate="true">Swatch</item>
                    <item name="uploadUrl" xsi:type="url" path="swatches/iframe/show"/>
                    <item name="prefixName" xsi:type="string">swatchvisual.value</item>
                    <item name="prefixElementName" xsi:type="string">swatch</item>
                    <item name="sortOrder" xsi:type="number">40</item>
                </item>
            </argument>
            <settings>
                <additionalClasses>
                    <class name="swatches-visual-col">true</class>
                </additionalClasses>
            </settings>
        </field>

        <field name="url">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="string" translate="true">Alias</item>
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="sortOrder" xsi:type="number">50</item>
                </item>
            </argument>
        </field>

        <field name="position">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="string" translate="true">Position</item>
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="default" xsi:type="number">0</item>
                    <item name="validation" xsi:type="array">
                        <item name="required-entry" xsi:type="boolean">true</item>
                        <item name="validate-number" xsi:type="boolean">true</item>
                    </item>
                    <item name="sortOrder" xsi:type="number">50</item>
                </item>
            </argument>
        </field>

        <field name="attribute_id">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="string" translate="true">Attribute</item>
                    <item name="dataType" xsi:type="string">string</item>
                    <item name="formElement" xsi:type="string">select</item>
                    <item name="sortOrder" xsi:type="number">60</item>
                </item>
                <item name="options" xsi:type="object">Amasty\GroupedOptions\Model\Source\GroupForm\Attribute</item>
            </argument>
        </field>

        <field name="attribute_options" template="Amasty_GroupedOptions/form/element/checkbox-set" class="Amasty\GroupedOptions\Ui\Component\Form\AttributeOptions">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="component" xsi:type="string">Amasty_GroupedOptions/js/form/element/checkbox-set-extend</item>
                    <item name="label" xsi:type="string" translate="true">Attribute Options</item>
                    <item name="visible" xsi:type="boolean">true</item>
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement" xsi:type="string">checkboxset</item>
                    <item name="source" xsi:type="string">module</item>
                    <item name="multiple" xsi:type="boolean">true</item>
                    <item name="dataScope" xsi:type="string">attribute_options</item>
                </item>
            </argument>
        </field>
    </fieldset>
</form>
