<?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" extends="pagebuilder_base_form">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">pagebuilder_block_form.pagebuilder_block_form_data_source</item>
        </item>
        <item name="label" xsi:type="string" translate="true">Block</item>
    </argument>
    <settings>
        <deps>
            <dep>pagebuilder_block_form.pagebuilder_block_form_data_source</dep>
        </deps>
        <namespace>pagebuilder_block_form</namespace>
    </settings>
    <dataSource name="pagebuilder_block_form_data_source">
        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_PageBuilder/js/form/provider</item>
            </item>
        </argument>
        <dataProvider name="pagebuilder_block_form_data_source" class="Magento\PageBuilder\Model\ContentType\DataProvider">
            <settings>
                <requestFieldName/>
                <primaryFieldName/>
            </settings>
        </dataProvider>
    </dataSource>
    <fieldset name="appearance_fieldset" sortOrder="10" component="Magento_PageBuilder/js/form/element/dependent-fieldset">
        <settings>
            <label translate="true">Appearance</label>
            <additionalClasses>
                <class name="admin__fieldset-visual-select-large">true</class>
            </additionalClasses>
            <collapsible>false</collapsible>
            <opened>true</opened>
            <imports>
                <link name="hideFieldset">${$.name}.appearance:options</link>
                <link name="hideLabel">${$.name}.appearance:options</link>
            </imports>
        </settings>
        <field name="appearance" formElement="select" sortOrder="10" component="Magento_PageBuilder/js/form/element/dependent-visual-select">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="default" xsi:type="string">default</item>
                </item>
            </argument>
            <settings>
                <additionalClasses>
                    <class name="admin__field-wide">true</class>
                    <class name="admin__field-visual-select-container">true</class>
                </additionalClasses>
                <dataType>text</dataType>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <elementTmpl>Magento_PageBuilder/form/element/visual-select</elementTmpl>
            </settings>
            <formElements>
                <select>
                    <settings>
                        <options class="AppearanceSourceBlock" />
                    </settings>
                </select>
            </formElements>
        </field>
    </fieldset>
    <fieldset name="general" sortOrder="20">
        <settings>
            <label/>
        </settings>
        <component component="Magento_PageBuilder/js/form/element/block-chooser" name="block_chooser" sortOrder="10">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="requestParameter" xsi:type="string">block_id</item>
                    <item name="dataUrlConfigPath" xsi:type="string">content_types.block.additional_data.chooserConfig.dataUrl</item>
                    <item name="modalName" xsi:type="string">ns = ${ $.ns }, index = modal</item>
                    <item name="buttonTitle" xsi:type="string" translate="true">Select Block</item>
                    <item name="displayMetadata" xsi:type="boolean">false</item>
                </item>
            </argument>
            <settings>
                <imports>
                    <link name="id">${ $.ns }.${ $.ns }.general.block_id:value</link>
                </imports>
            </settings>
        </component>
        <field name="block_id" formElement="hidden" sortOrder="20">
            <settings>
                <dataType>text</dataType>
                <imports>
                    <link name="value">${ $.ns }.${ $.ns }.modal.pagebuilder_block_select_grid.columns.ids:lastSelected</link>
                </imports>
            </settings>
        </field>
        <field name="template" formElement="select" sortOrder="30" component="Magento_PageBuilder/js/form/element/dependent-select">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="default" xsi:type="string">default</item>
                </item>
            </argument>
            <settings>
                <label translate="true">Template</label>
                <dataType>text</dataType>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
            </settings>
            <formElements>
                <select>
                    <settings>
                        <options>
                            <option name="0" xsi:type="array">
                                <item name="value" xsi:type="string">widget/static_block/default.phtml</item>
                                <item name="label" xsi:type="string" translate="true">CMS Static Block Default Template</item>
                            </option>
                        </options>
                    </settings>
                </select>
            </formElements>
        </field>
    </fieldset>
    <modal name="modal" sortOrder="30">
        <settings>
            <listens>
                <link name="pagebuilder_block_select_grid.pagebuilder_block_select_grid.columns.ids:lastSelected">closeModal</link>
            </listens>
            <modalClass>pagebuilder-block-modal</modalClass>
            <options>
                <option name="title" xsi:type="string" translate="true">Select Block</option>
            </options>
        </settings>
        <insertListing name="pagebuilder_block_select_grid" sortOrder="10">
            <settings>
                <externalData>block_id</externalData>
                <externalProvider>${ $.ns }.pagebuilder_block_select_grid_data_source</externalProvider>
                <loading>false</loading>
                <selectionsProvider>${ $.ns }.${ $.ns }.columns.ids</selectionsProvider>
                <autoRender>true</autoRender>
                <dataScope>block_id</dataScope>
                <ns>pagebuilder_block_select_grid</ns>
                <dataLinks>
                    <imports>false</imports>
                    <exports>true</exports>
                </dataLinks>
                <listens>
                    <link name="pagebuilder_block_select_grid.pagebuilder_block_select_grid.columns.ids:lastSelected">save</link>
                </listens>
            </settings>
        </insertListing>
    </modal>
</form>
