diff --git a/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php b/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php index 6688648a3c4fd6fabbc010e8440be6c6813a12b3..7f21d9e69c6e0eeee63ce6a2a44a3aa9d66d65bc 100644 --- a/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php +++ b/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php @@ -127,7 +127,7 @@ class Bundle } $options = []; foreach ($bundleOptionsData as $key => $optionData) { - if ((bool)$optionData['delete']) { + if (!empty($optionData['delete'])) { continue; } diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php index aec6549f400fc5742eb0a64612572039f4a1a878..683a96133ad3005beeea1812744da6496bd84ae2 100644 --- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php +++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Attributes.php @@ -182,6 +182,11 @@ class Attributes extends AbstractModifier . '.create_new_attribute_modal', 'actionName' => 'toggleModal', ], + [ + 'targetName' => 'product_form.product_form.add_attribute_modal' + . '.create_new_attribute_modal.product_attribute_add_form', + 'actionName' => 'destroyInserted' + ], [ 'targetName' => 'product_form.product_form.add_attribute_modal' diff --git a/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml b/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml index 772bc1e6ec5d721b45a48b2ab1cfade000af6b09..f795fcabe701c0298e8362db57a0af372c0535e9 100644 --- a/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml +++ b/app/code/Magento/Catalog/view/adminhtml/ui_component/product_attribute_add_form.xml @@ -147,7 +147,6 @@ <item name="isTemplate" xsi:type="boolean">true</item> <item name="is_collection" xsi:type="boolean">true</item> <item name="componentType" xsi:type="string">container</item> - <item name="positionProvider" xsi:type="string">attribute_options.position</item> </item> </argument> <field name="is_default" component="Magento_Catalog/js/form/element/checkbox" sortOrder="0" formElement="checkbox"> @@ -184,12 +183,8 @@ </item> </argument> <settings> - <additionalClasses> - <class name="_hidden">true</class> - </additionalClasses> <dataType>text</dataType> <visible>false</visible> - <dataScope>position</dataScope> </settings> </field> </container> diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js b/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js index 51ffeaea0fc0ccda677a9648ee3b501a2562b207..2f6703cc92eac405dfb0763b47f1e5f08bd1d60a 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/js/form/element/input.js @@ -54,9 +54,16 @@ define([ if (!_.isEmpty(this.suffixName) || _.isNumber(this.suffixName)) { suffixName = '.' + this.suffixName; } - this.dataScope = 'data.' + this.prefixName + '.' + this.elementName + suffixName; - this.links.value = this.provider + ':' + this.dataScope; + this.exportDataLink = 'data.' + this.prefixName + '.' + this.elementName + suffixName; + this.exports.value = this.provider + ':' + this.exportDataLink; + }, + + /** @inheritdoc */ + destroy: function () { + this._super(); + + this.source.remove(this.exportDataLink); }, /** diff --git a/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html b/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html index d4cfb02611416ae32b7e142e523058288245c9d5..9a52dcefa304281e71099b9d29f51a7a335752f9 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html +++ b/app/code/Magento/Catalog/view/adminhtml/web/template/form/element/action-delete.html @@ -7,7 +7,7 @@ <button class="action-delete" attr="{'data-action': 'remove_row'}" data-bind=" - click: function(){ $data.processingDeleteRecord($parents); }, + click: function(){ $parent.processingDeleteRecord($record().index, $record.recordId); }, attr: { title: $parent.deleteButtonLabel } diff --git a/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js b/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js index 7686de1d45c5dad276775c7ae624db0b6cac8365..eb54d8af001b3b338080cfa0d71f4478535bd330 100644 --- a/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js +++ b/app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js @@ -97,7 +97,7 @@ define([ success: function (res) { var eventData, parameters; - $(document).trigger('ajax:addToCart', form.data().productSku); + $(document).trigger('ajax:addToCart', form.data().productSku, form, res); if (self.isLoaderEnabled()) { $('body').trigger(self.options.processStop); diff --git a/app/code/Magento/Config/Model/Config/Structure/Reader.php b/app/code/Magento/Config/Model/Config/Structure/Reader.php index 5916649588bcb271c25ba13d368e62e22602b345..c83c2e1ae13207d29ecea5d51daf46ee99ed82d8 100644 --- a/app/code/Magento/Config/Model/Config/Structure/Reader.php +++ b/app/code/Magento/Config/Model/Config/Structure/Reader.php @@ -124,6 +124,7 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem * Processing nodes of the document before merging * * @param string $content + * @throws \Magento\Framework\Config\Dom\ValidationException * @return string */ protected function processingDocument($content) @@ -131,7 +132,12 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem $object = new DataObject(); $document = new \DOMDocument(); - $document->loadXML($content); + try { + $document->loadXML($content); + } catch (\Exception $e) { + throw new \Magento\Framework\Config\Dom\ValidationException($e->getMessage()); + } + $this->compiler->compile($document->documentElement, $object, $object); return $document->saveXML(); diff --git a/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html b/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html index ad3d62f6c1c2796038cc7c969316eff4c7996edd..6b3a232cd3e3912473bc5e7619c2c2cecf006a09 100644 --- a/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html +++ b/app/code/Magento/Customer/view/frontend/web/template/authentication-popup.html @@ -54,10 +54,10 @@ id="login-form"> <div class="fieldset login" data-bind="attr: {'data-hasrequired': $t('* Required Fields')}"> <div class="field email required"> - <label class="label" for="email"><span data-bind="i18n: 'Email Address'"></span></label> + <label class="label" for="customer-email"><span data-bind="i18n: 'Email Address'"></span></label> <div class="control"> <input name="username" - id="email" + id="customer-email" type="email" class="input-text" data-bind="attr: {autocomplete: autocomplete}" diff --git a/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml b/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml index 4152c06fa3ddc5d153f93da6b9c2c6c278b8152c..2fdf5f3cd0ea92b56d7cf4413c59d72fc9b29425 100644 --- a/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml +++ b/app/code/Magento/Swatches/view/adminhtml/ui_component/product_attribute_add_form.xml @@ -87,7 +87,6 @@ <additionalClasses> <class name="admin__field-wide">true</class> </additionalClasses> - <dataScope>text_swatch</dataScope> <componentType>dynamicRows</componentType> </settings> <container name="record" component="Magento_Ui/js/dynamic-rows/record"> @@ -96,8 +95,6 @@ <item name="isTemplate" xsi:type="boolean">true</item> <item name="is_collection" xsi:type="boolean">true</item> <item name="componentType" xsi:type="string">container</item> - <item name="positionProvider" xsi:type="string">text_swatch.position</item> - <item name="dataScope" xsi:type="string"/> </item> </argument> <field name="defaulttext" component="Magento_Catalog/js/form/element/checkbox" sortOrder="0" formElement="checkbox"> @@ -183,15 +180,11 @@ </item> </argument> <settings> - <additionalClasses> - <class name="_hidden">true</class> - </additionalClasses> <dataType>text</dataType> <visible>false</visible> - <dataScope>position</dataScope> </settings> </field> - <actionDelete name="action_delete" component="Magento_Catalog/js/form/element/action-delete" template="Magento_Catalog/form/element/action-delete"> + <actionDelete name="action_delete"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="fit" xsi:type="boolean">true</item> @@ -227,7 +220,6 @@ <class name="swatch-visual-options-container">true</class> <class name="admin__field-wide">true</class> </additionalClasses> - <dataScope>visual_swatch</dataScope> <componentType>dynamicRows</componentType> </settings> <container name="record" component="Magento_Ui/js/dynamic-rows/record"> @@ -236,8 +228,6 @@ <item name="isTemplate" xsi:type="boolean">true</item> <item name="is_collection" xsi:type="boolean">true</item> <item name="componentType" xsi:type="string">container</item> - <item name="positionProvider" xsi:type="string">text_swatch.position</item> - <item name="dataScope" xsi:type="string"/> </item> </argument> <field name="defaultvisual" component="Magento_Catalog/js/form/element/checkbox" sortOrder="0" formElement="checkbox"> @@ -276,7 +266,6 @@ <class name="swatches-visual-col">true</class> </additionalClasses> <label translate="true">Swatch</label> - <dataScope>swatchvisual</dataScope> </settings> </field> <field name="optionvisual_default_store_view" component="Magento_Catalog/js/form/element/input" template="Magento_Catalog/form/element/input" formElement="input"> @@ -290,7 +279,6 @@ <settings> <dataType>text</dataType> <label translate="true">Default Store View</label> - <dataScope>optionvisual_default_store_view</dataScope> </settings> </field> <field name="optionvisual_admin" component="Magento_Catalog/js/form/element/input" template="Magento_Catalog/form/element/input" formElement="input"> @@ -304,7 +292,6 @@ <settings> <dataType>text</dataType> <label translate="true">Admin</label> - <dataScope>optionvisual_admin</dataScope> </settings> </field> <field name="position" component="Magento_Catalog/js/form/element/input" formElement="input"> @@ -315,15 +302,10 @@ </item> </argument> <settings> - <additionalClasses> - <class name="_hidden">true</class> - </additionalClasses> - <dataType>text</dataType> - <visible>false</visible> - <dataScope>position</dataScope> + <visible>false</visible> </settings> </field> - <actionDelete name="action_delete" component="Magento_Catalog/js/form/element/action-delete" template="Magento_Catalog/form/element/action-delete"> + <actionDelete name="action_delete"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="fit" xsi:type="boolean">true</item> diff --git a/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js b/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js index e63c9a2138a3627671343e11a02908b1d4799653..2fbce5aefbdebe34e025a71e4062cd2a22361140 100644 --- a/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js +++ b/app/code/Magento/Swatches/view/adminhtml/web/js/form/element/swatch-visual.js @@ -305,18 +305,30 @@ define([ */ initialize: function () { this._super() - .initOldCode(); + .initOldCode() + .on('value', this.onChangeColor.bind(this)); return this; }, + /** + * Handler function that execute when color changes. + * + * @param {String} data - color + */ + onChangeColor: function (data) { + if (!data) { + jQuery('.' + this.elementName).parent().removeClass('unavailable'); + } + }, + /** * Initialize wrapped former implementation. * * @returns {Object} Chainable. */ initOldCode: function () { - jQuery.async('.' + this.elementName, function (elem) { + jQuery.async('.' + this.elementName, this.name, function (elem) { oldCode(this.value(), elem.parentElement, this.uploadUrl, this.elementName); }.bind(this)); @@ -336,9 +348,15 @@ define([ this.elementName = this.prefixElementName + recordId; this.inputName = prefixName + '[' + this.elementName + ']'; - this.dataScope = 'data.' + this.prefixName + '.' + this.elementName; + this.exportDataLink = 'data.' + this.prefixName + '.' + this.elementName; + this.exports.value = this.provider + ':' + this.exportDataLink; + }, + + /** @inheritdoc */ + destroy: function () { + this._super(); - this.links.value = this.provider + ':' + this.dataScope; + this.source.remove(this.exportDataLink); }, /** diff --git a/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html b/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html index 271cea918b7be2087d49e16161bb08e2f5a6c04f..8296e944a8ed3f7c2311c2eb75e4593545d0bc66 100644 --- a/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html +++ b/app/code/Magento/Swatches/view/adminhtml/web/template/swatch-visual.html @@ -11,7 +11,7 @@ }, value: value "/> -<div data-bind="attr: {class: 'swatch_window ' + elementName}"></div> +<div attr="class: 'swatch_window ' + elementName" ko-style="backgroundColor: $data.value"></div> <div class="swatch_sub-menu_container"> <div class="swatch_row position-relative"> <div class="swatch_row_name colorpicker_handler"> diff --git a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js index 01fa03d1b4b67cb71427240a54af4b4e560cb73c..94a05e5fcde33efe26b2817d21fecfea403c21c6 100644 --- a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js +++ b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js @@ -224,6 +224,14 @@ define([ return this; }, + /** @inheritdoc */ + destroy: function () { + if (this.dnd()) { + this.dnd().destroy(); + } + this._super(); + }, + /** * Calls 'initObservable' of parent *