diff --git a/cypress/integration/form.js b/cypress/integration/form.js index df06382d06..455b577f9d 100644 --- a/cypress/integration/form.js +++ b/cypress/integration/form.js @@ -1,6 +1,5 @@ context('Form', () => { before(() => { - Cypress.config('defaultCommandTimeout', 100000); cy.login(); cy.visit('/desk'); cy.window().its('frappe').then(frappe => { @@ -27,14 +26,17 @@ context('Form', () => { cy.get('.filter-field .input-with-feedback.form-control').type('123', { force: true }); cy.get('.filter-box .btn:contains("Apply")').click({ force: true }); cy.visit('/desk#Form/Contact/Test Form Contact 3'); - cy.get('.prev-doc').click(); + cy.get('.prev-doc').should('be.visible').click(); cy.get('.msgprint-dialog .modal-body').contains('No further records').should('be.visible'); cy.get('.btn-modal-close:visible').click(); cy.get('.next-doc').click(); cy.wait(200); cy.contains('Test Form Contact 2').should('not.exist'); cy.get('.page-title .title-text').should('contain', 'Test Form Contact 1'); - cy.visit('/desk#List/Contact'); - cy.get('.clear-filters.btn').click(); + // clear filters + cy.window().its('frappe').then((frappe) => { + let list_view = frappe.get_list_view('Contact'); + list_view.filter_area.filter_list.clear_filters(); + }); }); }); diff --git a/frappe/desk/form/utils.py b/frappe/desk/form/utils.py index cf2a8f0879..498ab50645 100644 --- a/frappe/desk/form/utils.py +++ b/frappe/desk/form/utils.py @@ -84,7 +84,7 @@ def update_comment(name, content): doc.save(ignore_permissions=True) @frappe.whitelist() -def get_next(doctype, value, prev, filters, sort_order, sort_field): +def get_next(doctype, value, prev, filters=None, sort_order='desc', sort_field='modified'): prev = int(prev) if not filters: filters = [] diff --git a/frappe/public/js/frappe/form/form.js b/frappe/public/js/frappe/form/form.js index 2f30228aff..02aa8b78dc 100644 --- a/frappe/public/js/frappe/form/form.js +++ b/frappe/public/js/frappe/form/form.js @@ -858,13 +858,27 @@ frappe.ui.form.Form = class FrappeForm { } navigate_records(prev) { - let list_settings = frappe.get_user_settings(this.doctype)['List']; + let filters, sort_field, sort_order; + let list_view = frappe.get_list_view(this.doctype); + if (list_view) { + filters = list_view.get_filters_for_args(); + sort_field = list_view.sort_field; + sort_order = list_view.sort_order; + } else { + let list_settings = frappe.get_user_settings(this.doctype)['List']; + if (list_settings) { + filters = list_settings.filters; + sort_field = list_settings.sort_field; + sort_order = list_settings.sort_order; + } + } + let args = { doctype: this.doctype, value: this.docname, - filters: list_settings.filters, - sort_order: list_settings.sort_order, - sort_field: list_settings.sort_by, + filters, + sort_order, + sort_field, prev, }; diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index e8abb9d490..561117e342 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -1538,3 +1538,8 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { $(document).on('save', (event, doc) => { frappe.views.ListView.trigger_list_update(doc); }); + +frappe.get_list_view = (doctype) => { + let route = `List/${doctype}/List`; + return frappe.views.list_view[route]; +};