diff --git a/vendor/magento/module-catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php b/vendor/magento/module-catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php index 2e1ea59573c..47eff86bb8c 100644 --- a/vendor/magento/module-catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php +++ b/vendor/magento/module-catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php @@ -378,8 +378,8 @@ class CustomOptions extends AbstractModifier 'config' => [ 'addButtonLabel' => __('Add Option'), 'componentType' => DynamicRows::NAME, - 'component' => 'Magento_Catalog/js/components/dynamic-rows-import-custom-options', - 'template' => 'ui/dynamic-rows/templates/collapsible', + 'component' => 'Magento_Catalog/js/components/dynamic-rows-import-custom-options-per-page', + 'template' => 'Magento_Catalog/components/dynamic-rows-import-custom-options-per-page', 'additionalClasses' => 'admin__field-wide', 'deleteProperty' => static::FIELD_IS_DELETE, 'deleteValue' => '1', @@ -393,6 +393,9 @@ class CustomOptions extends AbstractModifier 'insertData' => '${ $.provider }:${ $.dataProvider }', '__disableTmpl' => ['insertData' => false], ], + 'sizesConfig' => [ + 'enabled' => true + ] ], ], ], diff --git a/vendor/magento/module-catalog/view/adminhtml/web/js/components/dynamic-rows-import-custom-options-per-page.js b/vendor/magento/module-catalog/view/adminhtml/web/js/components/dynamic-rows-import-custom-options-per-page.js new file mode 100644 index 00000000000..04e889866f2 --- /dev/null +++ b/vendor/magento/module-catalog/view/adminhtml/web/js/components/dynamic-rows-import-custom-options-per-page.js @@ -0,0 +1,110 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +define([ + 'Magento_Catalog/js/components/dynamic-rows-import-custom-options', + 'underscore', + 'mageUtils', + 'uiLayout', + 'rjsResolver' +], function (DrCustomOptions, _, utils, layout, resolver) { + 'use strict'; + + return DrCustomOptions.extend({ + defaults: { + sizesConfig: { + component: 'Magento_Ui/js/grid/paging/sizes', + name: '${ $.name }_sizes', + options: { + '20': { + value: 20, + label: 20 + }, + '30': { + value: 30, + label: 30 + }, + '50': { + value: 50, + label: 50 + }, + '100': { + value: 100, + label: 100 + }, + '200': { + value: 200, + label: 200 + } + }, + storageConfig: { + provider: '${ $.storageConfig.provider }', + namespace: '${ $.storageConfig.namespace }' + }, + enabled: false + }, + links: { + options: '${ $.sizesConfig.name }:options', + pageSize: '${ $.sizesConfig.name }:value' + }, + listens: { + 'pageSize': 'onPageSizeChange' + }, + modules: { + sizes: '${ $.sizesConfig.name }' + } + }, + + /** + * Initializes paging component. + * + * @returns {Paging} Chainable. + */ + initialize: function () { + this._super() + .initSizes(); + + return this; + }, + + /** + * Initializes sizes component. + * + * @returns {Paging} Chainable. + */ + initSizes: function () { + if (this.sizesConfig.enabled) { + layout([this.sizesConfig]); + } + + return this; + }, + + /** + * Initializes observable properties. + * + * @returns {Paging} Chainable. + */ + initObservable: function () { + this._super() + .track([ + 'pageSize' + ]); + + return this; + }, + + /** + * Handles changes of the page size. + */ + onPageSizeChange: function () { + resolver(function () { + if (this.elems().length) { + this.reload(); + } + }, this); + } + }); +}); diff --git a/vendor/magento/module-catalog/view/adminhtml/web/template/components/dynamic-rows-import-custom-options-per-page.html b/vendor/magento/module-catalog/view/adminhtml/web/template/components/dynamic-rows-import-custom-options-per-page.html new file mode 100644 index 00000000000..e125c894cad --- /dev/null +++ b/vendor/magento/module-catalog/view/adminhtml/web/template/components/dynamic-rows-import-custom-options-per-page.html @@ -0,0 +1,76 @@ + +
+ + +
+
+ + +
+ + + + +
+
+ + + + + + + + + + + + + +
+
+
+
+ +
+ + + +
+ + +
+ +
+
+
+ +
+ +
+
+
diff --git a/vendor/magento/module-ui/view/base/web/js/dynamic-rows/dnd.js b/vendor/magento/module-ui/view/base/web/js/dynamic-rows/dnd.js index c64bcdb3abf..0ce403f9bfa 100644 --- a/vendor/magento/module-ui/view/base/web/js/dynamic-rows/dnd.js +++ b/vendor/magento/module-ui/view/base/web/js/dynamic-rows/dnd.js @@ -124,7 +124,9 @@ define([ originRecord = $(elem).parents('tr').eq(0), drEl = this.draggableElement, $table = $(elem).parents('table').eq(0), - $tableWrapper = $table.parent(); + $tableWrapper = $table.parent(), + outerHight = + $table.children('thead').outerHeight() === undefined ? 0 : $table.children('thead').outerHeight(); this.disableScroll(); $(recordNode).addClass(this.draggableElementClass); @@ -135,7 +137,7 @@ define([ drEl.instanceCtx = this.getRecord(originRecord[0]); drEl.eventMousedownY = this.getPageY(event); drEl.minYpos = - $table.offset().top - originRecord.offset().top + $table.children('thead').outerHeight(); + $table.offset().top - originRecord.offset().top + outerHight; drEl.maxYpos = drEl.minYpos + $table.children('tbody').outerHeight() - originRecord.outerHeight(); $tableWrapper.append(recordNode); this.body.on('mousemove touchmove', this.mousemoveHandler);