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 c0606e44e964f..8b4aeab762e13 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 @@ -1,6 +1,6 @@ /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2016 Adobe + * All Rights Reserved. */ /** @@ -689,14 +689,16 @@ define([ * @param {Number|String} prop - additional property to element */ processingAddChild: function (ctx, index, prop) { + var newTotal, + newPages; + this.bubble('addChild', false); - if (this.relatedData.length && this.relatedData.length % this.pageSize === 0) { - this.pages(this.pages() + 1); - this.nextPage(); - } else if (~~this.currentPage() !== this.pages()) { - this.currentPage(this.pages()); - } + newTotal = this.relatedData.length + 1; + newPages = Math.ceil(newTotal / this.pageSize); + + this.pages(newPages); + this.currentPage(newPages); this.addChild(ctx, index, prop); }, diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic-rows.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic-rows.test.js index 1101770b0faa2..31ac28d598578 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic-rows.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic-rows.test.js @@ -1,6 +1,6 @@ /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. + * Copyright 2017 Adobe + * All Rights Reserved. */ /* eslint-disable max-nested-callbacks */ @@ -204,5 +204,37 @@ define([ expect(model.pages()).toEqual(2); expect(model.currentPage()).toEqual(2); }); + + it('should process pages before addChild', function () { + var ctx = {}, + index = 5, + prop = 'someProp'; + + model.pageSize = 2; + model.relatedData = [ + { + name: 'first' + }, + { + name: 'second' + }, + { + name: 'third' + }, + { + name: 'fourth' + }, + { + name: 'fifth' + } + ]; + model.bubble = jasmine.createSpy(); + model.addChild = jasmine.createSpy(); + model.processingAddChild(ctx, index, prop); + expect(model.bubble).toHaveBeenCalledWith('addChild', false); + expect(model.pages()).toEqual(3); + expect(model.currentPage()).toEqual(3); + expect(model.addChild).toHaveBeenCalledWith(ctx, index, prop); + }); }); });