diff --git a/crm/api/doc.py b/crm/api/doc.py index a0bd31d4..74405caa 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -60,6 +60,7 @@ def get_list_data( doctype: str, filters: dict, order_by: str, + page_length=20, page_length_count=20, columns=None, rows=None, @@ -111,7 +112,7 @@ def get_list_data( fields=rows, filters=filters, order_by=order_by, - page_length=page_length_count, + page_length=page_length, ) or [] fields = frappe.get_meta(doctype).fields @@ -155,6 +156,7 @@ def get_list_data( "columns": columns, "rows": rows, "fields": fields, + "page_length": page_length, "page_length_count": page_length_count, "is_default": is_default, "views": get_views(doctype), diff --git a/frappe-ui b/frappe-ui index 75407e4d..19db8bc3 160000 --- a/frappe-ui +++ b/frappe-ui @@ -1 +1 @@ -Subproject commit 75407e4d0f52b01d572ed2c2e26e2a05abdefb9e +Subproject commit 19db8bc3a7463c11e4ef3b11ff7641371701bb47 diff --git a/frontend/src/components/ListViews/LeadsListView.vue b/frontend/src/components/ListViews/LeadsListView.vue index 967a4199..f788e512 100644 --- a/frontend/src/components/ListViews/LeadsListView.vue +++ b/frontend/src/components/ListViews/LeadsListView.vue @@ -102,6 +102,7 @@ rowCount: options.rowCount, totalCount: options.totalCount, }" + @loadMore="emit('loadMore')" /> @@ -139,5 +140,7 @@ const props = defineProps({ }, }) +const emit = defineEmits(['loadMore']) + const pageLengthCount = defineModel() diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue index 92e4aa6d..e7442e13 100644 --- a/frontend/src/components/ViewControls.vue +++ b/frontend/src/components/ViewControls.vue @@ -96,6 +96,7 @@ const { $dialog } = globalStore() const { reload: reloadView, getView } = viewsStore() const list = defineModel() +const loadMore = defineModel('loadMore') const route = useRoute() const router = useRouter() @@ -124,8 +125,14 @@ const view = ref({ pinned: false, }) +const pageLength = computed(() => list.value?.data?.page_length) const pageLengthCount = computed(() => list.value?.data?.page_length_count) +watch(loadMore, (value) => { + if (!value) return + updatePageLength(value, true) +}) + watch( () => list.value?.data?.page_length_count, (value) => { @@ -173,6 +180,7 @@ function getParams() { order_by: order_by, columns: columns, rows: rows, + page_length: pageLength.value, page_length_count: pageLengthCount.value, custom_view_name: _view?.name || '', default_filters: props.filters, @@ -190,6 +198,7 @@ list.value = createResource({ doctype: props.doctype, filters: list.value.params.filters, order_by: list.value.params.order_by, + page_length: list.value.params.page_length, page_length_count: list.value.params.page_length_count, columns: data.columns, rows: data.rows, @@ -299,12 +308,17 @@ function updateColumns(obj) { viewUpdated.value = true } -function updatePageLength(value) { +function updatePageLength(value, loadMore = false) { if (!defaultParams.value) { defaultParams.value = getParams() } list.value.params = defaultParams.value - list.value.params.page_length_count = value + if (loadMore) { + list.value.params.page_length += value + } else { + list.value.params.page_length = value + list.value.params.page_length_count = value + } list.value.reload() } diff --git a/frontend/src/pages/Leads.vue b/frontend/src/pages/Leads.vue index b526b6df..e9824880 100644 --- a/frontend/src/pages/Leads.vue +++ b/frontend/src/pages/Leads.vue @@ -11,6 +11,7 @@ @@ -23,6 +24,7 @@ rowCount: leads.data.row_count, totalCount: leads.data.total_count, }" + @loadMore="() => loadMore++" />
{